@graphitation/supermassive 2.5.0 → 3.0.0-alpha.1
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/.eslintcache +1 -1
- package/CHANGELOG.md +18 -2
- package/lib/benchmarks/index.js +2 -2
- package/lib/benchmarks/index.js.map +2 -2
- package/lib/benchmarks/index.mjs +2 -2
- package/lib/benchmarks/index.mjs.map +2 -2
- package/lib/benchmarks/swapi-schema/index.d.ts +4 -2
- package/lib/benchmarks/swapi-schema/index.d.ts.map +1 -1
- package/lib/benchmarks/swapi-schema/index.js +8 -2
- package/lib/benchmarks/swapi-schema/index.js.map +2 -2
- package/lib/benchmarks/swapi-schema/index.mjs +8 -2
- package/lib/benchmarks/swapi-schema/index.mjs.map +2 -2
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.d.ts +7 -0
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.d.ts.map +1 -0
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.js +916 -0
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.js.map +7 -0
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.mjs +903 -0
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.mjs.map +7 -0
- package/lib/benchmarks/swapi-schema/resolvers.d.ts.map +1 -1
- package/lib/benchmarks/swapi-schema/resolvers.js +53 -17
- package/lib/benchmarks/swapi-schema/resolvers.js.map +2 -2
- package/lib/benchmarks/swapi-schema/resolvers.mjs +54 -18
- package/lib/benchmarks/swapi-schema/resolvers.mjs.map +2 -2
- package/lib/collectFields.d.ts +28 -6
- package/lib/collectFields.d.ts.map +1 -1
- package/lib/collectFields.js +155 -28
- package/lib/collectFields.js.map +3 -3
- package/lib/collectFields.mjs +150 -29
- package/lib/collectFields.mjs.map +2 -2
- package/lib/definition.js +1 -1
- package/lib/definition.js.map +2 -2
- package/lib/definition.mjs +1 -1
- package/lib/definition.mjs.map +2 -2
- package/lib/directives.d.ts +2 -73
- package/lib/directives.d.ts.map +1 -1
- package/lib/directives.js +10 -123
- package/lib/directives.js.map +2 -2
- package/lib/directives.mjs +13 -122
- package/lib/directives.mjs.map +2 -2
- package/lib/executeWithoutSchema.d.ts +50 -13
- package/lib/executeWithoutSchema.d.ts.map +1 -1
- package/lib/executeWithoutSchema.js +1038 -184
- package/lib/executeWithoutSchema.js.map +3 -3
- package/lib/executeWithoutSchema.mjs +1049 -186
- package/lib/executeWithoutSchema.mjs.map +3 -3
- package/lib/extractImplicitTypesRuntime.js +2 -2
- package/lib/extractImplicitTypesRuntime.js.map +2 -2
- package/lib/extractImplicitTypesRuntime.mjs +2 -2
- package/lib/extractImplicitTypesRuntime.mjs.map +2 -2
- package/lib/hooks/types.d.ts +1 -1
- package/lib/hooks/types.d.ts.map +1 -1
- package/lib/index.d.ts +4 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -1
- package/lib/index.js.map +2 -2
- package/lib/index.mjs +4 -1
- package/lib/index.mjs.map +2 -2
- package/lib/jsutils/AccumulatorMap.d.ts +8 -0
- package/lib/jsutils/AccumulatorMap.d.ts.map +1 -0
- package/lib/jsutils/AccumulatorMap.js +36 -0
- package/lib/jsutils/AccumulatorMap.js.map +7 -0
- package/lib/jsutils/AccumulatorMap.mjs +17 -0
- package/lib/jsutils/AccumulatorMap.mjs.map +7 -0
- package/lib/jsutils/Maybe.d.ts +1 -1
- package/lib/jsutils/Maybe.d.ts.map +1 -1
- package/lib/jsutils/ObjMap.d.ts +2 -2
- package/lib/jsutils/ObjMap.d.ts.map +1 -1
- package/lib/jsutils/PromiseOrValue.d.ts +1 -1
- package/lib/jsutils/PromiseOrValue.d.ts.map +1 -1
- package/lib/jsutils/didYouMean.d.ts +1 -2
- package/lib/jsutils/didYouMean.d.ts.map +1 -1
- package/lib/jsutils/didYouMean.js.map +2 -2
- package/lib/jsutils/didYouMean.mjs.map +2 -2
- package/lib/jsutils/instanceOf.js.map +2 -2
- package/lib/jsutils/instanceOf.mjs.map +2 -2
- package/lib/subscribeWithSchema.d.ts +3 -2
- package/lib/subscribeWithSchema.d.ts.map +1 -1
- package/lib/subscribeWithSchema.js.map +2 -2
- package/lib/subscribeWithSchema.mjs.map +2 -2
- package/lib/subscribeWithoutSchema.d.ts +3 -35
- package/lib/subscribeWithoutSchema.d.ts.map +1 -1
- package/lib/subscribeWithoutSchema.js +1 -163
- package/lib/subscribeWithoutSchema.js.map +2 -2
- package/lib/subscribeWithoutSchema.mjs +2 -175
- package/lib/subscribeWithoutSchema.mjs.map +2 -2
- package/lib/supermassive-ast/TypedAST.d.ts +370 -0
- package/lib/supermassive-ast/TypedAST.d.ts.map +1 -0
- package/lib/supermassive-ast/TypedAST.js +29 -0
- package/lib/supermassive-ast/TypedAST.js.map +7 -0
- package/lib/supermassive-ast/TypedAST.mjs +10 -0
- package/lib/supermassive-ast/TypedAST.mjs.map +7 -0
- package/lib/supermassive-ast/addTypesToRequestDocument.d.ts +56 -0
- package/lib/supermassive-ast/addTypesToRequestDocument.d.ts.map +1 -0
- package/lib/supermassive-ast/addTypesToRequestDocument.js +473 -0
- package/lib/supermassive-ast/addTypesToRequestDocument.js.map +7 -0
- package/lib/supermassive-ast/addTypesToRequestDocument.mjs +463 -0
- package/lib/supermassive-ast/addTypesToRequestDocument.mjs.map +7 -0
- package/lib/supermassive-ast/annotateDocumentGraphQLTransform.d.ts +3 -0
- package/lib/supermassive-ast/annotateDocumentGraphQLTransform.d.ts.map +1 -0
- package/lib/supermassive-ast/annotateDocumentGraphQLTransform.js +34 -0
- package/lib/supermassive-ast/annotateDocumentGraphQLTransform.js.map +7 -0
- package/lib/supermassive-ast/annotateDocumentGraphQLTransform.mjs +17 -0
- package/lib/supermassive-ast/annotateDocumentGraphQLTransform.mjs.map +7 -0
- package/lib/supermassive-ast/directives.d.ts +36 -0
- package/lib/supermassive-ast/directives.d.ts.map +1 -0
- package/lib/supermassive-ast/directives.js +165 -0
- package/lib/supermassive-ast/directives.js.map +7 -0
- package/lib/supermassive-ast/directives.mjs +153 -0
- package/lib/supermassive-ast/directives.mjs.map +7 -0
- package/lib/supermassive-ast/index.d.ts +6 -0
- package/lib/supermassive-ast/index.d.ts.map +1 -0
- package/lib/supermassive-ast/index.js +37 -0
- package/lib/supermassive-ast/index.js.map +7 -0
- package/lib/supermassive-ast/index.mjs +27 -0
- package/lib/supermassive-ast/index.mjs.map +7 -0
- package/lib/types.d.ts +80 -24
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +14 -0
- package/lib/types.js.map +2 -2
- package/lib/types.mjs +11 -0
- package/lib/types.mjs.map +3 -3
- package/lib/utilities/mergeResolvers.d.ts +1 -1
- package/lib/utilities/mergeResolvers.d.ts.map +1 -1
- package/lib/utilities/mergeResolvers.js.map +2 -2
- package/lib/utilities/mergeResolvers.mjs.map +2 -2
- package/lib/utilities/typeNameFromAST.d.ts +1 -1
- package/lib/utilities/typeNameFromAST.d.ts.map +1 -1
- package/lib/utilities/typeNameFromAST.js.map +1 -1
- package/lib/utilities/typeNameFromAST.mjs.map +1 -1
- package/lib/values.d.ts +3 -4
- package/lib/values.d.ts.map +1 -1
- package/lib/values.js +10 -14
- package/lib/values.js.map +2 -2
- package/lib/values.mjs +10 -14
- package/lib/values.mjs.map +2 -2
- package/package.json +4 -9
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/supermassive-ast/addTypesToRequestDocument.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n GraphQLType,\n GraphQLSchema,\n isListType,\n isNamedType,\n isNonNullType,\n visit,\n Kind,\n astFromValue,\n GraphQLArgument,\n ASTVisitor,\n GraphQLCompositeType,\n GraphQLEnumValue,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputType,\n GraphQLOutputType,\n getEnterLeaveForKind,\n getNamedType,\n getNullableType,\n isCompositeType,\n isEnumType,\n isInputObjectType,\n isInputType,\n isObjectType,\n isOutputType,\n typeFromAST,\n GraphQLDirective,\n} from \"graphql\";\n\nimport * as TypelessAST from \"graphql/language/ast\";\nimport * as TypedAST from \"./TypedAST\";\nimport { Maybe } from \"graphql/jsutils/Maybe\";\nexport * from \"./TypedAST\";\nimport { specifiedDirectives } from \"./directives\";\n\nexport function addTypesToRequestDocument(\n schema: GraphQLSchema,\n document: TypelessAST.DocumentNode,\n options: {\n ignoredDirectives?: string[];\n } = {},\n): TypedAST.DocumentNode {\n const typeInfo = new TypeInfo(schema, {\n defaultDirectives: specifiedDirectives,\n ignoredDirectives: options.ignoredDirectives,\n });\n return visit(\n document as TypelessAST.DocumentNode,\n visitWithTypeInfo(typeInfo, {\n Argument: {\n leave(node, _key, _parent, _path, ancestors) {\n const argument = typeInfo.getArgument();\n if (argument) {\n const typeNode = generateTypeNode(argument.type);\n const newNode: TypedAST.ArgumentNode = {\n ...node,\n __type: typeNode,\n };\n // We only need default value for arguments with variable values\n if (argument.defaultValue && node.value.kind === Kind.VARIABLE) {\n (newNode.__defaultValue as\n | TypedAST.ValueNode\n | null\n | undefined) = astFromValue(\n argument.defaultValue,\n argument.type,\n );\n }\n return newNode;\n }\n if (!typeInfo.isInIgnoredDirective()) {\n const errorPath = makeReadableErrorPath(ancestors);\n throw new Error(\n `Cannot find type for argument: ${errorPath.join(\".\")}.${\n node.name.value\n }`,\n );\n }\n },\n },\n Directive: {\n leave(\n node: TypelessAST.DirectiveNode,\n _key,\n _parent,\n _path,\n ancestors,\n ) {\n const directiveDef = typeInfo.getDirective();\n if (directiveDef) {\n const missingArgs: Array<GraphQLArgument> =\n directiveDef.args.filter(\n (argDef) =>\n argDef.defaultValue != null &&\n node.arguments?.findIndex(\n (arg) => arg.name.value === argDef.name,\n ) === -1,\n );\n if (missingArgs) {\n const newNode: TypedAST.DirectiveNode = {\n ...(node as Omit<TypelessAST.DirectiveNode, \"arguments\">),\n };\n (newNode.arguments as TypedAST.ArgumentNode[]) = (\n newNode.arguments || []\n ).concat(\n missingArgs.map((arg) => ({\n __type: generateTypeNode(arg.type),\n kind: Kind.ARGUMENT,\n name: {\n kind: Kind.NAME,\n value: arg.name,\n },\n value: astFromValue(\n arg.defaultValue,\n arg.type,\n ) as TypedAST.ValueNode,\n })),\n );\n return newNode;\n }\n return node as TypedAST.DirectiveNode;\n }\n\n if (!typeInfo.isInIgnoredDirective()) {\n const errorPath = makeReadableErrorPath(ancestors);\n\n // This happens whenever a directive is requested that hasn't been defined in schema\n throw new Error(\n `Cannot find type for directive: ${errorPath.join(\".\")}.${\n node.name.value\n }`,\n );\n }\n },\n },\n Field: {\n leave(\n node: Omit<TypelessAST.FieldNode, \"selectionSet\" | \"directives\">,\n _key,\n _parent,\n _path,\n ancestors,\n ) {\n const fieldDef = typeInfo.getFieldDef();\n if (fieldDef) {\n const type = fieldDef.type;\n if (type) {\n const typeNode = generateTypeNode(type);\n const missingArgs: Array<GraphQLArgument> = fieldDef.args.filter(\n (argDef) =>\n argDef.defaultValue != null &&\n node.arguments?.findIndex(\n (arg) => arg.name.value === argDef.name,\n ) === -1,\n );\n const newNode: TypedAST.FieldNode = {\n ...(node as Omit<\n TypelessAST.FieldNode,\n \"selectionSet\" | \"arguments\" | \"directives\"\n >),\n __type: typeNode,\n };\n if (missingArgs) {\n (newNode.arguments as TypedAST.ArgumentNode[]) = (\n newNode.arguments || []\n ).concat(\n missingArgs.map((arg) => ({\n __type: generateTypeNode(arg.type),\n kind: Kind.ARGUMENT,\n name: {\n kind: Kind.NAME,\n value: arg.name,\n },\n value: astFromValue(\n arg.defaultValue,\n arg.type,\n ) as TypedAST.ValueNode,\n })),\n );\n }\n return newNode;\n }\n }\n\n const errorPath = makeReadableErrorPath(ancestors);\n\n // This happens whenever a new field is requested that hasn't been defined in schema\n throw new Error(\n `Cannot find type for field: ${errorPath.join(\".\")}.${\n node.name.value\n }`,\n );\n },\n },\n }),\n ) as TypedAST.DocumentNode;\n}\n\nfunction generateTypeNode(type: GraphQLType): TypedAST.TypeNode {\n if (isNonNullType(type)) {\n const typeNode = generateTypeNode(type.ofType) as\n | TypedAST.NamedTypeNode\n | TypedAST.ListTypeNode;\n return {\n kind: \"NonNullType\",\n type: typeNode,\n };\n } else if (isListType(type)) {\n const typeNode = generateTypeNode(type.ofType) as\n | TypedAST.NamedTypeNode\n | TypedAST.NonNullTypeNode;\n return {\n kind: \"ListType\",\n type: typeNode,\n };\n } else if (isNamedType(type)) {\n return {\n kind: \"NamedType\",\n name: {\n kind: \"Name\",\n value: type.name,\n },\n };\n }\n throw new Error(`Can't generate TypeNode for type: ${type}`);\n}\n\nfunction makeReadableErrorPath(\n ancestors: ReadonlyArray<\n readonly TypelessAST.ASTNode[] | TypelessAST.ASTNode\n >,\n): string[] {\n const path: string[] = [];\n ancestors.forEach((ancestorOrArray) => {\n let ancestor: TypelessAST.ASTNode;\n if (!Array.isArray(ancestorOrArray)) {\n ancestor = ancestorOrArray as TypelessAST.ASTNode;\n if (ancestor && ancestor.kind === Kind.FIELD) {\n path.push(ancestor.name.value);\n } else if (ancestor && ancestor.kind === Kind.DIRECTIVE) {\n path.push(`@${ancestor.name.value}`);\n } else if (ancestor && ancestor.kind === Kind.OPERATION_DEFINITION) {\n let name;\n if (ancestor.name) {\n name = `${ancestor.operation} ${ancestor.name.value}`;\n } else {\n name = ancestor.operation;\n }\n path.push(name);\n }\n }\n });\n return path;\n}\n\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\nexport class TypeInfo {\n private _schema: GraphQLSchema;\n private _typeStack: Array<Maybe<GraphQLOutputType>>;\n private _parentTypeStack: Array<Maybe<GraphQLCompositeType>>;\n private _inputTypeStack: Array<Maybe<GraphQLInputType>>;\n private _fieldDefStack: Array<Maybe<GraphQLField<unknown, unknown>>>;\n private _defaultValueStack: Array<Maybe<unknown>>;\n private _directive: Maybe<GraphQLDirective>;\n private _argument: Maybe<GraphQLArgument>;\n private _enumValue: Maybe<GraphQLEnumValue>;\n private _isInIgnoredDirective: boolean;\n\n private _defaultDirectives: Map<string, GraphQLDirective>;\n private _ignoredDirectives: Set<string>;\n\n constructor(\n schema: GraphQLSchema,\n /**\n * Initial type may be provided in rare cases to facilitate traversals\n * beginning somewhere other than documents.\n */\n options: {\n initialType?: Maybe<GraphQLType>;\n defaultDirectives?: ReadonlyArray<GraphQLDirective>;\n ignoredDirectives?: ReadonlyArray<string>;\n } = {},\n ) {\n this._schema = schema;\n this._typeStack = [];\n this._parentTypeStack = [];\n this._inputTypeStack = [];\n this._fieldDefStack = [];\n this._defaultValueStack = [];\n this._directive = null;\n this._isInIgnoredDirective = false;\n this._argument = null;\n this._enumValue = null;\n if (options.initialType) {\n if (isInputType(options.initialType)) {\n this._inputTypeStack.push(options.initialType);\n }\n if (isCompositeType(options.initialType)) {\n this._parentTypeStack.push(options.initialType);\n }\n if (isOutputType(options.initialType)) {\n this._typeStack.push(options.initialType);\n }\n }\n this._defaultDirectives = new Map();\n for (const directive of options.defaultDirectives || []) {\n this._defaultDirectives.set(directive.name, directive);\n }\n this._ignoredDirectives = new Set(options.ignoredDirectives || []);\n }\n\n get [Symbol.toStringTag]() {\n return \"TypeInfo\";\n }\n\n getType(): Maybe<GraphQLOutputType> {\n return at(this._typeStack, -1);\n }\n\n getParentType(): Maybe<GraphQLCompositeType> {\n return at(this._parentTypeStack, -1);\n }\n\n getInputType(): Maybe<GraphQLInputType> {\n return at(this._inputTypeStack, -1);\n }\n\n getParentInputType(): Maybe<GraphQLInputType> {\n return at(this._inputTypeStack, -2);\n }\n\n getFieldDef(): Maybe<GraphQLField<unknown, unknown>> {\n return at(this._fieldDefStack, -1);\n }\n\n getDefaultValue(): Maybe<unknown> {\n return at(this._defaultValueStack, -1);\n }\n\n getDirective(): Maybe<GraphQLDirective> {\n return this._directive;\n }\n\n getArgument(): Maybe<GraphQLArgument> {\n return this._argument;\n }\n\n getEnumValue(): Maybe<GraphQLEnumValue> {\n return this._enumValue;\n }\n\n isInIgnoredDirective(): boolean {\n return this._isInIgnoredDirective;\n }\n\n enter(node: TypelessAST.ASTNode) {\n const schema = this._schema;\n // Note: many of the types below are explicitly typed as \"unknown\" to drop\n // any assumptions of a valid schema to ensure runtime types are properly\n // checked before continuing since TypeInfo is used as part of validation\n // which occurs before guarantees of schema and document validity.\n switch (node.kind) {\n case Kind.SELECTION_SET: {\n const namedType: unknown = getNamedType(this.getType());\n this._parentTypeStack.push(\n isCompositeType(namedType) ? namedType : undefined,\n );\n break;\n }\n case Kind.FIELD: {\n const parentType = this.getParentType();\n let fieldDef;\n let fieldType: unknown;\n if (parentType) {\n fieldDef = getFieldDef(schema, parentType, node);\n if (fieldDef) {\n fieldType = fieldDef.type;\n }\n }\n this._fieldDefStack.push(fieldDef);\n this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);\n break;\n }\n case Kind.DIRECTIVE: {\n const name = node.name.value;\n this._directive = schema.getDirective(name) as GraphQLDirective;\n if (!this._directive) {\n if (this._defaultDirectives.has(name)) {\n this._directive = this._defaultDirectives.get(name);\n }\n if (this._ignoredDirectives.has(name)) {\n this._isInIgnoredDirective = true;\n }\n }\n break;\n }\n case Kind.OPERATION_DEFINITION: {\n const rootType = schema.getRootType(node.operation);\n this._typeStack.push(isObjectType(rootType) ? rootType : undefined);\n break;\n }\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION: {\n const typeConditionAST = node.typeCondition;\n const outputType: unknown = typeConditionAST\n ? typeFromAST(schema, typeConditionAST)\n : getNamedType(this.getType());\n this._typeStack.push(isOutputType(outputType) ? outputType : undefined);\n break;\n }\n case Kind.VARIABLE_DEFINITION: {\n const inputType: unknown = typeFromAST(schema, node.type);\n this._inputTypeStack.push(\n isInputType(inputType) ? inputType : undefined,\n );\n break;\n }\n case Kind.ARGUMENT: {\n let argDef;\n let argType: unknown;\n const fieldOrDirective = this.getDirective() ?? this.getFieldDef();\n if (fieldOrDirective) {\n argDef = fieldOrDirective.args.find(\n (arg) => arg.name === node.name.value,\n );\n if (argDef) {\n argType = argDef.type;\n }\n }\n this._argument = argDef;\n this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n this._inputTypeStack.push(isInputType(argType) ? argType : undefined);\n break;\n }\n case Kind.LIST: {\n const listType: unknown = getNullableType(this.getInputType());\n const itemType: unknown = isListType(listType)\n ? listType.ofType\n : listType;\n // List positions never have a default value.\n this._defaultValueStack.push(undefined);\n this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);\n break;\n }\n case Kind.OBJECT_FIELD: {\n const objectType: unknown = getNamedType(this.getInputType());\n let inputFieldType: GraphQLInputType | undefined;\n let inputField: GraphQLInputField | undefined;\n if (isInputObjectType(objectType)) {\n inputField = objectType.getFields()[node.name.value];\n if (inputField != null) {\n inputFieldType = inputField.type;\n }\n }\n this._defaultValueStack.push(\n inputField ? inputField.defaultValue : undefined,\n );\n this._inputTypeStack.push(\n isInputType(inputFieldType) ? inputFieldType : undefined,\n );\n break;\n }\n case Kind.ENUM: {\n const enumType: unknown = getNamedType(this.getInputType());\n let enumValue;\n if (isEnumType(enumType)) {\n enumValue = enumType.getValue(node.value);\n }\n this._enumValue = enumValue;\n break;\n }\n default:\n // Ignore other nodes\n }\n }\n\n leave(node: TypelessAST.ASTNode) {\n switch (node.kind) {\n case Kind.SELECTION_SET:\n this._parentTypeStack.pop();\n break;\n case Kind.FIELD:\n this._fieldDefStack.pop();\n this._typeStack.pop();\n break;\n case Kind.DIRECTIVE:\n this._directive = null;\n this._isInIgnoredDirective = false;\n break;\n case Kind.OPERATION_DEFINITION:\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION:\n this._typeStack.pop();\n break;\n case Kind.VARIABLE_DEFINITION:\n this._inputTypeStack.pop();\n break;\n case Kind.ARGUMENT:\n this._argument = null;\n this._defaultValueStack.pop();\n this._inputTypeStack.pop();\n break;\n case Kind.LIST:\n case Kind.OBJECT_FIELD:\n this._defaultValueStack.pop();\n this._inputTypeStack.pop();\n break;\n case Kind.ENUM:\n this._enumValue = null;\n break;\n default:\n // Ignore other nodes\n }\n }\n}\n\nfunction getFieldDef(\n schema: GraphQLSchema,\n parentType: GraphQLCompositeType,\n fieldNode: TypelessAST.FieldNode,\n) {\n return schema.getField(parentType, fieldNode.name.value);\n}\n\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\nexport function visitWithTypeInfo(\n typeInfo: TypeInfo,\n visitor: ASTVisitor,\n): ASTVisitor {\n return {\n enter(...args) {\n const node = args[0];\n typeInfo.enter(node);\n const fn = getEnterLeaveForKind(visitor, node.kind).enter;\n if (fn) {\n const result = fn.apply(visitor, args);\n if (result !== undefined) {\n typeInfo.leave(node);\n if (TypelessAST.isNode(result)) {\n typeInfo.enter(result);\n }\n }\n return result;\n }\n },\n leave(...args) {\n const node = args[0];\n const fn = getEnterLeaveForKind(visitor, node.kind).leave;\n let result;\n if (fn) {\n result = fn.apply(visitor, args);\n }\n typeInfo.leave(node);\n return result;\n },\n };\n}\nfunction at<A>(arr: A[], index: number): A | undefined {\n const len = arr.length;\n const relativeIndex = index >= 0 ? index : len + index;\n\n if (relativeIndex < 0 || relativeIndex >= len) {\n return undefined;\n }\n\n return arr[relativeIndex];\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBA4BO;AAEP,kBAA6B;AAG7B,8CAAc,uBAjCd;AAkCA,wBAAoC;AAE7B,SAAS,0BACd,QACA,UACA,UAEI,CAAC,GACkB;AACvB,QAAM,WAAW,IAAI,SAAS,QAAQ;AAAA,IACpC,mBAAmB;AAAA,IACnB,mBAAmB,QAAQ;AAAA,EAC7B,CAAC;AACD,aAAO;AAAA,IACL;AAAA,IACA,kBAAkB,UAAU;AAAA,MAC1B,UAAU;AAAA,QACR,MAAM,MAAM,MAAM,SAAS,OAAO,WAAW;AAC3C,gBAAM,WAAW,SAAS,YAAY;AACtC,cAAI,UAAU;AACZ,kBAAM,WAAW,iBAAiB,SAAS,IAAI;AAC/C,kBAAM,UAAiC,iCAClC,OADkC;AAAA,cAErC,QAAQ;AAAA,YACV;AAEA,gBAAI,SAAS,gBAAgB,KAAK,MAAM,SAAS,oBAAK,UAAU;AAC9D,cAAC,QAAQ,qBAGQ;AAAA,gBACf,SAAS;AAAA,gBACT,SAAS;AAAA,cACX;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,SAAS,qBAAqB,GAAG;AACpC,kBAAM,YAAY,sBAAsB,SAAS;AACjD,kBAAM,IAAI;AAAA,cACR,kCAAkC,UAAU,KAAK,GAAG,KAClD,KAAK,KAAK;AAAA,YAEd;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,MACE,MACA,MACA,SACA,OACA,WACA;AACA,gBAAM,eAAe,SAAS,aAAa;AAC3C,cAAI,cAAc;AAChB,kBAAM,cACJ,aAAa,KAAK;AAAA,cAChB,CAAC,WAAQ;AA7FzB;AA8FkB,8BAAO,gBAAgB,UACvB,UAAK,cAAL,mBAAgB;AAAA,kBACd,CAAC,QAAQ,IAAI,KAAK,UAAU,OAAO;AAAA,uBAC/B;AAAA;AAAA,YACV;AACF,gBAAI,aAAa;AACf,oBAAM,UAAkC,mBAClC;AAEN,cAAC,QAAQ,aACP,QAAQ,aAAa,CAAC,GACtB;AAAA,gBACA,YAAY,IAAI,CAAC,SAAS;AAAA,kBACxB,QAAQ,iBAAiB,IAAI,IAAI;AAAA,kBACjC,MAAM,oBAAK;AAAA,kBACX,MAAM;AAAA,oBACJ,MAAM,oBAAK;AAAA,oBACX,OAAO,IAAI;AAAA,kBACb;AAAA,kBACA,WAAO;AAAA,oBACL,IAAI;AAAA,oBACJ,IAAI;AAAA,kBACN;AAAA,gBACF,EAAE;AAAA,cACJ;AACA,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AAEA,cAAI,CAAC,SAAS,qBAAqB,GAAG;AACpC,kBAAM,YAAY,sBAAsB,SAAS;AAGjD,kBAAM,IAAI;AAAA,cACR,mCAAmC,UAAU,KAAK,GAAG,KACnD,KAAK,KAAK;AAAA,YAEd;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,MACE,MACA,MACA,SACA,OACA,WACA;AACA,gBAAM,WAAW,SAAS,YAAY;AACtC,cAAI,UAAU;AACZ,kBAAM,OAAO,SAAS;AACtB,gBAAI,MAAM;AACR,oBAAM,WAAW,iBAAiB,IAAI;AACtC,oBAAM,cAAsC,SAAS,KAAK;AAAA,gBACxD,CAAC,WAAQ;AAtJzB;AAuJkB,gCAAO,gBAAgB,UACvB,UAAK,cAAL,mBAAgB;AAAA,oBACd,CAAC,QAAQ,IAAI,KAAK,UAAU,OAAO;AAAA,yBAC/B;AAAA;AAAA,cACV;AACA,oBAAM,UAA8B,iCAC9B,OAD8B;AAAA,gBAKlC,QAAQ;AAAA,cACV;AACA,kBAAI,aAAa;AACf,gBAAC,QAAQ,aACP,QAAQ,aAAa,CAAC,GACtB;AAAA,kBACA,YAAY,IAAI,CAAC,SAAS;AAAA,oBACxB,QAAQ,iBAAiB,IAAI,IAAI;AAAA,oBACjC,MAAM,oBAAK;AAAA,oBACX,MAAM;AAAA,sBACJ,MAAM,oBAAK;AAAA,sBACX,OAAO,IAAI;AAAA,oBACb;AAAA,oBACA,WAAO;AAAA,sBACL,IAAI;AAAA,sBACJ,IAAI;AAAA,oBACN;AAAA,kBACF,EAAE;AAAA,gBACJ;AAAA,cACF;AACA,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,gBAAM,YAAY,sBAAsB,SAAS;AAGjD,gBAAM,IAAI;AAAA,YACR,+BAA+B,UAAU,KAAK,GAAG,KAC/C,KAAK,KAAK;AAAA,UAEd;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,SAAS,iBAAiB,MAAsC;AAC9D,UAAI,8BAAc,IAAI,GAAG;AACvB,UAAM,WAAW,iBAAiB,KAAK,MAAM;AAG7C,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF,eAAW,2BAAW,IAAI,GAAG;AAC3B,UAAM,WAAW,iBAAiB,KAAK,MAAM;AAG7C,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF,eAAW,4BAAY,IAAI,GAAG;AAC5B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,OAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACA,QAAM,IAAI,MAAM,qCAAqC,MAAM;AAC7D;AAEA,SAAS,sBACP,WAGU;AACV,QAAM,OAAiB,CAAC;AACxB,YAAU,QAAQ,CAAC,oBAAoB;AACrC,QAAI;AACJ,QAAI,CAAC,MAAM,QAAQ,eAAe,GAAG;AACnC,iBAAW;AACX,UAAI,YAAY,SAAS,SAAS,oBAAK,OAAO;AAC5C,aAAK,KAAK,SAAS,KAAK,KAAK;AAAA,MAC/B,WAAW,YAAY,SAAS,SAAS,oBAAK,WAAW;AACvD,aAAK,KAAK,IAAI,SAAS,KAAK,OAAO;AAAA,MACrC,WAAW,YAAY,SAAS,SAAS,oBAAK,sBAAsB;AAClE,YAAI;AACJ,YAAI,SAAS,MAAM;AACjB,iBAAO,GAAG,SAAS,aAAa,SAAS,KAAK;AAAA,QAChD,OAAO;AACL,iBAAO,SAAS;AAAA,QAClB;AACA,aAAK,KAAK,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAOO,MAAM,SAAS;AAAA,EAepB,YACE,QAKA,UAII,CAAC,GACL;AACA,SAAK,UAAU;AACf,SAAK,aAAa,CAAC;AACnB,SAAK,mBAAmB,CAAC;AACzB,SAAK,kBAAkB,CAAC;AACxB,SAAK,iBAAiB,CAAC;AACvB,SAAK,qBAAqB,CAAC;AAC3B,SAAK,aAAa;AAClB,SAAK,wBAAwB;AAC7B,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,QAAI,QAAQ,aAAa;AACvB,cAAI,4BAAY,QAAQ,WAAW,GAAG;AACpC,aAAK,gBAAgB,KAAK,QAAQ,WAAW;AAAA,MAC/C;AACA,cAAI,gCAAgB,QAAQ,WAAW,GAAG;AACxC,aAAK,iBAAiB,KAAK,QAAQ,WAAW;AAAA,MAChD;AACA,cAAI,6BAAa,QAAQ,WAAW,GAAG;AACrC,aAAK,WAAW,KAAK,QAAQ,WAAW;AAAA,MAC1C;AAAA,IACF;AACA,SAAK,qBAAqB,oBAAI,IAAI;AAClC,eAAW,aAAa,QAAQ,qBAAqB,CAAC,GAAG;AACvD,WAAK,mBAAmB,IAAI,UAAU,MAAM,SAAS;AAAA,IACvD;AACA,SAAK,qBAAqB,IAAI,IAAI,QAAQ,qBAAqB,CAAC,CAAC;AAAA,EACnE;AAAA,EAEA,KAAK,OAAO,WAAW,IAAI;AACzB,WAAO;AAAA,EACT;AAAA,EAEA,UAAoC;AAClC,WAAO,GAAG,KAAK,YAAY,EAAE;AAAA,EAC/B;AAAA,EAEA,gBAA6C;AAC3C,WAAO,GAAG,KAAK,kBAAkB,EAAE;AAAA,EACrC;AAAA,EAEA,eAAwC;AACtC,WAAO,GAAG,KAAK,iBAAiB,EAAE;AAAA,EACpC;AAAA,EAEA,qBAA8C;AAC5C,WAAO,GAAG,KAAK,iBAAiB,EAAE;AAAA,EACpC;AAAA,EAEA,cAAqD;AACnD,WAAO,GAAG,KAAK,gBAAgB,EAAE;AAAA,EACnC;AAAA,EAEA,kBAAkC;AAChC,WAAO,GAAG,KAAK,oBAAoB,EAAE;AAAA,EACvC;AAAA,EAEA,eAAwC;AACtC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,cAAsC;AACpC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,eAAwC;AACtC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,uBAAgC;AAC9B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,MAA2B;AAxWnC;AAyWI,UAAM,SAAS,KAAK;AAKpB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK,oBAAK,eAAe;AACvB,cAAM,gBAAqB,6BAAa,KAAK,QAAQ,CAAC;AACtD,aAAK,iBAAiB;AAAA,cACpB,gCAAgB,SAAS,IAAI,YAAY;AAAA,QAC3C;AACA;AAAA,MACF;AAAA,MACA,KAAK,oBAAK,OAAO;AACf,cAAM,aAAa,KAAK,cAAc;AACtC,YAAI;AACJ,YAAI;AACJ,YAAI,YAAY;AACd,qBAAW,YAAY,QAAQ,YAAY,IAAI;AAC/C,cAAI,UAAU;AACZ,wBAAY,SAAS;AAAA,UACvB;AAAA,QACF;AACA,aAAK,eAAe,KAAK,QAAQ;AACjC,aAAK,WAAW,SAAK,6BAAa,SAAS,IAAI,YAAY,MAAS;AACpE;AAAA,MACF;AAAA,MACA,KAAK,oBAAK,WAAW;AACnB,cAAM,OAAO,KAAK,KAAK;AACvB,aAAK,aAAa,OAAO,aAAa,IAAI;AAC1C,YAAI,CAAC,KAAK,YAAY;AACpB,cAAI,KAAK,mBAAmB,IAAI,IAAI,GAAG;AACrC,iBAAK,aAAa,KAAK,mBAAmB,IAAI,IAAI;AAAA,UACpD;AACA,cAAI,KAAK,mBAAmB,IAAI,IAAI,GAAG;AACrC,iBAAK,wBAAwB;AAAA,UAC/B;AAAA,QACF;AACA;AAAA,MACF;AAAA,MACA,KAAK,oBAAK,sBAAsB;AAC9B,cAAM,WAAW,OAAO,YAAY,KAAK,SAAS;AAClD,aAAK,WAAW,SAAK,6BAAa,QAAQ,IAAI,WAAW,MAAS;AAClE;AAAA,MACF;AAAA,MACA,KAAK,oBAAK;AAAA,MACV,KAAK,oBAAK,qBAAqB;AAC7B,cAAM,mBAAmB,KAAK;AAC9B,cAAM,aAAsB,uBACxB,4BAAY,QAAQ,gBAAgB,QACpC,6BAAa,KAAK,QAAQ,CAAC;AAC/B,aAAK,WAAW,SAAK,6BAAa,UAAU,IAAI,aAAa,MAAS;AACtE;AAAA,MACF;AAAA,MACA,KAAK,oBAAK,qBAAqB;AAC7B,cAAM,gBAAqB,4BAAY,QAAQ,KAAK,IAAI;AACxD,aAAK,gBAAgB;AAAA,cACnB,4BAAY,SAAS,IAAI,YAAY;AAAA,QACvC;AACA;AAAA,MACF;AAAA,MACA,KAAK,oBAAK,UAAU;AAClB,YAAI;AACJ,YAAI;AACJ,cAAM,oBAAmB,UAAK,aAAa,MAAlB,YAAuB,KAAK,YAAY;AACjE,YAAI,kBAAkB;AACpB,mBAAS,iBAAiB,KAAK;AAAA,YAC7B,CAAC,QAAQ,IAAI,SAAS,KAAK,KAAK;AAAA,UAClC;AACA,cAAI,QAAQ;AACV,sBAAU,OAAO;AAAA,UACnB;AAAA,QACF;AACA,aAAK,YAAY;AACjB,aAAK,mBAAmB,KAAK,SAAS,OAAO,eAAe,MAAS;AACrE,aAAK,gBAAgB,SAAK,4BAAY,OAAO,IAAI,UAAU,MAAS;AACpE;AAAA,MACF;AAAA,MACA,KAAK,oBAAK,MAAM;AACd,cAAM,eAAoB,gCAAgB,KAAK,aAAa,CAAC;AAC7D,cAAM,eAAoB,2BAAW,QAAQ,IACzC,SAAS,SACT;AAEJ,aAAK,mBAAmB,KAAK,MAAS;AACtC,aAAK,gBAAgB,SAAK,4BAAY,QAAQ,IAAI,WAAW,MAAS;AACtE;AAAA,MACF;AAAA,MACA,KAAK,oBAAK,cAAc;AACtB,cAAM,iBAAsB,6BAAa,KAAK,aAAa,CAAC;AAC5D,YAAI;AACJ,YAAI;AACJ,gBAAI,kCAAkB,UAAU,GAAG;AACjC,uBAAa,WAAW,UAAU,EAAE,KAAK,KAAK,KAAK;AACnD,cAAI,cAAc,MAAM;AACtB,6BAAiB,WAAW;AAAA,UAC9B;AAAA,QACF;AACA,aAAK,mBAAmB;AAAA,UACtB,aAAa,WAAW,eAAe;AAAA,QACzC;AACA,aAAK,gBAAgB;AAAA,cACnB,4BAAY,cAAc,IAAI,iBAAiB;AAAA,QACjD;AACA;AAAA,MACF;AAAA,MACA,KAAK,oBAAK,MAAM;AACd,cAAM,eAAoB,6BAAa,KAAK,aAAa,CAAC;AAC1D,YAAI;AACJ,gBAAI,2BAAW,QAAQ,GAAG;AACxB,sBAAY,SAAS,SAAS,KAAK,KAAK;AAAA,QAC1C;AACA,aAAK,aAAa;AAClB;AAAA,MACF;AAAA,MACA;AAAA,IAEF;AAAA,EACF;AAAA,EAEA,MAAM,MAA2B;AAC/B,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK,oBAAK;AACR,aAAK,iBAAiB,IAAI;AAC1B;AAAA,MACF,KAAK,oBAAK;AACR,aAAK,eAAe,IAAI;AACxB,aAAK,WAAW,IAAI;AACpB;AAAA,MACF,KAAK,oBAAK;AACR,aAAK,aAAa;AAClB,aAAK,wBAAwB;AAC7B;AAAA,MACF,KAAK,oBAAK;AAAA,MACV,KAAK,oBAAK;AAAA,MACV,KAAK,oBAAK;AACR,aAAK,WAAW,IAAI;AACpB;AAAA,MACF,KAAK,oBAAK;AACR,aAAK,gBAAgB,IAAI;AACzB;AAAA,MACF,KAAK,oBAAK;AACR,aAAK,YAAY;AACjB,aAAK,mBAAmB,IAAI;AAC5B,aAAK,gBAAgB,IAAI;AACzB;AAAA,MACF,KAAK,oBAAK;AAAA,MACV,KAAK,oBAAK;AACR,aAAK,mBAAmB,IAAI;AAC5B,aAAK,gBAAgB,IAAI;AACzB;AAAA,MACF,KAAK,oBAAK;AACR,aAAK,aAAa;AAClB;AAAA,MACF;AAAA,IAEF;AAAA,EACF;AACF;AAEA,SAAS,YACP,QACA,YACA,WACA;AACA,SAAO,OAAO,SAAS,YAAY,UAAU,KAAK,KAAK;AACzD;AAMO,SAAS,kBACd,UACA,SACY;AACZ,SAAO;AAAA,IACL,SAAS,MAAM;AACb,YAAM,OAAO,KAAK,CAAC;AACnB,eAAS,MAAM,IAAI;AACnB,YAAM,SAAK,qCAAqB,SAAS,KAAK,IAAI,EAAE;AACpD,UAAI,IAAI;AACN,cAAM,SAAS,GAAG,MAAM,SAAS,IAAI;AACrC,YAAI,WAAW,QAAW;AACxB,mBAAS,MAAM,IAAI;AACnB,cAAI,YAAY,OAAO,MAAM,GAAG;AAC9B,qBAAS,MAAM,MAAM;AAAA,UACvB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,SAAS,MAAM;AACb,YAAM,OAAO,KAAK,CAAC;AACnB,YAAM,SAAK,qCAAqB,SAAS,KAAK,IAAI,EAAE;AACpD,UAAI;AACJ,UAAI,IAAI;AACN,iBAAS,GAAG,MAAM,SAAS,IAAI;AAAA,MACjC;AACA,eAAS,MAAM,IAAI;AACnB,aAAO;AAAA,IACT;AAAA,EACF;AACF;AACA,SAAS,GAAM,KAAU,OAA8B;AACrD,QAAM,MAAM,IAAI;AAChB,QAAM,gBAAgB,SAAS,IAAI,QAAQ,MAAM;AAEjD,MAAI,gBAAgB,KAAK,iBAAiB,KAAK;AAC7C,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,aAAa;AAC1B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
|
|
21
|
+
// src/supermassive-ast/addTypesToRequestDocument.ts
|
|
22
|
+
import {
|
|
23
|
+
isListType,
|
|
24
|
+
isNamedType,
|
|
25
|
+
isNonNullType,
|
|
26
|
+
visit,
|
|
27
|
+
Kind,
|
|
28
|
+
astFromValue,
|
|
29
|
+
getEnterLeaveForKind,
|
|
30
|
+
getNamedType,
|
|
31
|
+
getNullableType,
|
|
32
|
+
isCompositeType,
|
|
33
|
+
isEnumType,
|
|
34
|
+
isInputObjectType,
|
|
35
|
+
isInputType,
|
|
36
|
+
isObjectType,
|
|
37
|
+
isOutputType,
|
|
38
|
+
typeFromAST
|
|
39
|
+
} from "graphql";
|
|
40
|
+
import * as TypelessAST from "graphql/language/ast";
|
|
41
|
+
export * from "./TypedAST.mjs";
|
|
42
|
+
import { specifiedDirectives } from "./directives.mjs";
|
|
43
|
+
function addTypesToRequestDocument(schema, document, options = {}) {
|
|
44
|
+
const typeInfo = new TypeInfo(schema, {
|
|
45
|
+
defaultDirectives: specifiedDirectives,
|
|
46
|
+
ignoredDirectives: options.ignoredDirectives
|
|
47
|
+
});
|
|
48
|
+
return visit(
|
|
49
|
+
document,
|
|
50
|
+
visitWithTypeInfo(typeInfo, {
|
|
51
|
+
Argument: {
|
|
52
|
+
leave(node, _key, _parent, _path, ancestors) {
|
|
53
|
+
const argument = typeInfo.getArgument();
|
|
54
|
+
if (argument) {
|
|
55
|
+
const typeNode = generateTypeNode(argument.type);
|
|
56
|
+
const newNode = __spreadProps(__spreadValues({}, node), {
|
|
57
|
+
__type: typeNode
|
|
58
|
+
});
|
|
59
|
+
if (argument.defaultValue && node.value.kind === Kind.VARIABLE) {
|
|
60
|
+
newNode.__defaultValue = astFromValue(
|
|
61
|
+
argument.defaultValue,
|
|
62
|
+
argument.type
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
return newNode;
|
|
66
|
+
}
|
|
67
|
+
if (!typeInfo.isInIgnoredDirective()) {
|
|
68
|
+
const errorPath = makeReadableErrorPath(ancestors);
|
|
69
|
+
throw new Error(
|
|
70
|
+
`Cannot find type for argument: ${errorPath.join(".")}.${node.name.value}`
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
Directive: {
|
|
76
|
+
leave(node, _key, _parent, _path, ancestors) {
|
|
77
|
+
const directiveDef = typeInfo.getDirective();
|
|
78
|
+
if (directiveDef) {
|
|
79
|
+
const missingArgs = directiveDef.args.filter(
|
|
80
|
+
(argDef) => {
|
|
81
|
+
var _a;
|
|
82
|
+
return argDef.defaultValue != null && ((_a = node.arguments) == null ? void 0 : _a.findIndex(
|
|
83
|
+
(arg) => arg.name.value === argDef.name
|
|
84
|
+
)) === -1;
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
if (missingArgs) {
|
|
88
|
+
const newNode = __spreadValues({}, node);
|
|
89
|
+
newNode.arguments = (newNode.arguments || []).concat(
|
|
90
|
+
missingArgs.map((arg) => ({
|
|
91
|
+
__type: generateTypeNode(arg.type),
|
|
92
|
+
kind: Kind.ARGUMENT,
|
|
93
|
+
name: {
|
|
94
|
+
kind: Kind.NAME,
|
|
95
|
+
value: arg.name
|
|
96
|
+
},
|
|
97
|
+
value: astFromValue(
|
|
98
|
+
arg.defaultValue,
|
|
99
|
+
arg.type
|
|
100
|
+
)
|
|
101
|
+
}))
|
|
102
|
+
);
|
|
103
|
+
return newNode;
|
|
104
|
+
}
|
|
105
|
+
return node;
|
|
106
|
+
}
|
|
107
|
+
if (!typeInfo.isInIgnoredDirective()) {
|
|
108
|
+
const errorPath = makeReadableErrorPath(ancestors);
|
|
109
|
+
throw new Error(
|
|
110
|
+
`Cannot find type for directive: ${errorPath.join(".")}.${node.name.value}`
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
Field: {
|
|
116
|
+
leave(node, _key, _parent, _path, ancestors) {
|
|
117
|
+
const fieldDef = typeInfo.getFieldDef();
|
|
118
|
+
if (fieldDef) {
|
|
119
|
+
const type = fieldDef.type;
|
|
120
|
+
if (type) {
|
|
121
|
+
const typeNode = generateTypeNode(type);
|
|
122
|
+
const missingArgs = fieldDef.args.filter(
|
|
123
|
+
(argDef) => {
|
|
124
|
+
var _a;
|
|
125
|
+
return argDef.defaultValue != null && ((_a = node.arguments) == null ? void 0 : _a.findIndex(
|
|
126
|
+
(arg) => arg.name.value === argDef.name
|
|
127
|
+
)) === -1;
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
const newNode = __spreadProps(__spreadValues({}, node), {
|
|
131
|
+
__type: typeNode
|
|
132
|
+
});
|
|
133
|
+
if (missingArgs) {
|
|
134
|
+
newNode.arguments = (newNode.arguments || []).concat(
|
|
135
|
+
missingArgs.map((arg) => ({
|
|
136
|
+
__type: generateTypeNode(arg.type),
|
|
137
|
+
kind: Kind.ARGUMENT,
|
|
138
|
+
name: {
|
|
139
|
+
kind: Kind.NAME,
|
|
140
|
+
value: arg.name
|
|
141
|
+
},
|
|
142
|
+
value: astFromValue(
|
|
143
|
+
arg.defaultValue,
|
|
144
|
+
arg.type
|
|
145
|
+
)
|
|
146
|
+
}))
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
return newNode;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const errorPath = makeReadableErrorPath(ancestors);
|
|
153
|
+
throw new Error(
|
|
154
|
+
`Cannot find type for field: ${errorPath.join(".")}.${node.name.value}`
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
})
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
function generateTypeNode(type) {
|
|
162
|
+
if (isNonNullType(type)) {
|
|
163
|
+
const typeNode = generateTypeNode(type.ofType);
|
|
164
|
+
return {
|
|
165
|
+
kind: "NonNullType",
|
|
166
|
+
type: typeNode
|
|
167
|
+
};
|
|
168
|
+
} else if (isListType(type)) {
|
|
169
|
+
const typeNode = generateTypeNode(type.ofType);
|
|
170
|
+
return {
|
|
171
|
+
kind: "ListType",
|
|
172
|
+
type: typeNode
|
|
173
|
+
};
|
|
174
|
+
} else if (isNamedType(type)) {
|
|
175
|
+
return {
|
|
176
|
+
kind: "NamedType",
|
|
177
|
+
name: {
|
|
178
|
+
kind: "Name",
|
|
179
|
+
value: type.name
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
throw new Error(`Can't generate TypeNode for type: ${type}`);
|
|
184
|
+
}
|
|
185
|
+
function makeReadableErrorPath(ancestors) {
|
|
186
|
+
const path = [];
|
|
187
|
+
ancestors.forEach((ancestorOrArray) => {
|
|
188
|
+
let ancestor;
|
|
189
|
+
if (!Array.isArray(ancestorOrArray)) {
|
|
190
|
+
ancestor = ancestorOrArray;
|
|
191
|
+
if (ancestor && ancestor.kind === Kind.FIELD) {
|
|
192
|
+
path.push(ancestor.name.value);
|
|
193
|
+
} else if (ancestor && ancestor.kind === Kind.DIRECTIVE) {
|
|
194
|
+
path.push(`@${ancestor.name.value}`);
|
|
195
|
+
} else if (ancestor && ancestor.kind === Kind.OPERATION_DEFINITION) {
|
|
196
|
+
let name;
|
|
197
|
+
if (ancestor.name) {
|
|
198
|
+
name = `${ancestor.operation} ${ancestor.name.value}`;
|
|
199
|
+
} else {
|
|
200
|
+
name = ancestor.operation;
|
|
201
|
+
}
|
|
202
|
+
path.push(name);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
return path;
|
|
207
|
+
}
|
|
208
|
+
var TypeInfo = class {
|
|
209
|
+
constructor(schema, options = {}) {
|
|
210
|
+
this._schema = schema;
|
|
211
|
+
this._typeStack = [];
|
|
212
|
+
this._parentTypeStack = [];
|
|
213
|
+
this._inputTypeStack = [];
|
|
214
|
+
this._fieldDefStack = [];
|
|
215
|
+
this._defaultValueStack = [];
|
|
216
|
+
this._directive = null;
|
|
217
|
+
this._isInIgnoredDirective = false;
|
|
218
|
+
this._argument = null;
|
|
219
|
+
this._enumValue = null;
|
|
220
|
+
if (options.initialType) {
|
|
221
|
+
if (isInputType(options.initialType)) {
|
|
222
|
+
this._inputTypeStack.push(options.initialType);
|
|
223
|
+
}
|
|
224
|
+
if (isCompositeType(options.initialType)) {
|
|
225
|
+
this._parentTypeStack.push(options.initialType);
|
|
226
|
+
}
|
|
227
|
+
if (isOutputType(options.initialType)) {
|
|
228
|
+
this._typeStack.push(options.initialType);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
this._defaultDirectives = /* @__PURE__ */ new Map();
|
|
232
|
+
for (const directive of options.defaultDirectives || []) {
|
|
233
|
+
this._defaultDirectives.set(directive.name, directive);
|
|
234
|
+
}
|
|
235
|
+
this._ignoredDirectives = new Set(options.ignoredDirectives || []);
|
|
236
|
+
}
|
|
237
|
+
get [Symbol.toStringTag]() {
|
|
238
|
+
return "TypeInfo";
|
|
239
|
+
}
|
|
240
|
+
getType() {
|
|
241
|
+
return at(this._typeStack, -1);
|
|
242
|
+
}
|
|
243
|
+
getParentType() {
|
|
244
|
+
return at(this._parentTypeStack, -1);
|
|
245
|
+
}
|
|
246
|
+
getInputType() {
|
|
247
|
+
return at(this._inputTypeStack, -1);
|
|
248
|
+
}
|
|
249
|
+
getParentInputType() {
|
|
250
|
+
return at(this._inputTypeStack, -2);
|
|
251
|
+
}
|
|
252
|
+
getFieldDef() {
|
|
253
|
+
return at(this._fieldDefStack, -1);
|
|
254
|
+
}
|
|
255
|
+
getDefaultValue() {
|
|
256
|
+
return at(this._defaultValueStack, -1);
|
|
257
|
+
}
|
|
258
|
+
getDirective() {
|
|
259
|
+
return this._directive;
|
|
260
|
+
}
|
|
261
|
+
getArgument() {
|
|
262
|
+
return this._argument;
|
|
263
|
+
}
|
|
264
|
+
getEnumValue() {
|
|
265
|
+
return this._enumValue;
|
|
266
|
+
}
|
|
267
|
+
isInIgnoredDirective() {
|
|
268
|
+
return this._isInIgnoredDirective;
|
|
269
|
+
}
|
|
270
|
+
enter(node) {
|
|
271
|
+
var _a;
|
|
272
|
+
const schema = this._schema;
|
|
273
|
+
switch (node.kind) {
|
|
274
|
+
case Kind.SELECTION_SET: {
|
|
275
|
+
const namedType = getNamedType(this.getType());
|
|
276
|
+
this._parentTypeStack.push(
|
|
277
|
+
isCompositeType(namedType) ? namedType : void 0
|
|
278
|
+
);
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
case Kind.FIELD: {
|
|
282
|
+
const parentType = this.getParentType();
|
|
283
|
+
let fieldDef;
|
|
284
|
+
let fieldType;
|
|
285
|
+
if (parentType) {
|
|
286
|
+
fieldDef = getFieldDef(schema, parentType, node);
|
|
287
|
+
if (fieldDef) {
|
|
288
|
+
fieldType = fieldDef.type;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
this._fieldDefStack.push(fieldDef);
|
|
292
|
+
this._typeStack.push(isOutputType(fieldType) ? fieldType : void 0);
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
case Kind.DIRECTIVE: {
|
|
296
|
+
const name = node.name.value;
|
|
297
|
+
this._directive = schema.getDirective(name);
|
|
298
|
+
if (!this._directive) {
|
|
299
|
+
if (this._defaultDirectives.has(name)) {
|
|
300
|
+
this._directive = this._defaultDirectives.get(name);
|
|
301
|
+
}
|
|
302
|
+
if (this._ignoredDirectives.has(name)) {
|
|
303
|
+
this._isInIgnoredDirective = true;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
case Kind.OPERATION_DEFINITION: {
|
|
309
|
+
const rootType = schema.getRootType(node.operation);
|
|
310
|
+
this._typeStack.push(isObjectType(rootType) ? rootType : void 0);
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
case Kind.INLINE_FRAGMENT:
|
|
314
|
+
case Kind.FRAGMENT_DEFINITION: {
|
|
315
|
+
const typeConditionAST = node.typeCondition;
|
|
316
|
+
const outputType = typeConditionAST ? typeFromAST(schema, typeConditionAST) : getNamedType(this.getType());
|
|
317
|
+
this._typeStack.push(isOutputType(outputType) ? outputType : void 0);
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
case Kind.VARIABLE_DEFINITION: {
|
|
321
|
+
const inputType = typeFromAST(schema, node.type);
|
|
322
|
+
this._inputTypeStack.push(
|
|
323
|
+
isInputType(inputType) ? inputType : void 0
|
|
324
|
+
);
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
case Kind.ARGUMENT: {
|
|
328
|
+
let argDef;
|
|
329
|
+
let argType;
|
|
330
|
+
const fieldOrDirective = (_a = this.getDirective()) != null ? _a : this.getFieldDef();
|
|
331
|
+
if (fieldOrDirective) {
|
|
332
|
+
argDef = fieldOrDirective.args.find(
|
|
333
|
+
(arg) => arg.name === node.name.value
|
|
334
|
+
);
|
|
335
|
+
if (argDef) {
|
|
336
|
+
argType = argDef.type;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
this._argument = argDef;
|
|
340
|
+
this._defaultValueStack.push(argDef ? argDef.defaultValue : void 0);
|
|
341
|
+
this._inputTypeStack.push(isInputType(argType) ? argType : void 0);
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
case Kind.LIST: {
|
|
345
|
+
const listType = getNullableType(this.getInputType());
|
|
346
|
+
const itemType = isListType(listType) ? listType.ofType : listType;
|
|
347
|
+
this._defaultValueStack.push(void 0);
|
|
348
|
+
this._inputTypeStack.push(isInputType(itemType) ? itemType : void 0);
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
case Kind.OBJECT_FIELD: {
|
|
352
|
+
const objectType = getNamedType(this.getInputType());
|
|
353
|
+
let inputFieldType;
|
|
354
|
+
let inputField;
|
|
355
|
+
if (isInputObjectType(objectType)) {
|
|
356
|
+
inputField = objectType.getFields()[node.name.value];
|
|
357
|
+
if (inputField != null) {
|
|
358
|
+
inputFieldType = inputField.type;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
this._defaultValueStack.push(
|
|
362
|
+
inputField ? inputField.defaultValue : void 0
|
|
363
|
+
);
|
|
364
|
+
this._inputTypeStack.push(
|
|
365
|
+
isInputType(inputFieldType) ? inputFieldType : void 0
|
|
366
|
+
);
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
case Kind.ENUM: {
|
|
370
|
+
const enumType = getNamedType(this.getInputType());
|
|
371
|
+
let enumValue;
|
|
372
|
+
if (isEnumType(enumType)) {
|
|
373
|
+
enumValue = enumType.getValue(node.value);
|
|
374
|
+
}
|
|
375
|
+
this._enumValue = enumValue;
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
default:
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
leave(node) {
|
|
382
|
+
switch (node.kind) {
|
|
383
|
+
case Kind.SELECTION_SET:
|
|
384
|
+
this._parentTypeStack.pop();
|
|
385
|
+
break;
|
|
386
|
+
case Kind.FIELD:
|
|
387
|
+
this._fieldDefStack.pop();
|
|
388
|
+
this._typeStack.pop();
|
|
389
|
+
break;
|
|
390
|
+
case Kind.DIRECTIVE:
|
|
391
|
+
this._directive = null;
|
|
392
|
+
this._isInIgnoredDirective = false;
|
|
393
|
+
break;
|
|
394
|
+
case Kind.OPERATION_DEFINITION:
|
|
395
|
+
case Kind.INLINE_FRAGMENT:
|
|
396
|
+
case Kind.FRAGMENT_DEFINITION:
|
|
397
|
+
this._typeStack.pop();
|
|
398
|
+
break;
|
|
399
|
+
case Kind.VARIABLE_DEFINITION:
|
|
400
|
+
this._inputTypeStack.pop();
|
|
401
|
+
break;
|
|
402
|
+
case Kind.ARGUMENT:
|
|
403
|
+
this._argument = null;
|
|
404
|
+
this._defaultValueStack.pop();
|
|
405
|
+
this._inputTypeStack.pop();
|
|
406
|
+
break;
|
|
407
|
+
case Kind.LIST:
|
|
408
|
+
case Kind.OBJECT_FIELD:
|
|
409
|
+
this._defaultValueStack.pop();
|
|
410
|
+
this._inputTypeStack.pop();
|
|
411
|
+
break;
|
|
412
|
+
case Kind.ENUM:
|
|
413
|
+
this._enumValue = null;
|
|
414
|
+
break;
|
|
415
|
+
default:
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
function getFieldDef(schema, parentType, fieldNode) {
|
|
420
|
+
return schema.getField(parentType, fieldNode.name.value);
|
|
421
|
+
}
|
|
422
|
+
function visitWithTypeInfo(typeInfo, visitor) {
|
|
423
|
+
return {
|
|
424
|
+
enter(...args) {
|
|
425
|
+
const node = args[0];
|
|
426
|
+
typeInfo.enter(node);
|
|
427
|
+
const fn = getEnterLeaveForKind(visitor, node.kind).enter;
|
|
428
|
+
if (fn) {
|
|
429
|
+
const result = fn.apply(visitor, args);
|
|
430
|
+
if (result !== void 0) {
|
|
431
|
+
typeInfo.leave(node);
|
|
432
|
+
if (TypelessAST.isNode(result)) {
|
|
433
|
+
typeInfo.enter(result);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return result;
|
|
437
|
+
}
|
|
438
|
+
},
|
|
439
|
+
leave(...args) {
|
|
440
|
+
const node = args[0];
|
|
441
|
+
const fn = getEnterLeaveForKind(visitor, node.kind).leave;
|
|
442
|
+
let result;
|
|
443
|
+
if (fn) {
|
|
444
|
+
result = fn.apply(visitor, args);
|
|
445
|
+
}
|
|
446
|
+
typeInfo.leave(node);
|
|
447
|
+
return result;
|
|
448
|
+
}
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
function at(arr, index) {
|
|
452
|
+
const len = arr.length;
|
|
453
|
+
const relativeIndex = index >= 0 ? index : len + index;
|
|
454
|
+
if (relativeIndex < 0 || relativeIndex >= len) {
|
|
455
|
+
return void 0;
|
|
456
|
+
}
|
|
457
|
+
return arr[relativeIndex];
|
|
458
|
+
}
|
|
459
|
+
export {
|
|
460
|
+
TypeInfo,
|
|
461
|
+
addTypesToRequestDocument,
|
|
462
|
+
visitWithTypeInfo
|
|
463
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/supermassive-ast/addTypesToRequestDocument.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n GraphQLType,\n GraphQLSchema,\n isListType,\n isNamedType,\n isNonNullType,\n visit,\n Kind,\n astFromValue,\n GraphQLArgument,\n ASTVisitor,\n GraphQLCompositeType,\n GraphQLEnumValue,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputType,\n GraphQLOutputType,\n getEnterLeaveForKind,\n getNamedType,\n getNullableType,\n isCompositeType,\n isEnumType,\n isInputObjectType,\n isInputType,\n isObjectType,\n isOutputType,\n typeFromAST,\n GraphQLDirective,\n} from \"graphql\";\n\nimport * as TypelessAST from \"graphql/language/ast\";\nimport * as TypedAST from \"./TypedAST\";\nimport { Maybe } from \"graphql/jsutils/Maybe\";\nexport * from \"./TypedAST\";\nimport { specifiedDirectives } from \"./directives\";\n\nexport function addTypesToRequestDocument(\n schema: GraphQLSchema,\n document: TypelessAST.DocumentNode,\n options: {\n ignoredDirectives?: string[];\n } = {},\n): TypedAST.DocumentNode {\n const typeInfo = new TypeInfo(schema, {\n defaultDirectives: specifiedDirectives,\n ignoredDirectives: options.ignoredDirectives,\n });\n return visit(\n document as TypelessAST.DocumentNode,\n visitWithTypeInfo(typeInfo, {\n Argument: {\n leave(node, _key, _parent, _path, ancestors) {\n const argument = typeInfo.getArgument();\n if (argument) {\n const typeNode = generateTypeNode(argument.type);\n const newNode: TypedAST.ArgumentNode = {\n ...node,\n __type: typeNode,\n };\n // We only need default value for arguments with variable values\n if (argument.defaultValue && node.value.kind === Kind.VARIABLE) {\n (newNode.__defaultValue as\n | TypedAST.ValueNode\n | null\n | undefined) = astFromValue(\n argument.defaultValue,\n argument.type,\n );\n }\n return newNode;\n }\n if (!typeInfo.isInIgnoredDirective()) {\n const errorPath = makeReadableErrorPath(ancestors);\n throw new Error(\n `Cannot find type for argument: ${errorPath.join(\".\")}.${\n node.name.value\n }`,\n );\n }\n },\n },\n Directive: {\n leave(\n node: TypelessAST.DirectiveNode,\n _key,\n _parent,\n _path,\n ancestors,\n ) {\n const directiveDef = typeInfo.getDirective();\n if (directiveDef) {\n const missingArgs: Array<GraphQLArgument> =\n directiveDef.args.filter(\n (argDef) =>\n argDef.defaultValue != null &&\n node.arguments?.findIndex(\n (arg) => arg.name.value === argDef.name,\n ) === -1,\n );\n if (missingArgs) {\n const newNode: TypedAST.DirectiveNode = {\n ...(node as Omit<TypelessAST.DirectiveNode, \"arguments\">),\n };\n (newNode.arguments as TypedAST.ArgumentNode[]) = (\n newNode.arguments || []\n ).concat(\n missingArgs.map((arg) => ({\n __type: generateTypeNode(arg.type),\n kind: Kind.ARGUMENT,\n name: {\n kind: Kind.NAME,\n value: arg.name,\n },\n value: astFromValue(\n arg.defaultValue,\n arg.type,\n ) as TypedAST.ValueNode,\n })),\n );\n return newNode;\n }\n return node as TypedAST.DirectiveNode;\n }\n\n if (!typeInfo.isInIgnoredDirective()) {\n const errorPath = makeReadableErrorPath(ancestors);\n\n // This happens whenever a directive is requested that hasn't been defined in schema\n throw new Error(\n `Cannot find type for directive: ${errorPath.join(\".\")}.${\n node.name.value\n }`,\n );\n }\n },\n },\n Field: {\n leave(\n node: Omit<TypelessAST.FieldNode, \"selectionSet\" | \"directives\">,\n _key,\n _parent,\n _path,\n ancestors,\n ) {\n const fieldDef = typeInfo.getFieldDef();\n if (fieldDef) {\n const type = fieldDef.type;\n if (type) {\n const typeNode = generateTypeNode(type);\n const missingArgs: Array<GraphQLArgument> = fieldDef.args.filter(\n (argDef) =>\n argDef.defaultValue != null &&\n node.arguments?.findIndex(\n (arg) => arg.name.value === argDef.name,\n ) === -1,\n );\n const newNode: TypedAST.FieldNode = {\n ...(node as Omit<\n TypelessAST.FieldNode,\n \"selectionSet\" | \"arguments\" | \"directives\"\n >),\n __type: typeNode,\n };\n if (missingArgs) {\n (newNode.arguments as TypedAST.ArgumentNode[]) = (\n newNode.arguments || []\n ).concat(\n missingArgs.map((arg) => ({\n __type: generateTypeNode(arg.type),\n kind: Kind.ARGUMENT,\n name: {\n kind: Kind.NAME,\n value: arg.name,\n },\n value: astFromValue(\n arg.defaultValue,\n arg.type,\n ) as TypedAST.ValueNode,\n })),\n );\n }\n return newNode;\n }\n }\n\n const errorPath = makeReadableErrorPath(ancestors);\n\n // This happens whenever a new field is requested that hasn't been defined in schema\n throw new Error(\n `Cannot find type for field: ${errorPath.join(\".\")}.${\n node.name.value\n }`,\n );\n },\n },\n }),\n ) as TypedAST.DocumentNode;\n}\n\nfunction generateTypeNode(type: GraphQLType): TypedAST.TypeNode {\n if (isNonNullType(type)) {\n const typeNode = generateTypeNode(type.ofType) as\n | TypedAST.NamedTypeNode\n | TypedAST.ListTypeNode;\n return {\n kind: \"NonNullType\",\n type: typeNode,\n };\n } else if (isListType(type)) {\n const typeNode = generateTypeNode(type.ofType) as\n | TypedAST.NamedTypeNode\n | TypedAST.NonNullTypeNode;\n return {\n kind: \"ListType\",\n type: typeNode,\n };\n } else if (isNamedType(type)) {\n return {\n kind: \"NamedType\",\n name: {\n kind: \"Name\",\n value: type.name,\n },\n };\n }\n throw new Error(`Can't generate TypeNode for type: ${type}`);\n}\n\nfunction makeReadableErrorPath(\n ancestors: ReadonlyArray<\n readonly TypelessAST.ASTNode[] | TypelessAST.ASTNode\n >,\n): string[] {\n const path: string[] = [];\n ancestors.forEach((ancestorOrArray) => {\n let ancestor: TypelessAST.ASTNode;\n if (!Array.isArray(ancestorOrArray)) {\n ancestor = ancestorOrArray as TypelessAST.ASTNode;\n if (ancestor && ancestor.kind === Kind.FIELD) {\n path.push(ancestor.name.value);\n } else if (ancestor && ancestor.kind === Kind.DIRECTIVE) {\n path.push(`@${ancestor.name.value}`);\n } else if (ancestor && ancestor.kind === Kind.OPERATION_DEFINITION) {\n let name;\n if (ancestor.name) {\n name = `${ancestor.operation} ${ancestor.name.value}`;\n } else {\n name = ancestor.operation;\n }\n path.push(name);\n }\n }\n });\n return path;\n}\n\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\nexport class TypeInfo {\n private _schema: GraphQLSchema;\n private _typeStack: Array<Maybe<GraphQLOutputType>>;\n private _parentTypeStack: Array<Maybe<GraphQLCompositeType>>;\n private _inputTypeStack: Array<Maybe<GraphQLInputType>>;\n private _fieldDefStack: Array<Maybe<GraphQLField<unknown, unknown>>>;\n private _defaultValueStack: Array<Maybe<unknown>>;\n private _directive: Maybe<GraphQLDirective>;\n private _argument: Maybe<GraphQLArgument>;\n private _enumValue: Maybe<GraphQLEnumValue>;\n private _isInIgnoredDirective: boolean;\n\n private _defaultDirectives: Map<string, GraphQLDirective>;\n private _ignoredDirectives: Set<string>;\n\n constructor(\n schema: GraphQLSchema,\n /**\n * Initial type may be provided in rare cases to facilitate traversals\n * beginning somewhere other than documents.\n */\n options: {\n initialType?: Maybe<GraphQLType>;\n defaultDirectives?: ReadonlyArray<GraphQLDirective>;\n ignoredDirectives?: ReadonlyArray<string>;\n } = {},\n ) {\n this._schema = schema;\n this._typeStack = [];\n this._parentTypeStack = [];\n this._inputTypeStack = [];\n this._fieldDefStack = [];\n this._defaultValueStack = [];\n this._directive = null;\n this._isInIgnoredDirective = false;\n this._argument = null;\n this._enumValue = null;\n if (options.initialType) {\n if (isInputType(options.initialType)) {\n this._inputTypeStack.push(options.initialType);\n }\n if (isCompositeType(options.initialType)) {\n this._parentTypeStack.push(options.initialType);\n }\n if (isOutputType(options.initialType)) {\n this._typeStack.push(options.initialType);\n }\n }\n this._defaultDirectives = new Map();\n for (const directive of options.defaultDirectives || []) {\n this._defaultDirectives.set(directive.name, directive);\n }\n this._ignoredDirectives = new Set(options.ignoredDirectives || []);\n }\n\n get [Symbol.toStringTag]() {\n return \"TypeInfo\";\n }\n\n getType(): Maybe<GraphQLOutputType> {\n return at(this._typeStack, -1);\n }\n\n getParentType(): Maybe<GraphQLCompositeType> {\n return at(this._parentTypeStack, -1);\n }\n\n getInputType(): Maybe<GraphQLInputType> {\n return at(this._inputTypeStack, -1);\n }\n\n getParentInputType(): Maybe<GraphQLInputType> {\n return at(this._inputTypeStack, -2);\n }\n\n getFieldDef(): Maybe<GraphQLField<unknown, unknown>> {\n return at(this._fieldDefStack, -1);\n }\n\n getDefaultValue(): Maybe<unknown> {\n return at(this._defaultValueStack, -1);\n }\n\n getDirective(): Maybe<GraphQLDirective> {\n return this._directive;\n }\n\n getArgument(): Maybe<GraphQLArgument> {\n return this._argument;\n }\n\n getEnumValue(): Maybe<GraphQLEnumValue> {\n return this._enumValue;\n }\n\n isInIgnoredDirective(): boolean {\n return this._isInIgnoredDirective;\n }\n\n enter(node: TypelessAST.ASTNode) {\n const schema = this._schema;\n // Note: many of the types below are explicitly typed as \"unknown\" to drop\n // any assumptions of a valid schema to ensure runtime types are properly\n // checked before continuing since TypeInfo is used as part of validation\n // which occurs before guarantees of schema and document validity.\n switch (node.kind) {\n case Kind.SELECTION_SET: {\n const namedType: unknown = getNamedType(this.getType());\n this._parentTypeStack.push(\n isCompositeType(namedType) ? namedType : undefined,\n );\n break;\n }\n case Kind.FIELD: {\n const parentType = this.getParentType();\n let fieldDef;\n let fieldType: unknown;\n if (parentType) {\n fieldDef = getFieldDef(schema, parentType, node);\n if (fieldDef) {\n fieldType = fieldDef.type;\n }\n }\n this._fieldDefStack.push(fieldDef);\n this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);\n break;\n }\n case Kind.DIRECTIVE: {\n const name = node.name.value;\n this._directive = schema.getDirective(name) as GraphQLDirective;\n if (!this._directive) {\n if (this._defaultDirectives.has(name)) {\n this._directive = this._defaultDirectives.get(name);\n }\n if (this._ignoredDirectives.has(name)) {\n this._isInIgnoredDirective = true;\n }\n }\n break;\n }\n case Kind.OPERATION_DEFINITION: {\n const rootType = schema.getRootType(node.operation);\n this._typeStack.push(isObjectType(rootType) ? rootType : undefined);\n break;\n }\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION: {\n const typeConditionAST = node.typeCondition;\n const outputType: unknown = typeConditionAST\n ? typeFromAST(schema, typeConditionAST)\n : getNamedType(this.getType());\n this._typeStack.push(isOutputType(outputType) ? outputType : undefined);\n break;\n }\n case Kind.VARIABLE_DEFINITION: {\n const inputType: unknown = typeFromAST(schema, node.type);\n this._inputTypeStack.push(\n isInputType(inputType) ? inputType : undefined,\n );\n break;\n }\n case Kind.ARGUMENT: {\n let argDef;\n let argType: unknown;\n const fieldOrDirective = this.getDirective() ?? this.getFieldDef();\n if (fieldOrDirective) {\n argDef = fieldOrDirective.args.find(\n (arg) => arg.name === node.name.value,\n );\n if (argDef) {\n argType = argDef.type;\n }\n }\n this._argument = argDef;\n this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n this._inputTypeStack.push(isInputType(argType) ? argType : undefined);\n break;\n }\n case Kind.LIST: {\n const listType: unknown = getNullableType(this.getInputType());\n const itemType: unknown = isListType(listType)\n ? listType.ofType\n : listType;\n // List positions never have a default value.\n this._defaultValueStack.push(undefined);\n this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);\n break;\n }\n case Kind.OBJECT_FIELD: {\n const objectType: unknown = getNamedType(this.getInputType());\n let inputFieldType: GraphQLInputType | undefined;\n let inputField: GraphQLInputField | undefined;\n if (isInputObjectType(objectType)) {\n inputField = objectType.getFields()[node.name.value];\n if (inputField != null) {\n inputFieldType = inputField.type;\n }\n }\n this._defaultValueStack.push(\n inputField ? inputField.defaultValue : undefined,\n );\n this._inputTypeStack.push(\n isInputType(inputFieldType) ? inputFieldType : undefined,\n );\n break;\n }\n case Kind.ENUM: {\n const enumType: unknown = getNamedType(this.getInputType());\n let enumValue;\n if (isEnumType(enumType)) {\n enumValue = enumType.getValue(node.value);\n }\n this._enumValue = enumValue;\n break;\n }\n default:\n // Ignore other nodes\n }\n }\n\n leave(node: TypelessAST.ASTNode) {\n switch (node.kind) {\n case Kind.SELECTION_SET:\n this._parentTypeStack.pop();\n break;\n case Kind.FIELD:\n this._fieldDefStack.pop();\n this._typeStack.pop();\n break;\n case Kind.DIRECTIVE:\n this._directive = null;\n this._isInIgnoredDirective = false;\n break;\n case Kind.OPERATION_DEFINITION:\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION:\n this._typeStack.pop();\n break;\n case Kind.VARIABLE_DEFINITION:\n this._inputTypeStack.pop();\n break;\n case Kind.ARGUMENT:\n this._argument = null;\n this._defaultValueStack.pop();\n this._inputTypeStack.pop();\n break;\n case Kind.LIST:\n case Kind.OBJECT_FIELD:\n this._defaultValueStack.pop();\n this._inputTypeStack.pop();\n break;\n case Kind.ENUM:\n this._enumValue = null;\n break;\n default:\n // Ignore other nodes\n }\n }\n}\n\nfunction getFieldDef(\n schema: GraphQLSchema,\n parentType: GraphQLCompositeType,\n fieldNode: TypelessAST.FieldNode,\n) {\n return schema.getField(parentType, fieldNode.name.value);\n}\n\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\nexport function visitWithTypeInfo(\n typeInfo: TypeInfo,\n visitor: ASTVisitor,\n): ASTVisitor {\n return {\n enter(...args) {\n const node = args[0];\n typeInfo.enter(node);\n const fn = getEnterLeaveForKind(visitor, node.kind).enter;\n if (fn) {\n const result = fn.apply(visitor, args);\n if (result !== undefined) {\n typeInfo.leave(node);\n if (TypelessAST.isNode(result)) {\n typeInfo.enter(result);\n }\n }\n return result;\n }\n },\n leave(...args) {\n const node = args[0];\n const fn = getEnterLeaveForKind(visitor, node.kind).leave;\n let result;\n if (fn) {\n result = fn.apply(visitor, args);\n }\n typeInfo.leave(node);\n return result;\n },\n };\n}\nfunction at<A>(arr: A[], index: number): A | undefined {\n const len = arr.length;\n const relativeIndex = index >= 0 ? index : len + index;\n\n if (relativeIndex < 0 || relativeIndex >= len) {\n return undefined;\n }\n\n return arr[relativeIndex];\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { FragmentDefinitionNode, GraphQLSchema, OperationDefinitionNode } from "graphql";
|
|
2
|
+
export declare const annotateDocumentGraphQLTransform: (schema: GraphQLSchema) => (node: FragmentDefinitionNode | OperationDefinitionNode) => import("./TypedAST").DefinitionNode;
|
|
3
|
+
//# sourceMappingURL=annotateDocumentGraphQLTransform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotateDocumentGraphQLTransform.d.ts","sourceRoot":"","sources":["../../src/supermassive-ast/annotateDocumentGraphQLTransform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,aAAa,EAEb,uBAAuB,EACxB,MAAM,SAAS,CAAC;AAGjB,eAAO,MAAM,gCAAgC,WAAY,aAAa,YACtD,sBAAsB,GAAG,uBAAuB,wCAO/D,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var annotateDocumentGraphQLTransform_exports = {};
|
|
20
|
+
__export(annotateDocumentGraphQLTransform_exports, {
|
|
21
|
+
annotateDocumentGraphQLTransform: () => annotateDocumentGraphQLTransform
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(annotateDocumentGraphQLTransform_exports);
|
|
24
|
+
var import_graphql = require("graphql");
|
|
25
|
+
var import_addTypesToRequestDocument = require("./addTypesToRequestDocument");
|
|
26
|
+
const annotateDocumentGraphQLTransform = (schema) => {
|
|
27
|
+
return (node) => {
|
|
28
|
+
const document = (0, import_addTypesToRequestDocument.addTypesToRequestDocument)(schema, {
|
|
29
|
+
kind: import_graphql.Kind.DOCUMENT,
|
|
30
|
+
definitions: [node]
|
|
31
|
+
});
|
|
32
|
+
return document.definitions[0];
|
|
33
|
+
};
|
|
34
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/supermassive-ast/annotateDocumentGraphQLTransform.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n FragmentDefinitionNode,\n GraphQLSchema,\n Kind,\n OperationDefinitionNode,\n} from \"graphql\";\nimport { addTypesToRequestDocument } from \"./addTypesToRequestDocument\";\n\nexport const annotateDocumentGraphQLTransform = (schema: GraphQLSchema) => {\n return (node: FragmentDefinitionNode | OperationDefinitionNode) => {\n const document = addTypesToRequestDocument(schema, {\n kind: Kind.DOCUMENT,\n definitions: [node],\n });\n return document.definitions[0];\n };\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKO;AACP,uCAA0C;AAEnC,MAAM,mCAAmC,CAAC,WAA0B;AACzE,SAAO,CAAC,SAA2D;AACjE,UAAM,eAAW,4DAA0B,QAAQ;AAAA,MACjD,MAAM,oBAAK;AAAA,MACX,aAAa,CAAC,IAAI;AAAA,IACpB,CAAC;AACD,WAAO,SAAS,YAAY,CAAC;AAAA,EAC/B;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// src/supermassive-ast/annotateDocumentGraphQLTransform.ts
|
|
2
|
+
import {
|
|
3
|
+
Kind
|
|
4
|
+
} from "graphql";
|
|
5
|
+
import { addTypesToRequestDocument } from "./addTypesToRequestDocument.mjs";
|
|
6
|
+
var annotateDocumentGraphQLTransform = (schema) => {
|
|
7
|
+
return (node) => {
|
|
8
|
+
const document = addTypesToRequestDocument(schema, {
|
|
9
|
+
kind: Kind.DOCUMENT,
|
|
10
|
+
definitions: [node]
|
|
11
|
+
});
|
|
12
|
+
return document.definitions[0];
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
annotateDocumentGraphQLTransform
|
|
17
|
+
};
|