diff options
Diffstat (limited to 'includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.mjs')
-rw-r--r-- | includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.mjs | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.mjs b/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.mjs deleted file mode 100644 index a0a0758..0000000 --- a/includes/external/school/node_modules/graphql/utilities/stripIgnoredCharacters.mjs +++ /dev/null @@ -1,113 +0,0 @@ -import { Source, isSource } from "../language/source.mjs"; -import { TokenKind } from "../language/tokenKind.mjs"; -import { Lexer, isPunctuatorTokenKind } from "../language/lexer.mjs"; -import { dedentBlockStringValue, getBlockStringIndentation } from "../language/blockString.mjs"; -/** - * Strips characters that are not significant to the validity or execution - * of a GraphQL document: - * - UnicodeBOM - * - WhiteSpace - * - LineTerminator - * - Comment - * - Comma - * - BlockString indentation - * - * Note: It is required to have a delimiter character between neighboring - * non-punctuator tokens and this function always uses single space as delimiter. - * - * It is guaranteed that both input and output documents if parsed would result - * in the exact same AST except for nodes location. - * - * Warning: It is guaranteed that this function will always produce stable results. - * However, it's not guaranteed that it will stay the same between different - * releases due to bugfixes or changes in the GraphQL specification. - * - * Query example: - * - * query SomeQuery($foo: String!, $bar: String) { - * someField(foo: $foo, bar: $bar) { - * a - * b { - * c - * d - * } - * } - * } - * - * Becomes: - * - * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}} - * - * SDL example: - * - * """ - * Type description - * """ - * type Foo { - * """ - * Field description - * """ - * bar: String - * } - * - * Becomes: - * - * """Type description""" type Foo{"""Field description""" bar:String} - */ - -export function stripIgnoredCharacters(source) { - var sourceObj = isSource(source) ? source : new Source(source); - var body = sourceObj.body; - var lexer = new Lexer(sourceObj); - var strippedBody = ''; - var wasLastAddedTokenNonPunctuator = false; - - while (lexer.advance().kind !== TokenKind.EOF) { - var currentToken = lexer.token; - var tokenKind = currentToken.kind; - /** - * Every two non-punctuator tokens should have space between them. - * Also prevent case of non-punctuator token following by spread resulting - * in invalid token (e.g. `1...` is invalid Float token). - */ - - var isNonPunctuator = !isPunctuatorTokenKind(currentToken.kind); - - if (wasLastAddedTokenNonPunctuator) { - if (isNonPunctuator || currentToken.kind === TokenKind.SPREAD) { - strippedBody += ' '; - } - } - - var tokenBody = body.slice(currentToken.start, currentToken.end); - - if (tokenKind === TokenKind.BLOCK_STRING) { - strippedBody += dedentBlockString(tokenBody); - } else { - strippedBody += tokenBody; - } - - wasLastAddedTokenNonPunctuator = isNonPunctuator; - } - - return strippedBody; -} - -function dedentBlockString(blockStr) { - // skip leading and trailing triple quotations - var rawStr = blockStr.slice(3, -3); - var body = dedentBlockStringValue(rawStr); - - if (getBlockStringIndentation(body) > 0) { - body = '\n' + body; - } - - var lastChar = body[body.length - 1]; - var hasTrailingQuote = lastChar === '"' && body.slice(-4) !== '\\"""'; - - if (hasTrailingQuote || lastChar === '\\') { - body += '\n'; - } - - return '"""' + body + '"""'; -} |