@graphitation/supermassive 3.15.3 → 3.16.1-canary.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +1 -9
  3. package/lib/executeWithoutSchema.d.ts.map +1 -1
  4. package/lib/executeWithoutSchema.js +41 -0
  5. package/lib/executeWithoutSchema.js.map +2 -2
  6. package/lib/executeWithoutSchema.mjs +41 -0
  7. package/lib/executeWithoutSchema.mjs.map +2 -2
  8. package/lib/schema/definition.d.ts +54 -19
  9. package/lib/schema/definition.d.ts.map +1 -1
  10. package/lib/schema/definition.js +127 -18
  11. package/lib/schema/definition.js.map +3 -3
  12. package/lib/schema/definition.mjs +109 -16
  13. package/lib/schema/definition.mjs.map +2 -2
  14. package/lib/schema/directives.d.ts.map +1 -1
  15. package/lib/schema/directives.js +9 -4
  16. package/lib/schema/directives.js.map +2 -2
  17. package/lib/schema/directives.mjs +10 -5
  18. package/lib/schema/directives.mjs.map +2 -2
  19. package/lib/utilities/decodeASTSchema.d.ts.map +1 -1
  20. package/lib/utilities/decodeASTSchema.js +185 -33
  21. package/lib/utilities/decodeASTSchema.js.map +2 -2
  22. package/lib/utilities/decodeASTSchema.mjs +196 -36
  23. package/lib/utilities/decodeASTSchema.mjs.map +2 -2
  24. package/lib/utilities/encodeASTSchema.d.ts +5 -1
  25. package/lib/utilities/encodeASTSchema.d.ts.map +1 -1
  26. package/lib/utilities/encodeASTSchema.js +171 -38
  27. package/lib/utilities/encodeASTSchema.js.map +2 -2
  28. package/lib/utilities/encodeASTSchema.mjs +171 -38
  29. package/lib/utilities/encodeASTSchema.mjs.map +2 -2
  30. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js +1 -1
  31. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js.map +2 -2
  32. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs +2 -2
  33. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs.map +2 -2
  34. package/lib/utilities/mergeSchemaDefinitions.d.ts +6 -2
  35. package/lib/utilities/mergeSchemaDefinitions.d.ts.map +1 -1
  36. package/lib/utilities/mergeSchemaDefinitions.js +86 -5
  37. package/lib/utilities/mergeSchemaDefinitions.js.map +3 -3
  38. package/lib/utilities/mergeSchemaDefinitions.mjs +96 -7
  39. package/lib/utilities/mergeSchemaDefinitions.mjs.map +3 -3
  40. package/lib/utilities/subtractSchemaDefinitions.js +4 -4
  41. package/lib/utilities/subtractSchemaDefinitions.js.map +2 -2
  42. package/lib/utilities/subtractSchemaDefinitions.mjs +5 -5
  43. package/lib/utilities/subtractSchemaDefinitions.mjs.map +2 -2
  44. package/lib/values.js +2 -2
  45. package/lib/values.js.map +2 -2
  46. package/lib/values.mjs +4 -4
  47. package/lib/values.mjs.map +2 -2
  48. 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 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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",
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 DirectiveNode,\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 DirectiveTuple,\n TypeDefinitionMetadata,\n DirectiveDefinitionMetadata,\n EnumTypeDefinitionMetadata,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport type EncodeASTSchemaOptions = {\n includeDirectives?: boolean;\n includeDescriptions?: boolean;\n};\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n options?: EncodeASTSchemaOptions,\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, options));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition, options));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition, options));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition, options));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition, options));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition, options));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition, options), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(\n definition.name.value,\n encodeInputObjectType(definition, options),\n true,\n );\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition, options), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition, options), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(\n definition.name.value,\n encodeInterfaceType(definition, options),\n true,\n );\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition, options), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition, options));\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 options?: EncodeASTSchemaOptions,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition(getTypeDefinitionMetadata(type, options));\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n getEnumTypeDefinitionMetadata(node, options),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field, options);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n getTypeDefinitionMetadata(node, options),\n );\n}\n\nfunction encodeDirectiveTuple(\n directive?: DirectiveNode,\n): DirectiveTuple | undefined {\n if (!directive) {\n return;\n }\n\n const name = directive.name.value;\n const args = Object.create(null);\n for (const argument of directive.arguments ?? []) {\n args[argument.name.value] = valueFromASTUntyped(argument.value);\n }\n\n if (Object.keys(args).length) {\n return [name, args];\n }\n return [name];\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field, options);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n getTypeDefinitionMetadata(node, options),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n getTypeDefinitionMetadata(node, options),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n\n return createInputObjectTypeDefinition(\n fields,\n getTypeDefinitionMetadata(node, options),\n );\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n options?: EncodeASTSchemaOptions,\n): TypeReference | FieldDefinitionTuple {\n const fieldMetadata: TypeDefinitionMetadata | undefined =\n getTypeDefinitionMetadata(node, options);\n\n if (!node.arguments?.length) {\n if (fieldMetadata) {\n return [typeReferenceFromNode(node.type), undefined, fieldMetadata];\n }\n\n return typeReferenceFromNode(node.type);\n }\n\n if (fieldMetadata) {\n return [\n typeReferenceFromNode(node.type),\n encodeArguments(node),\n fieldMetadata,\n ];\n }\n return [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 options?: EncodeASTSchemaOptions,\n): DirectiveDefinitionTuple {\n const directiveDefinitionMetadata: DirectiveDefinitionMetadata | undefined =\n getDirectiveDefinitionMetadata(node, options);\n\n if (node.arguments?.length) {\n if (directiveDefinitionMetadata) {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n encodeArguments(node),\n directiveDefinitionMetadata,\n ];\n } else {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n encodeArguments(node),\n ];\n }\n } else {\n if (directiveDefinitionMetadata) {\n [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n undefined,\n directiveDefinitionMetadata,\n ];\n }\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n ];\n }\n}\n\nfunction getDirectiveDefinitionMetadata<T>(\n node: T & {\n repeatable?: boolean;\n description?: { value: string; block?: boolean };\n },\n options?: EncodeASTSchemaOptions,\n) {\n let metadata: undefined | DirectiveDefinitionMetadata;\n const { includeDescriptions } = options || {};\n\n if (includeDescriptions && node.description) {\n metadata ??= {};\n metadata.description = {\n block: node.description.block,\n value: node.description.value,\n };\n }\n\n if (node.repeatable) {\n metadata ??= {};\n metadata.repeatable = node.repeatable;\n }\n\n return metadata;\n}\n\nfunction getEnumTypeDefinitionMetadata(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n options?: EncodeASTSchemaOptions,\n): EnumTypeDefinitionMetadata | undefined {\n const { includeDirectives, includeDescriptions } = options || {};\n let valuesMetadadata: Record<string, TypeDefinitionMetadata> | undefined;\n\n if (includeDirectives || includeDescriptions) {\n for (const value of node?.values || []) {\n if (value.directives?.length || value.description) {\n if (includeDirectives && value.directives?.length) {\n valuesMetadadata ??= {};\n valuesMetadadata[value.name.value] ??= {};\n valuesMetadadata[value.name.value][\"directives\"] = value.directives\n .map(encodeDirectiveTuple)\n .filter<DirectiveTuple>((directive) => !!directive);\n }\n\n if (includeDescriptions && value.description) {\n valuesMetadadata ??= {};\n valuesMetadadata[value.name.value] ??= {};\n valuesMetadadata[value.name.value][\"description\"] = {\n block: value.description.block,\n value: value.description.value,\n };\n }\n }\n }\n }\n const enumTypeMetadata = getTypeDefinitionMetadata(node, options);\n if (enumTypeMetadata || valuesMetadadata) {\n return {\n ...getTypeDefinitionMetadata(node, options),\n ...(valuesMetadadata && { values: valuesMetadadata }),\n };\n }\n}\n\nfunction getTypeDefinitionMetadata<T>(\n node: T & {\n directives?: readonly DirectiveNode[];\n description?: { value: string; block?: boolean };\n },\n options?: EncodeASTSchemaOptions,\n): TypeDefinitionMetadata | undefined {\n let metadata: undefined | TypeDefinitionMetadata;\n const { includeDirectives, includeDescriptions } = options || {};\n\n if (includeDirectives && node.directives?.length) {\n const directives = node.directives\n .map(encodeDirectiveTuple)\n .filter<DirectiveTuple>((directive) => !!directive);\n\n if (directives.length) {\n metadata ??= {};\n metadata.directives = directives;\n }\n }\n\n if (includeDescriptions && node.description) {\n metadata ??= {};\n metadata.description = {\n block: node.description.block,\n value: node.description.value,\n };\n }\n\n return metadata;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["node"]
7
7
  }
@@ -175,7 +175,7 @@ function addField(type, field) {
175
175
  }
176
176
  function addDirective(directives, directive) {
177
177
  const name = directive.name;
178
- let tuple = directives.find((d) => (0, import_definition.getDirectiveName)(d) === name);
178
+ let tuple = directives.find((d) => (0, import_definition.getDirectiveDefinitionName)(d) === name);
179
179
  if (!tuple) {
180
180
  tuple = [directive.name, directive.locations.map(import_definition.encodeDirectiveLocation)];
181
181
  directives.push(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 isObjectType,\n isScalarType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n TypeInfo,\n visit,\n visitWithTypeInfo,\n locatedError,\n isInterfaceType,\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 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 fragmentSpreads: string[];\n};\n\ntype ExtractMinimalViableSchemaForRequestDocumentOptions = {\n includeInterfaceImplementingTypes?: boolean;\n};\n\nexport function extractMinimalViableSchemaForRequestDocument(\n schema: GraphQLSchema,\n requestDocument: DocumentNode,\n options?: ExtractMinimalViableSchemaForRequestDocumentOptions,\n): ExtractMinimalViableSchemaResult {\n const types: TypeDefinitionsRecord = {};\n const directives: DirectiveDefinitionTuple[] = [];\n const unknownDirectives: DirectiveNode[] = [];\n const fragmentSpreads: string[] = [];\n\n const includeInterfaceImplementingTypes =\n options?.includeInterfaceImplementingTypes || false;\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);\n addReferencedOutputType(schema, types, getFieldTypeReference(fieldDef));\n addReferencedInputTypes(schema, types, getFieldArgs(fieldDef));\n\n if (includeInterfaceImplementingTypes && isInterfaceType(parentType)) {\n const possibleTypes = schema.getPossibleTypes(parentType);\n for (const implementingType of possibleTypes) {\n const implementingTypeDef = types[implementingType.name] as\n | ObjectTypeDefinitionTuple\n | InterfaceTypeDefinitionTuple\n | undefined;\n\n if (implementingTypeDef) {\n const implementingField =\n implementingType.getFields()[field.name];\n if (implementingField) {\n addField(implementingTypeDef, implementingField);\n }\n }\n }\n }\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);\n },\n FragmentDefinition(node, _key, _parent, _path, ancestors): void {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n if (includeInterfaceImplementingTypes) {\n addImplementingTypes(schema, types, type);\n }\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 if (includeInterfaceImplementingTypes) {\n addImplementingTypes(schema, types, type);\n }\n }\n },\n FragmentSpread(node) {\n if (!fragmentSpreads.includes(node.name.value)) {\n fragmentSpreads.push(node.name.value);\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, fragmentSpreads };\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 addImplementingTypes(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n type: GraphQLCompositeType,\n): void {\n if (isInterfaceType(type)) {\n const possibleTypes = schema.getPossibleTypes(type);\n for (const implementingType of possibleTypes) {\n addCompositeType(types, implementingType);\n }\n }\n}\n\nfunction addField(\n type: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n field: GraphQLField<unknown, unknown>,\n): FieldDefinition {\n const fields = getFields(type);\n\n return (fields[field.name] = encodeFieldDef(field));\n}\n\nfunction addDirective(\n directives: DirectiveDefinitionTuple[],\n directive: GraphQLDirective,\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 [hasArgs, argsRecord] = encodeArguments(directive.args);\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 isObjectType,\n isScalarType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n TypeInfo,\n visit,\n visitWithTypeInfo,\n locatedError,\n isInterfaceType,\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 getDirectiveDefinitionName,\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 fragmentSpreads: string[];\n};\n\ntype ExtractMinimalViableSchemaForRequestDocumentOptions = {\n includeInterfaceImplementingTypes?: boolean;\n};\n\nexport function extractMinimalViableSchemaForRequestDocument(\n schema: GraphQLSchema,\n requestDocument: DocumentNode,\n options?: ExtractMinimalViableSchemaForRequestDocumentOptions,\n): ExtractMinimalViableSchemaResult {\n const types: TypeDefinitionsRecord = {};\n const directives: DirectiveDefinitionTuple[] = [];\n const unknownDirectives: DirectiveNode[] = [];\n const fragmentSpreads: string[] = [];\n\n const includeInterfaceImplementingTypes =\n options?.includeInterfaceImplementingTypes || false;\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);\n addReferencedOutputType(schema, types, getFieldTypeReference(fieldDef));\n addReferencedInputTypes(schema, types, getFieldArgs(fieldDef));\n\n if (includeInterfaceImplementingTypes && isInterfaceType(parentType)) {\n const possibleTypes = schema.getPossibleTypes(parentType);\n for (const implementingType of possibleTypes) {\n const implementingTypeDef = types[implementingType.name] as\n | ObjectTypeDefinitionTuple\n | InterfaceTypeDefinitionTuple\n | undefined;\n\n if (implementingTypeDef) {\n const implementingField =\n implementingType.getFields()[field.name];\n if (implementingField) {\n addField(implementingTypeDef, implementingField);\n }\n }\n }\n }\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);\n },\n FragmentDefinition(node, _key, _parent, _path, ancestors): void {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n if (includeInterfaceImplementingTypes) {\n addImplementingTypes(schema, types, type);\n }\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 if (includeInterfaceImplementingTypes) {\n addImplementingTypes(schema, types, type);\n }\n }\n },\n FragmentSpread(node) {\n if (!fragmentSpreads.includes(node.name.value)) {\n fragmentSpreads.push(node.name.value);\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, fragmentSpreads };\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 addImplementingTypes(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n type: GraphQLCompositeType,\n): void {\n if (isInterfaceType(type)) {\n const possibleTypes = schema.getPossibleTypes(type);\n for (const implementingType of possibleTypes) {\n addCompositeType(types, implementingType);\n }\n }\n}\n\nfunction addField(\n type: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n field: GraphQLField<unknown, unknown>,\n): FieldDefinition {\n const fields = getFields(type);\n\n return (fields[field.name] = encodeFieldDef(field));\n}\n\nfunction addDirective(\n directives: DirectiveDefinitionTuple[],\n directive: GraphQLDirective,\n) {\n const name = directive.name;\n let tuple = directives.find((d) => getDirectiveDefinitionName(d) === name);\n if (!tuple) {\n tuple = [directive.name, directive.locations.map(encodeDirectiveLocation)];\n directives.push(tuple);\n }\n\n const [hasArgs, argsRecord] = encodeArguments(directive.args);\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
  }
@@ -22,7 +22,7 @@ import {
22
22
  createScalarTypeDefinition,
23
23
  createUnionTypeDefinition,
24
24
  encodeDirectiveLocation,
25
- getDirectiveName,
25
+ getDirectiveDefinitionName,
26
26
  getFieldArgs,
27
27
  getFields,
28
28
  getFieldTypeReference,
@@ -187,7 +187,7 @@ function addField(type, field) {
187
187
  }
188
188
  function addDirective(directives, directive) {
189
189
  const name = directive.name;
190
- let tuple = directives.find((d) => getDirectiveName(d) === name);
190
+ let tuple = directives.find((d) => getDirectiveDefinitionName(d) === name);
191
191
  if (!tuple) {
192
192
  tuple = [directive.name, directive.locations.map(encodeDirectiveLocation)];
193
193
  directives.push(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 isObjectType,\n isScalarType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n TypeInfo,\n visit,\n visitWithTypeInfo,\n locatedError,\n isInterfaceType,\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 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 fragmentSpreads: string[];\n};\n\ntype ExtractMinimalViableSchemaForRequestDocumentOptions = {\n includeInterfaceImplementingTypes?: boolean;\n};\n\nexport function extractMinimalViableSchemaForRequestDocument(\n schema: GraphQLSchema,\n requestDocument: DocumentNode,\n options?: ExtractMinimalViableSchemaForRequestDocumentOptions,\n): ExtractMinimalViableSchemaResult {\n const types: TypeDefinitionsRecord = {};\n const directives: DirectiveDefinitionTuple[] = [];\n const unknownDirectives: DirectiveNode[] = [];\n const fragmentSpreads: string[] = [];\n\n const includeInterfaceImplementingTypes =\n options?.includeInterfaceImplementingTypes || false;\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);\n addReferencedOutputType(schema, types, getFieldTypeReference(fieldDef));\n addReferencedInputTypes(schema, types, getFieldArgs(fieldDef));\n\n if (includeInterfaceImplementingTypes && isInterfaceType(parentType)) {\n const possibleTypes = schema.getPossibleTypes(parentType);\n for (const implementingType of possibleTypes) {\n const implementingTypeDef = types[implementingType.name] as\n | ObjectTypeDefinitionTuple\n | InterfaceTypeDefinitionTuple\n | undefined;\n\n if (implementingTypeDef) {\n const implementingField =\n implementingType.getFields()[field.name];\n if (implementingField) {\n addField(implementingTypeDef, implementingField);\n }\n }\n }\n }\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);\n },\n FragmentDefinition(node, _key, _parent, _path, ancestors): void {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n if (includeInterfaceImplementingTypes) {\n addImplementingTypes(schema, types, type);\n }\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 if (includeInterfaceImplementingTypes) {\n addImplementingTypes(schema, types, type);\n }\n }\n },\n FragmentSpread(node) {\n if (!fragmentSpreads.includes(node.name.value)) {\n fragmentSpreads.push(node.name.value);\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, fragmentSpreads };\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 addImplementingTypes(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n type: GraphQLCompositeType,\n): void {\n if (isInterfaceType(type)) {\n const possibleTypes = schema.getPossibleTypes(type);\n for (const implementingType of possibleTypes) {\n addCompositeType(types, implementingType);\n }\n }\n}\n\nfunction addField(\n type: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n field: GraphQLField<unknown, unknown>,\n): FieldDefinition {\n const fields = getFields(type);\n\n return (fields[field.name] = encodeFieldDef(field));\n}\n\nfunction addDirective(\n directives: DirectiveDefinitionTuple[],\n directive: GraphQLDirective,\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 [hasArgs, argsRecord] = encodeArguments(directive.args);\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 isObjectType,\n isScalarType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n TypeInfo,\n visit,\n visitWithTypeInfo,\n locatedError,\n isInterfaceType,\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 getDirectiveDefinitionName,\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 fragmentSpreads: string[];\n};\n\ntype ExtractMinimalViableSchemaForRequestDocumentOptions = {\n includeInterfaceImplementingTypes?: boolean;\n};\n\nexport function extractMinimalViableSchemaForRequestDocument(\n schema: GraphQLSchema,\n requestDocument: DocumentNode,\n options?: ExtractMinimalViableSchemaForRequestDocumentOptions,\n): ExtractMinimalViableSchemaResult {\n const types: TypeDefinitionsRecord = {};\n const directives: DirectiveDefinitionTuple[] = [];\n const unknownDirectives: DirectiveNode[] = [];\n const fragmentSpreads: string[] = [];\n\n const includeInterfaceImplementingTypes =\n options?.includeInterfaceImplementingTypes || false;\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);\n addReferencedOutputType(schema, types, getFieldTypeReference(fieldDef));\n addReferencedInputTypes(schema, types, getFieldArgs(fieldDef));\n\n if (includeInterfaceImplementingTypes && isInterfaceType(parentType)) {\n const possibleTypes = schema.getPossibleTypes(parentType);\n for (const implementingType of possibleTypes) {\n const implementingTypeDef = types[implementingType.name] as\n | ObjectTypeDefinitionTuple\n | InterfaceTypeDefinitionTuple\n | undefined;\n\n if (implementingTypeDef) {\n const implementingField =\n implementingType.getFields()[field.name];\n if (implementingField) {\n addField(implementingTypeDef, implementingField);\n }\n }\n }\n }\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);\n },\n FragmentDefinition(node, _key, _parent, _path, ancestors): void {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n if (includeInterfaceImplementingTypes) {\n addImplementingTypes(schema, types, type);\n }\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 if (includeInterfaceImplementingTypes) {\n addImplementingTypes(schema, types, type);\n }\n }\n },\n FragmentSpread(node) {\n if (!fragmentSpreads.includes(node.name.value)) {\n fragmentSpreads.push(node.name.value);\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, fragmentSpreads };\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 addImplementingTypes(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n type: GraphQLCompositeType,\n): void {\n if (isInterfaceType(type)) {\n const possibleTypes = schema.getPossibleTypes(type);\n for (const implementingType of possibleTypes) {\n addCompositeType(types, implementingType);\n }\n }\n}\n\nfunction addField(\n type: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n field: GraphQLField<unknown, unknown>,\n): FieldDefinition {\n const fields = getFields(type);\n\n return (fields[field.name] = encodeFieldDef(field));\n}\n\nfunction addDirective(\n directives: DirectiveDefinitionTuple[],\n directive: GraphQLDirective,\n) {\n const name = directive.name;\n let tuple = directives.find((d) => getDirectiveDefinitionName(d) === name);\n if (!tuple) {\n tuple = [directive.name, directive.locations.map(encodeDirectiveLocation)];\n directives.push(tuple);\n }\n\n const [hasArgs, argsRecord] = encodeArguments(directive.args);\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,9 +1,13 @@
1
1
  import { DirectiveDefinitionTuple, SchemaDefinitions, TypeDefinitionsRecord } from "../schema/definition";
2
2
  export declare function createSchemaDefinitions(definitions: SchemaDefinitions[]): SchemaDefinitions;
3
- export declare function mergeSchemaDefinitions(accumulator: SchemaDefinitions, definitions: SchemaDefinitions[]): SchemaDefinitions;
3
+ type MergeSchemaDefinitionsOptions = {
4
+ mergeEnumValues?: boolean;
5
+ };
6
+ export declare function mergeSchemaDefinitions(accumulator: SchemaDefinitions, definitions: SchemaDefinitions[], options?: MergeSchemaDefinitionsOptions): SchemaDefinitions;
4
7
  export declare function mergeDirectives(target: DirectiveDefinitionTuple[], source: DirectiveDefinitionTuple[]): void;
5
8
  /**
6
9
  * Adds missing definitions from source into target. Mutates target in place.
7
10
  */
8
- export declare function mergeTypes(target: TypeDefinitionsRecord, source: TypeDefinitionsRecord): void;
11
+ export declare function mergeTypes(target: TypeDefinitionsRecord, source: TypeDefinitionsRecord, options?: MergeSchemaDefinitionsOptions): void;
12
+ export {};
9
13
  //# sourceMappingURL=mergeSchemaDefinitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mergeSchemaDefinitions.d.ts","sourceRoot":"","sources":["../../src/utilities/mergeSchemaDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAaxB,iBAAiB,EAGjB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAG9B,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,iBAAiB,EAAE,qBAEvE;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,iBAAiB,EAC9B,WAAW,EAAE,iBAAiB,EAAE,GAC/B,iBAAiB,CAiBnB;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,wBAAwB,EAAE,EAClC,MAAM,EAAE,wBAAwB,EAAE,QAsBnC;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,IAAI,CAqCN"}
1
+ {"version":3,"file":"mergeSchemaDefinitions.d.ts","sourceRoot":"","sources":["../../src/utilities/mergeSchemaDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAoBxB,iBAAiB,EAIjB,qBAAqB,EAKtB,MAAM,sBAAsB,CAAC;AAG9B,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,iBAAiB,EAAE,qBAEvE;AAED,KAAK,6BAA6B,GAAG;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AACF,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,iBAAiB,EAC9B,WAAW,EAAE,iBAAiB,EAAE,EAChC,OAAO,CAAC,EAAE,6BAA6B,GACtC,iBAAiB,CAiBnB;AAwCD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,wBAAwB,EAAE,EAClC,MAAM,EAAE,wBAAwB,EAAE,QAuBnC;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,qBAAqB,EAC7B,OAAO,CAAC,EAAE,6BAA6B,GACtC,IAAI,CAkDN"}
@@ -29,7 +29,7 @@ var import_inspect = require("../jsutils/inspect");
29
29
  function createSchemaDefinitions(definitions) {
30
30
  return mergeSchemaDefinitions({ types: {}, directives: [] }, definitions);
31
31
  }
32
- function mergeSchemaDefinitions(accumulator, definitions) {
32
+ function mergeSchemaDefinitions(accumulator, definitions, options) {
33
33
  var _a;
34
34
  if (!definitions.length) {
35
35
  return accumulator;
@@ -38,7 +38,7 @@ function mergeSchemaDefinitions(accumulator, definitions) {
38
38
  if (!accumulator.types) {
39
39
  accumulator.types = source.types;
40
40
  } else if (source.types) {
41
- mergeTypes(accumulator.types, source.types);
41
+ mergeTypes(accumulator.types, source.types, options);
42
42
  }
43
43
  if (!accumulator.directives) {
44
44
  accumulator.directives = source.directives;
@@ -48,10 +48,38 @@ function mergeSchemaDefinitions(accumulator, definitions) {
48
48
  }
49
49
  return accumulator;
50
50
  }
51
+ function mergeTypeMetadata(target, source) {
52
+ var _a;
53
+ const targetMetadata = (0, import_definition.getTypeDefinitionMetadata)(target);
54
+ const sourceMetadata = (0, import_definition.getTypeDefinitionMetadata)(source);
55
+ const metadataIndex = (0, import_definition.getTypeDefinitionMetadataIndex)(target);
56
+ if (!sourceMetadata || !metadataIndex) {
57
+ return;
58
+ }
59
+ if (!targetMetadata) {
60
+ (_a = target[metadataIndex]) != null ? _a : target[metadataIndex] = {};
61
+ const targetMetadata2 = target[metadataIndex];
62
+ if (sourceMetadata == null ? void 0 : sourceMetadata.directives) {
63
+ targetMetadata2.directives = [...sourceMetadata.directives];
64
+ }
65
+ return;
66
+ }
67
+ if (sourceMetadata.directives && targetMetadata.directives) {
68
+ for (const sourceDirective of sourceMetadata.directives) {
69
+ const directiveName = (0, import_definition.getDirectiveName)(sourceDirective);
70
+ const exists = targetMetadata.directives.some(
71
+ (d) => (0, import_definition.getDirectiveName)(d) === directiveName
72
+ );
73
+ if (!exists) {
74
+ targetMetadata.directives.push(sourceDirective);
75
+ }
76
+ }
77
+ }
78
+ }
51
79
  function mergeDirectives(target, source) {
52
80
  for (const sourceDirective of source) {
53
81
  const targetDirective = target.find(
54
- (directive) => (0, import_definition.getDirectiveName)(directive) === (0, import_definition.getDirectiveName)(sourceDirective)
82
+ (directive) => (0, import_definition.getDirectiveDefinitionName)(directive) === (0, import_definition.getDirectiveDefinitionName)(sourceDirective)
55
83
  );
56
84
  if (!targetDirective) {
57
85
  target.push(sourceDirective);
@@ -69,13 +97,14 @@ function mergeDirectives(target, source) {
69
97
  mergeInputValues(targetArgs, sourceArgs);
70
98
  }
71
99
  }
72
- function mergeTypes(target, source) {
100
+ function mergeTypes(target, source, options) {
73
101
  for (const [typeName, sourceDef] of Object.entries(source)) {
74
102
  const targetDef = target[typeName];
75
103
  if (!targetDef) {
76
104
  target[typeName] = sourceDef;
77
105
  continue;
78
106
  }
107
+ mergeTypeMetadata(targetDef, sourceDef);
79
108
  if ((0, import_definition.isObjectTypeDefinition)(targetDef) && (0, import_definition.isObjectTypeDefinition)(sourceDef) || (0, import_definition.isInterfaceTypeDefinition)(targetDef) && (0, import_definition.isInterfaceTypeDefinition)(sourceDef)) {
80
109
  mergeFields((0, import_definition.getFields)(targetDef), (0, import_definition.getFields)(sourceDef));
81
110
  mergeInterfaces(targetDef, sourceDef);
@@ -88,6 +117,10 @@ function mergeTypes(target, source) {
88
117
  );
89
118
  continue;
90
119
  }
120
+ if ((options == null ? void 0 : options.mergeEnumValues) && (0, import_definition.isEnumTypeDefinition)(targetDef) && (0, import_definition.isEnumTypeDefinition)(sourceDef)) {
121
+ mergeEnumValues(targetDef, sourceDef);
122
+ continue;
123
+ }
91
124
  if (targetDef[0] !== sourceDef[0]) {
92
125
  throw new Error(
93
126
  `Type ${typeName} is represented differently in different schema fragments:
@@ -98,7 +131,7 @@ function mergeTypes(target, source) {
98
131
  }
99
132
  }
100
133
  function mergeFields(target, source) {
101
- var _a;
134
+ var _a, _b;
102
135
  for (const [fieldName, sourceDef] of Object.entries(source)) {
103
136
  const targetDef = target[fieldName];
104
137
  if (!target[fieldName] || !Array.isArray(targetDef)) {
@@ -110,6 +143,27 @@ function mergeFields(target, source) {
110
143
  const targetArgs = (_a = (0, import_definition.getFieldArgs)(targetDef)) != null ? _a : (0, import_definition.setFieldArgs)(targetDef, {});
111
144
  mergeInputValues(targetArgs, sourceArgs);
112
145
  }
146
+ const sourceDirectives = (0, import_definition.getFieldMetadata)(sourceDef);
147
+ if (sourceDirectives) {
148
+ const targetMetadata = (_b = (0, import_definition.getFieldMetadata)(targetDef)) != null ? _b : (0, import_definition.setFieldDirectives)(targetDef, {});
149
+ if (targetMetadata.directives && sourceDirectives.directives) {
150
+ mergeFieldDirectives(
151
+ targetMetadata.directives,
152
+ sourceDirectives.directives
153
+ );
154
+ }
155
+ }
156
+ }
157
+ }
158
+ function mergeFieldDirectives(target, source) {
159
+ for (const sourceDirective of source) {
160
+ const directiveName = (0, import_definition.getDirectiveName)(sourceDirective);
161
+ const exists = target.some(
162
+ (d) => (0, import_definition.getDirectiveName)(d) === directiveName
163
+ );
164
+ if (!exists) {
165
+ target.push(sourceDirective);
166
+ }
113
167
  }
114
168
  }
115
169
  function mergeInterfaces(target, source) {
@@ -128,6 +182,33 @@ function mergeInterfaces(target, source) {
128
182
  }
129
183
  }
130
184
  }
185
+ function mergeEnumValues(target, source) {
186
+ const targetValues = (0, import_definition.getEnumValues)(target);
187
+ const sourceValues = (0, import_definition.getEnumValues)(source);
188
+ for (const value of sourceValues) {
189
+ if (!targetValues.includes(value)) {
190
+ targetValues.push(value);
191
+ }
192
+ }
193
+ const sourceMetadata = (0, import_definition.getEnumMetadata)(source);
194
+ if (!(sourceMetadata == null ? void 0 : sourceMetadata.values)) {
195
+ return;
196
+ }
197
+ const targetMetadata = (0, import_definition.getEnumMetadata)(target);
198
+ if (!targetMetadata) {
199
+ target[2] = { values: { ...sourceMetadata.values } };
200
+ return;
201
+ }
202
+ if (!targetMetadata.values) {
203
+ targetMetadata.values = { ...sourceMetadata.values };
204
+ return;
205
+ }
206
+ for (const [valueName, valueMeta] of Object.entries(sourceMetadata.values)) {
207
+ if (!targetMetadata.values[valueName]) {
208
+ targetMetadata.values[valueName] = valueMeta;
209
+ }
210
+ }
211
+ }
131
212
  function mergeInputValues(target, source) {
132
213
  for (const [fieldName, sourceDef] of Object.entries(source)) {
133
214
  const targetDef = target[fieldName];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/mergeSchemaDefinitions.ts"],
4
- "sourcesContent": ["import {\n DirectiveDefinitionTuple,\n FieldDefinitionRecord,\n getDirectiveDefinitionArgs,\n getDirectiveName,\n getFieldArgs,\n getFields,\n getInputObjectFields,\n InputValueDefinitionRecord,\n InterfaceTypeDefinitionTuple,\n isInputObjectTypeDefinition,\n isInterfaceTypeDefinition,\n isObjectTypeDefinition,\n ObjectTypeDefinitionTuple,\n SchemaDefinitions,\n setDirectiveDefinitionArgs,\n setFieldArgs,\n TypeDefinitionsRecord,\n} from \"../schema/definition\";\nimport { inspect } from \"../jsutils/inspect\";\n\nexport function createSchemaDefinitions(definitions: SchemaDefinitions[]) {\n return mergeSchemaDefinitions({ types: {}, directives: [] }, definitions);\n}\n\nexport function mergeSchemaDefinitions(\n accumulator: SchemaDefinitions,\n definitions: SchemaDefinitions[],\n): SchemaDefinitions {\n if (!definitions.length) {\n return accumulator;\n }\n for (const source of definitions) {\n if (!accumulator.types) {\n accumulator.types = source.types;\n } else if (source.types) {\n mergeTypes(accumulator.types, source.types);\n }\n if (!accumulator.directives) {\n accumulator.directives = source.directives;\n } else if (source.directives?.length) {\n mergeDirectives(accumulator.directives, source.directives);\n }\n }\n return accumulator;\n}\n\nexport function mergeDirectives(\n target: DirectiveDefinitionTuple[],\n source: DirectiveDefinitionTuple[],\n) {\n for (const sourceDirective of source) {\n const targetDirective = target.find(\n (directive) =>\n getDirectiveName(directive) === getDirectiveName(sourceDirective),\n );\n if (!targetDirective) {\n target.push(sourceDirective);\n continue;\n }\n const sourceArgs = getDirectiveDefinitionArgs(sourceDirective);\n if (!sourceArgs) {\n continue;\n }\n const targetArgs = getDirectiveDefinitionArgs(targetDirective);\n if (!targetArgs) {\n setDirectiveDefinitionArgs(targetDirective, sourceArgs);\n continue;\n }\n mergeInputValues(targetArgs, sourceArgs);\n }\n}\n\n/**\n * Adds missing definitions from source into target. Mutates target in place.\n */\nexport function mergeTypes(\n target: TypeDefinitionsRecord,\n source: TypeDefinitionsRecord,\n): void {\n for (const [typeName, sourceDef] of Object.entries(source)) {\n const targetDef = target[typeName];\n if (!targetDef) {\n target[typeName] = sourceDef;\n continue;\n }\n if (\n (isObjectTypeDefinition(targetDef) &&\n isObjectTypeDefinition(sourceDef)) ||\n (isInterfaceTypeDefinition(targetDef) &&\n isInterfaceTypeDefinition(sourceDef))\n ) {\n mergeFields(getFields(targetDef), getFields(sourceDef));\n mergeInterfaces(targetDef, sourceDef);\n continue;\n }\n if (\n isInputObjectTypeDefinition(targetDef) &&\n isInputObjectTypeDefinition(sourceDef)\n ) {\n mergeInputValues(\n getInputObjectFields(targetDef),\n getInputObjectFields(sourceDef),\n );\n continue;\n }\n // Note: not merging scalars, unions and enums - assuming they are fully defined by the first occurrence\n if (targetDef[0] !== sourceDef[0]) {\n throw new Error(\n `Type ${typeName} is represented differently in different schema fragments:\\n` +\n inspect(targetDef) +\n `\\n` +\n inspect(sourceDef),\n );\n }\n }\n}\n\nfunction mergeFields(\n target: FieldDefinitionRecord,\n source: FieldDefinitionRecord,\n) {\n for (const [fieldName, sourceDef] of Object.entries(source)) {\n const targetDef = target[fieldName];\n if (!target[fieldName] || !Array.isArray(targetDef)) {\n target[fieldName] = sourceDef;\n continue;\n }\n const sourceArgs = getFieldArgs(sourceDef);\n if (sourceArgs) {\n const targetArgs = getFieldArgs(targetDef) ?? setFieldArgs(targetDef, {});\n mergeInputValues(targetArgs, sourceArgs);\n }\n }\n}\n\nfunction mergeInterfaces(\n target: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n source: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n): void {\n const targetInterfaces = target[2];\n const sourceInterfaces = source[2];\n\n if (!sourceInterfaces) {\n return;\n }\n\n if (!targetInterfaces) {\n target[2] = [...sourceInterfaces];\n return;\n }\n\n for (const interfaceName of sourceInterfaces) {\n if (!targetInterfaces.includes(interfaceName)) {\n targetInterfaces.push(interfaceName);\n }\n }\n}\n\nfunction mergeInputValues(\n target: InputValueDefinitionRecord,\n source: InputValueDefinitionRecord,\n) {\n for (const [fieldName, sourceDef] of Object.entries(source)) {\n const targetDef = target[fieldName];\n if (!target[fieldName] || !Array.isArray(targetDef)) {\n target[fieldName] = sourceDef;\n }\n // Note: not merging defaultValue - assuming it is fully defined by the first occurrence\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import {\n DirectiveDefinitionTuple,\n DirectiveTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionRecord,\n getDirectiveDefinitionArgs,\n getDirectiveDefinitionName,\n getEnumMetadata,\n getEnumValues,\n getFieldArgs,\n getFieldMetadata,\n getFields,\n getInputObjectFields,\n getTypeDefinitionMetadataIndex,\n getTypeDefinitionMetadata,\n InputValueDefinitionRecord,\n InterfaceTypeDefinitionTuple,\n isInputObjectTypeDefinition,\n isInterfaceTypeDefinition,\n isObjectTypeDefinition,\n ObjectTypeDefinitionTuple,\n SchemaDefinitions,\n setDirectiveDefinitionArgs,\n setFieldArgs,\n setFieldDirectives,\n TypeDefinitionsRecord,\n TypeDefinitionTuple,\n TypeDefinitionMetadata,\n getDirectiveName,\n isEnumTypeDefinition,\n} from \"../schema/definition\";\nimport { inspect } from \"../jsutils/inspect\";\n\nexport function createSchemaDefinitions(definitions: SchemaDefinitions[]) {\n return mergeSchemaDefinitions({ types: {}, directives: [] }, definitions);\n}\n\ntype MergeSchemaDefinitionsOptions = {\n mergeEnumValues?: boolean;\n};\nexport function mergeSchemaDefinitions(\n accumulator: SchemaDefinitions,\n definitions: SchemaDefinitions[],\n options?: MergeSchemaDefinitionsOptions,\n): SchemaDefinitions {\n if (!definitions.length) {\n return accumulator;\n }\n for (const source of definitions) {\n if (!accumulator.types) {\n accumulator.types = source.types;\n } else if (source.types) {\n mergeTypes(accumulator.types, source.types, options);\n }\n if (!accumulator.directives) {\n accumulator.directives = source.directives;\n } else if (source.directives?.length) {\n mergeDirectives(accumulator.directives, source.directives);\n }\n }\n return accumulator;\n}\n\nfunction mergeTypeMetadata(\n target: TypeDefinitionTuple,\n source: TypeDefinitionTuple,\n): void {\n const targetMetadata: TypeDefinitionMetadata | undefined =\n getTypeDefinitionMetadata(target);\n const sourceMetadata: TypeDefinitionMetadata | undefined =\n getTypeDefinitionMetadata(source);\n\n const metadataIndex = getTypeDefinitionMetadataIndex(target);\n if (!sourceMetadata || !metadataIndex) {\n return;\n }\n\n if (!targetMetadata) {\n target[metadataIndex] ??= {};\n const targetMetadata: TypeDefinitionMetadata = target[\n metadataIndex\n ] as TypeDefinitionMetadata;\n if (sourceMetadata?.directives) {\n targetMetadata.directives = [...sourceMetadata.directives];\n }\n return;\n }\n\n if (sourceMetadata.directives && targetMetadata.directives) {\n for (const sourceDirective of sourceMetadata.directives) {\n const directiveName = getDirectiveName(sourceDirective);\n const exists = targetMetadata.directives.some(\n (d: DirectiveTuple) => getDirectiveName(d) === directiveName,\n );\n if (!exists) {\n targetMetadata.directives.push(sourceDirective);\n }\n }\n }\n}\n\nexport function mergeDirectives(\n target: DirectiveDefinitionTuple[],\n source: DirectiveDefinitionTuple[],\n) {\n for (const sourceDirective of source) {\n const targetDirective = target.find(\n (directive) =>\n getDirectiveDefinitionName(directive) ===\n getDirectiveDefinitionName(sourceDirective),\n );\n if (!targetDirective) {\n target.push(sourceDirective);\n continue;\n }\n const sourceArgs = getDirectiveDefinitionArgs(sourceDirective);\n if (!sourceArgs) {\n continue;\n }\n const targetArgs = getDirectiveDefinitionArgs(targetDirective);\n if (!targetArgs) {\n setDirectiveDefinitionArgs(targetDirective, sourceArgs);\n continue;\n }\n mergeInputValues(targetArgs, sourceArgs);\n }\n}\n\n/**\n * Adds missing definitions from source into target. Mutates target in place.\n */\nexport function mergeTypes(\n target: TypeDefinitionsRecord,\n source: TypeDefinitionsRecord,\n options?: MergeSchemaDefinitionsOptions,\n): void {\n for (const [typeName, sourceDef] of Object.entries(source)) {\n const targetDef = target[typeName];\n if (!targetDef) {\n target[typeName] = sourceDef;\n continue;\n }\n\n mergeTypeMetadata(targetDef, sourceDef);\n\n if (\n (isObjectTypeDefinition(targetDef) &&\n isObjectTypeDefinition(sourceDef)) ||\n (isInterfaceTypeDefinition(targetDef) &&\n isInterfaceTypeDefinition(sourceDef))\n ) {\n mergeFields(getFields(targetDef), getFields(sourceDef));\n mergeInterfaces(targetDef, sourceDef);\n continue;\n }\n if (\n isInputObjectTypeDefinition(targetDef) &&\n isInputObjectTypeDefinition(sourceDef)\n ) {\n mergeInputValues(\n getInputObjectFields(targetDef),\n getInputObjectFields(sourceDef),\n );\n continue;\n }\n\n if (\n options?.mergeEnumValues &&\n isEnumTypeDefinition(targetDef) &&\n isEnumTypeDefinition(sourceDef)\n ) {\n mergeEnumValues(targetDef, sourceDef);\n continue;\n }\n\n // Note: not merging scalars, unions and enums - assuming they are fully defined by the first occurrence\n if (targetDef[0] !== sourceDef[0]) {\n throw new Error(\n `Type ${typeName} is represented differently in different schema fragments:\\n` +\n inspect(targetDef) +\n `\\n` +\n inspect(sourceDef),\n );\n }\n }\n}\n\nfunction mergeFields(\n target: FieldDefinitionRecord,\n source: FieldDefinitionRecord,\n) {\n for (const [fieldName, sourceDef] of Object.entries(source)) {\n const targetDef = target[fieldName];\n if (!target[fieldName] || !Array.isArray(targetDef)) {\n target[fieldName] = sourceDef;\n continue;\n }\n const sourceArgs = getFieldArgs(sourceDef);\n if (sourceArgs) {\n const targetArgs = getFieldArgs(targetDef) ?? setFieldArgs(targetDef, {});\n mergeInputValues(targetArgs, sourceArgs);\n }\n\n const sourceDirectives = getFieldMetadata(sourceDef);\n if (sourceDirectives) {\n const targetMetadata =\n getFieldMetadata(targetDef) ?? setFieldDirectives(targetDef, {});\n if (targetMetadata.directives && sourceDirectives.directives) {\n mergeFieldDirectives(\n targetMetadata.directives,\n sourceDirectives.directives,\n );\n }\n }\n }\n}\n\nfunction mergeFieldDirectives(\n target: DirectiveTuple[],\n source: DirectiveTuple[],\n): void {\n for (const sourceDirective of source) {\n const directiveName = getDirectiveName(sourceDirective);\n const exists = target.some(\n (d: DirectiveTuple) => getDirectiveName(d) === directiveName,\n );\n if (!exists) {\n target.push(sourceDirective);\n }\n }\n}\n\nfunction mergeInterfaces(\n target: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n source: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n): void {\n const targetInterfaces = target[2];\n const sourceInterfaces = source[2];\n\n if (!sourceInterfaces) {\n return;\n }\n\n if (!targetInterfaces) {\n target[2] = [...sourceInterfaces];\n return;\n }\n\n for (const interfaceName of sourceInterfaces) {\n if (!targetInterfaces.includes(interfaceName)) {\n targetInterfaces.push(interfaceName);\n }\n }\n}\n\nfunction mergeEnumValues(\n target: EnumTypeDefinitionTuple,\n source: EnumTypeDefinitionTuple,\n): void {\n const targetValues = getEnumValues(target);\n const sourceValues = getEnumValues(source);\n\n for (const value of sourceValues) {\n if (!targetValues.includes(value)) {\n targetValues.push(value);\n }\n }\n\n const sourceMetadata = getEnumMetadata(source);\n if (!sourceMetadata?.values) {\n return;\n }\n\n const targetMetadata = getEnumMetadata(target);\n if (!targetMetadata) {\n target[2] = { values: { ...sourceMetadata.values } };\n return;\n }\n\n if (!targetMetadata.values) {\n targetMetadata.values = { ...sourceMetadata.values };\n return;\n }\n\n for (const [valueName, valueMeta] of Object.entries(sourceMetadata.values)) {\n if (!targetMetadata.values[valueName]) {\n targetMetadata.values[valueName] = valueMeta;\n }\n }\n}\n\nfunction mergeInputValues(\n target: InputValueDefinitionRecord,\n source: InputValueDefinitionRecord,\n) {\n for (const [fieldName, sourceDef] of Object.entries(source)) {\n const targetDef = target[fieldName];\n if (!target[fieldName] || !Array.isArray(targetDef)) {\n target[fieldName] = sourceDef;\n }\n // Note: not merging defaultValue - assuming it is fully defined by the first occurrence\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["targetMetadata"]
7
7
  }