@0no-co/graphql.web 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/dist/graphql.web.d.ts +250 -0
- package/dist/graphql.web.js +804 -0
- package/dist/graphql.web.js.map +1 -0
- package/dist/graphql.web.mjs +792 -0
- package/dist/graphql.web.mjs.map +1 -0
- package/package.json +7 -2
- package/.changeset/README.md +0 -8
- package/.changeset/config.json +0 -7
- package/.gitattributes +0 -1
- package/.github/workflows/ci.yml +0 -57
- package/.github/workflows/release.yml +0 -63
- package/benchmark/kitchen_sink.graphql +0 -69
- package/benchmark/package.json +0 -14
- package/benchmark/suite.js +0 -26
- package/pnpm-workspace.yaml +0 -2
- package/scripts/changelog.js +0 -125
- package/scripts/eslint-preset.js +0 -54
- package/scripts/prepare.js +0 -18
- package/scripts/rollup.config.mjs +0 -160
- package/src/__tests__/__snapshots__/parser.test.ts.snap +0 -779
- package/src/__tests__/parser.test.ts +0 -11
- package/src/ast.ts +0 -251
- package/src/error.ts +0 -51
- package/src/index.ts +0 -6
- package/src/kind.ts +0 -32
- package/src/parser.ts +0 -480
- package/src/printer.ts +0 -132
- package/src/types.ts +0 -5
- package/src/visitor.ts +0 -136
- package/tsconfig.json +0 -24
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.web.mjs","sources":["../src/ast.ts","../src/kind.ts","../src/error.ts","../src/parser.ts","../src/visitor.ts","../src/printer.ts"],"sourcesContent":["import type { Kind } from './kind';\n\nexport interface Location {\n readonly start: number;\n readonly end: number;\n readonly source: Source;\n}\n\nexport interface Source {\n body: string;\n name: string;\n locationOffset: {\n line: number;\n column: number;\n };\n}\n\nexport declare type ASTNode =\n | NameNode\n | DocumentNode\n | OperationDefinitionNode\n | VariableDefinitionNode\n | VariableNode\n | SelectionSetNode\n | FieldNode\n | ArgumentNode\n | FragmentSpreadNode\n | InlineFragmentNode\n | FragmentDefinitionNode\n | IntValueNode\n | FloatValueNode\n | StringValueNode\n | BooleanValueNode\n | NullValueNode\n | EnumValueNode\n | ListValueNode\n | ObjectValueNode\n | ObjectFieldNode\n | DirectiveNode\n | NamedTypeNode\n | ListTypeNode\n | NonNullTypeNode;\n\nexport interface NameNode {\n readonly kind: Kind.NAME;\n readonly value: string;\n}\n\nexport interface DocumentNode {\n readonly kind: Kind.DOCUMENT;\n readonly definitions: ReadonlyArray<ExecutableDefinitionNode>;\n readonly loc?: Location;\n}\n\nexport type DefinitionNode =\n | OperationDefinitionNode\n | FragmentDefinitionNode;\nexport type ExecutableDefinitionNode =\n | OperationDefinitionNode\n | FragmentDefinitionNode;\n\nexport interface OperationDefinitionNode {\n readonly kind: Kind.OPERATION_DEFINITION;\n readonly operation: OperationTypeNode;\n readonly name?: NameNode;\n readonly variableDefinitions?: ReadonlyArray<VariableDefinitionNode>;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet: SelectionSetNode;\n}\n\nexport const enum OperationTypeNode {\n QUERY = 'query',\n MUTATION = 'mutation',\n SUBSCRIPTION = 'subscription',\n}\n\nexport interface VariableDefinitionNode {\n readonly kind: Kind.VARIABLE_DEFINITION;\n readonly variable: VariableNode;\n readonly type: TypeNode;\n readonly defaultValue?: ConstValueNode;\n readonly directives?: ReadonlyArray<ConstDirectiveNode>;\n}\n\nexport interface VariableNode {\n readonly kind: Kind.VARIABLE;\n readonly name: NameNode;\n}\n\nexport interface SelectionSetNode {\n kind: Kind.SELECTION_SET;\n selections: ReadonlyArray<SelectionNode>;\n}\n\nexport declare type SelectionNode =\n | FieldNode\n | FragmentSpreadNode\n | InlineFragmentNode;\n\nexport interface FieldNode {\n readonly kind: Kind.FIELD;\n readonly alias?: NameNode;\n readonly name: NameNode;\n readonly arguments?: ReadonlyArray<ArgumentNode>;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet?: SelectionSetNode;\n}\n\nexport interface ArgumentNode {\n readonly kind: Kind.ARGUMENT;\n readonly name: NameNode;\n readonly value: ValueNode;\n}\n\nexport interface ConstArgumentNode {\n readonly kind: Kind.ARGUMENT;\n readonly name: NameNode;\n readonly value: ConstValueNode;\n}\n\nexport interface FragmentSpreadNode {\n readonly kind: Kind.FRAGMENT_SPREAD;\n readonly name: NameNode;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n}\n\nexport interface InlineFragmentNode {\n readonly kind: Kind.INLINE_FRAGMENT;\n readonly typeCondition?: NamedTypeNode;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet: SelectionSetNode;\n}\n\nexport interface FragmentDefinitionNode {\n readonly kind: Kind.FRAGMENT_DEFINITION;\n readonly name: NameNode;\n readonly typeCondition: NamedTypeNode;\n readonly directives?: ReadonlyArray<DirectiveNode>;\n readonly selectionSet: SelectionSetNode;\n}\n\nexport type ValueNode =\n | VariableNode\n | IntValueNode\n | FloatValueNode\n | StringValueNode\n | BooleanValueNode\n | NullValueNode\n | EnumValueNode\n | ListValueNode\n | ObjectValueNode;\n\nexport type ConstValueNode =\n | IntValueNode\n | FloatValueNode\n | StringValueNode\n | BooleanValueNode\n | NullValueNode\n | EnumValueNode\n | ConstListValueNode\n | ConstObjectValueNode;\n\nexport interface IntValueNode {\n readonly kind: Kind.INT;\n readonly value: string;\n}\n\nexport interface FloatValueNode {\n readonly kind: Kind.FLOAT;\n readonly value: string;\n}\nexport interface StringValueNode {\n readonly kind: Kind.STRING;\n readonly value: string;\n readonly block?: boolean;\n}\n\nexport interface BooleanValueNode {\n readonly kind: Kind.BOOLEAN;\n readonly value: boolean;\n}\n\nexport interface NullValueNode {\n readonly kind: Kind.NULL;\n}\n\nexport interface EnumValueNode {\n readonly kind: Kind.ENUM;\n readonly value: string;\n}\n\nexport interface ListValueNode {\n readonly kind: Kind.LIST;\n readonly values: ReadonlyArray<ValueNode>;\n}\n\nexport interface ConstListValueNode {\n readonly kind: Kind.LIST;\n readonly values: ReadonlyArray<ConstValueNode>;\n}\n\nexport interface ObjectValueNode {\n readonly kind: Kind.OBJECT;\n readonly fields: ReadonlyArray<ObjectFieldNode>;\n}\n\nexport interface ConstObjectValueNode {\n readonly kind: Kind.OBJECT;\n readonly fields: ReadonlyArray<ConstObjectFieldNode>;\n}\n\nexport interface ObjectFieldNode {\n readonly kind: Kind.OBJECT_FIELD;\n readonly name: NameNode;\n readonly value: ValueNode;\n}\n\nexport interface ConstObjectFieldNode {\n readonly kind: Kind.OBJECT_FIELD;\n readonly name: NameNode;\n readonly value: ConstValueNode;\n}\n\nexport interface DirectiveNode {\n readonly kind: Kind.DIRECTIVE;\n readonly name: NameNode;\n readonly arguments?: ReadonlyArray<ArgumentNode>;\n}\n\nexport interface ConstDirectiveNode {\n readonly kind: Kind.DIRECTIVE;\n readonly name: NameNode;\n readonly arguments?: ReadonlyArray<ConstArgumentNode>;\n}\n\nexport declare type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode;\n\nexport interface NamedTypeNode {\n readonly kind: Kind.NAMED_TYPE;\n readonly name: NameNode;\n}\n\nexport interface ListTypeNode {\n readonly kind: Kind.LIST_TYPE;\n readonly type: TypeNode;\n}\n\nexport interface NonNullTypeNode {\n readonly kind: Kind.NON_NULL_TYPE;\n readonly type: NamedTypeNode | ListTypeNode;\n}\n","export enum Kind {\n /** Name */\n NAME = 'Name',\n /** Document */\n DOCUMENT = 'Document',\n OPERATION_DEFINITION = 'OperationDefinition',\n VARIABLE_DEFINITION = 'VariableDefinition',\n SELECTION_SET = 'SelectionSet',\n FIELD = 'Field',\n ARGUMENT = 'Argument',\n /** Fragments */\n FRAGMENT_SPREAD = 'FragmentSpread',\n INLINE_FRAGMENT = 'InlineFragment',\n FRAGMENT_DEFINITION = 'FragmentDefinition',\n /** Values */\n VARIABLE = 'Variable',\n INT = 'IntValue',\n FLOAT = 'FloatValue',\n STRING = 'StringValue',\n BOOLEAN = 'BooleanValue',\n NULL = 'NullValue',\n ENUM = 'EnumValue',\n LIST = 'ListValue',\n OBJECT = 'ObjectValue',\n OBJECT_FIELD = 'ObjectField',\n /** Directives */\n DIRECTIVE = 'Directive',\n /** Types */\n NAMED_TYPE = 'NamedType',\n LIST_TYPE = 'ListType',\n NON_NULL_TYPE = 'NonNullType',\n}\n","import { Maybe, Extensions } from './types';\nimport { ASTNode, Source } from './ast';\n\nexport class GraphQLError extends Error {\n readonly locations: undefined;\n readonly path: ReadonlyArray<string | number> | undefined;\n readonly nodes: ReadonlyArray<ASTNode> | undefined;\n readonly source: Source | undefined;\n readonly positions: ReadonlyArray<number> | undefined;\n readonly originalError: Error | undefined;\n readonly extensions: Extensions;\n\n constructor(\n message: string,\n nodes?: ReadonlyArray<ASTNode> | ASTNode | null,\n source?: Maybe<Source>,\n positions?: Maybe<ReadonlyArray<number>>,\n path?: Maybe<ReadonlyArray<string | number>>,\n originalError?: Maybe<Error>,\n extensions?: Maybe<Extensions>,\n ) {\n super(message);\n\n this.name = 'GraphQLError';\n this.message = message;\n\n if (path) this.path = path;\n if (nodes) this.nodes = (Array.isArray(nodes) ? nodes : [nodes]) as ASTNode[];\n if (source) this.source = source;\n if (positions) this.positions = positions;\n if (originalError) this.originalError = originalError;\n\n let _extensions = extensions;\n if (!_extensions && originalError) {\n const originalExtensions = (originalError as any).extensions;\n if (originalExtensions && typeof originalExtensions === 'object') {\n _extensions = originalExtensions;\n }\n }\n\n this.extensions = extensions || {};\n }\n\n toJSON() {\n return { ...this };\n }\n\n toString() {\n return this.message;\n }\n}\n","/**\n * This is a spec-compliant implementation of a GraphQL query language parser,\n * up-to-date with the October 2021 Edition. Unlike the reference implementation\n * in graphql.js it will only parse the query language, but not the schema\n * language.\n */\nimport { Kind } from './kind';\nimport { GraphQLError } from './error';\nimport type * as ast from './ast';\n\nlet input: string;\nlet idx: number;\n\nfunction error(kind: Kind) {\n return new GraphQLError(`Syntax Error: Unexpected token at ${idx} in ${kind}`);\n}\n\nfunction advance(pattern: RegExp) {\n pattern.lastIndex = idx;\n if (pattern.test(input)) {\n const match = input.slice(idx, idx = pattern.lastIndex);\n return match;\n }\n}\n\nconst leadingRe = / +(?=[^\\s])/y;\nexport function blockString(string: string) {\n let out = '';\n let commonIndent = 0;\n let firstNonEmptyLine = 0;\n let lastNonEmptyLine = -1;\n const lines = string.split('\\n');\n for (let i = 0; i < lines.length; i++) {\n leadingRe.lastIndex = 0;\n if (leadingRe.test(lines[i])) {\n if (i && (!commonIndent || leadingRe.lastIndex < commonIndent))\n commonIndent = leadingRe.lastIndex;\n firstNonEmptyLine = firstNonEmptyLine || i;\n lastNonEmptyLine = i;\n }\n }\n for (let i = firstNonEmptyLine; i <= lastNonEmptyLine; i++) {\n if (i !== firstNonEmptyLine) out += '\\n';\n out += lines[i].slice(commonIndent).replace(/\\\\\"\"\"/g, '\"\"\"');\n }\n return out;\n}\n\nconst ignoredRe = /(?:[\\s,]*|#[^\\n\\r]*)*/y;\nfunction ignored() {\n ignoredRe.lastIndex = idx;\n ignoredRe.test(input);\n idx = ignoredRe.lastIndex;\n}\n\nconst nameRe = /[_\\w][_\\d\\w]*/y;\nfunction name(): ast.NameNode | undefined {\n let match: string | undefined;\n if (match = advance(nameRe)) {\n return {\n kind: Kind.NAME,\n value: match,\n };\n }\n}\n\nconst nullRe = /null/y;\nconst boolRe = /true|false/y;\nconst variableRe = /\\$[_\\w][_\\d\\w]*/y;\nconst intRe = /[-]?\\d+/y;\nconst floatRe = /(?:[-]?\\d+)?(?:\\.\\d+)(?:[eE][+-]?\\d+)?/y;\nconst complexStringRe = /\\\\/g;\nconst blockStringRe = /\"\"\"(?:[\\s\\S]+(?=\"\"\"))?\"\"\"/y;\nconst stringRe = /\"(?:[^\"\\r\\n]+)?\"/y;\n\nfunction value(constant: true): ast.ConstValueNode;\nfunction value(constant: boolean): ast.ValueNode;\n\nfunction value(constant: boolean): ast.ValueNode | undefined {\n let out: ast.ValueNode | undefined;\n let match: string | undefined;\n if (advance(nullRe)) {\n out = { kind: Kind.NULL };\n } else if (match = advance(boolRe)) {\n out = {\n kind: Kind.BOOLEAN,\n value: match === 'true',\n };\n } else if (!constant && (match = advance(variableRe))) {\n out = {\n kind: Kind.VARIABLE,\n name: {\n kind: Kind.NAME,\n value: match.slice(1),\n },\n };\n } else if (match = advance(floatRe)) {\n out = {\n kind: Kind.FLOAT,\n value: match,\n };\n } else if (match = advance(intRe)) {\n out = {\n kind: Kind.INT,\n value: match,\n };\n } else if (match = advance(nameRe)) {\n out = {\n kind: Kind.ENUM,\n value: match,\n };\n } else if (match = advance(blockStringRe)) {\n out = {\n kind: Kind.STRING,\n value: blockString(match.slice(3, -3)),\n block: true,\n };\n } else if (match = advance(stringRe)) {\n out = {\n kind: Kind.STRING,\n value: complexStringRe.test(match)\n ? JSON.parse(match) as string\n : match.slice(1, -1),\n block: false,\n };\n } else if (out = list(constant) || object(constant)) {\n return out;\n }\n\n ignored();\n return out;\n}\n\nfunction list(constant: boolean): ast.ListValueNode | undefined {\n let match: ast.ValueNode | undefined;\n if (input.charCodeAt(idx) === 91 /*'['*/) {\n idx++;\n ignored();\n const values: ast.ValueNode[] = [];\n while (match = value(constant))\n values.push(match);\n if (input.charCodeAt(idx++) !== 93 /*']'*/)\n throw error(Kind.LIST);\n ignored();\n return {\n kind: Kind.LIST,\n values,\n };\n }\n}\n\nfunction object(constant: boolean): ast.ObjectValueNode | undefined {\n if (input.charCodeAt(idx) === 123 /*'{'*/) {\n idx++;\n ignored();\n const fields: ast.ObjectFieldNode[] = [];\n let _name: ast.NameNode | undefined;\n while (_name = name()) {\n ignored();\n if (input.charCodeAt(idx++) !== 58 /*':'*/)\n throw error(Kind.OBJECT_FIELD);\n ignored();\n const _value = value(constant);\n if (!_value)\n throw error(Kind.OBJECT_FIELD);\n fields.push({\n kind: Kind.OBJECT_FIELD,\n name: _name,\n value: _value,\n });\n }\n if (input.charCodeAt(idx++) !== 125 /*'}'*/)\n throw error(Kind.OBJECT);\n ignored();\n return {\n kind: Kind.OBJECT,\n fields,\n };\n }\n}\n\nfunction arguments_(constant: boolean): ast.ArgumentNode[] {\n const args: ast.ArgumentNode[] = [];\n ignored();\n if (input.charCodeAt(idx) === 40 /*'('*/) {\n idx++;\n ignored();\n let _name: ast.NameNode | undefined;\n while (_name = name()) {\n ignored();\n if (input.charCodeAt(idx++) !== 58 /*':'*/)\n throw error(Kind.ARGUMENT);\n ignored();\n const _value = value(constant);\n if (!_value)\n throw error(Kind.ARGUMENT);\n args.push({\n kind: Kind.ARGUMENT,\n name: _name,\n value: _value,\n });\n }\n if (!args.length || input.charCodeAt(idx++) !== 41 /*')'*/)\n throw error(Kind.ARGUMENT);\n ignored();\n }\n return args;\n}\n\nfunction directives(constant: true): ast.ConstDirectiveNode[];\nfunction directives(constant: boolean): ast.DirectiveNode[];\n\nfunction directives(constant: boolean): ast.DirectiveNode[] {\n const directives: ast.DirectiveNode[] = [];\n ignored();\n while (input.charCodeAt(idx) === 64 /*'@'*/) {\n idx++;\n const _name = name();\n if (!_name)\n throw error(Kind.DIRECTIVE);\n ignored();\n directives.push({\n kind: Kind.DIRECTIVE,\n name: _name,\n arguments: arguments_(constant),\n });\n }\n return directives;\n}\n\nfunction field(): ast.FieldNode | undefined {\n ignored();\n let _name = name();\n if (_name) {\n ignored();\n let _alias: ast.NameNode | undefined;\n if (input.charCodeAt(idx) === 58 /*':'*/) {\n idx++;\n ignored();\n _alias = _name;\n _name = name();\n if (!_name)\n throw error(Kind.FIELD);\n ignored();\n }\n return {\n kind: Kind.FIELD,\n alias: _alias,\n name: _name,\n arguments: arguments_(false),\n directives: directives(false),\n selectionSet: selectionSet(),\n };\n }\n}\n\nfunction type(): ast.TypeNode | undefined {\n let match: ast.NameNode | ast.TypeNode | undefined;\n ignored();\n if (input.charCodeAt(idx) === 91 /*'['*/) {\n idx++;\n ignored();\n const _type = type();\n if (!_type || input.charCodeAt(idx++) !== 93 /*']'*/)\n throw error(Kind.LIST_TYPE);\n match = {\n kind: Kind.LIST_TYPE,\n type: _type,\n };\n } else if (match = name()) {\n match = {\n kind: Kind.NAMED_TYPE,\n name: match,\n };\n } else {\n throw error(Kind.NAMED_TYPE);\n }\n\n ignored();\n if (input.charCodeAt(idx) === 33 /*'!'*/) {\n idx++;\n ignored();\n return {\n kind: Kind.NON_NULL_TYPE,\n type: match,\n };\n } else {\n return match;\n }\n}\n\nconst typeConditionRe = /on/y;\nfunction typeCondition(): ast.NamedTypeNode | undefined {\n if (advance(typeConditionRe)) {\n ignored();\n const _name = name();\n if (!_name)\n throw error(Kind.NAMED_TYPE);\n ignored();\n return {\n kind: Kind.NAMED_TYPE,\n name: _name,\n };\n }\n}\n\nconst fragmentSpreadRe = /\\.\\.\\./y;\n\nfunction fragmentSpread(): ast.FragmentSpreadNode | ast.InlineFragmentNode | undefined {\n ignored();\n if (advance(fragmentSpreadRe)) {\n ignored();\n const _idx = idx;\n let _name: ast.NameNode | undefined;\n if ((_name = name()) && _name.value !== 'on') {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: _name,\n directives: directives(false),\n };\n } else {\n idx = _idx;\n const _typeCondition = typeCondition();\n const _directives = directives(false);\n const _selectionSet = selectionSet();\n if (!_selectionSet)\n throw error(Kind.INLINE_FRAGMENT);\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: _typeCondition,\n directives: _directives,\n selectionSet: _selectionSet,\n };\n }\n }\n}\n\nfunction selectionSet(): ast.SelectionSetNode | undefined {\n let match: ast.SelectionNode | undefined;\n ignored();\n if (input.charCodeAt(idx) === 123 /*'{'*/) {\n idx++;\n ignored();\n const selections: ast.SelectionNode[] = [];\n while (match = fragmentSpread() || field())\n selections.push(match);\n if (!selections.length || input.charCodeAt(idx++) !== 125 /*'}'*/)\n throw error(Kind.SELECTION_SET);\n ignored();\n return {\n kind: Kind.SELECTION_SET,\n selections,\n };\n }\n}\n\nfunction variableDefinitions(): ast.VariableDefinitionNode[] {\n let match: string | undefined;\n const vars: ast.VariableDefinitionNode[] = [];\n ignored();\n if (input.charCodeAt(idx) === 40 /*'('*/) {\n idx++;\n ignored();\n while (match = advance(variableRe)) {\n ignored();\n if (input.charCodeAt(idx++) !== 58 /*':'*/)\n throw error(Kind.VARIABLE_DEFINITION);\n const _type = type();\n if (!_type)\n throw error(Kind.VARIABLE_DEFINITION);\n let _defaultValue: ast.ValueNode | undefined;\n if (input.charCodeAt(idx) === 61 /*'='*/) {\n idx++;\n ignored();\n _defaultValue = value(true);\n if (!_defaultValue)\n throw error(Kind.VARIABLE_DEFINITION);\n }\n ignored();\n vars.push({\n kind: Kind.VARIABLE_DEFINITION,\n variable: {\n kind: Kind.VARIABLE,\n name: {\n kind: Kind.NAME,\n value: match.slice(1),\n },\n },\n type: _type,\n defaultValue: _defaultValue as ast.ConstValueNode,\n directives: directives(true),\n });\n }\n if (input.charCodeAt(idx++) !== 41 /*')'*/)\n throw error(Kind.VARIABLE_DEFINITION);\n ignored();\n }\n return vars;\n}\n\nconst fragmentDefinitionRe = /fragment/y;\nfunction fragmentDefinition(): ast.FragmentDefinitionNode | undefined {\n if (advance(fragmentDefinitionRe)) {\n ignored();\n const _name = name();\n if (!_name)\n throw error(Kind.FRAGMENT_DEFINITION);\n ignored();\n const _typeCondition = typeCondition();\n if (!_typeCondition)\n throw error(Kind.FRAGMENT_DEFINITION);\n const _directives = directives(false);\n const _selectionSet = selectionSet();\n if (!_selectionSet)\n throw error(Kind.FRAGMENT_DEFINITION);\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: _name,\n typeCondition: _typeCondition,\n directives: _directives,\n selectionSet: _selectionSet,\n };\n }\n}\n\nconst operationDefinitionRe = /query|mutation|subscription/y;\nfunction operationDefinition(): ast.OperationDefinitionNode | undefined {\n let _operation: string | undefined;\n let _name: ast.NameNode | undefined;\n let _variableDefinitions: ast.VariableDefinitionNode[] = [];\n let _directives: ast.DirectiveNode[] = [];\n if (_operation = advance(operationDefinitionRe)) {\n ignored();\n _name = name();\n _variableDefinitions = variableDefinitions();\n _directives = directives(false);\n }\n const _selectionSet = selectionSet();\n if (_selectionSet) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: (_operation || 'query') as ast.OperationTypeNode,\n name: _name,\n variableDefinitions: _variableDefinitions,\n directives: _directives,\n selectionSet: _selectionSet,\n };\n }\n}\n\nfunction document(): ast.DocumentNode {\n let match: ast.DefinitionNode | void;\n ignored();\n const definitions: ast.DefinitionNode[] = [];\n while (match = fragmentDefinition() || operationDefinition())\n definitions.push(match);\n if (idx !== input.length)\n throw error(Kind.DOCUMENT);\n return {\n kind: Kind.DOCUMENT,\n definitions,\n };\n}\n\nexport function parse(string: string): ast.DocumentNode {\n input = string;\n idx = 0;\n return document();\n}\n\nexport function parseValue(string: string): ast.ValueNode | undefined {\n input = string;\n idx = 0;\n ignored();\n return value(false);\n}\n\nexport function parseType(string: string): ast.TypeNode | undefined {\n input = string;\n idx = 0;\n return type();\n}\n","import { ASTNode } from './ast';\n\nexport const BREAK = {};\n\nexport function visit<N extends ASTNode>(root: N, visitor: ASTVisitor): N;\nexport function visit<R>(root: ASTNode, visitor: ASTReducer<R>): R;\n\nexport function visit(node: ASTNode, visitor: ASTVisitor | ASTReducer<any>) {\n const ancestors: Array<ASTNode | ReadonlyArray<ASTNode>>= [];\n const path: Array<string | number> = [];\n\n function traverse(\n node: ASTNode,\n key?: string | number | undefined,\n parent?: ASTNode | ReadonlyArray<ASTNode> | undefined,\n ) {\n let hasEdited = false;\n\n const enter = visitor[node.kind] && visitor[node.kind].enter || visitor[node.kind];\n const resultEnter =\n enter && enter.call(visitor, node, key, parent, path, ancestors);\n if (resultEnter === false) {\n return node;\n } else if (resultEnter === null) {\n return null;\n } else if (resultEnter === BREAK) {\n throw BREAK;\n } else if (resultEnter && typeof resultEnter.kind === 'string') {\n hasEdited = resultEnter !== node;\n node = resultEnter;\n }\n\n if (parent) ancestors.push(parent);\n\n let result: any;\n const copy = { ...node };\n for (const nodeKey in node) {\n path.push(nodeKey);\n let value = node[nodeKey];\n if (Array.isArray(value)) {\n const newValue: any[] = [];\n for (let index = 0; index < value.length; index++) {\n if (value[index] != null && typeof value[index].kind === 'string') {\n ancestors.push(node);\n path.push(index);\n result = traverse(value[index], index, value);\n path.pop();\n ancestors.pop();\n if (result === undefined) {\n newValue.push(value[index]);\n } else if (result === null) {\n hasEdited = true;\n } else {\n hasEdited = hasEdited || result !== value[index];\n newValue.push(result);\n }\n }\n }\n value = newValue;\n } else if (value != null && typeof value.kind === 'string') {\n result = traverse(value, nodeKey, node);\n if (result !== undefined) {\n hasEdited = hasEdited || value !== result;\n value = result;\n }\n }\n\n path.pop();\n if (hasEdited) copy[nodeKey] = value;\n }\n\n if (parent) ancestors.pop();\n const leave = visitor[node.kind] && visitor[node.kind].leave;\n const resultLeave =\n leave && leave.call(visitor, node, key, parent, path, ancestors);\n if (resultLeave === BREAK) {\n throw BREAK;\n } else if (resultLeave !== undefined) {\n return resultLeave;\n } else if (resultEnter !== undefined) {\n return hasEdited ? copy : resultEnter;\n } else {\n return hasEdited ? copy : node;\n }\n }\n\n try {\n const result = traverse(node);\n return result !== undefined && result !== false ? result : node;\n } catch (error) {\n if (error !== BREAK) throw error;\n return node;\n }\n}\n\nexport type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;\n\ntype KindVisitor = {\n readonly [NodeT in ASTNode as NodeT['kind']]?:\n | ASTVisitFn<NodeT>\n | EnterLeaveVisitor<NodeT>;\n};\n\ninterface EnterLeaveVisitor<TVisitedNode extends ASTNode> {\n readonly enter?: ASTVisitFn<TVisitedNode> | undefined;\n readonly leave?: ASTVisitFn<TVisitedNode> | undefined;\n}\n\nexport type ASTVisitFn<Node extends ASTNode> = (\n node: Node,\n key: string | number | undefined,\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n path: ReadonlyArray<string | number>,\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => any;\n\nexport type ASTReducer<R> = {\n readonly [NodeT in ASTNode as NodeT['kind']]?: {\n readonly enter?: ASTVisitFn<NodeT>;\n readonly leave: ASTReducerFn<NodeT, R>;\n };\n};\n\ntype ASTReducerFn<TReducedNode extends ASTNode, R> = (\n node: { [K in keyof TReducedNode]: ReducedField<TReducedNode[K], R> },\n key: string | number | undefined,\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n path: ReadonlyArray<string | number>,\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => R;\n\ntype ReducedField<T, R> = T extends null | undefined\n ? T\n : T extends ReadonlyArray<any>\n ? ReadonlyArray<R>\n : R;\n","import { Kind } from './kind';\nimport { ASTNode } from './ast';\n\nexport function printString(string: string) {\n return JSON.stringify(string);\n}\n\nexport function printBlockString(string: string) {\n return '\"\"\"\\n' + string.replace(/\"\"\"/g, '\\\\\"\"\"') + '\\n\"\"\"';\n}\n\nconst hasItems = <T>(\n array: ReadonlyArray<T> | undefined | null\n): array is ReadonlyArray<T> => !!(array && array.length);\n\nconst MAX_LINE_LENGTH = 80;\n\nexport function print(node: ASTNode): string {\n let out: string;\n switch (node.kind) {\n case Kind.OPERATION_DEFINITION:\n if (node.operation === 'query' && !node.name && !hasItems(node.variableDefinitions) && !hasItems(node.directives)) {\n return print(node.selectionSet);\n }\n out = node.operation;\n if (node.name)\n out += ' ' + node.name.value;\n if (hasItems(node.variableDefinitions)) {\n if (!node.name) out += ' ';\n out += '(' + node.variableDefinitions.map(print).join(', ') + ')';\n }\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out + ' ' + print(node.selectionSet);\n\n case Kind.VARIABLE_DEFINITION:\n out = print(node.variable) +\n ': ' +\n print(node.type);\n if (node.defaultValue)\n out += ' = ' + print(node.defaultValue);\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out;\n\n case Kind.FIELD:\n out = (node.alias ? print(node.alias) + ': ' : '') + node.name.value\n if (hasItems(node.arguments)) {\n const args = node.arguments.map(print);\n const argsLine = out + '(' + args.join(', ') + ')';\n out = argsLine.length > MAX_LINE_LENGTH\n ? out + '(\\n ' + args.join('\\n').replace(/\\n/g, '\\n ') + '\\n)'\n : argsLine;\n }\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return node.selectionSet\n ? out + ' ' + print(node.selectionSet)\n : out;\n\n case Kind.STRING:\n return node.block\n ? printBlockString(node.value)\n : printString(node.value);\n\n case Kind.BOOLEAN:\n return '' + node.value;\n\n case Kind.NULL:\n return 'null';\n\n case Kind.INT:\n case Kind.FLOAT:\n case Kind.ENUM:\n case Kind.NAME:\n return node.value;\n\n case Kind.LIST:\n return '[' + node.values.map(print).join(', ') + ']';\n\n case Kind.OBJECT:\n return '{' + node.fields.map(print).join(', ') + '}';\n\n case Kind.OBJECT_FIELD:\n return node.name.value + ': ' + print(node.value);\n\n case Kind.VARIABLE:\n return '$' + node.name.value;\n\n case Kind.DOCUMENT:\n return hasItems(node.definitions)\n ? node.definitions.map(print).join('\\n\\n')\n : '';\n\n case Kind.SELECTION_SET:\n return '{\\n ' +\n node.selections.map(print).join('\\n').replace(/\\n/g, '\\n ') +\n '\\n}';\n\n case Kind.ARGUMENT:\n return node.name.value + ': ' + print(node.value);\n\n case Kind.FRAGMENT_SPREAD:\n out = '...' + node.name.value;\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out;\n\n case Kind.INLINE_FRAGMENT:\n out = '...';\n if (node.typeCondition)\n out += ' on ' + node.typeCondition.name.value;\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out + ' ' + print(node.selectionSet);\n\n case Kind.FRAGMENT_DEFINITION:\n out = 'fragment ' + node.name.value;\n out += ' on ' + node.typeCondition.name.value;\n if (hasItems(node.directives))\n out += ' ' + node.directives.map(print).join(' ');\n return out + ' ' + print(node.selectionSet);\n \n case Kind.DIRECTIVE:\n out = '@' + node.name.value;\n if (hasItems(node.arguments))\n out += '(' + node.arguments.map(print).join(', ') + ')';\n return out;\n\n case Kind.NAMED_TYPE:\n return node.name.value;\n\n case Kind.LIST_TYPE:\n return '[' + print(node.type) + ']';\n\n case Kind.NON_NULL_TYPE:\n return print(node.type) + '!';\n }\n}\n"],"names":["OperationTypeNode","Kind","GraphQLError","Error","constructor","message","nodes","source","positions","path","originalError","extensions","super","this","name","Array","isArray","const","originalExtensions","toJSON","toString","let","input","idx","error","kind","advance","pattern","lastIndex","test","slice","leadingRe","blockString","string","out","commonIndent","firstNonEmptyLine","lastNonEmptyLine","lines","split","i","length","replace","ignoredRe","ignored","nameRe","match","NAME","value","nullRe","boolRe","variableRe","intRe","floatRe","complexStringRe","blockStringRe","stringRe","constant","NULL","BOOLEAN","VARIABLE","FLOAT","INT","ENUM","STRING","block","JSON","parse","list","charCodeAt","values","push","LIST","object","fields","_name","OBJECT_FIELD","_value","OBJECT","arguments_","args","ARGUMENT","directives","DIRECTIVE","arguments","field","_alias","FIELD","alias","selectionSet","type","_type","LIST_TYPE","NAMED_TYPE","NON_NULL_TYPE","typeConditionRe","typeCondition","fragmentSpreadRe","fragmentSpread","_idx","FRAGMENT_SPREAD","_typeCondition","_directives","_selectionSet","INLINE_FRAGMENT","selections","SELECTION_SET","fragmentDefinitionRe","fragmentDefinition","FRAGMENT_DEFINITION","operationDefinitionRe","operationDefinition","_operation","_variableDefinitions","variableDefinitions","vars","VARIABLE_DEFINITION","_defaultValue","variable","defaultValue","OPERATION_DEFINITION","operation","document","definitions","DOCUMENT","parseValue","parseType","BREAK","visit","node","visitor","ancestors","result","traverse","key","parent","hasEdited","enter","resultEnter","call","copy","nodeKey","newValue","index","pop","undefined","leave","resultLeave","printString","stringify","printBlockString","hasItems","array","MAX_LINE_LENGTH","print","map","join","argsLine"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0no-co/graphql.web",
|
|
3
3
|
"description": "A spec-compliant client-side GraphQL implementation",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.2",
|
|
5
5
|
"author": "0no.co <hi@0no.co>",
|
|
6
6
|
"source": "./src/index.ts",
|
|
7
7
|
"main": "./dist/graphql.web",
|
|
8
8
|
"module": "./dist/graphql.web.mjs",
|
|
9
9
|
"types": "./dist/graphql.web.d.ts",
|
|
10
|
+
"files": [
|
|
11
|
+
"LICENSE",
|
|
12
|
+
"README.md",
|
|
13
|
+
"dist/"
|
|
14
|
+
],
|
|
10
15
|
"exports": {
|
|
11
16
|
".": {
|
|
12
17
|
"import": "./dist/graphql.web.mjs",
|
|
@@ -80,7 +85,7 @@
|
|
|
80
85
|
"access": "public"
|
|
81
86
|
},
|
|
82
87
|
"scripts": {
|
|
83
|
-
"test": "vitest
|
|
88
|
+
"test": "vitest",
|
|
84
89
|
"check": "tsc",
|
|
85
90
|
"lint": "eslint --ext=js,ts .",
|
|
86
91
|
"build": "rollup -c scripts/rollup.config.mjs",
|
package/.changeset/README.md
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
# Changesets
|
|
2
|
-
|
|
3
|
-
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
|
|
4
|
-
with multi-package repos, or single-package repos to help you version and publish your code. You can
|
|
5
|
-
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
|
|
6
|
-
|
|
7
|
-
We have a quick list of common questions to get you started engaging with this project in
|
|
8
|
-
[our documentation](https://github.com/changesets/changesets/blob/master/docs/common-questions.md)
|
package/.changeset/config.json
DELETED
package/.gitattributes
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
* text=auto
|
package/.github/workflows/ci.yml
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
pull_request_review:
|
|
6
|
-
types: [submitted, edited]
|
|
7
|
-
branches: changeset-release/main
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
check:
|
|
11
|
-
name: Checks
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
timeout-minutes: 10
|
|
14
|
-
steps:
|
|
15
|
-
- name: Checkout Repo
|
|
16
|
-
uses: actions/checkout@v2
|
|
17
|
-
with:
|
|
18
|
-
fetch-depth: 0
|
|
19
|
-
|
|
20
|
-
- name: Setup Node
|
|
21
|
-
uses: actions/setup-node@v1
|
|
22
|
-
with:
|
|
23
|
-
node-version: 18
|
|
24
|
-
|
|
25
|
-
- name: Setup pnpm
|
|
26
|
-
uses: pnpm/action-setup@v2.2.2
|
|
27
|
-
with:
|
|
28
|
-
version: 7
|
|
29
|
-
run_install: false
|
|
30
|
-
|
|
31
|
-
- name: Get pnpm store directory
|
|
32
|
-
id: pnpm-store
|
|
33
|
-
run: echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
|
|
34
|
-
|
|
35
|
-
- name: Use pnpm store
|
|
36
|
-
uses: actions/cache@v3
|
|
37
|
-
id: pnpm-cache
|
|
38
|
-
with:
|
|
39
|
-
path: ${{ steps.pnpm-store.outputs.pnpm_cache_dir }}
|
|
40
|
-
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
41
|
-
restore-keys: |
|
|
42
|
-
${{ runner.os }}-pnpm-
|
|
43
|
-
|
|
44
|
-
- name: Install Dependencies
|
|
45
|
-
run: pnpm install --frozen-lockfile --prefer-offline
|
|
46
|
-
|
|
47
|
-
- name: TypeScript
|
|
48
|
-
run: pnpm run check
|
|
49
|
-
|
|
50
|
-
- name: Linting
|
|
51
|
-
run: pnpm run lint
|
|
52
|
-
|
|
53
|
-
- name: Unit Tests
|
|
54
|
-
run: pnpm run test
|
|
55
|
-
|
|
56
|
-
- name: Build
|
|
57
|
-
run: pnpm run build
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
on:
|
|
3
|
-
push:
|
|
4
|
-
branches:
|
|
5
|
-
- main
|
|
6
|
-
jobs:
|
|
7
|
-
release:
|
|
8
|
-
name: Release
|
|
9
|
-
runs-on: ubuntu-20.04
|
|
10
|
-
timeout-minutes: 20
|
|
11
|
-
steps:
|
|
12
|
-
- name: Checkout Repo
|
|
13
|
-
uses: actions/checkout@v3
|
|
14
|
-
with:
|
|
15
|
-
fetch-depth: 0
|
|
16
|
-
|
|
17
|
-
- name: Setup Node
|
|
18
|
-
uses: actions/setup-node@v3
|
|
19
|
-
with:
|
|
20
|
-
node-version: 18
|
|
21
|
-
|
|
22
|
-
- name: Setup pnpm
|
|
23
|
-
uses: pnpm/action-setup@v2.2.2
|
|
24
|
-
with:
|
|
25
|
-
version: 7
|
|
26
|
-
run_install: false
|
|
27
|
-
|
|
28
|
-
- name: Get pnpm store directory
|
|
29
|
-
id: pnpm-store
|
|
30
|
-
run: echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
|
|
31
|
-
|
|
32
|
-
- name: Use pnpm store
|
|
33
|
-
uses: actions/cache@v3
|
|
34
|
-
id: pnpm-cache
|
|
35
|
-
with:
|
|
36
|
-
path: ${{ steps.pnpm-store.outputs.pnpm_cache_dir }}
|
|
37
|
-
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
38
|
-
restore-keys: |
|
|
39
|
-
${{ runner.os }}-pnpm-
|
|
40
|
-
|
|
41
|
-
- name: Install Dependencies
|
|
42
|
-
run: pnpm install --frozen-lockfile --prefer-offline
|
|
43
|
-
|
|
44
|
-
- name: PR or Publish
|
|
45
|
-
id: changesets
|
|
46
|
-
uses: changesets/action@v1.4.1
|
|
47
|
-
with:
|
|
48
|
-
version: pnpm changeset:version
|
|
49
|
-
publish: pnpm changeset:publish
|
|
50
|
-
env:
|
|
51
|
-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
52
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
53
|
-
|
|
54
|
-
- name: Publish Prerelease
|
|
55
|
-
if: steps.changesets.outputs.published != 'true'
|
|
56
|
-
env:
|
|
57
|
-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
58
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
59
|
-
run: |
|
|
60
|
-
npm config set "//registry.npmjs.org/:_authToken" "$NPM_TOKEN"
|
|
61
|
-
git reset --hard origin/main
|
|
62
|
-
pnpm changeset version --no-git-tag --snapshot canary
|
|
63
|
-
pnpm changeset publish --no-git-tag --snapshot canary --tag canary
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2015-present, Facebook, Inc.
|
|
2
|
-
#
|
|
3
|
-
# This source code is licensed under the MIT license found in the
|
|
4
|
-
# LICENSE file in the root directory of this source tree.
|
|
5
|
-
|
|
6
|
-
query queryName($foo: ComplexType, $site: Site = MOBILE) @onQuery {
|
|
7
|
-
whoever123is: node(id: [123, 456]) {
|
|
8
|
-
id
|
|
9
|
-
... on User @onInlineFragment {
|
|
10
|
-
field2 {
|
|
11
|
-
id
|
|
12
|
-
alias: field1(first: 10, after: $foo) @include(if: $foo) {
|
|
13
|
-
id
|
|
14
|
-
...frag @onFragmentSpread
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
... @skip(unless: $foo) {
|
|
19
|
-
id
|
|
20
|
-
}
|
|
21
|
-
... {
|
|
22
|
-
id
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
mutation likeStory @onMutation {
|
|
28
|
-
like(story: 123) @onField {
|
|
29
|
-
story {
|
|
30
|
-
id @onField
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
subscription StoryLikeSubscription($input: StoryLikeSubscribeInput)
|
|
36
|
-
@onSubscription {
|
|
37
|
-
storyLikeSubscribe(input: $input) {
|
|
38
|
-
story {
|
|
39
|
-
likers {
|
|
40
|
-
count
|
|
41
|
-
}
|
|
42
|
-
likeSentence {
|
|
43
|
-
text
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
fragment frag on Friend @onFragmentDefinition {
|
|
50
|
-
foo(
|
|
51
|
-
size: $site
|
|
52
|
-
bar: 12
|
|
53
|
-
obj: {
|
|
54
|
-
key: "value"
|
|
55
|
-
block: """
|
|
56
|
-
block string uses \"""
|
|
57
|
-
"""
|
|
58
|
-
}
|
|
59
|
-
)
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
query teeny {
|
|
63
|
-
unnamed(truthy: true, falsey: false, nullish: null)
|
|
64
|
-
query
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
query tiny {
|
|
68
|
-
__typename
|
|
69
|
-
}
|
package/benchmark/package.json
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "benchmark",
|
|
3
|
-
"private": true,
|
|
4
|
-
"version": "1.0.0",
|
|
5
|
-
"main": "suite.js",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"start": "NODE_ENV=production benchr suite.js"
|
|
9
|
-
},
|
|
10
|
-
"dependencies": {
|
|
11
|
-
"benchr": "4.3.0",
|
|
12
|
-
"graphql": "^16.6.0"
|
|
13
|
-
}
|
|
14
|
-
}
|
package/benchmark/suite.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const graphqlWeb = require('..');
|
|
3
|
-
const graphql = require('graphql');
|
|
4
|
-
|
|
5
|
-
const kitchenSink = fs.readFileSync('./kitchen_sink.graphql', { encoding: 'utf8' });
|
|
6
|
-
const document = graphql.parse(kitchenSink, { noLocation: true });
|
|
7
|
-
|
|
8
|
-
suite('parse kitchen sink query', () => {
|
|
9
|
-
benchmark('0no-co/graphql.web', () => {
|
|
10
|
-
graphqlWeb.parse(kitchenSink);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
benchmark('graphql', () => {
|
|
14
|
-
graphql.parse(kitchenSink, { noLocation: true });
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
suite('print kitchen sink query', () => {
|
|
19
|
-
benchmark('0no-co/graphql.web', () => {
|
|
20
|
-
graphqlWeb.print(document);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
benchmark('graphql', () => {
|
|
24
|
-
graphql.print(document);
|
|
25
|
-
});
|
|
26
|
-
});
|
package/pnpm-workspace.yaml
DELETED
package/scripts/changelog.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
const { config } = require('dotenv');
|
|
2
|
-
const { getInfo } = require('@changesets/get-github-info');
|
|
3
|
-
|
|
4
|
-
config();
|
|
5
|
-
|
|
6
|
-
const REPO = '0no-co/wonka';
|
|
7
|
-
const SEE_LINE = /^See:\s*(.*)/i;
|
|
8
|
-
const TRAILING_CHAR = /[.;:]$/g;
|
|
9
|
-
const listFormatter = new Intl.ListFormat('en-US');
|
|
10
|
-
|
|
11
|
-
const getSummaryLines = cs => {
|
|
12
|
-
let lines = cs.summary.trim().split(/\r?\n/);
|
|
13
|
-
if (!lines.some(line => /```/.test(line))) {
|
|
14
|
-
lines = lines.map(l => l.trim()).filter(Boolean);
|
|
15
|
-
const size = lines.length;
|
|
16
|
-
if (size > 0) {
|
|
17
|
-
lines[size - 1] = lines[size - 1].replace(TRAILING_CHAR, '');
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return lines;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
/** Creates a "(See X)" string from a template */
|
|
24
|
-
const templateSeeRef = links => {
|
|
25
|
-
const humanReadableLinks = links.filter(Boolean).map(link => {
|
|
26
|
-
if (typeof link === 'string') return link;
|
|
27
|
-
return link.pull || link.commit;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
const size = humanReadableLinks.length;
|
|
31
|
-
if (size === 0) return '';
|
|
32
|
-
|
|
33
|
-
const str = listFormatter.format(humanReadableLinks);
|
|
34
|
-
return `(See ${str})`;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
const changelogFunctions = {
|
|
38
|
-
getDependencyReleaseLine: async (changesets, dependenciesUpdated) => {
|
|
39
|
-
if (dependenciesUpdated.length === 0) return '';
|
|
40
|
-
|
|
41
|
-
const dependenciesLinks = await Promise.all(
|
|
42
|
-
changesets.map(async cs => {
|
|
43
|
-
if (!cs.commit) return undefined;
|
|
44
|
-
|
|
45
|
-
const lines = getSummaryLines(cs);
|
|
46
|
-
const prLine = lines.find(line => SEE_LINE.test(line));
|
|
47
|
-
if (prLine) {
|
|
48
|
-
const match = prLine.match(SEE_LINE);
|
|
49
|
-
return (match && match[1].trim()) || undefined;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const { links } = await getInfo({
|
|
53
|
-
repo: REPO,
|
|
54
|
-
commit: cs.commit,
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
return links;
|
|
58
|
-
})
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
let changesetLink = '- Updated dependencies';
|
|
62
|
-
|
|
63
|
-
const seeRef = templateSeeRef(dependenciesLinks);
|
|
64
|
-
if (seeRef) changesetLink += ` ${seeRef}`;
|
|
65
|
-
|
|
66
|
-
const detailsLinks = dependenciesUpdated.map(dep => {
|
|
67
|
-
return ` - ${dep.name}@${dep.newVersion}`;
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
return [changesetLink, ...detailsLinks].join('\n');
|
|
71
|
-
},
|
|
72
|
-
getReleaseLine: async (changeset, type) => {
|
|
73
|
-
let pull, commit, user;
|
|
74
|
-
|
|
75
|
-
const lines = getSummaryLines(changeset);
|
|
76
|
-
const prLineIndex = lines.findIndex(line => SEE_LINE.test(line));
|
|
77
|
-
if (prLineIndex > -1) {
|
|
78
|
-
const match = lines[prLineIndex].match(SEE_LINE);
|
|
79
|
-
pull = (match && match[1].trim()) || undefined;
|
|
80
|
-
lines.splice(prLineIndex, 1);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const [firstLine, ...futureLines] = lines;
|
|
84
|
-
|
|
85
|
-
if (changeset.commit && !pull) {
|
|
86
|
-
const { links } = await getInfo({
|
|
87
|
-
repo: REPO,
|
|
88
|
-
commit: changeset.commit,
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
pull = links.pull || undefined;
|
|
92
|
-
commit = links.commit || undefined;
|
|
93
|
-
user = links.user || undefined;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
let annotation = '';
|
|
97
|
-
if (type === 'patch' && /^\s*fix/i.test(firstLine)) {
|
|
98
|
-
annotation = '⚠️ ';
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
let str = `- ${annotation}${firstLine}`;
|
|
102
|
-
if (futureLines.length > 0) {
|
|
103
|
-
str += `\n${futureLines.map(l => ` ${l}`).join('\n')}`;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const endsWithParagraph = /(?<=(?:[!;?.]|```) *)$/g;
|
|
107
|
-
if (user && !endsWithParagraph) {
|
|
108
|
-
str += `, by ${user}`;
|
|
109
|
-
} else {
|
|
110
|
-
str += `\nSubmitted by ${user}`;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (pull || commit) {
|
|
114
|
-
const seeRef = templateSeeRef([pull || commit]);
|
|
115
|
-
if (seeRef) str += ` ${seeRef}`;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
return str;
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
module.exports = {
|
|
123
|
-
...changelogFunctions,
|
|
124
|
-
default: changelogFunctions,
|
|
125
|
-
};
|
package/scripts/eslint-preset.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
parserOptions: {
|
|
3
|
-
ecmaVersion: 9,
|
|
4
|
-
sourceType: 'module',
|
|
5
|
-
ecmaFeatures: {
|
|
6
|
-
modules: true,
|
|
7
|
-
},
|
|
8
|
-
},
|
|
9
|
-
extends: ['prettier'],
|
|
10
|
-
plugins: ['prettier', 'tsdoc'],
|
|
11
|
-
ignorePatterns: ['node_modules/', 'dist/', 'coverage/', 'perf/'],
|
|
12
|
-
rules: {
|
|
13
|
-
'sort-keys': 'off',
|
|
14
|
-
'no-console': ['error', { allow: ['warn', 'error'] }],
|
|
15
|
-
'prefer-arrow/prefer-arrow-functions': 'off',
|
|
16
|
-
'prefer-rest-params': 'off',
|
|
17
|
-
|
|
18
|
-
'prettier/prettier': [
|
|
19
|
-
'error',
|
|
20
|
-
{
|
|
21
|
-
singleQuote: true,
|
|
22
|
-
arrowParens: 'avoid',
|
|
23
|
-
trailingComma: 'es5',
|
|
24
|
-
},
|
|
25
|
-
],
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
overrides: [
|
|
29
|
-
{
|
|
30
|
-
files: ['*.ts'],
|
|
31
|
-
parser: '@typescript-eslint/parser',
|
|
32
|
-
extends: ['plugin:@typescript-eslint/recommended', 'prettier'],
|
|
33
|
-
rules: {
|
|
34
|
-
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
|
35
|
-
'@typescript-eslint/no-use-before-define': 'off',
|
|
36
|
-
'@typescript-eslint/ban-types': 'off',
|
|
37
|
-
'@typescript-eslint/ban-ts-comment': 'off',
|
|
38
|
-
'@typescript-eslint/member-ordering': 'off',
|
|
39
|
-
'@typescript-eslint/explicit-member-accessibility': 'off',
|
|
40
|
-
'@typescript-eslint/no-object-literal-type-assertion': 'off',
|
|
41
|
-
'@typescript-eslint/explicit-function-return-type': 'off',
|
|
42
|
-
'@typescript-eslint/interface-name-prefix': 'off',
|
|
43
|
-
'@typescript-eslint/no-non-null-assertion': 'off',
|
|
44
|
-
'@typescript-eslint/no-misused-new': 'off',
|
|
45
|
-
'@typescript-eslint/no-explicit-any': 'off',
|
|
46
|
-
'@typescript-eslint/array-type': 'off',
|
|
47
|
-
'@typescript-eslint/no-empty-function': 'off',
|
|
48
|
-
'@typescript-eslint/no-unused-vars': 'off',
|
|
49
|
-
'prefer-rest-params': 'off',
|
|
50
|
-
'tsdoc/syntax': 'error',
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
],
|
|
54
|
-
};
|
package/scripts/prepare.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const fs = require('fs');
|
|
3
|
-
|
|
4
|
-
const hookSource = path.resolve(__dirname, '../node_modules/husky-v4/sh/husky.sh');
|
|
5
|
-
const hook = path.resolve(__dirname, '../.git/hooks/husky.sh');
|
|
6
|
-
const localHook = path.resolve(__dirname, '../.git/hooks/husky.local.sh');
|
|
7
|
-
const gitConfig = path.resolve(__dirname, '../.git/config');
|
|
8
|
-
|
|
9
|
-
let script = fs.readFileSync(hookSource, { encoding: 'utf-8' });
|
|
10
|
-
script = script.replace(`$(basename "$0")`, `$(basename "$0" .sh)`);
|
|
11
|
-
|
|
12
|
-
let config = fs.readFileSync(gitConfig, { encoding: 'utf-8' });
|
|
13
|
-
config = config.replace(/\s*hooksPath\s*=\s*\.husky\n?/g, '\n');
|
|
14
|
-
|
|
15
|
-
fs.writeFileSync(hook, script);
|
|
16
|
-
fs.writeFileSync(gitConfig, config);
|
|
17
|
-
|
|
18
|
-
fs.writeFileSync(localHook, 'packageManager=yarn\n' + 'cd "."\n');
|