@graphitation/supermassive 3.0.1 → 3.1.0

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 (59) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +10 -2
  3. package/lib/index.d.ts +17 -14
  4. package/lib/index.d.ts.map +1 -1
  5. package/lib/index.js +24 -8
  6. package/lib/index.js.map +3 -3
  7. package/lib/index.mjs +24 -18
  8. package/lib/index.mjs.map +3 -3
  9. package/lib/legacyAST/TypedAST.d.ts +366 -0
  10. package/lib/legacyAST/TypedAST.d.ts.map +1 -0
  11. package/lib/legacyAST/TypedAST.js +16 -0
  12. package/lib/legacyAST/TypedAST.js.map +7 -0
  13. package/lib/legacyAST/TypedAST.mjs +0 -0
  14. package/lib/legacyAST/TypedAST.mjs.map +7 -0
  15. package/lib/legacyAST/addTypesToRequestDocument.d.ts +6 -0
  16. package/lib/legacyAST/addTypesToRequestDocument.d.ts.map +1 -0
  17. package/lib/legacyAST/addTypesToRequestDocument.js +161 -0
  18. package/lib/legacyAST/addTypesToRequestDocument.js.map +7 -0
  19. package/lib/legacyAST/addTypesToRequestDocument.mjs +153 -0
  20. package/lib/legacyAST/addTypesToRequestDocument.mjs.map +7 -0
  21. package/lib/legacyAST/annotateDocumentGraphQLTransform.d.ts +3 -0
  22. package/lib/legacyAST/annotateDocumentGraphQLTransform.d.ts.map +1 -0
  23. package/lib/legacyAST/annotateDocumentGraphQLTransform.js +34 -0
  24. package/lib/legacyAST/annotateDocumentGraphQLTransform.js.map +7 -0
  25. package/lib/legacyAST/annotateDocumentGraphQLTransform.mjs +17 -0
  26. package/lib/legacyAST/annotateDocumentGraphQLTransform.mjs.map +7 -0
  27. package/lib/legacyAST/index.d.ts +4 -0
  28. package/lib/legacyAST/index.d.ts.map +1 -0
  29. package/lib/legacyAST/index.js +26 -0
  30. package/lib/legacyAST/index.js.map +7 -0
  31. package/lib/legacyAST/index.mjs +7 -0
  32. package/lib/legacyAST/index.mjs.map +7 -0
  33. package/lib/schema/definition.d.ts +31 -2
  34. package/lib/schema/definition.d.ts.map +1 -1
  35. package/lib/schema/definition.js +67 -5
  36. package/lib/schema/definition.js.map +3 -3
  37. package/lib/schema/definition.mjs +67 -4
  38. package/lib/schema/definition.mjs.map +2 -2
  39. package/lib/schema/directives.d.ts.map +1 -1
  40. package/lib/schema/directives.js +22 -1
  41. package/lib/schema/directives.js.map +2 -2
  42. package/lib/schema/directives.mjs +23 -1
  43. package/lib/schema/directives.mjs.map +2 -2
  44. package/lib/utilities/encodeASTSchema.d.ts.map +1 -1
  45. package/lib/utilities/encodeASTSchema.js +16 -1
  46. package/lib/utilities/encodeASTSchema.js.map +3 -3
  47. package/lib/utilities/encodeASTSchema.mjs +18 -2
  48. package/lib/utilities/encodeASTSchema.mjs.map +3 -3
  49. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.d.ts.map +1 -1
  50. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js +2 -2
  51. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js.map +2 -2
  52. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs +3 -2
  53. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs.map +2 -2
  54. package/lib/values.d.ts.map +1 -1
  55. package/lib/values.js +1 -1
  56. package/lib/values.js.map +2 -2
  57. package/lib/values.mjs +4 -3
  58. package/lib/values.mjs.map +2 -2
  59. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/encodeASTSchema.ts"],
4
- "sourcesContent": ["import {\n DirectiveDefinitionNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n DocumentNode,\n ObjectTypeExtensionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeExtensionNode,\n UnionTypeExtensionNode,\n EnumTypeExtensionNode,\n ScalarTypeExtensionNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionTuple,\n InputObjectTypeDefinitionTuple,\n InputValueDefinitionRecord,\n InputValueDefinitionTuple,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n UnionTypeDefinitionTuple,\n SchemaDefinitions,\n TypeDefinitionTuple,\n createScalarTypeDefinition,\n createEnumTypeDefinition,\n createObjectTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createUnionTypeDefinition,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n): SchemaDefinitions[] {\n const fragments: SchemaDefinitions[] = [{ types: {} }];\n const add = (name: string, def: TypeDefinitionTuple, extension = false) =>\n addTypeDefinition(fragments, name, def, extension);\n\n for (const definition of schemaFragment.definitions) {\n if (definition.kind === \"ObjectTypeDefinition\") {\n add(definition.name.value, encodeObjectType(definition));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(definition.name.value, encodeInputObjectType(definition), true);\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(definition.name.value, encodeInterfaceType(definition), true);\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition));\n }\n }\n return fragments;\n}\n\nfunction addTypeDefinition(\n fragments: SchemaDefinitions[],\n typeName: string,\n typeDef: TypeDefinitionTuple,\n isExtension = false,\n) {\n for (let i = 0; i < fragments.length; i++) {\n if (i === 0 && isExtension) {\n // Don't write extensions to the very first fragment (it is reserved for type definitions)\n // Note: 2nd+ type definition with the same name is treated as extension\n continue;\n }\n const fragment = fragments[i];\n if (!fragment.types[typeName]) {\n fragment.types[typeName] = typeDef;\n return;\n }\n }\n const newFragment = { types: { [typeName]: typeDef } };\n fragments.push(newFragment);\n}\n\nfunction encodeScalarType(\n _type: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n return createInputObjectTypeDefinition(fields);\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n): TypeReference | FieldDefinitionTuple {\n return !node.arguments?.length\n ? typeReferenceFromNode(node.type)\n : [typeReferenceFromNode(node.type), encodeArguments(node)];\n}\n\nfunction encodeArguments(\n node: FieldDefinitionNode | DirectiveDefinitionNode,\n): InputValueDefinitionRecord {\n const args = Object.create(null);\n for (const argument of node.arguments ?? []) {\n args[argument.name.value] = encodeInputValue(argument);\n }\n return args;\n}\n\nfunction encodeInputValue(\n node: InputValueDefinitionNode,\n): InputValueDefinitionTuple | TypeReference {\n if (!node.defaultValue) {\n return typeReferenceFromNode(node.type);\n }\n return [\n typeReferenceFromNode(node.type),\n valueFromASTUntyped(node.defaultValue),\n ];\n}\n\nfunction encodeDirective(\n node: DirectiveDefinitionNode,\n): DirectiveDefinitionTuple {\n return !node.arguments?.length\n ? [node.name.value]\n : [node.name.value, encodeArguments(node)];\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import {\n DirectiveDefinitionNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n DocumentNode,\n ObjectTypeExtensionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeExtensionNode,\n UnionTypeExtensionNode,\n EnumTypeExtensionNode,\n ScalarTypeExtensionNode,\n DirectiveLocationEnum,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionTuple,\n InputObjectTypeDefinitionTuple,\n InputValueDefinitionRecord,\n InputValueDefinitionTuple,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n UnionTypeDefinitionTuple,\n SchemaDefinitions,\n TypeDefinitionTuple,\n createScalarTypeDefinition,\n createEnumTypeDefinition,\n createObjectTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createUnionTypeDefinition,\n encodeDirectiveLocation,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n): SchemaDefinitions[] {\n const fragments: SchemaDefinitions[] = [{ types: {} }];\n const add = (name: string, def: TypeDefinitionTuple, extension = false) =>\n addTypeDefinition(fragments, name, def, extension);\n\n for (const definition of schemaFragment.definitions) {\n if (definition.kind === \"ObjectTypeDefinition\") {\n add(definition.name.value, encodeObjectType(definition));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(definition.name.value, encodeInputObjectType(definition), true);\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(definition.name.value, encodeInterfaceType(definition), true);\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition));\n }\n }\n return fragments;\n}\n\nfunction addTypeDefinition(\n fragments: SchemaDefinitions[],\n typeName: string,\n typeDef: TypeDefinitionTuple,\n isExtension = false,\n) {\n for (let i = 0; i < fragments.length; i++) {\n if (i === 0 && isExtension) {\n // Don't write extensions to the very first fragment (it is reserved for type definitions)\n // Note: 2nd+ type definition with the same name is treated as extension\n continue;\n }\n const fragment = fragments[i];\n if (!fragment.types[typeName]) {\n fragment.types[typeName] = typeDef;\n return;\n }\n }\n const newFragment = { types: { [typeName]: typeDef } };\n fragments.push(newFragment);\n}\n\nfunction encodeScalarType(\n _type: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n return createInputObjectTypeDefinition(fields);\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n): TypeReference | FieldDefinitionTuple {\n return !node.arguments?.length\n ? typeReferenceFromNode(node.type)\n : [typeReferenceFromNode(node.type), encodeArguments(node)];\n}\n\nfunction encodeArguments(\n node: FieldDefinitionNode | DirectiveDefinitionNode,\n): InputValueDefinitionRecord {\n const args = Object.create(null);\n for (const argument of node.arguments ?? []) {\n args[argument.name.value] = encodeInputValue(argument);\n }\n return args;\n}\n\nfunction encodeInputValue(\n node: InputValueDefinitionNode,\n): InputValueDefinitionTuple | TypeReference {\n if (!node.defaultValue) {\n return typeReferenceFromNode(node.type);\n }\n return [\n typeReferenceFromNode(node.type),\n valueFromASTUntyped(node.defaultValue),\n ];\n}\n\nfunction encodeDirective(\n node: DirectiveDefinitionNode,\n): DirectiveDefinitionTuple {\n if (node.arguments?.length) {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n encodeArguments(node),\n ];\n } else {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n ];\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["node"]
7
7
  }
@@ -5,7 +5,8 @@ import {
5
5
  createObjectTypeDefinition,
6
6
  createInputObjectTypeDefinition,
7
7
  createInterfaceTypeDefinition,
8
- createUnionTypeDefinition
8
+ createUnionTypeDefinition,
9
+ encodeDirectiveLocation
9
10
  } from "../schema/definition.mjs";
10
11
  import { typeReferenceFromNode } from "../schema/reference.mjs";
11
12
  import { valueFromASTUntyped } from "./valueFromASTUntyped.mjs";
@@ -128,7 +129,22 @@ function encodeInputValue(node) {
128
129
  }
129
130
  function encodeDirective(node) {
130
131
  var _a;
131
- return !((_a = node.arguments) == null ? void 0 : _a.length) ? [node.name.value] : [node.name.value, encodeArguments(node)];
132
+ if ((_a = node.arguments) == null ? void 0 : _a.length) {
133
+ return [
134
+ node.name.value,
135
+ node.locations.map(
136
+ (node2) => encodeDirectiveLocation(node2.value)
137
+ ),
138
+ encodeArguments(node)
139
+ ];
140
+ } else {
141
+ return [
142
+ node.name.value,
143
+ node.locations.map(
144
+ (node2) => encodeDirectiveLocation(node2.value)
145
+ )
146
+ ];
147
+ }
132
148
  }
133
149
  export {
134
150
  encodeASTSchema
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/encodeASTSchema.ts"],
4
- "sourcesContent": ["import {\n DirectiveDefinitionNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n DocumentNode,\n ObjectTypeExtensionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeExtensionNode,\n UnionTypeExtensionNode,\n EnumTypeExtensionNode,\n ScalarTypeExtensionNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionTuple,\n InputObjectTypeDefinitionTuple,\n InputValueDefinitionRecord,\n InputValueDefinitionTuple,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n UnionTypeDefinitionTuple,\n SchemaDefinitions,\n TypeDefinitionTuple,\n createScalarTypeDefinition,\n createEnumTypeDefinition,\n createObjectTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createUnionTypeDefinition,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n): SchemaDefinitions[] {\n const fragments: SchemaDefinitions[] = [{ types: {} }];\n const add = (name: string, def: TypeDefinitionTuple, extension = false) =>\n addTypeDefinition(fragments, name, def, extension);\n\n for (const definition of schemaFragment.definitions) {\n if (definition.kind === \"ObjectTypeDefinition\") {\n add(definition.name.value, encodeObjectType(definition));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(definition.name.value, encodeInputObjectType(definition), true);\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(definition.name.value, encodeInterfaceType(definition), true);\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition));\n }\n }\n return fragments;\n}\n\nfunction addTypeDefinition(\n fragments: SchemaDefinitions[],\n typeName: string,\n typeDef: TypeDefinitionTuple,\n isExtension = false,\n) {\n for (let i = 0; i < fragments.length; i++) {\n if (i === 0 && isExtension) {\n // Don't write extensions to the very first fragment (it is reserved for type definitions)\n // Note: 2nd+ type definition with the same name is treated as extension\n continue;\n }\n const fragment = fragments[i];\n if (!fragment.types[typeName]) {\n fragment.types[typeName] = typeDef;\n return;\n }\n }\n const newFragment = { types: { [typeName]: typeDef } };\n fragments.push(newFragment);\n}\n\nfunction encodeScalarType(\n _type: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n return createInputObjectTypeDefinition(fields);\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n): TypeReference | FieldDefinitionTuple {\n return !node.arguments?.length\n ? typeReferenceFromNode(node.type)\n : [typeReferenceFromNode(node.type), encodeArguments(node)];\n}\n\nfunction encodeArguments(\n node: FieldDefinitionNode | DirectiveDefinitionNode,\n): InputValueDefinitionRecord {\n const args = Object.create(null);\n for (const argument of node.arguments ?? []) {\n args[argument.name.value] = encodeInputValue(argument);\n }\n return args;\n}\n\nfunction encodeInputValue(\n node: InputValueDefinitionNode,\n): InputValueDefinitionTuple | TypeReference {\n if (!node.defaultValue) {\n return typeReferenceFromNode(node.type);\n }\n return [\n typeReferenceFromNode(node.type),\n valueFromASTUntyped(node.defaultValue),\n ];\n}\n\nfunction encodeDirective(\n node: DirectiveDefinitionNode,\n): DirectiveDefinitionTuple {\n return !node.arguments?.length\n ? [node.name.value]\n : [node.name.value, encodeArguments(node)];\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import {\n DirectiveDefinitionNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n DocumentNode,\n ObjectTypeExtensionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeExtensionNode,\n UnionTypeExtensionNode,\n EnumTypeExtensionNode,\n ScalarTypeExtensionNode,\n DirectiveLocationEnum,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionTuple,\n InputObjectTypeDefinitionTuple,\n InputValueDefinitionRecord,\n InputValueDefinitionTuple,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n UnionTypeDefinitionTuple,\n SchemaDefinitions,\n TypeDefinitionTuple,\n createScalarTypeDefinition,\n createEnumTypeDefinition,\n createObjectTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createUnionTypeDefinition,\n encodeDirectiveLocation,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n): SchemaDefinitions[] {\n const fragments: SchemaDefinitions[] = [{ types: {} }];\n const add = (name: string, def: TypeDefinitionTuple, extension = false) =>\n addTypeDefinition(fragments, name, def, extension);\n\n for (const definition of schemaFragment.definitions) {\n if (definition.kind === \"ObjectTypeDefinition\") {\n add(definition.name.value, encodeObjectType(definition));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(definition.name.value, encodeInputObjectType(definition), true);\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(definition.name.value, encodeInterfaceType(definition), true);\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition));\n }\n }\n return fragments;\n}\n\nfunction addTypeDefinition(\n fragments: SchemaDefinitions[],\n typeName: string,\n typeDef: TypeDefinitionTuple,\n isExtension = false,\n) {\n for (let i = 0; i < fragments.length; i++) {\n if (i === 0 && isExtension) {\n // Don't write extensions to the very first fragment (it is reserved for type definitions)\n // Note: 2nd+ type definition with the same name is treated as extension\n continue;\n }\n const fragment = fragments[i];\n if (!fragment.types[typeName]) {\n fragment.types[typeName] = typeDef;\n return;\n }\n }\n const newFragment = { types: { [typeName]: typeDef } };\n fragments.push(newFragment);\n}\n\nfunction encodeScalarType(\n _type: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n return createInputObjectTypeDefinition(fields);\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n): TypeReference | FieldDefinitionTuple {\n return !node.arguments?.length\n ? typeReferenceFromNode(node.type)\n : [typeReferenceFromNode(node.type), encodeArguments(node)];\n}\n\nfunction encodeArguments(\n node: FieldDefinitionNode | DirectiveDefinitionNode,\n): InputValueDefinitionRecord {\n const args = Object.create(null);\n for (const argument of node.arguments ?? []) {\n args[argument.name.value] = encodeInputValue(argument);\n }\n return args;\n}\n\nfunction encodeInputValue(\n node: InputValueDefinitionNode,\n): InputValueDefinitionTuple | TypeReference {\n if (!node.defaultValue) {\n return typeReferenceFromNode(node.type);\n }\n return [\n typeReferenceFromNode(node.type),\n valueFromASTUntyped(node.defaultValue),\n ];\n}\n\nfunction encodeDirective(\n node: DirectiveDefinitionNode,\n): DirectiveDefinitionTuple {\n if (node.arguments?.length) {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n encodeArguments(node),\n ];\n } else {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n ];\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["node"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extractMinimalViableSchemaForRequestDocument.d.ts","sourceRoot":"","sources":["../../src/utilities/extractMinimalViableSchemaForRequestDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,YAAY,EAWZ,aAAa,EAcd,MAAM,SAAS,CAAC;AACjB,OAAO,EAyBL,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAY9B,MAAM,MAAM,gCAAgC,GAAG;IAC7C,WAAW,EAAE,iBAAiB,CAAC;IAC/B,iBAAiB,EAAE,aAAa,EAAE,CAAC;CACpC,CAAC;AAEF,wBAAgB,4CAA4C,CAC1D,MAAM,EAAE,aAAa,EACrB,eAAe,EAAE,YAAY,GAC5B,gCAAgC,CA4DlC"}
1
+ {"version":3,"file":"extractMinimalViableSchemaForRequestDocument.d.ts","sourceRoot":"","sources":["../../src/utilities/extractMinimalViableSchemaForRequestDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,YAAY,EAWZ,aAAa,EAcd,MAAM,SAAS,CAAC;AACjB,OAAO,EA0BL,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAY9B,MAAM,MAAM,gCAAgC,GAAG;IAC7C,WAAW,EAAE,iBAAiB,CAAC;IAC/B,iBAAiB,EAAE,aAAa,EAAE,CAAC;CACpC,CAAC;AAEF,wBAAgB,4CAA4C,CAC1D,MAAM,EAAE,aAAa,EACrB,eAAe,EAAE,YAAY,GAC5B,gCAAgC,CA4DlC"}
@@ -28,7 +28,7 @@ var import_makeReadableErrorPath = require("./makeReadableErrorPath");
28
28
  var import_reference = require("../schema/reference");
29
29
  var import_invariant = require("../jsutils/invariant");
30
30
  function extractMinimalViableSchemaForRequestDocument(schema, requestDocument) {
31
- const types = /* @__PURE__ */ Object.create(null);
31
+ const types = {};
32
32
  const directives = [];
33
33
  const unknownDirectives = [];
34
34
  const typeInfo = new import_graphql.TypeInfo(schema);
@@ -152,7 +152,7 @@ function addDirective(directives, directive, node) {
152
152
  const name = directive.name;
153
153
  let tuple = directives.find((d) => (0, import_definition.getDirectiveName)(d) === name);
154
154
  if (!tuple) {
155
- tuple = [directive.name];
155
+ tuple = [directive.name, directive.locations.map(import_definition.encodeDirectiveLocation)];
156
156
  directives.push(tuple);
157
157
  }
158
158
  const previouslyAddedArgs = (0, import_definition.getDirectiveDefinitionArgs)(tuple);
@@ -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 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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",
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 encodeDirectiveLocation,\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 = {};\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, directive.locations.map(encodeDirectiveLocation)];\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
  }
@@ -21,6 +21,7 @@ import {
21
21
  createObjectTypeDefinition,
22
22
  createScalarTypeDefinition,
23
23
  createUnionTypeDefinition,
24
+ encodeDirectiveLocation,
24
25
  getDirectiveDefinitionArgs,
25
26
  getDirectiveName,
26
27
  getFieldArgs,
@@ -40,7 +41,7 @@ import {
40
41
  } from "../schema/reference.mjs";
41
42
  import { invariant } from "../jsutils/invariant.mjs";
42
43
  function extractMinimalViableSchemaForRequestDocument(schema, requestDocument) {
43
- const types = /* @__PURE__ */ Object.create(null);
44
+ const types = {};
44
45
  const directives = [];
45
46
  const unknownDirectives = [];
46
47
  const typeInfo = new TypeInfo(schema);
@@ -164,7 +165,7 @@ function addDirective(directives, directive, node) {
164
165
  const name = directive.name;
165
166
  let tuple = directives.find((d) => getDirectiveName(d) === name);
166
167
  if (!tuple) {
167
- tuple = [directive.name];
168
+ tuple = [directive.name, directive.locations.map(encodeDirectiveLocation)];
168
169
  directives.push(tuple);
169
170
  }
170
171
  const previouslyAddedArgs = getDirectiveDefinitionArgs(tuple);
@@ -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 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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",
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 encodeDirectiveLocation,\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 = {};\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, directive.locations.map(encodeDirectiveLocation)];\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,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"}
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,EAQhB,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,CAkGjC;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
@@ -119,7 +119,7 @@ function getArgumentValues(exeContext, def, node) {
119
119
  var _a;
120
120
  const definitions = exeContext.schemaFragment.definitions;
121
121
  const coercedValues = {};
122
- const argumentDefs = (0, import_definition.getDefinitionArguments)(def);
122
+ const argumentDefs = node.kind === import_graphql.Kind.FIELD ? (0, import_definition.getFieldArguments)(def) : (0, import_definition.getDirectiveArguments)(def);
123
123
  if (!argumentDefs) {
124
124
  return coercedValues;
125
125
  }
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 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": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAQO;AACP,qBAAwB;AACxB,4BAA+B;AAE/B,wBASO;AACP,0BAA6B;AAC7B,8BAAiC;AACjC,uBAIO;AAkBA,SAAS,kBACd,gBACA,aACA,QACA,SACuB;AACvB,QAAM,SAAyB,CAAC;AAChC,QAAM,YAAY,mCAAS;AAC3B,MAAI;AACF,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC,UAAU;AACT,YAAI,aAAa,QAAQ,OAAO,UAAU,WAAW;AACnD,oBAAM;AAAA,YACJ;AAAA,YACA,CAAC;AAAA,UACH;AAAA,QACF;AACA,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IACF;AAEA,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO,EAAE,QAAQ;AAAA,IACnB;AAAA,EACF,SAAS,OAAP;AACA,WAAO,KAAK,KAAqB;AAAA,EACnC;AAEA,SAAO,EAAE,OAAe;AAC1B;AAEA,SAAS,qBACP,gBACA,aACA,QACA,SACiC;AACjC,QAAM,gBAAiD,CAAC;AACxD,aAAW,cAAc,aAAa;AACpC,UAAM,UAAU,WAAW,SAAS,KAAK;AACzC,UAAM,uBAAmB,wCAAsB,WAAW,IAAI;AAE9D,QAAI,KAAC,+BAAY,eAAe,aAAa,gBAAgB,GAAG;AAG9D,YAAM,iBAAa,uCAAqB,gBAAgB;AACxD;AAAA,YACE;AAAA,UACE,cAAc,oCAAoC;AAAA,UAClD,CAAC,WAAW,IAAI;AAAA,QAClB;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,CAAC,eAAe,QAAQ,OAAO,GAAG;AACpC,UAAI,WAAW,cAAc;AAC3B,sBAAc,OAAO,QAAI;AAAA,UACvB,WAAW;AAAA,UACX;AAAA,UACA;AAAA,QACF;AAAA,MACF,eAAW,gCAAc,gBAAgB,GAAG;AAC1C,cAAM,iBAAa,uCAAqB,gBAAgB;AACxD;AAAA,cACE;AAAA,YACE,cAAc,8BAA8B;AAAA,YAC5C,CAAC,UAAU;AAAA,UACb;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAEA,UAAM,QAAQ,OAAO,OAAO;AAC5B,QAAI,UAAU,YAAQ,gCAAc,gBAAgB,GAAG;AACrD,YAAM,iBAAa,uCAAqB,gBAAgB;AACxD;AAAA,YACE;AAAA,UACE,cAAc,8BAA8B;AAAA,UAC5C,CAAC,UAAU;AAAA,QACb;AAAA,MACF;AACA;AAAA,IACF;AAEA,kBAAc,OAAO,QAAI;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC,MAAM,cAAc,UAAU;AAC7B,YAAI,SACF,cAAc,oCAAgC,wBAAQ,YAAY;AACpE,YAAI,KAAK,SAAS,GAAG;AACnB,oBAAU,QAAQ,cAAU,sCAAe,IAAI;AAAA,QACjD;AACA,oBAAQ,6BAAa,SAAS,OAAO,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;AAAA,MACnE;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAYO,SAAS,kBACd,YACA,KACA,MACiC;AAvKnC;AAwKE,QAAM,cAAc,WAAW,eAAe;AAC9C,QAAM,gBAAiD,CAAC;AACxD,QAAM,mBAAe,0CAAuB,GAAG;AAC/C,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,iBAAgB,UAAK,cAAL,YAAkB,CAAC;AACzC,QAAM,aAAa,IAAI,IAAI,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC;AAE5E,aAAW,CAAC,MAAM,WAAW,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC9D,UAAM,eAAe,WAAW,IAAI,IAAI;AACxC,UAAM,sBAAkB,8CAA2B,WAAW;AAC9D,UAAM,mBAAe,wCAAqB,WAAW;AAErD,QAAI,gBAAgB,MAAM;AACxB,UAAI,iBAAiB,QAAW;AAC9B,sBAAc,IAAI,IAAI;AAAA,MACxB,eAAW,gCAAc,eAAe,GAAG;AACzC,cAAM,WAAO,uCAAqB,eAAe;AACjD,kBAAM;AAAA,UACJ,aAAa,2BAA2B;AAAA,UACxC,CAAC,IAAI;AAAA,QACP;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,KAAC,6BAAU,aAAa,eAAe,GAAG;AAC5C,gBAAM;AAAA,QACJ,oCAAoC,WAAW,KAAK,QAAQ,KAAK,KAAK;AAAA,QACtE,CAAC,YAAY;AAAA,MACf;AAAA,IACF;AAUA,UAAM,YAAY,aAAa;AAC/B,QAAI,SAAS,UAAU,SAAS,oBAAK;AAErC,QAAI,UAAU,SAAS,oBAAK,UAAU;AACpC,YAAM,eAAe,UAAU,KAAK;AACpC,UACE,WAAW,kBAAkB,QAC7B,CAAC,eAAe,WAAW,gBAAgB,YAAY,GACvD;AACA,YAAI,iBAAiB,QAAW;AAC9B,wBAAc,IAAI,IAAI;AAAA,QACxB,eAAW,gCAAc,eAAe,GAAG;AACzC,gBAAM,WAAO,uCAAqB,eAAe;AACjD,oBAAM;AAAA,YACJ,aAAa,2BAA2B,qCACP;AAAA,YACjC,CAAC,SAAS;AAAA,UACZ;AAAA,QACF;AACA;AAAA,MACF;AACA,eAAS,WAAW,eAAe,YAAY,KAAK;AAAA,IACtD;AAEA,QAAI,cAAU,gCAAc,eAAe,GAAG;AAC5C,YAAM,WAAO,uCAAqB,eAAe;AACjD,gBAAM;AAAA,QACJ,aAAa,2BAA2B;AAAA,QACxC,CAAC,SAAS;AAAA,MACZ;AAAA,IACF;AAEA,UAAM,mBAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,WAAW;AAAA,IACb;AACA,QAAI,iBAAiB,QAAW;AAI9B,gBAAM;AAAA,QACJ,aAAa,+BAA2B,sBAAM,SAAS;AAAA,QACvD,CAAC,SAAS;AAAA,MACZ;AAAA,IACF;AACA,kBAAc,IAAI,IAAI;AAAA,EACxB;AAEA,SAAO;AACT;AAaO,SAAS,mBACd,YACA,cACA,MAC6C;AAvR/C;AAwRE,QAAM,WAAO,oCAAiB,YAAY;AAG1C,QAAM,iBAAgB,UAAK,eAAL,mBAAiB;AAAA,IACrC,CAAC,cAAc,UAAU,KAAK,UAAU;AAAA;AAG1C,MAAI,eAAe;AACjB,WAAO,kBAAkB,YAAY,cAAc,aAAa;AAAA,EAClE;AACF;AAEA,SAAS,eAAe,KAAc,MAAuB;AAC3D,SAAO,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI;AACvD;",
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 getFieldArguments,\n getDirectiveName,\n getInputDefaultValue,\n getInputValueTypeReference,\n isDefined,\n isInputType,\n getDirectiveArguments,\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 =\n node.kind === Kind.FIELD\n ? getFieldArguments(def as FieldDefinition)\n : getDirectiveArguments(def as DirectiveDefinitionTuple);\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
@@ -7,12 +7,13 @@ import {
7
7
  import { inspect } from "./jsutils/inspect.mjs";
8
8
  import { printPathArray } from "./jsutils/printPathArray.mjs";
9
9
  import {
10
- getDefinitionArguments,
10
+ getFieldArguments,
11
11
  getDirectiveName,
12
12
  getInputDefaultValue,
13
13
  getInputValueTypeReference,
14
14
  isDefined,
15
- isInputType
15
+ isInputType,
16
+ getDirectiveArguments
16
17
  } from "./schema/definition.mjs";
17
18
  import { valueFromAST } from "./utilities/valueFromAST.mjs";
18
19
  import { coerceInputValue } from "./utilities/coerceInputValue.mjs";
@@ -110,7 +111,7 @@ function getArgumentValues(exeContext, def, node) {
110
111
  var _a;
111
112
  const definitions = exeContext.schemaFragment.definitions;
112
113
  const coercedValues = {};
113
- const argumentDefs = getDefinitionArguments(def);
114
+ const argumentDefs = node.kind === Kind.FIELD ? getFieldArguments(def) : getDirectiveArguments(def);
114
115
  if (!argumentDefs) {
115
116
  return coercedValues;
116
117
  }
@@ -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 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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",
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 getFieldArguments,\n getDirectiveName,\n getInputDefaultValue,\n getInputValueTypeReference,\n isDefined,\n isInputType,\n getDirectiveArguments,\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 =\n node.kind === Kind.FIELD\n ? getFieldArguments(def as FieldDefinition)\n : getDirectiveArguments(def as DirectiveDefinitionTuple);\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": ";AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP,SAAS,eAAe;AACxB,SAAS,sBAAsB;AAE/B;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB;AAC7B,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAkBA,SAAS,kBACd,gBACA,aACA,QACA,SACuB;AACvB,QAAM,SAAyB,CAAC;AAChC,QAAM,YAAY,mCAAS;AAC3B,MAAI;AACF,UAAM,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC,UAAU;AACT,YAAI,aAAa,QAAQ,OAAO,UAAU,WAAW;AACnD,gBAAM;AAAA,YACJ;AAAA,YACA,CAAC;AAAA,UACH;AAAA,QACF;AACA,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IACF;AAEA,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO,EAAE,QAAQ;AAAA,IACnB;AAAA,EACF,SAAS,OAAP;AACA,WAAO,KAAK,KAAqB;AAAA,EACnC;AAEA,SAAO,EAAE,OAAe;AAC1B;AAEA,SAAS,qBACP,gBACA,aACA,QACA,SACiC;AACjC,QAAM,gBAAiD,CAAC;AACxD,aAAW,cAAc,aAAa;AACpC,UAAM,UAAU,WAAW,SAAS,KAAK;AACzC,UAAM,mBAAmB,sBAAsB,WAAW,IAAI;AAE9D,QAAI,CAAC,YAAY,eAAe,aAAa,gBAAgB,GAAG;AAG9D,YAAM,aAAa,qBAAqB,gBAAgB;AACxD;AAAA,QACE;AAAA,UACE,cAAc,oCAAoC;AAAA,UAClD,CAAC,WAAW,IAAI;AAAA,QAClB;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,CAAC,eAAe,QAAQ,OAAO,GAAG;AACpC,UAAI,WAAW,cAAc;AAC3B,sBAAc,OAAO,IAAI;AAAA,UACvB,WAAW;AAAA,UACX;AAAA,UACA;AAAA,QACF;AAAA,MACF,WAAW,cAAc,gBAAgB,GAAG;AAC1C,cAAM,aAAa,qBAAqB,gBAAgB;AACxD;AAAA,UACE;AAAA,YACE,cAAc,8BAA8B;AAAA,YAC5C,CAAC,UAAU;AAAA,UACb;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAEA,UAAM,QAAQ,OAAO,OAAO;AAC5B,QAAI,UAAU,QAAQ,cAAc,gBAAgB,GAAG;AACrD,YAAM,aAAa,qBAAqB,gBAAgB;AACxD;AAAA,QACE;AAAA,UACE,cAAc,8BAA8B;AAAA,UAC5C,CAAC,UAAU;AAAA,QACb;AAAA,MACF;AACA;AAAA,IACF;AAEA,kBAAc,OAAO,IAAI;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC,MAAM,cAAc,UAAU;AAC7B,YAAI,SACF,cAAc,gCAAgC,QAAQ,YAAY;AACpE,YAAI,KAAK,SAAS,GAAG;AACnB,oBAAU,QAAQ,UAAU,eAAe,IAAI;AAAA,QACjD;AACA,gBAAQ,aAAa,SAAS,OAAO,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;AAAA,MACnE;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAYO,SAAS,kBACd,YACA,KACA,MACiC;AAxKnC;AAyKE,QAAM,cAAc,WAAW,eAAe;AAC9C,QAAM,gBAAiD,CAAC;AACxD,QAAM,eACJ,KAAK,SAAS,KAAK,QACf,kBAAkB,GAAsB,IACxC,sBAAsB,GAA+B;AAC3D,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,iBAAgB,UAAK,cAAL,YAAkB,CAAC;AACzC,QAAM,aAAa,IAAI,IAAI,cAAc,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC;AAE5E,aAAW,CAAC,MAAM,WAAW,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC9D,UAAM,eAAe,WAAW,IAAI,IAAI;AACxC,UAAM,kBAAkB,2BAA2B,WAAW;AAC9D,UAAM,eAAe,qBAAqB,WAAW;AAErD,QAAI,gBAAgB,MAAM;AACxB,UAAI,iBAAiB,QAAW;AAC9B,sBAAc,IAAI,IAAI;AAAA,MACxB,WAAW,cAAc,eAAe,GAAG;AACzC,cAAM,OAAO,qBAAqB,eAAe;AACjD,cAAM;AAAA,UACJ,aAAa,2BAA2B;AAAA,UACxC,CAAC,IAAI;AAAA,QACP;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,CAAC,UAAU,aAAa,eAAe,GAAG;AAC5C,YAAM;AAAA,QACJ,oCAAoC,WAAW,KAAK,QAAQ,KAAK,KAAK;AAAA,QACtE,CAAC,YAAY;AAAA,MACf;AAAA,IACF;AAUA,UAAM,YAAY,aAAa;AAC/B,QAAI,SAAS,UAAU,SAAS,KAAK;AAErC,QAAI,UAAU,SAAS,KAAK,UAAU;AACpC,YAAM,eAAe,UAAU,KAAK;AACpC,UACE,WAAW,kBAAkB,QAC7B,CAAC,eAAe,WAAW,gBAAgB,YAAY,GACvD;AACA,YAAI,iBAAiB,QAAW;AAC9B,wBAAc,IAAI,IAAI;AAAA,QACxB,WAAW,cAAc,eAAe,GAAG;AACzC,gBAAM,OAAO,qBAAqB,eAAe;AACjD,gBAAM;AAAA,YACJ,aAAa,2BAA2B,qCACP;AAAA,YACjC,CAAC,SAAS;AAAA,UACZ;AAAA,QACF;AACA;AAAA,MACF;AACA,eAAS,WAAW,eAAe,YAAY,KAAK;AAAA,IACtD;AAEA,QAAI,UAAU,cAAc,eAAe,GAAG;AAC5C,YAAM,OAAO,qBAAqB,eAAe;AACjD,YAAM;AAAA,QACJ,aAAa,2BAA2B;AAAA,QACxC,CAAC,SAAS;AAAA,MACZ;AAAA,IACF;AAEA,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,WAAW;AAAA,IACb;AACA,QAAI,iBAAiB,QAAW;AAI9B,YAAM;AAAA,QACJ,aAAa,2BAA2B,MAAM,SAAS;AAAA,QACvD,CAAC,SAAS;AAAA,MACZ;AAAA,IACF;AACA,kBAAc,IAAI,IAAI;AAAA,EACxB;AAEA,SAAO;AACT;AAaO,SAAS,mBACd,YACA,cACA,MAC6C;AA3R/C;AA4RE,QAAM,OAAO,iBAAiB,YAAY;AAG1C,QAAM,iBAAgB,UAAK,eAAL,mBAAiB;AAAA,IACrC,CAAC,cAAc,UAAU,KAAK,UAAU;AAAA;AAG1C,MAAI,eAAe;AACjB,WAAO,kBAAkB,YAAY,cAAc,aAAa;AAAA,EAClE;AACF;AAEA,SAAS,eAAe,KAAc,MAAuB;AAC3D,SAAO,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI;AACvD;",
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.1",
4
+ "version": "3.1.0",
5
5
  "main": "./lib/index",
6
6
  "repository": {
7
7
  "type": "git",