printString.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', {
  3. value: true,
  4. });
  5. exports.printString = printString;
  6. /**
  7. * Prints a string as a GraphQL StringValue literal. Replaces control characters
  8. * and excluded characters (" U+0022 and \\ U+005C) with escape sequences.
  9. */
  10. function printString(str) {
  11. return `"${str.replace(escapedRegExp, escapedReplacer)}"`;
  12. } // eslint-disable-next-line no-control-regex
  13. const escapedRegExp = /[\x00-\x1f\x22\x5c\x7f-\x9f]/g;
  14. function escapedReplacer(str) {
  15. return escapeSequences[str.charCodeAt(0)];
  16. } // prettier-ignore
  17. const escapeSequences = [
  18. '\\u0000',
  19. '\\u0001',
  20. '\\u0002',
  21. '\\u0003',
  22. '\\u0004',
  23. '\\u0005',
  24. '\\u0006',
  25. '\\u0007',
  26. '\\b',
  27. '\\t',
  28. '\\n',
  29. '\\u000B',
  30. '\\f',
  31. '\\r',
  32. '\\u000E',
  33. '\\u000F',
  34. '\\u0010',
  35. '\\u0011',
  36. '\\u0012',
  37. '\\u0013',
  38. '\\u0014',
  39. '\\u0015',
  40. '\\u0016',
  41. '\\u0017',
  42. '\\u0018',
  43. '\\u0019',
  44. '\\u001A',
  45. '\\u001B',
  46. '\\u001C',
  47. '\\u001D',
  48. '\\u001E',
  49. '\\u001F',
  50. '',
  51. '',
  52. '\\"',
  53. '',
  54. '',
  55. '',
  56. '',
  57. '',
  58. '',
  59. '',
  60. '',
  61. '',
  62. '',
  63. '',
  64. '',
  65. '', // 2F
  66. '',
  67. '',
  68. '',
  69. '',
  70. '',
  71. '',
  72. '',
  73. '',
  74. '',
  75. '',
  76. '',
  77. '',
  78. '',
  79. '',
  80. '',
  81. '', // 3F
  82. '',
  83. '',
  84. '',
  85. '',
  86. '',
  87. '',
  88. '',
  89. '',
  90. '',
  91. '',
  92. '',
  93. '',
  94. '',
  95. '',
  96. '',
  97. '', // 4F
  98. '',
  99. '',
  100. '',
  101. '',
  102. '',
  103. '',
  104. '',
  105. '',
  106. '',
  107. '',
  108. '',
  109. '',
  110. '\\\\',
  111. '',
  112. '',
  113. '', // 5F
  114. '',
  115. '',
  116. '',
  117. '',
  118. '',
  119. '',
  120. '',
  121. '',
  122. '',
  123. '',
  124. '',
  125. '',
  126. '',
  127. '',
  128. '',
  129. '', // 6F
  130. '',
  131. '',
  132. '',
  133. '',
  134. '',
  135. '',
  136. '',
  137. '',
  138. '',
  139. '',
  140. '',
  141. '',
  142. '',
  143. '',
  144. '',
  145. '\\u007F',
  146. '\\u0080',
  147. '\\u0081',
  148. '\\u0082',
  149. '\\u0083',
  150. '\\u0084',
  151. '\\u0085',
  152. '\\u0086',
  153. '\\u0087',
  154. '\\u0088',
  155. '\\u0089',
  156. '\\u008A',
  157. '\\u008B',
  158. '\\u008C',
  159. '\\u008D',
  160. '\\u008E',
  161. '\\u008F',
  162. '\\u0090',
  163. '\\u0091',
  164. '\\u0092',
  165. '\\u0093',
  166. '\\u0094',
  167. '\\u0095',
  168. '\\u0096',
  169. '\\u0097',
  170. '\\u0098',
  171. '\\u0099',
  172. '\\u009A',
  173. '\\u009B',
  174. '\\u009C',
  175. '\\u009D',
  176. '\\u009E',
  177. '\\u009F',
  178. ];