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

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 (94) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +18 -2
  3. package/lib/benchmarks/index.js.map +2 -2
  4. package/lib/benchmarks/index.mjs.map +2 -2
  5. package/lib/collectFields.d.ts.map +1 -1
  6. package/lib/collectFields.js +6 -5
  7. package/lib/collectFields.js.map +2 -2
  8. package/lib/collectFields.mjs +6 -5
  9. package/lib/collectFields.mjs.map +2 -2
  10. package/lib/executeWithoutSchema.d.ts +1 -3
  11. package/lib/executeWithoutSchema.d.ts.map +1 -1
  12. package/lib/executeWithoutSchema.js +153 -69
  13. package/lib/executeWithoutSchema.js.map +2 -2
  14. package/lib/executeWithoutSchema.mjs +143 -71
  15. package/lib/executeWithoutSchema.mjs.map +2 -2
  16. package/lib/index.d.ts +4 -4
  17. package/lib/index.d.ts.map +1 -1
  18. package/lib/index.js +5 -1
  19. package/lib/index.js.map +2 -2
  20. package/lib/index.mjs +10 -2
  21. package/lib/index.mjs.map +2 -2
  22. package/lib/schema/definition.d.ts +43 -33
  23. package/lib/schema/definition.d.ts.map +1 -1
  24. package/lib/schema/definition.js +284 -9
  25. package/lib/schema/definition.js.map +2 -2
  26. package/lib/schema/definition.mjs +284 -55
  27. package/lib/schema/definition.mjs.map +3 -3
  28. package/lib/schema/directives.d.ts.map +1 -1
  29. package/lib/schema/directives.js +3 -3
  30. package/lib/schema/directives.js.map +2 -2
  31. package/lib/schema/directives.mjs +4 -4
  32. package/lib/schema/directives.mjs.map +2 -2
  33. package/lib/schema/reference.d.ts +3 -1
  34. package/lib/schema/reference.d.ts.map +1 -1
  35. package/lib/schema/reference.js.map +2 -2
  36. package/lib/schema/reference.mjs.map +2 -2
  37. package/lib/schema/resolvers.d.ts +10 -4
  38. package/lib/schema/resolvers.d.ts.map +1 -1
  39. package/lib/schema/resolvers.js +92 -9
  40. package/lib/schema/resolvers.js.map +2 -2
  41. package/lib/schema/resolvers.mjs +99 -9
  42. package/lib/schema/resolvers.mjs.map +2 -2
  43. package/lib/types.d.ts +25 -2
  44. package/lib/types.d.ts.map +1 -1
  45. package/lib/types.js.map +1 -1
  46. package/lib/utilities/coerceInputValue.d.ts +3 -3
  47. package/lib/utilities/coerceInputValue.d.ts.map +1 -1
  48. package/lib/utilities/coerceInputValue.js +17 -12
  49. package/lib/utilities/coerceInputValue.js.map +2 -2
  50. package/lib/utilities/coerceInputValue.mjs +22 -12
  51. package/lib/utilities/coerceInputValue.mjs.map +2 -2
  52. package/lib/utilities/decodeASTSchema.d.ts.map +1 -1
  53. package/lib/utilities/decodeASTSchema.js +32 -40
  54. package/lib/utilities/decodeASTSchema.js.map +2 -2
  55. package/lib/utilities/decodeASTSchema.mjs +51 -49
  56. package/lib/utilities/decodeASTSchema.mjs.map +2 -2
  57. package/lib/utilities/encodeASTSchema.d.ts.map +1 -1
  58. package/lib/utilities/encodeASTSchema.js +16 -20
  59. package/lib/utilities/encodeASTSchema.js.map +2 -2
  60. package/lib/utilities/encodeASTSchema.mjs +22 -21
  61. package/lib/utilities/encodeASTSchema.mjs.map +2 -2
  62. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.d.ts.map +1 -1
  63. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js +20 -22
  64. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js.map +2 -2
  65. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs +35 -29
  66. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs.map +2 -2
  67. package/lib/utilities/mergeResolvers.js +1 -2
  68. package/lib/utilities/mergeResolvers.js.map +2 -2
  69. package/lib/utilities/mergeResolvers.mjs +1 -2
  70. package/lib/utilities/mergeResolvers.mjs.map +2 -2
  71. package/lib/utilities/mergeSchemaDefinitions.d.ts.map +1 -1
  72. package/lib/utilities/mergeSchemaDefinitions.js +18 -28
  73. package/lib/utilities/mergeSchemaDefinitions.js.map +2 -2
  74. package/lib/utilities/mergeSchemaDefinitions.mjs +28 -34
  75. package/lib/utilities/mergeSchemaDefinitions.mjs.map +2 -2
  76. package/lib/utilities/valueFromAST.d.ts +3 -3
  77. package/lib/utilities/valueFromAST.d.ts.map +1 -1
  78. package/lib/utilities/valueFromAST.js +23 -10
  79. package/lib/utilities/valueFromAST.js.map +2 -2
  80. package/lib/utilities/valueFromAST.mjs +13 -10
  81. package/lib/utilities/valueFromAST.mjs.map +2 -2
  82. package/lib/values.d.ts +2 -2
  83. package/lib/values.d.ts.map +1 -1
  84. package/lib/values.js +14 -14
  85. package/lib/values.js.map +2 -2
  86. package/lib/values.mjs +21 -14
  87. package/lib/values.mjs.map +2 -2
  88. package/package.json +1 -1
  89. package/lib/schema/fragment.d.ts +0 -63
  90. package/lib/schema/fragment.d.ts.map +0 -1
  91. package/lib/schema/fragment.js +0 -295
  92. package/lib/schema/fragment.js.map +0 -7
  93. package/lib/schema/fragment.mjs +0 -292
  94. package/lib/schema/fragment.mjs.map +0 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/values.ts"],
4
- "sourcesContent": ["import {\n GraphQLError,\n Kind,\n print,\n locatedError,\n DirectiveNode,\n FieldNode,\n VariableDefinitionNode,\n} from \"graphql\";\nimport { inspect } from \"./jsutils/inspect\";\nimport { printPathArray } from \"./jsutils/printPathArray\";\nimport { ExecutionContext } from \"./executeWithoutSchema\";\nimport { DirectiveDefinitionTuple, FieldDefinition } from \"./schema/definition\";\nimport { valueFromAST } from \"./utilities/valueFromAST\";\nimport { PartialSchema } from \"./schema/fragment\";\nimport { coerceInputValue } from \"./utilities/coerceInputValue\";\nimport {\n inspectTypeReference,\n isNonNullType,\n typeReferenceFromNode,\n} from \"./schema/reference\";\n\ntype CoercedVariableValues =\n | { errors: Array<GraphQLError>; coerced?: never }\n | { coerced: { [variable: string]: unknown }; errors?: never };\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getVariableValues(\n schemaTypes: PartialSchema,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n options?: { maxErrors?: number },\n): CoercedVariableValues {\n const errors: GraphQLError[] = [];\n const maxErrors = options?.maxErrors;\n try {\n const coerced = coerceVariableValues(\n schemaTypes,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new GraphQLError(\n \"Too many errors processing variables, error limit reached. Execution aborted.\",\n );\n }\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return { coerced };\n }\n } catch (error) {\n errors.push(error as GraphQLError);\n }\n\n return { errors: errors };\n}\n\nfunction coerceVariableValues(\n schemaTypes: PartialSchema,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n onError: (error: GraphQLError) => void,\n): { [variable: string]: unknown } {\n const coercedValues: { [variable: string]: unknown } = {};\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varTypeReference = typeReferenceFromNode(varDefNode.type);\n\n if (!schemaTypes.isInputType(varTypeReference)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n { nodes: varDefNode.type },\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(\n varDefNode.defaultValue,\n varTypeReference,\n schemaTypes,\n );\n } else if (isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n { nodes: varDefNode },\n ),\n );\n }\n continue;\n }\n\n const value = inputs[varName];\n if (value === null && isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n { nodes: varDefNode },\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varTypeReference,\n schemaTypes,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` + inspect(invalidValue);\n if (path.length > 0) {\n prefix += ` at \"${varName}${printPathArray(path)}\"`;\n }\n onError(\n new GraphQLError(prefix + \"; \" + error.message, {\n nodes: varDefNode,\n originalError: error.originalError,\n }),\n );\n },\n );\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getArgumentValues(\n exeContext: ExecutionContext,\n def: FieldDefinition | DirectiveDefinitionTuple,\n node: FieldNode | DirectiveNode,\n): { [argument: string]: unknown } {\n const schemaTypes = exeContext.partialSchema;\n const coercedValues: { [argument: string]: unknown } = {};\n const argumentDefs = schemaTypes.resolveDefinitionArguments(def);\n if (!argumentDefs) {\n return coercedValues;\n }\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const argumentNodes = node.arguments ?? [];\n const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));\n\n for (const [name, argumentDef] of Object.entries(argumentDefs)) {\n const argumentNode = argNodeMap.get(name);\n const argumentTypeRef = schemaTypes.getTypeReference(argumentDef);\n const defaultValue = schemaTypes.getInputDefaultValue(argumentDef);\n\n if (argumentNode == null) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" was not provided.`,\n [node],\n );\n }\n continue;\n }\n\n if (!schemaTypes.isDefined(argumentTypeRef)) {\n throw locatedError(\n `Could not find type for argument ${name} in ${node.kind} ${node.name.value}`,\n [argumentNode],\n );\n }\n\n // if (!schemaTypes.isInputType(argumentTypeRef)) {\n // const type = schemaTypes.printTypeRef(argumentTypeRef);\n // throw locatedError(\n // `Argument \"$${name}\" expected value of type \"${type}\" which cannot be used as an input type.`,\n // [argumentNode],\n // );\n // }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (\n exeContext.variableValues == null ||\n !hasOwnProperty(exeContext.variableValues, variableName)\n ) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n [valueNode],\n );\n }\n continue;\n }\n isNull = exeContext.variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of non-null type \"${type}\" must not be null.\"`,\n [valueNode],\n );\n }\n\n const coercedValue = valueFromAST(\n valueNode,\n argumentTypeRef,\n schemaTypes,\n exeContext.variableValues,\n );\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new GraphQLError(\n `Argument \"${name}\" has invalid value ${print(valueNode)}.`,\n { nodes: valueNode },\n );\n }\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getDirectiveValues(\n exeContext: ExecutionContext,\n directiveDef: DirectiveDefinitionTuple,\n node: { directives?: ReadonlyArray<DirectiveNode> },\n): undefined | { [argument: string]: unknown } {\n const schemaTypes = exeContext.partialSchema;\n const name = schemaTypes.getDirectiveName(directiveDef);\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const directiveNode = node.directives?.find(\n (directive) => directive.name.value === name,\n );\n\n if (directiveNode) {\n return getArgumentValues(exeContext, directiveDef, directiveNode);\n }\n}\n\nfunction hasOwnProperty(obj: unknown, prop: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n GraphQLError,\n Kind,\n print,\n locatedError,\n DirectiveNode,\n FieldNode,\n VariableDefinitionNode,\n} from \"graphql\";\nimport { inspect } from \"./jsutils/inspect\";\nimport { printPathArray } from \"./jsutils/printPathArray\";\nimport { ExecutionContext } from \"./executeWithoutSchema\";\nimport {\n DirectiveDefinitionTuple,\n FieldDefinition,\n getDefinitionArguments,\n getDirectiveName,\n getInputDefaultValue,\n getInputValueTypeReference,\n isDefined,\n isInputType,\n} from \"./schema/definition\";\nimport { valueFromAST } from \"./utilities/valueFromAST\";\nimport { coerceInputValue } from \"./utilities/coerceInputValue\";\nimport {\n inspectTypeReference,\n isNonNullType,\n typeReferenceFromNode,\n} from \"./schema/reference\";\nimport type { SchemaFragment } from \"./types\";\n\ntype CoercedVariableValues =\n | { errors: Array<GraphQLError>; coerced?: never }\n | { coerced: { [variable: string]: unknown }; errors?: never };\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getVariableValues(\n schemaFragment: SchemaFragment,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n options?: { maxErrors?: number },\n): CoercedVariableValues {\n const errors: GraphQLError[] = [];\n const maxErrors = options?.maxErrors;\n try {\n const coerced = coerceVariableValues(\n schemaFragment,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new GraphQLError(\n \"Too many errors processing variables, error limit reached. Execution aborted.\",\n );\n }\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return { coerced };\n }\n } catch (error) {\n errors.push(error as GraphQLError);\n }\n\n return { errors: errors };\n}\n\nfunction coerceVariableValues(\n schemaFragment: SchemaFragment,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n onError: (error: GraphQLError) => void,\n): { [variable: string]: unknown } {\n const coercedValues: { [variable: string]: unknown } = {};\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varTypeReference = typeReferenceFromNode(varDefNode.type);\n\n if (!isInputType(schemaFragment.definitions, varTypeReference)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n { nodes: varDefNode.type },\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(\n varDefNode.defaultValue,\n varTypeReference,\n schemaFragment,\n );\n } else if (isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n { nodes: varDefNode },\n ),\n );\n }\n continue;\n }\n\n const value = inputs[varName];\n if (value === null && isNonNullType(varTypeReference)) {\n const varTypeStr = inspectTypeReference(varTypeReference);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n { nodes: varDefNode },\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varTypeReference,\n schemaFragment,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` + inspect(invalidValue);\n if (path.length > 0) {\n prefix += ` at \"${varName}${printPathArray(path)}\"`;\n }\n onError(\n new GraphQLError(prefix + \"; \" + error.message, {\n nodes: varDefNode,\n originalError: error.originalError,\n }),\n );\n },\n );\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\nexport function getArgumentValues(\n exeContext: ExecutionContext,\n def: FieldDefinition | DirectiveDefinitionTuple,\n node: FieldNode | DirectiveNode,\n): { [argument: string]: unknown } {\n const definitions = exeContext.schemaFragment.definitions;\n const coercedValues: { [argument: string]: unknown } = {};\n const argumentDefs = getDefinitionArguments(def);\n if (!argumentDefs) {\n return coercedValues;\n }\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const argumentNodes = node.arguments ?? [];\n const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));\n\n for (const [name, argumentDef] of Object.entries(argumentDefs)) {\n const argumentNode = argNodeMap.get(name);\n const argumentTypeRef = getInputValueTypeReference(argumentDef);\n const defaultValue = getInputDefaultValue(argumentDef);\n\n if (argumentNode == null) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" was not provided.`,\n [node],\n );\n }\n continue;\n }\n\n if (!isDefined(definitions, argumentTypeRef)) {\n throw locatedError(\n `Could not find type for argument ${name} in ${node.kind} ${node.name.value}`,\n [argumentNode],\n );\n }\n\n // if (!schemaTypes.isInputType(argumentTypeRef)) {\n // const type = schemaTypes.printTypeRef(argumentTypeRef);\n // throw locatedError(\n // `Argument \"$${name}\" expected value of type \"${type}\" which cannot be used as an input type.`,\n // [argumentNode],\n // );\n // }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (\n exeContext.variableValues == null ||\n !hasOwnProperty(exeContext.variableValues, variableName)\n ) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n } else if (isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of required type \"${type}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n [valueNode],\n );\n }\n continue;\n }\n isNull = exeContext.variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argumentTypeRef)) {\n const type = inspectTypeReference(argumentTypeRef);\n throw locatedError(\n `Argument \"${name}\" of non-null type \"${type}\" must not be null.\"`,\n [valueNode],\n );\n }\n\n const coercedValue = valueFromAST(\n valueNode,\n argumentTypeRef,\n exeContext.schemaFragment,\n exeContext.variableValues,\n );\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new GraphQLError(\n `Argument \"${name}\" has invalid value ${print(valueNode)}.`,\n { nodes: valueNode },\n );\n }\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getDirectiveValues(\n exeContext: ExecutionContext,\n directiveDef: DirectiveDefinitionTuple,\n node: { directives?: ReadonlyArray<DirectiveNode> },\n): undefined | { [argument: string]: unknown } {\n const name = getDirectiveName(directiveDef);\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const directiveNode = node.directives?.find(\n (directive) => directive.name.value === name,\n );\n\n if (directiveNode) {\n return getArgumentValues(exeContext, directiveDef, directiveNode);\n }\n}\n\nfunction hasOwnProperty(obj: unknown, prop: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@graphitation/supermassive",
3
3
  "license": "MIT",
4
- "version": "3.0.0-alpha.5",
4
+ "version": "3.0.0-alpha.7",
5
5
  "main": "./lib/index",
6
6
  "repository": {
7
7
  "type": "git",
@@ -1,63 +0,0 @@
1
- import { GraphQLLeafType } from "graphql";
2
- import { DirectiveDefinitionTuple, EnumTypeDefinitionTuple, FieldDefinition, FieldDefinitionRecord, InputObjectTypeDefinitionTuple, InputValueDefinition, InputValueDefinitionRecord, InterfaceTypeDefinitionTuple, ObjectTypeDefinitionTuple, OperationTypes, ScalarTypeDefinitionTuple, SchemaDefinitions, TypeName, TypeReference, UnionTypeDefinitionTuple } from "./definition";
3
- import { FunctionFieldResolver, TypeResolver, UserResolvers } from "../types";
4
- type SchemaId = string;
5
- export type SchemaFragment = {
6
- schemaId: SchemaId;
7
- definitions: SchemaDefinitions;
8
- resolvers: UserResolvers;
9
- operationTypes?: OperationTypes;
10
- };
11
- export type SchemaFragmentLoadByField = {
12
- kind: "byField";
13
- parentTypeName: TypeName;
14
- fieldName: string;
15
- };
16
- export type SchemaFragmentLoadRequest = SchemaFragmentLoadByField;
17
- export type SchemaFragmentLoaderResult = {
18
- mergedFragment: SchemaFragment;
19
- mergedContextValue?: unknown;
20
- };
21
- export type SchemaFragmentLoader = (currentFragment: SchemaFragment, currentContextValue: unknown, req: SchemaFragmentLoadRequest) => Promise<SchemaFragmentLoaderResult>;
22
- export declare class PartialSchema {
23
- static parseOptions: {
24
- noLocation: boolean;
25
- };
26
- private schemaId;
27
- private definitions;
28
- private resolvers;
29
- private operationTypes;
30
- private scalarTypeResolvers;
31
- private enumTypeResolvers;
32
- constructor(fragment: SchemaFragment);
33
- updateSchemaFragment(fragment: SchemaFragment): void;
34
- getTypeReference(tupleOrRef: FieldDefinition | InputValueDefinition): TypeReference;
35
- getObjectType(typeName: TypeName): ObjectTypeDefinitionTuple | undefined;
36
- getObjectFields(def: ObjectTypeDefinitionTuple): FieldDefinitionRecord | undefined;
37
- addInterfaceImplementation(interfaceType: TypeName, objectType: TypeName): void;
38
- getField(typeName: TypeName, fieldName: string): FieldDefinition | undefined;
39
- private getOwnField;
40
- private findInterfaceField;
41
- private findField;
42
- getFieldArguments(field: FieldDefinition): InputValueDefinitionRecord | undefined;
43
- getDirectiveArguments(directive: DirectiveDefinitionTuple): InputValueDefinitionRecord | undefined;
44
- resolveDefinitionArguments(def: FieldDefinition | DirectiveDefinitionTuple): InputValueDefinitionRecord | undefined;
45
- getInputObjectType(typeRef: TypeReference): InputObjectTypeDefinitionTuple | undefined;
46
- getInputObjectFields(obj: InputObjectTypeDefinitionTuple): InputValueDefinitionRecord;
47
- getInputDefaultValue(inputValue: InputValueDefinition): unknown | undefined;
48
- getLeafType(typeRef: TypeReference): EnumTypeDefinitionTuple | ScalarTypeDefinitionTuple | undefined;
49
- isDefined(typeRef: TypeReference): boolean;
50
- isInputType(typeRef: TypeReference): boolean;
51
- isObjectType(typeRef: TypeReference): boolean;
52
- isAbstractType(typeRef: TypeReference): boolean;
53
- getUnionType(typeRef: TypeReference): UnionTypeDefinitionTuple | undefined;
54
- getInterfaceType(typeRef: TypeReference): InterfaceTypeDefinitionTuple | undefined;
55
- isSubType(abstractTypeName: TypeName, maybeSubTypeName: TypeName): boolean;
56
- getFieldResolver(typeName: TypeName, fieldName: string): FunctionFieldResolver<unknown, unknown> | undefined;
57
- getSubscriptionFieldResolver(subscriptionTypeName: TypeName, fieldName: string): FunctionFieldResolver<unknown, unknown> | undefined;
58
- getAbstractTypeResolver(typeName: TypeName): TypeResolver<unknown, unknown> | undefined;
59
- getLeafTypeResolver(typeRef: TypeReference): GraphQLLeafType | undefined;
60
- getDirectiveName(def: DirectiveDefinitionTuple): string;
61
- }
62
- export {};
63
- //# sourceMappingURL=fragment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fragment.d.ts","sourceRoot":"","sources":["../../src/schema/fragment.ts"],"names":[],"mappings":"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"}
@@ -1,295 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var fragment_exports = {};
20
- __export(fragment_exports, {
21
- PartialSchema: () => PartialSchema
22
- });
23
- module.exports = __toCommonJS(fragment_exports);
24
- var import_graphql = require("graphql");
25
- var import_definition = require("./definition");
26
- var import_isObjectLike = require("../jsutils/isObjectLike");
27
- var import_resolvers = require("./resolvers");
28
- var import_reference = require("./reference");
29
- const specifiedScalarDefinition = [import_definition.TypeKind.SCALAR];
30
- const typeNameMetaFieldDef = "String";
31
- const resolveTypeName = (_source, _args, _context, info) => info.parentTypeName;
32
- const scalarTypeResolversBySchema = /* @__PURE__ */ new Map();
33
- const enumTypeResolversBySchema = /* @__PURE__ */ new Map();
34
- const emptyObject = Object.freeze(/* @__PURE__ */ Object.create(null));
35
- class PartialSchema {
36
- constructor(fragment) {
37
- this.schemaId = fragment.schemaId;
38
- this.definitions = fragment.definitions;
39
- this.resolvers = fragment.resolvers;
40
- this.operationTypes = fragment.operationTypes;
41
- let scalarTypeResolvers = scalarTypeResolversBySchema.get(this.schemaId);
42
- if (!scalarTypeResolvers) {
43
- scalarTypeResolvers = /* @__PURE__ */ new Map();
44
- scalarTypeResolversBySchema.set(this.schemaId, scalarTypeResolvers);
45
- }
46
- this.scalarTypeResolvers = scalarTypeResolvers;
47
- let enumTypeResolvers = enumTypeResolversBySchema.get(this.schemaId);
48
- if (!enumTypeResolvers) {
49
- enumTypeResolvers = /* @__PURE__ */ new Map();
50
- enumTypeResolversBySchema.set(this.schemaId, enumTypeResolvers);
51
- }
52
- this.enumTypeResolvers = enumTypeResolvers;
53
- }
54
- updateSchemaFragment(fragment) {
55
- if (this.schemaId !== fragment.schemaId) {
56
- throw new Error(
57
- `Cannot use new schema fragment: old and new fragments describe different schemas: ${this.schemaId} vs. ${fragment.schemaId}`
58
- );
59
- }
60
- this.schemaId = fragment.schemaId;
61
- this.definitions = fragment.definitions;
62
- this.resolvers = fragment.resolvers;
63
- this.operationTypes = fragment.operationTypes;
64
- }
65
- getTypeReference(tupleOrRef) {
66
- return Array.isArray(tupleOrRef) ? tupleOrRef[0] : tupleOrRef;
67
- }
68
- getObjectType(typeName) {
69
- const type = this.definitions.types[typeName];
70
- return (type == null ? void 0 : type[0]) === import_definition.TypeKind.OBJECT ? type : void 0;
71
- }
72
- getObjectFields(def) {
73
- return def[import_definition.ObjectKeys.fields];
74
- }
75
- addInterfaceImplementation(interfaceType, objectType) {
76
- const iface = this.getInterfaceType(interfaceType);
77
- const type = this.definitions.types[objectType];
78
- if (!iface) {
79
- throw new Error(
80
- `Type ${interfaceType} either doesn't exist or is not an interface`
81
- );
82
- }
83
- if (!type) {
84
- this.definitions.types[objectType] = [
85
- import_definition.TypeKind.OBJECT,
86
- /* @__PURE__ */ Object.create(null),
87
- [interfaceType]
88
- ];
89
- return;
90
- }
91
- let knownInterfaces = type[import_definition.ObjectKeys.interfaces];
92
- if (!knownInterfaces) {
93
- knownInterfaces = [];
94
- type[import_definition.ObjectKeys.interfaces] = knownInterfaces;
95
- }
96
- if (!knownInterfaces.includes(interfaceType)) {
97
- knownInterfaces.push(interfaceType);
98
- }
99
- }
100
- getField(typeName, fieldName) {
101
- var _a;
102
- if (fieldName === "__typename") {
103
- return typeNameMetaFieldDef;
104
- }
105
- return (_a = this.getOwnField(typeName, fieldName)) != null ? _a : this.findInterfaceField(typeName, fieldName);
106
- }
107
- getOwnField(typeName, fieldName) {
108
- var _a, _b;
109
- const type = this.definitions.types[typeName];
110
- if (!type) {
111
- return void 0;
112
- }
113
- if (type[0] === import_definition.TypeKind.OBJECT) {
114
- return (_a = type[import_definition.ObjectKeys.fields]) == null ? void 0 : _a[fieldName];
115
- }
116
- if (type[0] === import_definition.TypeKind.INTERFACE) {
117
- return (_b = type[import_definition.InterfaceKeys.fields]) == null ? void 0 : _b[fieldName];
118
- }
119
- return void 0;
120
- }
121
- findInterfaceField(typeName, fieldName) {
122
- const type = this.definitions.types[typeName];
123
- if (!type) {
124
- return void 0;
125
- }
126
- if (type[0] === import_definition.TypeKind.OBJECT && type[import_definition.ObjectKeys.interfaces]) {
127
- return this.findField(type[import_definition.ObjectKeys.interfaces], fieldName);
128
- }
129
- if (type[0] === import_definition.TypeKind.INTERFACE && type[import_definition.InterfaceKeys.interfaces]) {
130
- return this.findField(type[import_definition.InterfaceKeys.interfaces], fieldName);
131
- }
132
- return void 0;
133
- }
134
- findField(interfaceTypes, fieldName) {
135
- for (const interfaceName of interfaceTypes) {
136
- const ownField = this.getOwnField(interfaceName, fieldName);
137
- if (ownField !== void 0) {
138
- return ownField;
139
- }
140
- }
141
- return void 0;
142
- }
143
- getFieldArguments(field) {
144
- return Array.isArray(field) ? field[import_definition.FieldKeys.arguments] : void 0;
145
- }
146
- getDirectiveArguments(directive) {
147
- return directive[import_definition.DirectiveKeys.arguments];
148
- }
149
- resolveDefinitionArguments(def) {
150
- return Array.isArray(def) ? def[import_definition.FieldKeys.arguments] : void 0;
151
- }
152
- getInputObjectType(typeRef) {
153
- const type = this.definitions.types[(0, import_reference.typeNameFromReference)(typeRef)];
154
- return (type == null ? void 0 : type[0]) === import_definition.TypeKind.INPUT ? type : void 0;
155
- }
156
- getInputObjectFields(obj) {
157
- return obj[import_definition.InputObjectKeys.fields];
158
- }
159
- getInputDefaultValue(inputValue) {
160
- return Array.isArray(inputValue) ? inputValue[import_definition.InputValueKeys.defaultValue] : void 0;
161
- }
162
- getLeafType(typeRef) {
163
- const typeName = (0, import_reference.typeNameFromReference)(typeRef);
164
- if ((0, import_resolvers.isSpecifiedScalarType)(typeName)) {
165
- return specifiedScalarDefinition;
166
- }
167
- const type = this.definitions.types[typeName];
168
- if ((type == null ? void 0 : type[0]) !== import_definition.TypeKind.ENUM && (type == null ? void 0 : type[0]) !== import_definition.TypeKind.SCALAR) {
169
- return void 0;
170
- }
171
- return type;
172
- }
173
- isDefined(typeRef) {
174
- if (typeof typeRef === "number") {
175
- return true;
176
- }
177
- const types = this.definitions.types;
178
- const typeName = (0, import_reference.typeNameFromReference)(typeRef);
179
- return !!types[typeName] || (0, import_resolvers.isSpecifiedScalarType)(typeName);
180
- }
181
- isInputType(typeRef) {
182
- var _a;
183
- if (typeof typeRef === "number") {
184
- return true;
185
- }
186
- const typeName = (0, import_reference.typeNameFromReference)(typeRef);
187
- const kind = (_a = this.definitions.types[typeName]) == null ? void 0 : _a[0];
188
- return (0, import_resolvers.isSpecifiedScalarType)(typeName) || kind === import_definition.TypeKind.ENUM || kind === import_definition.TypeKind.INPUT || kind === import_definition.TypeKind.SCALAR;
189
- }
190
- isObjectType(typeRef) {
191
- var _a;
192
- if (typeof typeRef === "number") {
193
- return false;
194
- }
195
- const types = this.definitions.types;
196
- const type = (_a = types[typeRef]) != null ? _a : types[(0, import_reference.typeNameFromReference)(typeRef)];
197
- return (type == null ? void 0 : type[0]) === import_definition.TypeKind.OBJECT;
198
- }
199
- isAbstractType(typeRef) {
200
- var _a;
201
- if (typeof typeRef === "number") {
202
- return false;
203
- }
204
- const types = this.definitions.types;
205
- const type = (_a = types[typeRef]) != null ? _a : types[(0, import_reference.typeNameFromReference)(typeRef)];
206
- return (type == null ? void 0 : type[0]) === import_definition.TypeKind.UNION || (type == null ? void 0 : type[0]) === import_definition.TypeKind.INTERFACE;
207
- }
208
- getUnionType(typeRef) {
209
- var _a;
210
- const types = this.definitions.types;
211
- const type = (_a = types[typeRef]) != null ? _a : types[(0, import_reference.typeNameFromReference)(typeRef)];
212
- return (type == null ? void 0 : type[0]) === import_definition.TypeKind.UNION ? type : void 0;
213
- }
214
- getInterfaceType(typeRef) {
215
- var _a;
216
- const types = this.definitions.types;
217
- const type = (_a = types[typeRef]) != null ? _a : types[(0, import_reference.typeNameFromReference)(typeRef)];
218
- return (type == null ? void 0 : type[0]) === import_definition.TypeKind.INTERFACE ? type : void 0;
219
- }
220
- isSubType(abstractTypeName, maybeSubTypeName) {
221
- var _a, _b;
222
- const union = this.getUnionType(abstractTypeName);
223
- if (union) {
224
- return union[import_definition.UnionKeys.types].includes(maybeSubTypeName);
225
- }
226
- const object = this.getObjectType(maybeSubTypeName);
227
- if (object) {
228
- return !!((_a = object[import_definition.ObjectKeys.interfaces]) == null ? void 0 : _a.includes(abstractTypeName));
229
- }
230
- const iface = this.getInterfaceType(maybeSubTypeName);
231
- if (iface) {
232
- return !!((_b = iface[import_definition.InterfaceKeys.interfaces]) == null ? void 0 : _b.includes(abstractTypeName));
233
- }
234
- return false;
235
- }
236
- getFieldResolver(typeName, fieldName) {
237
- if (fieldName === "__typename") {
238
- return resolveTypeName;
239
- }
240
- const typeResolvers = this.resolvers[typeName];
241
- const fieldResolver = typeResolvers == null ? void 0 : typeResolvers[fieldName];
242
- return typeof fieldResolver === "function" ? fieldResolver : fieldResolver == null ? void 0 : fieldResolver.resolve;
243
- }
244
- getSubscriptionFieldResolver(subscriptionTypeName, fieldName) {
245
- const typeResolvers = this.resolvers[subscriptionTypeName];
246
- const fieldResolver = typeResolvers == null ? void 0 : typeResolvers[fieldName];
247
- return typeof fieldResolver === "function" ? fieldResolver : fieldResolver == null ? void 0 : fieldResolver.subscribe;
248
- }
249
- getAbstractTypeResolver(typeName) {
250
- const resolver = this.resolvers[typeName];
251
- return resolver && ((0, import_resolvers.isUnionTypeResolver)(resolver) || (0, import_resolvers.isInterfaceTypeResolver)(resolver)) ? resolver.__resolveType : void 0;
252
- }
253
- getLeafTypeResolver(typeRef) {
254
- var _a;
255
- const typeName = (0, import_reference.typeNameFromReference)(typeRef);
256
- if (import_resolvers.specifiedScalarResolvers[typeName]) {
257
- return import_resolvers.specifiedScalarResolvers[typeName];
258
- }
259
- const typeDef = this.getLeafType(typeRef);
260
- if (!typeDef) {
261
- return void 0;
262
- }
263
- if (typeDef[0] === import_definition.TypeKind.SCALAR) {
264
- let scalarType = this.scalarTypeResolvers.get(typeName);
265
- if (!scalarType) {
266
- const tmp = this.resolvers[typeName];
267
- scalarType = (0, import_resolvers.isScalarTypeResolver)(tmp) ? tmp : new import_graphql.GraphQLScalarType({ name: typeName, description: "" });
268
- this.scalarTypeResolvers.set(typeName, scalarType);
269
- }
270
- return scalarType;
271
- }
272
- if (typeDef[0] === import_definition.TypeKind.ENUM) {
273
- let enumType = this.enumTypeResolvers.get(typeName);
274
- if (!enumType) {
275
- const tmp = this.resolvers[typeName];
276
- const customValues = (0, import_isObjectLike.isObjectLike)(tmp) ? tmp : emptyObject;
277
- const values = {};
278
- for (const value of (_a = typeDef[import_definition.EnumKeys.values]) != null ? _a : []) {
279
- values[value] = typeof customValues[value] !== "undefined" ? { value: customValues[value] } : {};
280
- }
281
- enumType = new import_graphql.GraphQLEnumType({
282
- name: typeName,
283
- values
284
- });
285
- this.enumTypeResolvers.set(typeName, enumType);
286
- }
287
- return enumType;
288
- }
289
- return void 0;
290
- }
291
- getDirectiveName(def) {
292
- return def[import_definition.DirectiveKeys.name];
293
- }
294
- }
295
- PartialSchema.parseOptions = { noLocation: true };
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/schema/fragment.ts"],
4
- "sourcesContent": ["import { GraphQLEnumType, GraphQLLeafType, GraphQLScalarType } from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n DirectiveKeys,\n EnumKeys,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n FieldDefinitionRecord,\n FieldKeys,\n InputObjectKeys,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InputValueDefinitionRecord,\n InputValueKeys,\n InterfaceKeys,\n InterfaceTypeDefinitionTuple,\n ObjectKeys,\n ObjectTypeDefinitionTuple,\n OperationTypes,\n ScalarTypeDefinitionTuple,\n SchemaDefinitions,\n TypeKind,\n TypeName,\n TypeReference,\n UnionKeys,\n UnionTypeDefinitionTuple,\n} from \"./definition\";\nimport {\n FunctionFieldResolver,\n ObjectTypeResolver,\n ScalarTypeResolver,\n TypeResolver,\n UserResolvers,\n} from \"../types\";\nimport { isObjectLike } from \"../jsutils/isObjectLike\";\nimport {\n isInterfaceTypeResolver,\n isScalarTypeResolver,\n isSpecifiedScalarType,\n isUnionTypeResolver,\n specifiedScalarResolvers,\n} from \"./resolvers\";\nimport { typeNameFromReference } from \"./reference\";\n\ntype SchemaId = string;\n\nexport type SchemaFragment = {\n schemaId: SchemaId;\n definitions: SchemaDefinitions;\n resolvers: UserResolvers;\n operationTypes?: OperationTypes;\n};\n\nexport type SchemaFragmentLoadByField = {\n kind: \"byField\";\n parentTypeName: TypeName;\n fieldName: string;\n};\n\nexport type SchemaFragmentLoadRequest = SchemaFragmentLoadByField;\nexport type SchemaFragmentLoaderResult = {\n mergedFragment: SchemaFragment;\n mergedContextValue?: unknown;\n};\n\nexport type SchemaFragmentLoader = (\n currentFragment: SchemaFragment,\n currentContextValue: unknown,\n req: SchemaFragmentLoadRequest,\n) => Promise<SchemaFragmentLoaderResult>;\n\nconst specifiedScalarDefinition: ScalarTypeDefinitionTuple = [TypeKind.SCALAR];\nconst typeNameMetaFieldDef: FieldDefinition = \"String\";\nconst resolveTypeName: FunctionFieldResolver<unknown, unknown> = (\n _source,\n _args,\n _context,\n info,\n) => info.parentTypeName;\nconst scalarTypeResolversBySchema = new Map<\n SchemaId,\n Map<TypeName, GraphQLScalarType>\n>();\nconst enumTypeResolversBySchema = new Map<\n SchemaId,\n Map<TypeName, GraphQLEnumType>\n>();\nconst emptyObject = Object.freeze(Object.create(null));\n\nexport class PartialSchema {\n static parseOptions = { noLocation: true };\n\n private schemaId: string;\n private definitions: SchemaDefinitions;\n private resolvers: UserResolvers;\n private operationTypes: OperationTypes | undefined;\n\n private scalarTypeResolvers: Map<TypeName, ScalarTypeResolver>;\n private enumTypeResolvers: Map<TypeName, GraphQLEnumType>;\n\n constructor(fragment: SchemaFragment) {\n this.schemaId = fragment.schemaId;\n this.definitions = fragment.definitions;\n this.resolvers = fragment.resolvers;\n this.operationTypes = fragment.operationTypes;\n\n let scalarTypeResolvers = scalarTypeResolversBySchema.get(this.schemaId);\n if (!scalarTypeResolvers) {\n scalarTypeResolvers = new Map<TypeName, ScalarTypeResolver>();\n scalarTypeResolversBySchema.set(this.schemaId, scalarTypeResolvers);\n }\n this.scalarTypeResolvers = scalarTypeResolvers;\n\n let enumTypeResolvers = enumTypeResolversBySchema.get(this.schemaId);\n if (!enumTypeResolvers) {\n enumTypeResolvers = new Map<TypeName, GraphQLEnumType>();\n enumTypeResolversBySchema.set(this.schemaId, enumTypeResolvers);\n }\n this.enumTypeResolvers = enumTypeResolvers;\n }\n\n public updateSchemaFragment(fragment: SchemaFragment) {\n if (this.schemaId !== fragment.schemaId) {\n throw new Error(\n `Cannot use new schema fragment: old and new fragments describe different schemas:` +\n ` ${this.schemaId} vs. ${fragment.schemaId}`,\n );\n }\n this.schemaId = fragment.schemaId;\n this.definitions = fragment.definitions;\n this.resolvers = fragment.resolvers;\n this.operationTypes = fragment.operationTypes;\n }\n\n public getTypeReference(\n tupleOrRef: FieldDefinition | InputValueDefinition,\n ): TypeReference {\n return Array.isArray(tupleOrRef) ? tupleOrRef[0] : tupleOrRef;\n }\n\n public getObjectType(\n typeName: TypeName,\n ): ObjectTypeDefinitionTuple | undefined {\n const type = this.definitions.types[typeName];\n return type?.[0] === TypeKind.OBJECT ? type : undefined;\n }\n\n public getObjectFields(\n def: ObjectTypeDefinitionTuple,\n ): FieldDefinitionRecord | undefined {\n return def[ObjectKeys.fields];\n }\n\n public addInterfaceImplementation(\n interfaceType: TypeName,\n objectType: TypeName,\n ) {\n const iface = this.getInterfaceType(interfaceType);\n const type = this.definitions.types[objectType];\n\n if (!iface) {\n throw new Error(\n `Type ${interfaceType} either doesn't exist or is not an interface`,\n );\n }\n if (!type) {\n this.definitions.types[objectType] = [\n TypeKind.OBJECT,\n Object.create(null),\n [interfaceType],\n ];\n return;\n }\n let knownInterfaces = type[ObjectKeys.interfaces];\n if (!knownInterfaces) {\n knownInterfaces = [];\n type[ObjectKeys.interfaces] = knownInterfaces;\n }\n if (!knownInterfaces.includes(interfaceType)) {\n knownInterfaces.push(interfaceType);\n }\n }\n\n public getField(typeName: TypeName, fieldName: string) {\n if (fieldName === \"__typename\") {\n return typeNameMetaFieldDef;\n }\n return (\n this.getOwnField(typeName, fieldName) ??\n this.findInterfaceField(typeName, fieldName)\n );\n }\n\n private getOwnField(\n typeName: TypeName,\n fieldName: string,\n ): FieldDefinition | undefined {\n const type = this.definitions.types[typeName];\n if (!type) {\n return undefined;\n }\n if (type[0] === TypeKind.OBJECT) {\n return type[ObjectKeys.fields]?.[fieldName];\n }\n if (type[0] === TypeKind.INTERFACE) {\n return type[InterfaceKeys.fields]?.[fieldName];\n }\n return undefined;\n }\n\n private findInterfaceField(typeName: TypeName, fieldName: string) {\n const type = this.definitions.types[typeName];\n if (!type) {\n return undefined;\n }\n if (type[0] === TypeKind.OBJECT && type[ObjectKeys.interfaces]) {\n return this.findField(type[ObjectKeys.interfaces], fieldName);\n }\n if (type[0] === TypeKind.INTERFACE && type[InterfaceKeys.interfaces]) {\n return this.findField(type[InterfaceKeys.interfaces], fieldName);\n }\n return undefined;\n }\n\n private findField(interfaceTypes: TypeName[], fieldName: string) {\n // TODO: merge field definition from all interface types to ensure all necessary arguments are present\n // (or maybe instead always encode all arguments in the schema fragment for simplicity?)\n for (const interfaceName of interfaceTypes) {\n const ownField = this.getOwnField(interfaceName, fieldName);\n if (ownField !== undefined) {\n return ownField;\n }\n }\n return undefined;\n }\n\n public getFieldArguments(\n field: FieldDefinition,\n ): InputValueDefinitionRecord | undefined {\n return Array.isArray(field) ? field[FieldKeys.arguments] : undefined;\n }\n\n public getDirectiveArguments(\n directive: DirectiveDefinitionTuple,\n ): InputValueDefinitionRecord | undefined {\n return directive[DirectiveKeys.arguments];\n }\n\n public resolveDefinitionArguments(\n def: FieldDefinition | DirectiveDefinitionTuple,\n ): InputValueDefinitionRecord | undefined {\n // Note: both FieldDefinition and DirectiveDefinition store arguments at the same position\n return Array.isArray(def) ? def[FieldKeys.arguments] : undefined;\n }\n\n public getInputObjectType(\n typeRef: TypeReference,\n ): InputObjectTypeDefinitionTuple | undefined {\n const type = this.definitions.types[typeNameFromReference(typeRef)];\n return type?.[0] === TypeKind.INPUT ? type : undefined;\n }\n\n public getInputObjectFields(\n obj: InputObjectTypeDefinitionTuple,\n ): InputValueDefinitionRecord {\n return obj[InputObjectKeys.fields];\n }\n\n public getInputDefaultValue(\n inputValue: InputValueDefinition,\n ): unknown | undefined {\n return Array.isArray(inputValue)\n ? inputValue[InputValueKeys.defaultValue]\n : undefined;\n }\n\n public getLeafType(\n typeRef: TypeReference,\n ): EnumTypeDefinitionTuple | ScalarTypeDefinitionTuple | undefined {\n const typeName = typeNameFromReference(typeRef);\n\n if (isSpecifiedScalarType(typeName)) {\n return specifiedScalarDefinition;\n }\n const type = this.definitions.types[typeName];\n if (type?.[0] !== TypeKind.ENUM && type?.[0] !== TypeKind.SCALAR) {\n return undefined;\n }\n return type;\n }\n\n public isDefined(typeRef: TypeReference): boolean {\n if (typeof typeRef === \"number\") {\n // Fast-path: spec type\n return true;\n }\n const types = this.definitions.types;\n const typeName = typeNameFromReference(typeRef);\n return !!types[typeName] || isSpecifiedScalarType(typeName);\n }\n\n public isInputType(typeRef: TypeReference): boolean {\n if (typeof typeRef === \"number\") {\n // Fast-path: all spec types are input types\n return true;\n }\n const typeName = typeNameFromReference(typeRef);\n const kind = this.definitions.types[typeName]?.[0];\n return (\n isSpecifiedScalarType(typeName) ||\n kind === TypeKind.ENUM ||\n kind === TypeKind.INPUT ||\n kind === TypeKind.SCALAR\n );\n }\n\n public isObjectType(typeRef: TypeReference): boolean {\n if (typeof typeRef === \"number\") {\n // Fast-path: all spec types are scalars\n return false;\n }\n const types = this.definitions.types;\n const type = types[typeRef] ?? types[typeNameFromReference(typeRef)];\n return type?.[0] === TypeKind.OBJECT;\n }\n\n public isAbstractType(typeRef: TypeReference): boolean {\n if (typeof typeRef === \"number\") {\n // Fast-path: all spec types are scalars\n return false;\n }\n const types = this.definitions.types;\n const type = types[typeRef] ?? types[typeNameFromReference(typeRef)];\n return type?.[0] === TypeKind.UNION || type?.[0] === TypeKind.INTERFACE;\n }\n\n public getUnionType(\n typeRef: TypeReference,\n ): UnionTypeDefinitionTuple | undefined {\n const types = this.definitions.types;\n const type = types[typeRef] ?? types[typeNameFromReference(typeRef)];\n return type?.[0] === TypeKind.UNION ? type : undefined;\n }\n\n public getInterfaceType(\n typeRef: TypeReference,\n ): InterfaceTypeDefinitionTuple | undefined {\n const types = this.definitions.types;\n const type = types[typeRef] ?? types[typeNameFromReference(typeRef)];\n return type?.[0] === TypeKind.INTERFACE ? type : undefined;\n }\n\n public isSubType(\n abstractTypeName: TypeName,\n maybeSubTypeName: TypeName,\n ): boolean {\n const union = this.getUnionType(abstractTypeName);\n if (union) {\n return union[UnionKeys.types].includes(maybeSubTypeName);\n }\n const object = this.getObjectType(maybeSubTypeName);\n if (object) {\n return !!object[ObjectKeys.interfaces]?.includes(abstractTypeName);\n }\n const iface = this.getInterfaceType(maybeSubTypeName);\n if (iface) {\n return !!iface[InterfaceKeys.interfaces]?.includes(abstractTypeName);\n }\n return false;\n }\n\n public getFieldResolver(\n typeName: TypeName,\n fieldName: string,\n ): FunctionFieldResolver<unknown, unknown> | undefined {\n if (fieldName === \"__typename\") {\n return resolveTypeName;\n }\n // TODO: sanity check that this is an object type resolver\n const typeResolvers = this.resolvers[typeName] as\n | ObjectTypeResolver<unknown, unknown, unknown>\n | undefined;\n const fieldResolver = typeResolvers?.[fieldName];\n return typeof fieldResolver === \"function\"\n ? fieldResolver\n : fieldResolver?.resolve;\n }\n\n public getSubscriptionFieldResolver(\n subscriptionTypeName: TypeName,\n fieldName: string,\n ): FunctionFieldResolver<unknown, unknown> | undefined {\n // TODO: sanity check that this is an object type resolver\n const typeResolvers = this.resolvers[subscriptionTypeName] as\n | ObjectTypeResolver<unknown, unknown, unknown>\n | undefined;\n const fieldResolver = typeResolvers?.[fieldName];\n return typeof fieldResolver === \"function\"\n ? fieldResolver\n : fieldResolver?.subscribe;\n }\n\n public getAbstractTypeResolver(\n typeName: TypeName,\n ): TypeResolver<unknown, unknown> | undefined {\n const resolver = this.resolvers[typeName];\n return resolver &&\n (isUnionTypeResolver(resolver) || isInterfaceTypeResolver(resolver))\n ? resolver.__resolveType\n : undefined;\n }\n\n public getLeafTypeResolver(\n typeRef: TypeReference,\n ): GraphQLLeafType | undefined {\n // TODO: consider removing GraphQLEnumType and GraphQLScalarType\n const typeName = typeNameFromReference(typeRef);\n\n if (specifiedScalarResolvers[typeName]) {\n return specifiedScalarResolvers[typeName];\n }\n\n const typeDef = this.getLeafType(typeRef);\n if (!typeDef) {\n // TODO: Could be still in resolvers (i.e., add \"found in resolvers, not found in schema\" error?)\n return undefined;\n }\n\n if (typeDef[0] === TypeKind.SCALAR) {\n let scalarType = this.scalarTypeResolvers.get(typeName);\n if (!scalarType) {\n const tmp = this.resolvers[typeName];\n scalarType = isScalarTypeResolver(tmp)\n ? tmp\n : new GraphQLScalarType({ name: typeName, description: \"\" });\n this.scalarTypeResolvers.set(typeName, scalarType);\n }\n return scalarType;\n }\n if (typeDef[0] === TypeKind.ENUM) {\n let enumType = this.enumTypeResolvers.get(typeName);\n if (!enumType) {\n const tmp = this.resolvers[typeName]; // Can only be graphql-tools map\n const customValues = isObjectLike(tmp) ? tmp : emptyObject;\n\n const values: Record<string, object> = {};\n for (const value of typeDef[EnumKeys.values] ?? []) {\n values[value] =\n typeof customValues[value] !== \"undefined\"\n ? { value: customValues[value] }\n : {};\n }\n enumType = new GraphQLEnumType({\n name: typeName,\n values,\n });\n this.enumTypeResolvers.set(typeName, enumType);\n }\n return enumType;\n }\n return undefined;\n }\n\n public getDirectiveName(def: DirectiveDefinitionTuple) {\n return def[DirectiveKeys.name];\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }