@graphitation/supermassive 3.0.0-alpha.7 → 3.0.0-alpha.9

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.
Files changed (51) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +18 -2
  3. package/README.md +137 -26
  4. package/lib/__testUtils__/execute.d.ts +1 -1
  5. package/lib/__testUtils__/execute.d.ts.map +1 -1
  6. package/lib/__testUtils__/execute.js +3 -6
  7. package/lib/__testUtils__/execute.js.map +2 -2
  8. package/lib/__testUtils__/execute.mjs +3 -7
  9. package/lib/__testUtils__/execute.mjs.map +2 -2
  10. package/lib/benchmarks/swapi-schema/resolvers.d.ts.map +1 -1
  11. package/lib/benchmarks/swapi-schema/resolvers.js.map +2 -2
  12. package/lib/benchmarks/swapi-schema/resolvers.mjs.map +2 -2
  13. package/lib/executeWithSchema.d.ts +1 -1
  14. package/lib/executeWithSchema.d.ts.map +1 -1
  15. package/lib/executeWithSchema.js +9 -23
  16. package/lib/executeWithSchema.js.map +2 -2
  17. package/lib/executeWithSchema.mjs +9 -26
  18. package/lib/executeWithSchema.mjs.map +2 -2
  19. package/lib/executeWithoutSchema.d.ts.map +1 -1
  20. package/lib/executeWithoutSchema.js +29 -24
  21. package/lib/executeWithoutSchema.js.map +2 -2
  22. package/lib/executeWithoutSchema.mjs +29 -25
  23. package/lib/executeWithoutSchema.mjs.map +2 -2
  24. package/lib/subscribeWithSchema.d.ts +1 -1
  25. package/lib/subscribeWithSchema.d.ts.map +1 -1
  26. package/lib/subscribeWithSchema.js +9 -23
  27. package/lib/subscribeWithSchema.js.map +2 -2
  28. package/lib/subscribeWithSchema.mjs +9 -26
  29. package/lib/subscribeWithSchema.mjs.map +2 -2
  30. package/lib/types.d.ts +3 -7
  31. package/lib/types.d.ts.map +1 -1
  32. package/lib/types.js.map +1 -1
  33. package/lib/utilities/coerceInputValue.d.ts.map +1 -1
  34. package/lib/utilities/coerceInputValue.js +17 -12
  35. package/lib/utilities/coerceInputValue.js.map +2 -2
  36. package/lib/utilities/coerceInputValue.mjs +18 -13
  37. package/lib/utilities/coerceInputValue.mjs.map +2 -2
  38. package/lib/utilities/decodeASTSchema.js.map +2 -2
  39. package/lib/utilities/decodeASTSchema.mjs.map +2 -2
  40. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.d.ts.map +1 -1
  41. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js +3 -7
  42. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js.map +2 -2
  43. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs +5 -9
  44. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs.map +2 -2
  45. package/lib/values.d.ts.map +1 -1
  46. package/lib/values.js +12 -16
  47. package/lib/values.js.map +2 -2
  48. package/lib/values.mjs +12 -17
  49. package/lib/values.mjs.map +2 -2
  50. package/package.json +4 -5
  51. package/scripts/install-graphql-17.js +41 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/extractMinimalViableSchemaForRequestDocument.ts"],
4
- "sourcesContent": ["import {\n ASTNode,\n DirectiveNode,\n DocumentNode,\n FieldNode,\n GraphQLArgument,\n GraphQLCompositeType,\n GraphQLDirective,\n GraphQLEnumType,\n GraphQLError,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLOutputType,\n GraphQLScalarType,\n GraphQLSchema,\n isCompositeType,\n isEnumType,\n isInputObjectType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n TypeInfo,\n visit,\n visitWithTypeInfo,\n} from \"graphql\";\nimport {\n CompositeTypeTuple,\n createEnumTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createObjectTypeDefinition,\n createScalarTypeDefinition,\n createUnionTypeDefinition,\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n getDirectiveDefinitionArgs,\n getDirectiveName,\n getFieldArgs,\n getFields,\n getFieldTypeReference,\n getInputObjectFields,\n getInputValueTypeReference,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InputValueDefinitionRecord,\n InterfaceTypeDefinitionTuple,\n isUnionTypeDefinition,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n SchemaDefinitions,\n setDirectiveDefinitionArgs,\n TypeDefinitionsRecord,\n} from \"../schema/definition\";\nimport { isKnownDirective } from \"../schema/directives\";\nimport { makeReadableErrorPath } from \"./makeReadableErrorPath\";\nimport {\n inspectTypeReference,\n typeNameFromReference,\n TypeReference,\n typeReferenceFromName,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { Maybe } from \"../jsutils/Maybe\";\n\nexport type ExtractMinimalViableSchemaResult = {\n definitions: SchemaDefinitions;\n unknownDirectives: DirectiveNode[];\n};\n\nexport function extractMinimalViableSchemaForRequestDocument(\n schema: GraphQLSchema,\n requestDocument: DocumentNode,\n): ExtractMinimalViableSchemaResult {\n const types: TypeDefinitionsRecord = Object.create(null);\n const directives: DirectiveDefinitionTuple[] = [];\n const unknownDirectives: DirectiveNode[] = [];\n\n const typeInfo = new TypeInfo(schema);\n visit(\n requestDocument,\n visitWithTypeInfo(typeInfo, {\n Field(node, _key, _parent, _path, ancestors): void {\n const parentType = typeInfo.getParentType();\n assertCompositeType(parentType, node, ancestors);\n\n const typeDef = addCompositeType(types, parentType);\n if (\n isUnionTypeDefinition(typeDef) ||\n node.name.value === \"__typename\"\n ) {\n return;\n }\n const field = typeInfo.getFieldDef();\n assertExistingField(field, node, ancestors);\n assertAllArgumentsAreDefined(field, node, ancestors);\n\n const fieldDef = addField(typeDef, field, node);\n addReferencedOutputType(schema, types, getFieldTypeReference(fieldDef));\n addReferencedInputTypes(schema, types, getFieldArgs(fieldDef));\n },\n Directive(node, _key, _parent, _path) {\n if (isKnownDirective(node.name.value)) {\n return;\n }\n const directive = typeInfo.getDirective();\n if (!directive) {\n // This happens whenever a directive is requested that hasn't been defined in schema\n unknownDirectives.push(node);\n return;\n }\n addDirective(directives, directive, node);\n },\n FragmentDefinition(node, _key, _parent, _path, ancestors): void {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n },\n InlineFragment(node, _key, _parent, _path, ancestors): void {\n if (node?.typeCondition) {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n }\n },\n Argument() {\n // Perf: no need to visit arguments - they were handled by Field/Directive visitors\n return false;\n },\n }),\n );\n const definitions = directives.length ? { types, directives } : { types };\n return { definitions, unknownDirectives };\n}\n\nfunction addReferencedOutputType(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n typeRef: TypeReference,\n) {\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already added\n return;\n }\n if (isCompositeType(schemaType)) {\n addCompositeType(types, schemaType);\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-output type: \" + inspectTypeReference(typeRef));\n }\n}\n\nfunction addReferencedInputTypes(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n inputValues: InputValueDefinitionRecord | undefined,\n): void {\n if (!inputValues) {\n return;\n }\n for (const inputValueDef of Object.values(inputValues)) {\n const typeRef = getInputValueTypeReference(inputValueDef);\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already fully added\n continue;\n }\n if (isInputObjectType(schemaType)) {\n const inputObjectDef = encodeInputObjectType(schemaType);\n types[name] = inputObjectDef;\n addReferencedInputTypes(\n schema,\n types,\n getInputObjectFields(inputObjectDef),\n );\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-input type: \" + inspectTypeReference(typeRef));\n }\n }\n}\n\nfunction addCompositeType(\n types: TypeDefinitionsRecord,\n type: GraphQLCompositeType,\n): CompositeTypeTuple {\n if (types[type.name]) {\n // TODO: double check that the kind match?\n return types[type.name] as CompositeTypeTuple;\n }\n return (types[type.name] = encodeCompositeType(type));\n}\n\nfunction addField(\n type: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n field: GraphQLField<unknown, unknown>,\n fieldNode: FieldNode,\n): FieldDefinition {\n const fields = getFields(type);\n\n const existingFieldDef: FieldDefinition = fields[field.name];\n const previouslyAddedArgs =\n getFieldArgs(existingFieldDef) ?? Object.create(null);\n\n const nodeArgs = new Set(fieldNode.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n\n return (fields[field.name] = encodeFieldDef(field, argsFilter));\n}\n\nfunction addDirective(\n directives: DirectiveDefinitionTuple[],\n directive: GraphQLDirective,\n node: DirectiveNode,\n) {\n const name = directive.name;\n let tuple = directives.find((d) => getDirectiveName(d) === name);\n if (!tuple) {\n tuple = [directive.name];\n directives.push(tuple);\n }\n\n const previouslyAddedArgs = getDirectiveDefinitionArgs(tuple);\n const nodeArgs = new Set(node.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs?.[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n const [hasArgs, argsRecord] = encodeArguments(directive.args, argsFilter);\n if (hasArgs) {\n setDirectiveDefinitionArgs(tuple, argsRecord);\n }\n return tuple;\n}\n\nfunction encodeCompositeType(type: GraphQLCompositeType): CompositeTypeTuple {\n if (isUnionType(type)) {\n return createUnionTypeDefinition(type.getTypes().map((type) => type.name));\n }\n const ifaces = type.getInterfaces().map((iface) => iface.name);\n return isObjectType(type)\n ? createObjectTypeDefinition({}, ifaces)\n : createInterfaceTypeDefinition({}, ifaces);\n}\n\nfunction encodeInputObjectType(\n type: GraphQLInputObjectType,\n): InputObjectTypeDefinitionTuple {\n const result = Object.create(null);\n for (const [fieldName, field] of Object.entries(type.getFields())) {\n result[fieldName] = encodeInputField(field);\n }\n return createInputObjectTypeDefinition(result);\n}\n\nfunction encodeInputField(field: GraphQLInputField): InputValueDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n return field.defaultValue === undefined\n ? typeReference\n : [typeReference, field.defaultValue];\n}\n\nfunction encodeFieldDef(\n field: GraphQLField<unknown, unknown>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): FieldDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n const [hasArgs, argsRecord] = encodeArguments(field.args, argumentsFilter);\n return !hasArgs ? typeReference : [typeReference, argsRecord];\n}\n\nfunction encodeArguments(\n args: ReadonlyArray<GraphQLArgument>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): [boolean, InputValueDefinitionRecord] {\n let hasArgs = false;\n const argsRecord: InputValueDefinitionRecord = {};\n for (const argDef of args) {\n if (argumentsFilter && !argumentsFilter(argDef)) {\n continue;\n }\n const typeReference = typeReferenceFromName(argDef.type.toString());\n argsRecord[argDef.name] =\n argDef.defaultValue === undefined\n ? typeReference\n : [typeReference, argDef.defaultValue];\n hasArgs = true;\n }\n return [hasArgs, argsRecord];\n}\n\nfunction encodeEnumType(type: GraphQLEnumType): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(type.getValues().map((v) => v.name));\n}\n\nfunction encodeScalarType(_type: GraphQLScalarType): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction assertCompositeType(\n type: Maybe<GraphQLOutputType>,\n node: ASTNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts type is GraphQLCompositeType {\n if (!type || !isCompositeType(type)) {\n const path =\n node.kind === Kind.FIELD\n ? makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value\n : makeReadableErrorPath(ancestors).join(\".\");\n throw new GraphQLError(`Cannot find type for: ${path}`, {\n nodes: node,\n });\n }\n}\n\nfunction assertExistingField(\n field: Maybe<GraphQLField<unknown, unknown>>,\n node: FieldNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts field is GraphQLField<unknown, unknown> {\n if (!field) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value;\n throw new GraphQLError(`Cannot find field: ${path}`, { nodes: node });\n }\n}\n\nfunction assertAllArgumentsAreDefined(\n field: GraphQLField<unknown, unknown> | GraphQLDirective,\n node: FieldNode | DirectiveNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n) {\n const defArgs = new Set(field.args.map((arg) => arg.name));\n for (const arg of node.arguments ?? []) {\n if (!defArgs.has(arg.name.value)) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") +\n \".\" +\n node.name.value +\n `(${arg.name.value}: ...)`;\n throw new GraphQLError(`Cannot find type for argument: ${path}`, {\n nodes: arg,\n });\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n ASTNode,\n DirectiveNode,\n DocumentNode,\n FieldNode,\n GraphQLArgument,\n GraphQLCompositeType,\n GraphQLDirective,\n GraphQLEnumType,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLOutputType,\n GraphQLScalarType,\n GraphQLSchema,\n isCompositeType,\n isEnumType,\n isInputObjectType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n TypeInfo,\n visit,\n visitWithTypeInfo,\n locatedError,\n} from \"graphql\";\nimport {\n CompositeTypeTuple,\n createEnumTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createObjectTypeDefinition,\n createScalarTypeDefinition,\n createUnionTypeDefinition,\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n getDirectiveDefinitionArgs,\n getDirectiveName,\n getFieldArgs,\n getFields,\n getFieldTypeReference,\n getInputObjectFields,\n getInputValueTypeReference,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InputValueDefinitionRecord,\n InterfaceTypeDefinitionTuple,\n isUnionTypeDefinition,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n SchemaDefinitions,\n setDirectiveDefinitionArgs,\n TypeDefinitionsRecord,\n} from \"../schema/definition\";\nimport { isKnownDirective } from \"../schema/directives\";\nimport { makeReadableErrorPath } from \"./makeReadableErrorPath\";\nimport {\n inspectTypeReference,\n typeNameFromReference,\n TypeReference,\n typeReferenceFromName,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { Maybe } from \"../jsutils/Maybe\";\n\nexport type ExtractMinimalViableSchemaResult = {\n definitions: SchemaDefinitions;\n unknownDirectives: DirectiveNode[];\n};\n\nexport function extractMinimalViableSchemaForRequestDocument(\n schema: GraphQLSchema,\n requestDocument: DocumentNode,\n): ExtractMinimalViableSchemaResult {\n const types: TypeDefinitionsRecord = Object.create(null);\n const directives: DirectiveDefinitionTuple[] = [];\n const unknownDirectives: DirectiveNode[] = [];\n\n const typeInfo = new TypeInfo(schema);\n visit(\n requestDocument,\n visitWithTypeInfo(typeInfo, {\n Field(node, _key, _parent, _path, ancestors): void {\n const parentType = typeInfo.getParentType();\n assertCompositeType(parentType, node, ancestors);\n\n const typeDef = addCompositeType(types, parentType);\n if (\n isUnionTypeDefinition(typeDef) ||\n node.name.value === \"__typename\"\n ) {\n return;\n }\n const field = typeInfo.getFieldDef();\n assertExistingField(field, node, ancestors);\n assertAllArgumentsAreDefined(field, node, ancestors);\n\n const fieldDef = addField(typeDef, field, node);\n addReferencedOutputType(schema, types, getFieldTypeReference(fieldDef));\n addReferencedInputTypes(schema, types, getFieldArgs(fieldDef));\n },\n Directive(node, _key, _parent, _path) {\n if (isKnownDirective(node.name.value)) {\n return;\n }\n const directive = typeInfo.getDirective();\n if (!directive) {\n // This happens whenever a directive is requested that hasn't been defined in schema\n unknownDirectives.push(node);\n return;\n }\n addDirective(directives, directive, node);\n },\n FragmentDefinition(node, _key, _parent, _path, ancestors): void {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n },\n InlineFragment(node, _key, _parent, _path, ancestors): void {\n if (node?.typeCondition) {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n }\n },\n Argument() {\n // Perf: no need to visit arguments - they were handled by Field/Directive visitors\n return false;\n },\n }),\n );\n const definitions = directives.length ? { types, directives } : { types };\n return { definitions, unknownDirectives };\n}\n\nfunction addReferencedOutputType(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n typeRef: TypeReference,\n) {\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already added\n return;\n }\n if (isCompositeType(schemaType)) {\n addCompositeType(types, schemaType);\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-output type: \" + inspectTypeReference(typeRef));\n }\n}\n\nfunction addReferencedInputTypes(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n inputValues: InputValueDefinitionRecord | undefined,\n): void {\n if (!inputValues) {\n return;\n }\n for (const inputValueDef of Object.values(inputValues)) {\n const typeRef = getInputValueTypeReference(inputValueDef);\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already fully added\n continue;\n }\n if (isInputObjectType(schemaType)) {\n const inputObjectDef = encodeInputObjectType(schemaType);\n types[name] = inputObjectDef;\n addReferencedInputTypes(\n schema,\n types,\n getInputObjectFields(inputObjectDef),\n );\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-input type: \" + inspectTypeReference(typeRef));\n }\n }\n}\n\nfunction addCompositeType(\n types: TypeDefinitionsRecord,\n type: GraphQLCompositeType,\n): CompositeTypeTuple {\n if (types[type.name]) {\n // TODO: double check that the kind match?\n return types[type.name] as CompositeTypeTuple;\n }\n return (types[type.name] = encodeCompositeType(type));\n}\n\nfunction addField(\n type: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n field: GraphQLField<unknown, unknown>,\n fieldNode: FieldNode,\n): FieldDefinition {\n const fields = getFields(type);\n\n const existingFieldDef: FieldDefinition = fields[field.name];\n const previouslyAddedArgs =\n getFieldArgs(existingFieldDef) ?? Object.create(null);\n\n const nodeArgs = new Set(fieldNode.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n\n return (fields[field.name] = encodeFieldDef(field, argsFilter));\n}\n\nfunction addDirective(\n directives: DirectiveDefinitionTuple[],\n directive: GraphQLDirective,\n node: DirectiveNode,\n) {\n const name = directive.name;\n let tuple = directives.find((d) => getDirectiveName(d) === name);\n if (!tuple) {\n tuple = [directive.name];\n directives.push(tuple);\n }\n\n const previouslyAddedArgs = getDirectiveDefinitionArgs(tuple);\n const nodeArgs = new Set(node.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs?.[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n const [hasArgs, argsRecord] = encodeArguments(directive.args, argsFilter);\n if (hasArgs) {\n setDirectiveDefinitionArgs(tuple, argsRecord);\n }\n return tuple;\n}\n\nfunction encodeCompositeType(type: GraphQLCompositeType): CompositeTypeTuple {\n if (isUnionType(type)) {\n return createUnionTypeDefinition(type.getTypes().map((type) => type.name));\n }\n const ifaces = type.getInterfaces().map((iface) => iface.name);\n return isObjectType(type)\n ? createObjectTypeDefinition({}, ifaces)\n : createInterfaceTypeDefinition({}, ifaces);\n}\n\nfunction encodeInputObjectType(\n type: GraphQLInputObjectType,\n): InputObjectTypeDefinitionTuple {\n const result = Object.create(null);\n for (const [fieldName, field] of Object.entries(type.getFields())) {\n result[fieldName] = encodeInputField(field);\n }\n return createInputObjectTypeDefinition(result);\n}\n\nfunction encodeInputField(field: GraphQLInputField): InputValueDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n return field.defaultValue === undefined\n ? typeReference\n : [typeReference, field.defaultValue];\n}\n\nfunction encodeFieldDef(\n field: GraphQLField<unknown, unknown>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): FieldDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n const [hasArgs, argsRecord] = encodeArguments(field.args, argumentsFilter);\n return !hasArgs ? typeReference : [typeReference, argsRecord];\n}\n\nfunction encodeArguments(\n args: ReadonlyArray<GraphQLArgument>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): [boolean, InputValueDefinitionRecord] {\n let hasArgs = false;\n const argsRecord: InputValueDefinitionRecord = {};\n for (const argDef of args) {\n if (argumentsFilter && !argumentsFilter(argDef)) {\n continue;\n }\n const typeReference = typeReferenceFromName(argDef.type.toString());\n argsRecord[argDef.name] =\n argDef.defaultValue === undefined\n ? typeReference\n : [typeReference, argDef.defaultValue];\n hasArgs = true;\n }\n return [hasArgs, argsRecord];\n}\n\nfunction encodeEnumType(type: GraphQLEnumType): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(type.getValues().map((v) => v.name));\n}\n\nfunction encodeScalarType(_type: GraphQLScalarType): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction assertCompositeType(\n type: Maybe<GraphQLOutputType>,\n node: ASTNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts type is GraphQLCompositeType {\n if (!type || !isCompositeType(type)) {\n const path =\n node.kind === Kind.FIELD\n ? makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value\n : makeReadableErrorPath(ancestors).join(\".\");\n throw locatedError(`Cannot find type for: ${path}`, [node]);\n }\n}\n\nfunction assertExistingField(\n field: Maybe<GraphQLField<unknown, unknown>>,\n node: FieldNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts field is GraphQLField<unknown, unknown> {\n if (!field) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value;\n throw locatedError(`Cannot find field: ${path}`, [node]);\n }\n}\n\nfunction assertAllArgumentsAreDefined(\n field: GraphQLField<unknown, unknown> | GraphQLDirective,\n node: FieldNode | DirectiveNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n) {\n const defArgs = new Set(field.args.map((arg) => arg.name));\n for (const arg of node.arguments ?? []) {\n if (!defArgs.has(arg.name.value)) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") +\n \".\" +\n node.name.value +\n `(${arg.name.value}: ...)`;\n throw locatedError(`Cannot find type for argument: ${path}`, [arg]);\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["type"]
7
7
  }
@@ -1,6 +1,5 @@
1
1
  // src/utilities/extractMinimalViableSchemaForRequestDocument.ts
2
2
  import {
3
- GraphQLError,
4
3
  isCompositeType,
5
4
  isEnumType,
6
5
  isInputObjectType,
@@ -12,7 +11,8 @@ import {
12
11
  Kind,
13
12
  TypeInfo,
14
13
  visit,
15
- visitWithTypeInfo
14
+ visitWithTypeInfo,
15
+ locatedError
16
16
  } from "graphql";
17
17
  import {
18
18
  createEnumTypeDefinition,
@@ -223,15 +223,13 @@ function encodeScalarType(_type) {
223
223
  function assertCompositeType(type, node, ancestors) {
224
224
  if (!type || !isCompositeType(type)) {
225
225
  const path = node.kind === Kind.FIELD ? makeReadableErrorPath(ancestors).join(".") + "." + node.name.value : makeReadableErrorPath(ancestors).join(".");
226
- throw new GraphQLError(`Cannot find type for: ${path}`, {
227
- nodes: node
228
- });
226
+ throw locatedError(`Cannot find type for: ${path}`, [node]);
229
227
  }
230
228
  }
231
229
  function assertExistingField(field, node, ancestors) {
232
230
  if (!field) {
233
231
  const path = makeReadableErrorPath(ancestors).join(".") + "." + node.name.value;
234
- throw new GraphQLError(`Cannot find field: ${path}`, { nodes: node });
232
+ throw locatedError(`Cannot find field: ${path}`, [node]);
235
233
  }
236
234
  }
237
235
  function assertAllArgumentsAreDefined(field, node, ancestors) {
@@ -240,9 +238,7 @@ function assertAllArgumentsAreDefined(field, node, ancestors) {
240
238
  for (const arg of (_a = node.arguments) != null ? _a : []) {
241
239
  if (!defArgs.has(arg.name.value)) {
242
240
  const path = makeReadableErrorPath(ancestors).join(".") + "." + node.name.value + `(${arg.name.value}: ...)`;
243
- throw new GraphQLError(`Cannot find type for argument: ${path}`, {
244
- nodes: arg
245
- });
241
+ throw locatedError(`Cannot find type for argument: ${path}`, [arg]);
246
242
  }
247
243
  }
248
244
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/extractMinimalViableSchemaForRequestDocument.ts"],
4
- "sourcesContent": ["import {\n ASTNode,\n DirectiveNode,\n DocumentNode,\n FieldNode,\n GraphQLArgument,\n GraphQLCompositeType,\n GraphQLDirective,\n GraphQLEnumType,\n GraphQLError,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLOutputType,\n GraphQLScalarType,\n GraphQLSchema,\n isCompositeType,\n isEnumType,\n isInputObjectType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n TypeInfo,\n visit,\n visitWithTypeInfo,\n} from \"graphql\";\nimport {\n CompositeTypeTuple,\n createEnumTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createObjectTypeDefinition,\n createScalarTypeDefinition,\n createUnionTypeDefinition,\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n getDirectiveDefinitionArgs,\n getDirectiveName,\n getFieldArgs,\n getFields,\n getFieldTypeReference,\n getInputObjectFields,\n getInputValueTypeReference,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InputValueDefinitionRecord,\n InterfaceTypeDefinitionTuple,\n isUnionTypeDefinition,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n SchemaDefinitions,\n setDirectiveDefinitionArgs,\n TypeDefinitionsRecord,\n} from \"../schema/definition\";\nimport { isKnownDirective } from \"../schema/directives\";\nimport { makeReadableErrorPath } from \"./makeReadableErrorPath\";\nimport {\n inspectTypeReference,\n typeNameFromReference,\n TypeReference,\n typeReferenceFromName,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { Maybe } from \"../jsutils/Maybe\";\n\nexport type ExtractMinimalViableSchemaResult = {\n definitions: SchemaDefinitions;\n unknownDirectives: DirectiveNode[];\n};\n\nexport function extractMinimalViableSchemaForRequestDocument(\n schema: GraphQLSchema,\n requestDocument: DocumentNode,\n): ExtractMinimalViableSchemaResult {\n const types: TypeDefinitionsRecord = Object.create(null);\n const directives: DirectiveDefinitionTuple[] = [];\n const unknownDirectives: DirectiveNode[] = [];\n\n const typeInfo = new TypeInfo(schema);\n visit(\n requestDocument,\n visitWithTypeInfo(typeInfo, {\n Field(node, _key, _parent, _path, ancestors): void {\n const parentType = typeInfo.getParentType();\n assertCompositeType(parentType, node, ancestors);\n\n const typeDef = addCompositeType(types, parentType);\n if (\n isUnionTypeDefinition(typeDef) ||\n node.name.value === \"__typename\"\n ) {\n return;\n }\n const field = typeInfo.getFieldDef();\n assertExistingField(field, node, ancestors);\n assertAllArgumentsAreDefined(field, node, ancestors);\n\n const fieldDef = addField(typeDef, field, node);\n addReferencedOutputType(schema, types, getFieldTypeReference(fieldDef));\n addReferencedInputTypes(schema, types, getFieldArgs(fieldDef));\n },\n Directive(node, _key, _parent, _path) {\n if (isKnownDirective(node.name.value)) {\n return;\n }\n const directive = typeInfo.getDirective();\n if (!directive) {\n // This happens whenever a directive is requested that hasn't been defined in schema\n unknownDirectives.push(node);\n return;\n }\n addDirective(directives, directive, node);\n },\n FragmentDefinition(node, _key, _parent, _path, ancestors): void {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n },\n InlineFragment(node, _key, _parent, _path, ancestors): void {\n if (node?.typeCondition) {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n }\n },\n Argument() {\n // Perf: no need to visit arguments - they were handled by Field/Directive visitors\n return false;\n },\n }),\n );\n const definitions = directives.length ? { types, directives } : { types };\n return { definitions, unknownDirectives };\n}\n\nfunction addReferencedOutputType(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n typeRef: TypeReference,\n) {\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already added\n return;\n }\n if (isCompositeType(schemaType)) {\n addCompositeType(types, schemaType);\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-output type: \" + inspectTypeReference(typeRef));\n }\n}\n\nfunction addReferencedInputTypes(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n inputValues: InputValueDefinitionRecord | undefined,\n): void {\n if (!inputValues) {\n return;\n }\n for (const inputValueDef of Object.values(inputValues)) {\n const typeRef = getInputValueTypeReference(inputValueDef);\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already fully added\n continue;\n }\n if (isInputObjectType(schemaType)) {\n const inputObjectDef = encodeInputObjectType(schemaType);\n types[name] = inputObjectDef;\n addReferencedInputTypes(\n schema,\n types,\n getInputObjectFields(inputObjectDef),\n );\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-input type: \" + inspectTypeReference(typeRef));\n }\n }\n}\n\nfunction addCompositeType(\n types: TypeDefinitionsRecord,\n type: GraphQLCompositeType,\n): CompositeTypeTuple {\n if (types[type.name]) {\n // TODO: double check that the kind match?\n return types[type.name] as CompositeTypeTuple;\n }\n return (types[type.name] = encodeCompositeType(type));\n}\n\nfunction addField(\n type: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n field: GraphQLField<unknown, unknown>,\n fieldNode: FieldNode,\n): FieldDefinition {\n const fields = getFields(type);\n\n const existingFieldDef: FieldDefinition = fields[field.name];\n const previouslyAddedArgs =\n getFieldArgs(existingFieldDef) ?? Object.create(null);\n\n const nodeArgs = new Set(fieldNode.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n\n return (fields[field.name] = encodeFieldDef(field, argsFilter));\n}\n\nfunction addDirective(\n directives: DirectiveDefinitionTuple[],\n directive: GraphQLDirective,\n node: DirectiveNode,\n) {\n const name = directive.name;\n let tuple = directives.find((d) => getDirectiveName(d) === name);\n if (!tuple) {\n tuple = [directive.name];\n directives.push(tuple);\n }\n\n const previouslyAddedArgs = getDirectiveDefinitionArgs(tuple);\n const nodeArgs = new Set(node.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs?.[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n const [hasArgs, argsRecord] = encodeArguments(directive.args, argsFilter);\n if (hasArgs) {\n setDirectiveDefinitionArgs(tuple, argsRecord);\n }\n return tuple;\n}\n\nfunction encodeCompositeType(type: GraphQLCompositeType): CompositeTypeTuple {\n if (isUnionType(type)) {\n return createUnionTypeDefinition(type.getTypes().map((type) => type.name));\n }\n const ifaces = type.getInterfaces().map((iface) => iface.name);\n return isObjectType(type)\n ? createObjectTypeDefinition({}, ifaces)\n : createInterfaceTypeDefinition({}, ifaces);\n}\n\nfunction encodeInputObjectType(\n type: GraphQLInputObjectType,\n): InputObjectTypeDefinitionTuple {\n const result = Object.create(null);\n for (const [fieldName, field] of Object.entries(type.getFields())) {\n result[fieldName] = encodeInputField(field);\n }\n return createInputObjectTypeDefinition(result);\n}\n\nfunction encodeInputField(field: GraphQLInputField): InputValueDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n return field.defaultValue === undefined\n ? typeReference\n : [typeReference, field.defaultValue];\n}\n\nfunction encodeFieldDef(\n field: GraphQLField<unknown, unknown>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): FieldDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n const [hasArgs, argsRecord] = encodeArguments(field.args, argumentsFilter);\n return !hasArgs ? typeReference : [typeReference, argsRecord];\n}\n\nfunction encodeArguments(\n args: ReadonlyArray<GraphQLArgument>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): [boolean, InputValueDefinitionRecord] {\n let hasArgs = false;\n const argsRecord: InputValueDefinitionRecord = {};\n for (const argDef of args) {\n if (argumentsFilter && !argumentsFilter(argDef)) {\n continue;\n }\n const typeReference = typeReferenceFromName(argDef.type.toString());\n argsRecord[argDef.name] =\n argDef.defaultValue === undefined\n ? typeReference\n : [typeReference, argDef.defaultValue];\n hasArgs = true;\n }\n return [hasArgs, argsRecord];\n}\n\nfunction encodeEnumType(type: GraphQLEnumType): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(type.getValues().map((v) => v.name));\n}\n\nfunction encodeScalarType(_type: GraphQLScalarType): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction assertCompositeType(\n type: Maybe<GraphQLOutputType>,\n node: ASTNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts type is GraphQLCompositeType {\n if (!type || !isCompositeType(type)) {\n const path =\n node.kind === Kind.FIELD\n ? makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value\n : makeReadableErrorPath(ancestors).join(\".\");\n throw new GraphQLError(`Cannot find type for: ${path}`, {\n nodes: node,\n });\n }\n}\n\nfunction assertExistingField(\n field: Maybe<GraphQLField<unknown, unknown>>,\n node: FieldNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts field is GraphQLField<unknown, unknown> {\n if (!field) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value;\n throw new GraphQLError(`Cannot find field: ${path}`, { nodes: node });\n }\n}\n\nfunction assertAllArgumentsAreDefined(\n field: GraphQLField<unknown, unknown> | GraphQLDirective,\n node: FieldNode | DirectiveNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n) {\n const defArgs = new Set(field.args.map((arg) => arg.name));\n for (const arg of node.arguments ?? []) {\n if (!defArgs.has(arg.name.value)) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") +\n \".\" +\n node.name.value +\n `(${arg.name.value}: ...)`;\n throw new GraphQLError(`Cannot find type for argument: ${path}`, {\n nodes: arg,\n });\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n ASTNode,\n DirectiveNode,\n DocumentNode,\n FieldNode,\n GraphQLArgument,\n GraphQLCompositeType,\n GraphQLDirective,\n GraphQLEnumType,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLOutputType,\n GraphQLScalarType,\n GraphQLSchema,\n isCompositeType,\n isEnumType,\n isInputObjectType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n TypeInfo,\n visit,\n visitWithTypeInfo,\n locatedError,\n} from \"graphql\";\nimport {\n CompositeTypeTuple,\n createEnumTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createObjectTypeDefinition,\n createScalarTypeDefinition,\n createUnionTypeDefinition,\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n getDirectiveDefinitionArgs,\n getDirectiveName,\n getFieldArgs,\n getFields,\n getFieldTypeReference,\n getInputObjectFields,\n getInputValueTypeReference,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InputValueDefinitionRecord,\n InterfaceTypeDefinitionTuple,\n isUnionTypeDefinition,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n SchemaDefinitions,\n setDirectiveDefinitionArgs,\n TypeDefinitionsRecord,\n} from \"../schema/definition\";\nimport { isKnownDirective } from \"../schema/directives\";\nimport { makeReadableErrorPath } from \"./makeReadableErrorPath\";\nimport {\n inspectTypeReference,\n typeNameFromReference,\n TypeReference,\n typeReferenceFromName,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { Maybe } from \"../jsutils/Maybe\";\n\nexport type ExtractMinimalViableSchemaResult = {\n definitions: SchemaDefinitions;\n unknownDirectives: DirectiveNode[];\n};\n\nexport function extractMinimalViableSchemaForRequestDocument(\n schema: GraphQLSchema,\n requestDocument: DocumentNode,\n): ExtractMinimalViableSchemaResult {\n const types: TypeDefinitionsRecord = Object.create(null);\n const directives: DirectiveDefinitionTuple[] = [];\n const unknownDirectives: DirectiveNode[] = [];\n\n const typeInfo = new TypeInfo(schema);\n visit(\n requestDocument,\n visitWithTypeInfo(typeInfo, {\n Field(node, _key, _parent, _path, ancestors): void {\n const parentType = typeInfo.getParentType();\n assertCompositeType(parentType, node, ancestors);\n\n const typeDef = addCompositeType(types, parentType);\n if (\n isUnionTypeDefinition(typeDef) ||\n node.name.value === \"__typename\"\n ) {\n return;\n }\n const field = typeInfo.getFieldDef();\n assertExistingField(field, node, ancestors);\n assertAllArgumentsAreDefined(field, node, ancestors);\n\n const fieldDef = addField(typeDef, field, node);\n addReferencedOutputType(schema, types, getFieldTypeReference(fieldDef));\n addReferencedInputTypes(schema, types, getFieldArgs(fieldDef));\n },\n Directive(node, _key, _parent, _path) {\n if (isKnownDirective(node.name.value)) {\n return;\n }\n const directive = typeInfo.getDirective();\n if (!directive) {\n // This happens whenever a directive is requested that hasn't been defined in schema\n unknownDirectives.push(node);\n return;\n }\n addDirective(directives, directive, node);\n },\n FragmentDefinition(node, _key, _parent, _path, ancestors): void {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n },\n InlineFragment(node, _key, _parent, _path, ancestors): void {\n if (node?.typeCondition) {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n }\n },\n Argument() {\n // Perf: no need to visit arguments - they were handled by Field/Directive visitors\n return false;\n },\n }),\n );\n const definitions = directives.length ? { types, directives } : { types };\n return { definitions, unknownDirectives };\n}\n\nfunction addReferencedOutputType(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n typeRef: TypeReference,\n) {\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already added\n return;\n }\n if (isCompositeType(schemaType)) {\n addCompositeType(types, schemaType);\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-output type: \" + inspectTypeReference(typeRef));\n }\n}\n\nfunction addReferencedInputTypes(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n inputValues: InputValueDefinitionRecord | undefined,\n): void {\n if (!inputValues) {\n return;\n }\n for (const inputValueDef of Object.values(inputValues)) {\n const typeRef = getInputValueTypeReference(inputValueDef);\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already fully added\n continue;\n }\n if (isInputObjectType(schemaType)) {\n const inputObjectDef = encodeInputObjectType(schemaType);\n types[name] = inputObjectDef;\n addReferencedInputTypes(\n schema,\n types,\n getInputObjectFields(inputObjectDef),\n );\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-input type: \" + inspectTypeReference(typeRef));\n }\n }\n}\n\nfunction addCompositeType(\n types: TypeDefinitionsRecord,\n type: GraphQLCompositeType,\n): CompositeTypeTuple {\n if (types[type.name]) {\n // TODO: double check that the kind match?\n return types[type.name] as CompositeTypeTuple;\n }\n return (types[type.name] = encodeCompositeType(type));\n}\n\nfunction addField(\n type: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n field: GraphQLField<unknown, unknown>,\n fieldNode: FieldNode,\n): FieldDefinition {\n const fields = getFields(type);\n\n const existingFieldDef: FieldDefinition = fields[field.name];\n const previouslyAddedArgs =\n getFieldArgs(existingFieldDef) ?? Object.create(null);\n\n const nodeArgs = new Set(fieldNode.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n\n return (fields[field.name] = encodeFieldDef(field, argsFilter));\n}\n\nfunction addDirective(\n directives: DirectiveDefinitionTuple[],\n directive: GraphQLDirective,\n node: DirectiveNode,\n) {\n const name = directive.name;\n let tuple = directives.find((d) => getDirectiveName(d) === name);\n if (!tuple) {\n tuple = [directive.name];\n directives.push(tuple);\n }\n\n const previouslyAddedArgs = getDirectiveDefinitionArgs(tuple);\n const nodeArgs = new Set(node.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs?.[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n const [hasArgs, argsRecord] = encodeArguments(directive.args, argsFilter);\n if (hasArgs) {\n setDirectiveDefinitionArgs(tuple, argsRecord);\n }\n return tuple;\n}\n\nfunction encodeCompositeType(type: GraphQLCompositeType): CompositeTypeTuple {\n if (isUnionType(type)) {\n return createUnionTypeDefinition(type.getTypes().map((type) => type.name));\n }\n const ifaces = type.getInterfaces().map((iface) => iface.name);\n return isObjectType(type)\n ? createObjectTypeDefinition({}, ifaces)\n : createInterfaceTypeDefinition({}, ifaces);\n}\n\nfunction encodeInputObjectType(\n type: GraphQLInputObjectType,\n): InputObjectTypeDefinitionTuple {\n const result = Object.create(null);\n for (const [fieldName, field] of Object.entries(type.getFields())) {\n result[fieldName] = encodeInputField(field);\n }\n return createInputObjectTypeDefinition(result);\n}\n\nfunction encodeInputField(field: GraphQLInputField): InputValueDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n return field.defaultValue === undefined\n ? typeReference\n : [typeReference, field.defaultValue];\n}\n\nfunction encodeFieldDef(\n field: GraphQLField<unknown, unknown>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): FieldDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n const [hasArgs, argsRecord] = encodeArguments(field.args, argumentsFilter);\n return !hasArgs ? typeReference : [typeReference, argsRecord];\n}\n\nfunction encodeArguments(\n args: ReadonlyArray<GraphQLArgument>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): [boolean, InputValueDefinitionRecord] {\n let hasArgs = false;\n const argsRecord: InputValueDefinitionRecord = {};\n for (const argDef of args) {\n if (argumentsFilter && !argumentsFilter(argDef)) {\n continue;\n }\n const typeReference = typeReferenceFromName(argDef.type.toString());\n argsRecord[argDef.name] =\n argDef.defaultValue === undefined\n ? typeReference\n : [typeReference, argDef.defaultValue];\n hasArgs = true;\n }\n return [hasArgs, argsRecord];\n}\n\nfunction encodeEnumType(type: GraphQLEnumType): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(type.getValues().map((v) => v.name));\n}\n\nfunction encodeScalarType(_type: GraphQLScalarType): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction assertCompositeType(\n type: Maybe<GraphQLOutputType>,\n node: ASTNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts type is GraphQLCompositeType {\n if (!type || !isCompositeType(type)) {\n const path =\n node.kind === Kind.FIELD\n ? makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value\n : makeReadableErrorPath(ancestors).join(\".\");\n throw locatedError(`Cannot find type for: ${path}`, [node]);\n }\n}\n\nfunction assertExistingField(\n field: Maybe<GraphQLField<unknown, unknown>>,\n node: FieldNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts field is GraphQLField<unknown, unknown> {\n if (!field) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value;\n throw locatedError(`Cannot find field: ${path}`, [node]);\n }\n}\n\nfunction assertAllArgumentsAreDefined(\n field: GraphQLField<unknown, unknown> | GraphQLDirective,\n node: FieldNode | DirectiveNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n) {\n const defArgs = new Set(field.args.map((arg) => arg.name));\n for (const arg of node.arguments ?? []) {\n if (!defArgs.has(arg.name.value)) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") +\n \".\" +\n node.name.value +\n `(${arg.name.value}: ...)`;\n throw locatedError(`Cannot find type for argument: ${path}`, [arg]);\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["type"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAIZ,aAAa,EACb,SAAS,EACT,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,eAAe,EAOhB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,qBAAqB,GACtB;IAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,aAAa,CAAC,sBAAsB,CAAC,EAClD,MAAM,EAAE;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EACvC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,qBAAqB,CA0BvB;AAgFD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,eAAe,GAAG,wBAAwB,EAC/C,IAAI,EAAE,SAAS,GAAG,aAAa,GAC9B;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CA+FjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EAAE,wBAAwB,EACtC,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;CAAE,GAClD,SAAS,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAW7C"}
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAIZ,aAAa,EACb,SAAS,EACT,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,eAAe,EAOhB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,qBAAqB,GACtB;IAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,aAAa,CAAC,sBAAsB,CAAC,EAClD,MAAM,EAAE;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EACvC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,qBAAqB,CA2BvB;AA2ED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,eAAe,GAAG,wBAAwB,EAC/C,IAAI,EAAE,SAAS,GAAG,aAAa,GAC9B;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CA+FjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EAAE,wBAAwB,EACtC,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;CAAE,GAClD,SAAS,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAW7C"}
package/lib/values.js CHANGED
@@ -40,8 +40,9 @@ function getVariableValues(schemaFragment, varDefNodes, inputs, options) {
40
40
  inputs,
41
41
  (error) => {
42
42
  if (maxErrors != null && errors.length >= maxErrors) {
43
- throw new import_graphql.GraphQLError(
44
- "Too many errors processing variables, error limit reached. Execution aborted."
43
+ throw (0, import_graphql.locatedError)(
44
+ "Too many errors processing variables, error limit reached. Execution aborted.",
45
+ []
45
46
  );
46
47
  }
47
48
  errors.push(error);
@@ -63,9 +64,9 @@ function coerceVariableValues(schemaFragment, varDefNodes, inputs, onError) {
63
64
  if (!(0, import_definition.isInputType)(schemaFragment.definitions, varTypeReference)) {
64
65
  const varTypeStr = (0, import_reference.inspectTypeReference)(varTypeReference);
65
66
  onError(
66
- new import_graphql.GraphQLError(
67
+ (0, import_graphql.locatedError)(
67
68
  `Variable "$${varName}" expected value of type "${varTypeStr}" which cannot be used as an input type.`,
68
- { nodes: varDefNode.type }
69
+ [varDefNode.type]
69
70
  )
70
71
  );
71
72
  continue;
@@ -80,9 +81,9 @@ function coerceVariableValues(schemaFragment, varDefNodes, inputs, onError) {
80
81
  } else if ((0, import_reference.isNonNullType)(varTypeReference)) {
81
82
  const varTypeStr = (0, import_reference.inspectTypeReference)(varTypeReference);
82
83
  onError(
83
- new import_graphql.GraphQLError(
84
+ (0, import_graphql.locatedError)(
84
85
  `Variable "$${varName}" of required type "${varTypeStr}" was not provided.`,
85
- { nodes: varDefNode }
86
+ [varDefNode]
86
87
  )
87
88
  );
88
89
  }
@@ -92,9 +93,9 @@ function coerceVariableValues(schemaFragment, varDefNodes, inputs, onError) {
92
93
  if (value === null && (0, import_reference.isNonNullType)(varTypeReference)) {
93
94
  const varTypeStr = (0, import_reference.inspectTypeReference)(varTypeReference);
94
95
  onError(
95
- new import_graphql.GraphQLError(
96
+ (0, import_graphql.locatedError)(
96
97
  `Variable "$${varName}" of non-null type "${varTypeStr}" must not be null.`,
97
- { nodes: varDefNode }
98
+ [varDefNode]
98
99
  )
99
100
  );
100
101
  continue;
@@ -108,12 +109,7 @@ function coerceVariableValues(schemaFragment, varDefNodes, inputs, onError) {
108
109
  if (path.length > 0) {
109
110
  prefix += ` at "${varName}${(0, import_printPathArray.printPathArray)(path)}"`;
110
111
  }
111
- onError(
112
- new import_graphql.GraphQLError(prefix + "; " + error.message, {
113
- nodes: varDefNode,
114
- originalError: error.originalError
115
- })
116
- );
112
+ onError((0, import_graphql.locatedError)(prefix + "; " + error.message, [varDefNode]));
117
113
  }
118
114
  );
119
115
  }
@@ -183,9 +179,9 @@ function getArgumentValues(exeContext, def, node) {
183
179
  exeContext.variableValues
184
180
  );
185
181
  if (coercedValue === void 0) {
186
- throw new import_graphql.GraphQLError(
182
+ throw (0, import_graphql.locatedError)(
187
183
  `Argument "${name}" has invalid value ${(0, import_graphql.print)(valueNode)}.`,
188
- { nodes: valueNode }
184
+ [valueNode]
189
185
  );
190
186
  }
191
187
  coercedValues[name] = coercedValue;
package/lib/values.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/values.ts"],
4
- "sourcesContent": ["import {\n GraphQLError,\n Kind,\n print,\n locatedError,\n DirectiveNode,\n FieldNode,\n VariableDefinitionNode,\n} from \"graphql\";\nimport { inspect } from \"./jsutils/inspect\";\nimport { printPathArray } from \"./jsutils/printPathArray\";\nimport { ExecutionContext } from \"./executeWithoutSchema\";\nimport {\n DirectiveDefinitionTuple,\n FieldDefinition,\n getDefinitionArguments,\n getDirectiveName,\n getInputDefaultValue,\n getInputValueTypeReference,\n isDefined,\n isInputType,\n} from \"./schema/definition\";\nimport { valueFromAST } from \"./utilities/valueFromAST\";\nimport { coerceInputValue } from \"./utilities/coerceInputValue\";\nimport {\n inspectTypeReference,\n isNonNullType,\n typeReferenceFromNode,\n} from \"./schema/reference\";\nimport type { SchemaFragment } from \"./types\";\n\ntype CoercedVariableValues =\n | { errors: Array<GraphQLError>; coerced?: never }\n | { coerced: { [variable: string]: unknown }; errors?: never };\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getVariableValues(\n schemaFragment: SchemaFragment,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n options?: { maxErrors?: number },\n): CoercedVariableValues {\n const errors: GraphQLError[] = [];\n const maxErrors = options?.maxErrors;\n try {\n const coerced = coerceVariableValues(\n schemaFragment,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new GraphQLError(\n \"Too many errors processing variables, error limit reached. Execution aborted.\",\n );\n }\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return { coerced };\n }\n } catch (error) {\n errors.push(error as GraphQLError);\n }\n\n return { errors: errors };\n}\n\nfunction coerceVariableValues(\n schemaFragment: SchemaFragment,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n onError: (error: GraphQLError) => void,\n): { [variable: string]: unknown } {\n const coercedValues: { [variable: string]: unknown } = {};\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varTypeReference = typeReferenceFromNode(varDefNode.type);\n\n if (!isInputType(schemaFragment.definitions, varTypeReference)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n { nodes: varDefNode.type },\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(\n varDefNode.defaultValue,\n varTypeReference,\n schemaFragment,\n );\n } else if (isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n { nodes: varDefNode },\n ),\n );\n }\n continue;\n }\n\n const value = inputs[varName];\n if (value === null && isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n { nodes: varDefNode },\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varTypeReference,\n schemaFragment,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` + inspect(invalidValue);\n if (path.length > 0) {\n prefix += ` at \"${varName}${printPathArray(path)}\"`;\n }\n onError(\n new GraphQLError(prefix + \"; \" + error.message, {\n nodes: varDefNode,\n originalError: error.originalError,\n }),\n );\n },\n );\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getArgumentValues(\n exeContext: ExecutionContext,\n def: FieldDefinition | DirectiveDefinitionTuple,\n node: FieldNode | DirectiveNode,\n): { [argument: string]: unknown } {\n const definitions = exeContext.schemaFragment.definitions;\n const coercedValues: { [argument: string]: unknown } = {};\n const argumentDefs = getDefinitionArguments(def);\n if (!argumentDefs) {\n return coercedValues;\n }\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const argumentNodes = node.arguments ?? [];\n const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));\n\n for (const [name, argumentDef] of Object.entries(argumentDefs)) {\n const argumentNode = argNodeMap.get(name);\n const argumentTypeRef = getInputValueTypeReference(argumentDef);\n const defaultValue = getInputDefaultValue(argumentDef);\n\n if (argumentNode == null) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" was not provided.`,\n [node],\n );\n }\n continue;\n }\n\n if (!isDefined(definitions, argumentTypeRef)) {\n throw locatedError(\n `Could not find type for argument ${name} in ${node.kind} ${node.name.value}`,\n [argumentNode],\n );\n }\n\n // if (!schemaTypes.isInputType(argumentTypeRef)) {\n // const type = schemaTypes.printTypeRef(argumentTypeRef);\n // throw locatedError(\n // `Argument \"$${name}\" expected value of type \"${type}\" which cannot be used as an input type.`,\n // [argumentNode],\n // );\n // }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (\n exeContext.variableValues == null ||\n !hasOwnProperty(exeContext.variableValues, variableName)\n ) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n [valueNode],\n );\n }\n continue;\n }\n isNull = exeContext.variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of non-null type \"${type}\" must not be null.\"`,\n [valueNode],\n );\n }\n\n const coercedValue = valueFromAST(\n valueNode,\n argumentTypeRef,\n exeContext.schemaFragment,\n exeContext.variableValues,\n );\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new GraphQLError(\n `Argument \"${name}\" has invalid value ${print(valueNode)}.`,\n { nodes: valueNode },\n );\n }\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getDirectiveValues(\n exeContext: ExecutionContext,\n directiveDef: DirectiveDefinitionTuple,\n node: { directives?: ReadonlyArray<DirectiveNode> },\n): undefined | { [argument: string]: unknown } {\n const name = getDirectiveName(directiveDef);\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const directiveNode = node.directives?.find(\n (directive) => directive.name.value === name,\n );\n\n if (directiveNode) {\n return getArgumentValues(exeContext, directiveDef, directiveNode);\n }\n}\n\nfunction hasOwnProperty(obj: unknown, prop: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n GraphQLError,\n Kind,\n print,\n locatedError,\n DirectiveNode,\n FieldNode,\n VariableDefinitionNode,\n} from \"graphql\";\nimport { inspect } from \"./jsutils/inspect\";\nimport { printPathArray } from \"./jsutils/printPathArray\";\nimport { ExecutionContext } from \"./executeWithoutSchema\";\nimport {\n DirectiveDefinitionTuple,\n FieldDefinition,\n getDefinitionArguments,\n getDirectiveName,\n getInputDefaultValue,\n getInputValueTypeReference,\n isDefined,\n isInputType,\n} from \"./schema/definition\";\nimport { valueFromAST } from \"./utilities/valueFromAST\";\nimport { coerceInputValue } from \"./utilities/coerceInputValue\";\nimport {\n inspectTypeReference,\n isNonNullType,\n typeReferenceFromNode,\n} from \"./schema/reference\";\nimport type { SchemaFragment } from \"./types\";\n\ntype CoercedVariableValues =\n | { errors: Array<GraphQLError>; coerced?: never }\n | { coerced: { [variable: string]: unknown }; errors?: never };\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getVariableValues(\n schemaFragment: SchemaFragment,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n options?: { maxErrors?: number },\n): CoercedVariableValues {\n const errors: GraphQLError[] = [];\n const maxErrors = options?.maxErrors;\n try {\n const coerced = coerceVariableValues(\n schemaFragment,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw locatedError(\n \"Too many errors processing variables, error limit reached. Execution aborted.\",\n [],\n );\n }\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return { coerced };\n }\n } catch (error) {\n errors.push(error as GraphQLError);\n }\n\n return { errors: errors };\n}\n\nfunction coerceVariableValues(\n schemaFragment: SchemaFragment,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n onError: (error: GraphQLError) => void,\n): { [variable: string]: unknown } {\n const coercedValues: { [variable: string]: unknown } = {};\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varTypeReference = typeReferenceFromNode(varDefNode.type);\n\n if (!isInputType(schemaFragment.definitions, varTypeReference)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n locatedError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n [varDefNode.type],\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(\n varDefNode.defaultValue,\n varTypeReference,\n schemaFragment,\n );\n } else if (isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n locatedError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n [varDefNode],\n ),\n );\n }\n continue;\n }\n\n const value = inputs[varName];\n if (value === null && isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n locatedError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n [varDefNode],\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varTypeReference,\n schemaFragment,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` + inspect(invalidValue);\n if (path.length > 0) {\n prefix += ` at \"${varName}${printPathArray(path)}\"`;\n }\n onError(locatedError(prefix + \"; \" + error.message, [varDefNode]));\n },\n );\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getArgumentValues(\n exeContext: ExecutionContext,\n def: FieldDefinition | DirectiveDefinitionTuple,\n node: FieldNode | DirectiveNode,\n): { [argument: string]: unknown } {\n const definitions = exeContext.schemaFragment.definitions;\n const coercedValues: { [argument: string]: unknown } = {};\n const argumentDefs = getDefinitionArguments(def);\n if (!argumentDefs) {\n return coercedValues;\n }\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const argumentNodes = node.arguments ?? [];\n const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));\n\n for (const [name, argumentDef] of Object.entries(argumentDefs)) {\n const argumentNode = argNodeMap.get(name);\n const argumentTypeRef = getInputValueTypeReference(argumentDef);\n const defaultValue = getInputDefaultValue(argumentDef);\n\n if (argumentNode == null) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" was not provided.`,\n [node],\n );\n }\n continue;\n }\n\n if (!isDefined(definitions, argumentTypeRef)) {\n throw locatedError(\n `Could not find type for argument ${name} in ${node.kind} ${node.name.value}`,\n [argumentNode],\n );\n }\n\n // if (!schemaTypes.isInputType(argumentTypeRef)) {\n // const type = schemaTypes.printTypeRef(argumentTypeRef);\n // throw locatedError(\n // `Argument \"$${name}\" expected value of type \"${type}\" which cannot be used as an input type.`,\n // [argumentNode],\n // );\n // }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (\n exeContext.variableValues == null ||\n !hasOwnProperty(exeContext.variableValues, variableName)\n ) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n [valueNode],\n );\n }\n continue;\n }\n isNull = exeContext.variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of non-null type \"${type}\" must not be null.\"`,\n [valueNode],\n );\n }\n\n const coercedValue = valueFromAST(\n valueNode,\n argumentTypeRef,\n exeContext.schemaFragment,\n exeContext.variableValues,\n );\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw locatedError(\n `Argument \"${name}\" has invalid value ${print(valueNode)}.`,\n [valueNode],\n );\n }\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getDirectiveValues(\n exeContext: ExecutionContext,\n directiveDef: DirectiveDefinitionTuple,\n node: { directives?: ReadonlyArray<DirectiveNode> },\n): undefined | { [argument: string]: unknown } {\n const name = getDirectiveName(directiveDef);\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const directiveNode = node.directives?.find(\n (directive) => directive.name.value === name,\n );\n\n if (directiveNode) {\n return getArgumentValues(exeContext, directiveDef, directiveNode);\n }\n}\n\nfunction hasOwnProperty(obj: unknown, prop: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/lib/values.mjs CHANGED
@@ -1,6 +1,5 @@
1
1
  // src/values.ts
2
2
  import {
3
- GraphQLError,
4
3
  Kind,
5
4
  print,
6
5
  locatedError
@@ -32,8 +31,9 @@ function getVariableValues(schemaFragment, varDefNodes, inputs, options) {
32
31
  inputs,
33
32
  (error) => {
34
33
  if (maxErrors != null && errors.length >= maxErrors) {
35
- throw new GraphQLError(
36
- "Too many errors processing variables, error limit reached. Execution aborted."
34
+ throw locatedError(
35
+ "Too many errors processing variables, error limit reached. Execution aborted.",
36
+ []
37
37
  );
38
38
  }
39
39
  errors.push(error);
@@ -55,9 +55,9 @@ function coerceVariableValues(schemaFragment, varDefNodes, inputs, onError) {
55
55
  if (!isInputType(schemaFragment.definitions, varTypeReference)) {
56
56
  const varTypeStr = inspectTypeReference(varTypeReference);
57
57
  onError(
58
- new GraphQLError(
58
+ locatedError(
59
59
  `Variable "$${varName}" expected value of type "${varTypeStr}" which cannot be used as an input type.`,
60
- { nodes: varDefNode.type }
60
+ [varDefNode.type]
61
61
  )
62
62
  );
63
63
  continue;
@@ -72,9 +72,9 @@ function coerceVariableValues(schemaFragment, varDefNodes, inputs, onError) {
72
72
  } else if (isNonNullType(varTypeReference)) {
73
73
  const varTypeStr = inspectTypeReference(varTypeReference);
74
74
  onError(
75
- new GraphQLError(
75
+ locatedError(
76
76
  `Variable "$${varName}" of required type "${varTypeStr}" was not provided.`,
77
- { nodes: varDefNode }
77
+ [varDefNode]
78
78
  )
79
79
  );
80
80
  }
@@ -84,9 +84,9 @@ function coerceVariableValues(schemaFragment, varDefNodes, inputs, onError) {
84
84
  if (value === null && isNonNullType(varTypeReference)) {
85
85
  const varTypeStr = inspectTypeReference(varTypeReference);
86
86
  onError(
87
- new GraphQLError(
87
+ locatedError(
88
88
  `Variable "$${varName}" of non-null type "${varTypeStr}" must not be null.`,
89
- { nodes: varDefNode }
89
+ [varDefNode]
90
90
  )
91
91
  );
92
92
  continue;
@@ -100,12 +100,7 @@ function coerceVariableValues(schemaFragment, varDefNodes, inputs, onError) {
100
100
  if (path.length > 0) {
101
101
  prefix += ` at "${varName}${printPathArray(path)}"`;
102
102
  }
103
- onError(
104
- new GraphQLError(prefix + "; " + error.message, {
105
- nodes: varDefNode,
106
- originalError: error.originalError
107
- })
108
- );
103
+ onError(locatedError(prefix + "; " + error.message, [varDefNode]));
109
104
  }
110
105
  );
111
106
  }
@@ -175,9 +170,9 @@ function getArgumentValues(exeContext, def, node) {
175
170
  exeContext.variableValues
176
171
  );
177
172
  if (coercedValue === void 0) {
178
- throw new GraphQLError(
173
+ throw locatedError(
179
174
  `Argument "${name}" has invalid value ${print(valueNode)}.`,
180
- { nodes: valueNode }
175
+ [valueNode]
181
176
  );
182
177
  }
183
178
  coercedValues[name] = coercedValue;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/values.ts"],
4
- "sourcesContent": ["import {\n GraphQLError,\n Kind,\n print,\n locatedError,\n DirectiveNode,\n FieldNode,\n VariableDefinitionNode,\n} from \"graphql\";\nimport { inspect } from \"./jsutils/inspect\";\nimport { printPathArray } from \"./jsutils/printPathArray\";\nimport { ExecutionContext } from \"./executeWithoutSchema\";\nimport {\n DirectiveDefinitionTuple,\n FieldDefinition,\n getDefinitionArguments,\n getDirectiveName,\n getInputDefaultValue,\n getInputValueTypeReference,\n isDefined,\n isInputType,\n} from \"./schema/definition\";\nimport { valueFromAST } from \"./utilities/valueFromAST\";\nimport { coerceInputValue } from \"./utilities/coerceInputValue\";\nimport {\n inspectTypeReference,\n isNonNullType,\n typeReferenceFromNode,\n} from \"./schema/reference\";\nimport type { SchemaFragment } from \"./types\";\n\ntype CoercedVariableValues =\n | { errors: Array<GraphQLError>; coerced?: never }\n | { coerced: { [variable: string]: unknown }; errors?: never };\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getVariableValues(\n schemaFragment: SchemaFragment,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n options?: { maxErrors?: number },\n): CoercedVariableValues {\n const errors: GraphQLError[] = [];\n const maxErrors = options?.maxErrors;\n try {\n const coerced = coerceVariableValues(\n schemaFragment,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new GraphQLError(\n \"Too many errors processing variables, error limit reached. Execution aborted.\",\n );\n }\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return { coerced };\n }\n } catch (error) {\n errors.push(error as GraphQLError);\n }\n\n return { errors: errors };\n}\n\nfunction coerceVariableValues(\n schemaFragment: SchemaFragment,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n onError: (error: GraphQLError) => void,\n): { [variable: string]: unknown } {\n const coercedValues: { [variable: string]: unknown } = {};\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varTypeReference = typeReferenceFromNode(varDefNode.type);\n\n if (!isInputType(schemaFragment.definitions, varTypeReference)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n { nodes: varDefNode.type },\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(\n varDefNode.defaultValue,\n varTypeReference,\n schemaFragment,\n );\n } else if (isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n { nodes: varDefNode },\n ),\n );\n }\n continue;\n }\n\n const value = inputs[varName];\n if (value === null && isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n { nodes: varDefNode },\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varTypeReference,\n schemaFragment,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` + inspect(invalidValue);\n if (path.length > 0) {\n prefix += ` at \"${varName}${printPathArray(path)}\"`;\n }\n onError(\n new GraphQLError(prefix + \"; \" + error.message, {\n nodes: varDefNode,\n originalError: error.originalError,\n }),\n );\n },\n );\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getArgumentValues(\n exeContext: ExecutionContext,\n def: FieldDefinition | DirectiveDefinitionTuple,\n node: FieldNode | DirectiveNode,\n): { [argument: string]: unknown } {\n const definitions = exeContext.schemaFragment.definitions;\n const coercedValues: { [argument: string]: unknown } = {};\n const argumentDefs = getDefinitionArguments(def);\n if (!argumentDefs) {\n return coercedValues;\n }\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const argumentNodes = node.arguments ?? [];\n const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));\n\n for (const [name, argumentDef] of Object.entries(argumentDefs)) {\n const argumentNode = argNodeMap.get(name);\n const argumentTypeRef = getInputValueTypeReference(argumentDef);\n const defaultValue = getInputDefaultValue(argumentDef);\n\n if (argumentNode == null) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" was not provided.`,\n [node],\n );\n }\n continue;\n }\n\n if (!isDefined(definitions, argumentTypeRef)) {\n throw locatedError(\n `Could not find type for argument ${name} in ${node.kind} ${node.name.value}`,\n [argumentNode],\n );\n }\n\n // if (!schemaTypes.isInputType(argumentTypeRef)) {\n // const type = schemaTypes.printTypeRef(argumentTypeRef);\n // throw locatedError(\n // `Argument \"$${name}\" expected value of type \"${type}\" which cannot be used as an input type.`,\n // [argumentNode],\n // );\n // }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (\n exeContext.variableValues == null ||\n !hasOwnProperty(exeContext.variableValues, variableName)\n ) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n [valueNode],\n );\n }\n continue;\n }\n isNull = exeContext.variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of non-null type \"${type}\" must not be null.\"`,\n [valueNode],\n );\n }\n\n const coercedValue = valueFromAST(\n valueNode,\n argumentTypeRef,\n exeContext.schemaFragment,\n exeContext.variableValues,\n );\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new GraphQLError(\n `Argument \"${name}\" has invalid value ${print(valueNode)}.`,\n { nodes: valueNode },\n );\n }\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getDirectiveValues(\n exeContext: ExecutionContext,\n directiveDef: DirectiveDefinitionTuple,\n node: { directives?: ReadonlyArray<DirectiveNode> },\n): undefined | { [argument: string]: unknown } {\n const name = getDirectiveName(directiveDef);\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const directiveNode = node.directives?.find(\n (directive) => directive.name.value === name,\n );\n\n if (directiveNode) {\n return getArgumentValues(exeContext, directiveDef, directiveNode);\n }\n}\n\nfunction hasOwnProperty(obj: unknown, prop: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n GraphQLError,\n Kind,\n print,\n locatedError,\n DirectiveNode,\n FieldNode,\n VariableDefinitionNode,\n} from \"graphql\";\nimport { inspect } from \"./jsutils/inspect\";\nimport { printPathArray } from \"./jsutils/printPathArray\";\nimport { ExecutionContext } from \"./executeWithoutSchema\";\nimport {\n DirectiveDefinitionTuple,\n FieldDefinition,\n getDefinitionArguments,\n getDirectiveName,\n getInputDefaultValue,\n getInputValueTypeReference,\n isDefined,\n isInputType,\n} from \"./schema/definition\";\nimport { valueFromAST } from \"./utilities/valueFromAST\";\nimport { coerceInputValue } from \"./utilities/coerceInputValue\";\nimport {\n inspectTypeReference,\n isNonNullType,\n typeReferenceFromNode,\n} from \"./schema/reference\";\nimport type { SchemaFragment } from \"./types\";\n\ntype CoercedVariableValues =\n | { errors: Array<GraphQLError>; coerced?: never }\n | { coerced: { [variable: string]: unknown }; errors?: never };\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getVariableValues(\n schemaFragment: SchemaFragment,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n options?: { maxErrors?: number },\n): CoercedVariableValues {\n const errors: GraphQLError[] = [];\n const maxErrors = options?.maxErrors;\n try {\n const coerced = coerceVariableValues(\n schemaFragment,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw locatedError(\n \"Too many errors processing variables, error limit reached. Execution aborted.\",\n [],\n );\n }\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return { coerced };\n }\n } catch (error) {\n errors.push(error as GraphQLError);\n }\n\n return { errors: errors };\n}\n\nfunction coerceVariableValues(\n schemaFragment: SchemaFragment,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n onError: (error: GraphQLError) => void,\n): { [variable: string]: unknown } {\n const coercedValues: { [variable: string]: unknown } = {};\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varTypeReference = typeReferenceFromNode(varDefNode.type);\n\n if (!isInputType(schemaFragment.definitions, varTypeReference)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n locatedError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n [varDefNode.type],\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(\n varDefNode.defaultValue,\n varTypeReference,\n schemaFragment,\n );\n } else if (isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n locatedError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n [varDefNode],\n ),\n );\n }\n continue;\n }\n\n const value = inputs[varName];\n if (value === null && isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n locatedError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n [varDefNode],\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varTypeReference,\n schemaFragment,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` + inspect(invalidValue);\n if (path.length > 0) {\n prefix += ` at \"${varName}${printPathArray(path)}\"`;\n }\n onError(locatedError(prefix + \"; \" + error.message, [varDefNode]));\n },\n );\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getArgumentValues(\n exeContext: ExecutionContext,\n def: FieldDefinition | DirectiveDefinitionTuple,\n node: FieldNode | DirectiveNode,\n): { [argument: string]: unknown } {\n const definitions = exeContext.schemaFragment.definitions;\n const coercedValues: { [argument: string]: unknown } = {};\n const argumentDefs = getDefinitionArguments(def);\n if (!argumentDefs) {\n return coercedValues;\n }\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const argumentNodes = node.arguments ?? [];\n const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));\n\n for (const [name, argumentDef] of Object.entries(argumentDefs)) {\n const argumentNode = argNodeMap.get(name);\n const argumentTypeRef = getInputValueTypeReference(argumentDef);\n const defaultValue = getInputDefaultValue(argumentDef);\n\n if (argumentNode == null) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" was not provided.`,\n [node],\n );\n }\n continue;\n }\n\n if (!isDefined(definitions, argumentTypeRef)) {\n throw locatedError(\n `Could not find type for argument ${name} in ${node.kind} ${node.name.value}`,\n [argumentNode],\n );\n }\n\n // if (!schemaTypes.isInputType(argumentTypeRef)) {\n // const type = schemaTypes.printTypeRef(argumentTypeRef);\n // throw locatedError(\n // `Argument \"$${name}\" expected value of type \"${type}\" which cannot be used as an input type.`,\n // [argumentNode],\n // );\n // }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (\n exeContext.variableValues == null ||\n !hasOwnProperty(exeContext.variableValues, variableName)\n ) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n [valueNode],\n );\n }\n continue;\n }\n isNull = exeContext.variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of non-null type \"${type}\" must not be null.\"`,\n [valueNode],\n );\n }\n\n const coercedValue = valueFromAST(\n valueNode,\n argumentTypeRef,\n exeContext.schemaFragment,\n exeContext.variableValues,\n );\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw locatedError(\n `Argument \"${name}\" has invalid value ${print(valueNode)}.`,\n [valueNode],\n );\n }\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getDirectiveValues(\n exeContext: ExecutionContext,\n directiveDef: DirectiveDefinitionTuple,\n node: { directives?: ReadonlyArray<DirectiveNode> },\n): undefined | { [argument: string]: unknown } {\n const name = getDirectiveName(directiveDef);\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const directiveNode = node.directives?.find(\n (directive) => directive.name.value === name,\n );\n\n if (directiveNode) {\n return getArgumentValues(exeContext, directiveDef, directiveNode);\n }\n}\n\nfunction hasOwnProperty(obj: unknown, prop: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@graphitation/supermassive",
3
3
  "license": "MIT",
4
- "version": "3.0.0-alpha.7",
4
+ "version": "3.0.0-alpha.9",
5
5
  "main": "./lib/index",
6
6
  "repository": {
7
7
  "type": "git",
@@ -14,18 +14,17 @@
14
14
  "test": "monorepo-scripts test",
15
15
  "types": "monorepo-scripts types",
16
16
  "just": "monorepo-scripts",
17
- "extract-schema": "yarn build && ts-node --project tsconfig.json ./node_modules/.bin/supermassive extract-schema ./src/benchmarks/swapi-schema/schema.graphql",
17
+ "graphql17": "node ./scripts/install-graphql-17.js",
18
+ "test17": "yarn graphql17 && yarn jest --config=../../scripts/config/jest.config.js --testMatch='**/*.graphql17.test.ts' --testPathIgnorePatterns='node_modules' --diagnostics=false",
18
19
  "benchmark": "ts-node -T ./src/benchmarks/index.ts"
19
20
  },
20
21
  "devDependencies": {
21
- "@graphitation/supermassive-extractors": "*",
22
22
  "@graphitation/cli": "*",
23
23
  "@ts-morph/bootstrap": "^0.11.0",
24
24
  "@types/benchmark": "^2.1.0",
25
25
  "@types/jest": "^26.0.22",
26
26
  "@types/node-json-db": "^0.9.3",
27
27
  "benchmark": "^2.1.4",
28
- "graphql": "17.0.0-alpha.2",
29
28
  "graphql-jit": "^0.8.4",
30
29
  "iterall": "^1.3.0",
31
30
  "monorepo-scripts": "*",
@@ -38,7 +37,7 @@
38
37
  "publishConfig": {},
39
38
  "dependencies": {},
40
39
  "peerDependencies": {
41
- "graphql": "^17.0.0"
40
+ "graphql": "^15.0.0 || ^16.0.0 || ^17.0.0"
42
41
  },
43
42
  "types": "./lib/index.d.ts",
44
43
  "module": "./lib/index.mjs",