You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
1.9 KiB
176 lines
1.9 KiB
/** |
|
* Prints a string as a GraphQL StringValue literal. Replaces control characters |
|
* and excluded characters (" U+0022 and \\ U+005C) with escape sequences. |
|
*/ |
|
export function printString(str) { |
|
return `"${str.replace(escapedRegExp, escapedReplacer)}"`; |
|
} // eslint-disable-next-line no-control-regex |
|
|
|
const escapedRegExp = /[\x00-\x1f\x22\x5c\x7f-\x9f]/g; |
|
|
|
function escapedReplacer(str) { |
|
return escapeSequences[str.charCodeAt(0)]; |
|
} // prettier-ignore |
|
|
|
const escapeSequences = [ |
|
'\\u0000', |
|
'\\u0001', |
|
'\\u0002', |
|
'\\u0003', |
|
'\\u0004', |
|
'\\u0005', |
|
'\\u0006', |
|
'\\u0007', |
|
'\\b', |
|
'\\t', |
|
'\\n', |
|
'\\u000B', |
|
'\\f', |
|
'\\r', |
|
'\\u000E', |
|
'\\u000F', |
|
'\\u0010', |
|
'\\u0011', |
|
'\\u0012', |
|
'\\u0013', |
|
'\\u0014', |
|
'\\u0015', |
|
'\\u0016', |
|
'\\u0017', |
|
'\\u0018', |
|
'\\u0019', |
|
'\\u001A', |
|
'\\u001B', |
|
'\\u001C', |
|
'\\u001D', |
|
'\\u001E', |
|
'\\u001F', |
|
'', |
|
'', |
|
'\\"', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', // 2F |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', // 3F |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', // 4F |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'\\\\', |
|
'', |
|
'', |
|
'', // 5F |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', // 6F |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'', |
|
'\\u007F', |
|
'\\u0080', |
|
'\\u0081', |
|
'\\u0082', |
|
'\\u0083', |
|
'\\u0084', |
|
'\\u0085', |
|
'\\u0086', |
|
'\\u0087', |
|
'\\u0088', |
|
'\\u0089', |
|
'\\u008A', |
|
'\\u008B', |
|
'\\u008C', |
|
'\\u008D', |
|
'\\u008E', |
|
'\\u008F', |
|
'\\u0090', |
|
'\\u0091', |
|
'\\u0092', |
|
'\\u0093', |
|
'\\u0094', |
|
'\\u0095', |
|
'\\u0096', |
|
'\\u0097', |
|
'\\u0098', |
|
'\\u0099', |
|
'\\u009A', |
|
'\\u009B', |
|
'\\u009C', |
|
'\\u009D', |
|
'\\u009E', |
|
'\\u009F', |
|
];
|
|
|