@graphitation/supermassive 2.5.0 → 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +18 -2
  3. package/lib/benchmarks/index.js +2 -2
  4. package/lib/benchmarks/index.js.map +2 -2
  5. package/lib/benchmarks/index.mjs +2 -2
  6. package/lib/benchmarks/index.mjs.map +2 -2
  7. package/lib/benchmarks/swapi-schema/index.d.ts +4 -2
  8. package/lib/benchmarks/swapi-schema/index.d.ts.map +1 -1
  9. package/lib/benchmarks/swapi-schema/index.js +8 -2
  10. package/lib/benchmarks/swapi-schema/index.js.map +2 -2
  11. package/lib/benchmarks/swapi-schema/index.mjs +8 -2
  12. package/lib/benchmarks/swapi-schema/index.mjs.map +2 -2
  13. package/lib/benchmarks/swapi-schema/makeExecutableSchema.d.ts +7 -0
  14. package/lib/benchmarks/swapi-schema/makeExecutableSchema.d.ts.map +1 -0
  15. package/lib/benchmarks/swapi-schema/makeExecutableSchema.js +916 -0
  16. package/lib/benchmarks/swapi-schema/makeExecutableSchema.js.map +7 -0
  17. package/lib/benchmarks/swapi-schema/makeExecutableSchema.mjs +903 -0
  18. package/lib/benchmarks/swapi-schema/makeExecutableSchema.mjs.map +7 -0
  19. package/lib/benchmarks/swapi-schema/resolvers.d.ts.map +1 -1
  20. package/lib/benchmarks/swapi-schema/resolvers.js +53 -17
  21. package/lib/benchmarks/swapi-schema/resolvers.js.map +2 -2
  22. package/lib/benchmarks/swapi-schema/resolvers.mjs +54 -18
  23. package/lib/benchmarks/swapi-schema/resolvers.mjs.map +2 -2
  24. package/lib/collectFields.d.ts +28 -6
  25. package/lib/collectFields.d.ts.map +1 -1
  26. package/lib/collectFields.js +155 -28
  27. package/lib/collectFields.js.map +3 -3
  28. package/lib/collectFields.mjs +150 -29
  29. package/lib/collectFields.mjs.map +2 -2
  30. package/lib/definition.js +1 -1
  31. package/lib/definition.js.map +2 -2
  32. package/lib/definition.mjs +1 -1
  33. package/lib/definition.mjs.map +2 -2
  34. package/lib/directives.d.ts +2 -73
  35. package/lib/directives.d.ts.map +1 -1
  36. package/lib/directives.js +10 -123
  37. package/lib/directives.js.map +2 -2
  38. package/lib/directives.mjs +13 -122
  39. package/lib/directives.mjs.map +2 -2
  40. package/lib/executeWithoutSchema.d.ts +50 -13
  41. package/lib/executeWithoutSchema.d.ts.map +1 -1
  42. package/lib/executeWithoutSchema.js +1038 -184
  43. package/lib/executeWithoutSchema.js.map +3 -3
  44. package/lib/executeWithoutSchema.mjs +1049 -186
  45. package/lib/executeWithoutSchema.mjs.map +3 -3
  46. package/lib/extractImplicitTypesRuntime.js +2 -2
  47. package/lib/extractImplicitTypesRuntime.js.map +2 -2
  48. package/lib/extractImplicitTypesRuntime.mjs +2 -2
  49. package/lib/extractImplicitTypesRuntime.mjs.map +2 -2
  50. package/lib/hooks/types.d.ts +1 -1
  51. package/lib/hooks/types.d.ts.map +1 -1
  52. package/lib/index.d.ts +4 -3
  53. package/lib/index.d.ts.map +1 -1
  54. package/lib/index.js +4 -1
  55. package/lib/index.js.map +2 -2
  56. package/lib/index.mjs +4 -1
  57. package/lib/index.mjs.map +2 -2
  58. package/lib/jsutils/AccumulatorMap.d.ts +8 -0
  59. package/lib/jsutils/AccumulatorMap.d.ts.map +1 -0
  60. package/lib/jsutils/AccumulatorMap.js +36 -0
  61. package/lib/jsutils/AccumulatorMap.js.map +7 -0
  62. package/lib/jsutils/AccumulatorMap.mjs +17 -0
  63. package/lib/jsutils/AccumulatorMap.mjs.map +7 -0
  64. package/lib/jsutils/Maybe.d.ts +1 -1
  65. package/lib/jsutils/Maybe.d.ts.map +1 -1
  66. package/lib/jsutils/ObjMap.d.ts +2 -2
  67. package/lib/jsutils/ObjMap.d.ts.map +1 -1
  68. package/lib/jsutils/PromiseOrValue.d.ts +1 -1
  69. package/lib/jsutils/PromiseOrValue.d.ts.map +1 -1
  70. package/lib/jsutils/didYouMean.d.ts +1 -2
  71. package/lib/jsutils/didYouMean.d.ts.map +1 -1
  72. package/lib/jsutils/didYouMean.js.map +2 -2
  73. package/lib/jsutils/didYouMean.mjs.map +2 -2
  74. package/lib/jsutils/instanceOf.js.map +2 -2
  75. package/lib/jsutils/instanceOf.mjs.map +2 -2
  76. package/lib/subscribeWithSchema.d.ts +3 -2
  77. package/lib/subscribeWithSchema.d.ts.map +1 -1
  78. package/lib/subscribeWithSchema.js.map +2 -2
  79. package/lib/subscribeWithSchema.mjs.map +2 -2
  80. package/lib/subscribeWithoutSchema.d.ts +3 -35
  81. package/lib/subscribeWithoutSchema.d.ts.map +1 -1
  82. package/lib/subscribeWithoutSchema.js +1 -163
  83. package/lib/subscribeWithoutSchema.js.map +2 -2
  84. package/lib/subscribeWithoutSchema.mjs +2 -175
  85. package/lib/subscribeWithoutSchema.mjs.map +2 -2
  86. package/lib/supermassive-ast/TypedAST.d.ts +370 -0
  87. package/lib/supermassive-ast/TypedAST.d.ts.map +1 -0
  88. package/lib/supermassive-ast/TypedAST.js +29 -0
  89. package/lib/supermassive-ast/TypedAST.js.map +7 -0
  90. package/lib/supermassive-ast/TypedAST.mjs +10 -0
  91. package/lib/supermassive-ast/TypedAST.mjs.map +7 -0
  92. package/lib/supermassive-ast/addTypesToRequestDocument.d.ts +56 -0
  93. package/lib/supermassive-ast/addTypesToRequestDocument.d.ts.map +1 -0
  94. package/lib/supermassive-ast/addTypesToRequestDocument.js +473 -0
  95. package/lib/supermassive-ast/addTypesToRequestDocument.js.map +7 -0
  96. package/lib/supermassive-ast/addTypesToRequestDocument.mjs +463 -0
  97. package/lib/supermassive-ast/addTypesToRequestDocument.mjs.map +7 -0
  98. package/lib/supermassive-ast/annotateDocumentGraphQLTransform.d.ts +3 -0
  99. package/lib/supermassive-ast/annotateDocumentGraphQLTransform.d.ts.map +1 -0
  100. package/lib/supermassive-ast/annotateDocumentGraphQLTransform.js +34 -0
  101. package/lib/supermassive-ast/annotateDocumentGraphQLTransform.js.map +7 -0
  102. package/lib/supermassive-ast/annotateDocumentGraphQLTransform.mjs +17 -0
  103. package/lib/supermassive-ast/annotateDocumentGraphQLTransform.mjs.map +7 -0
  104. package/lib/supermassive-ast/directives.d.ts +36 -0
  105. package/lib/supermassive-ast/directives.d.ts.map +1 -0
  106. package/lib/supermassive-ast/directives.js +165 -0
  107. package/lib/supermassive-ast/directives.js.map +7 -0
  108. package/lib/supermassive-ast/directives.mjs +153 -0
  109. package/lib/supermassive-ast/directives.mjs.map +7 -0
  110. package/lib/supermassive-ast/index.d.ts +6 -0
  111. package/lib/supermassive-ast/index.d.ts.map +1 -0
  112. package/lib/supermassive-ast/index.js +37 -0
  113. package/lib/supermassive-ast/index.js.map +7 -0
  114. package/lib/supermassive-ast/index.mjs +27 -0
  115. package/lib/supermassive-ast/index.mjs.map +7 -0
  116. package/lib/types.d.ts +80 -24
  117. package/lib/types.d.ts.map +1 -1
  118. package/lib/types.js +14 -0
  119. package/lib/types.js.map +2 -2
  120. package/lib/types.mjs +11 -0
  121. package/lib/types.mjs.map +3 -3
  122. package/lib/utilities/mergeResolvers.d.ts +1 -1
  123. package/lib/utilities/mergeResolvers.d.ts.map +1 -1
  124. package/lib/utilities/mergeResolvers.js.map +2 -2
  125. package/lib/utilities/mergeResolvers.mjs.map +2 -2
  126. package/lib/utilities/typeNameFromAST.d.ts +1 -1
  127. package/lib/utilities/typeNameFromAST.d.ts.map +1 -1
  128. package/lib/utilities/typeNameFromAST.js.map +1 -1
  129. package/lib/utilities/typeNameFromAST.mjs.map +1 -1
  130. package/lib/values.d.ts +3 -4
  131. package/lib/values.d.ts.map +1 -1
  132. package/lib/values.js +10 -14
  133. package/lib/values.js.map +2 -2
  134. package/lib/values.mjs +10 -14
  135. package/lib/values.mjs.map +2 -2
  136. package/package.json +4 -9
package/lib/values.mjs CHANGED
@@ -53,7 +53,7 @@ function coerceVariableValues(resolvers, varDefNodes, inputs, onError) {
53
53
  onError(
54
54
  new GraphQLError(
55
55
  `Variable "$${varName}" expected value of type "${varTypeStr}" which cannot be used as an input type.`,
56
- varDefNode.type
56
+ { nodes: varDefNode.type }
57
57
  )
58
58
  );
59
59
  continue;
@@ -69,7 +69,7 @@ function coerceVariableValues(resolvers, varDefNodes, inputs, onError) {
69
69
  onError(
70
70
  new GraphQLError(
71
71
  `Variable "$${varName}" of required type "${varTypeStr}" was not provided.`,
72
- varDefNode
72
+ { nodes: varDefNode }
73
73
  )
74
74
  );
75
75
  }
@@ -81,7 +81,7 @@ function coerceVariableValues(resolvers, varDefNodes, inputs, onError) {
81
81
  onError(
82
82
  new GraphQLError(
83
83
  `Variable "$${varName}" of non-null type "${varTypeStr}" must not be null.`,
84
- varDefNode
84
+ { nodes: varDefNode }
85
85
  )
86
86
  );
87
87
  continue;
@@ -95,14 +95,10 @@ function coerceVariableValues(resolvers, varDefNodes, inputs, onError) {
95
95
  prefix += ` at "${varName}${printPathArray(path)}"`;
96
96
  }
97
97
  onError(
98
- new GraphQLError(
99
- prefix + "; " + error.message,
100
- varDefNode,
101
- void 0,
102
- void 0,
103
- void 0,
104
- error.originalError
105
- )
98
+ new GraphQLError(prefix + "; " + error.message, {
99
+ nodes: varDefNode,
100
+ originalError: error.originalError
101
+ })
106
102
  );
107
103
  }
108
104
  );
@@ -122,7 +118,7 @@ function getArgumentValues(resolvers, node, variableValues) {
122
118
  `Argument "$${name}" expected value of type "${inspect(
123
119
  argType
124
120
  )}" which cannot be used as an input type.`,
125
- argumentNode
121
+ { nodes: argumentNode }
126
122
  );
127
123
  }
128
124
  let valueNode = argumentNode.value;
@@ -134,7 +130,7 @@ function getArgumentValues(resolvers, node, variableValues) {
134
130
  } else if (isNonNullType(argType)) {
135
131
  throw new GraphQLError(
136
132
  `Argument "${name}" of required type "${inspect(argType)}" was provided the variable "$${variableName}" which was not provided a runtime value.`,
137
- valueNode
133
+ { nodes: valueNode }
138
134
  );
139
135
  }
140
136
  continue;
@@ -150,7 +146,7 @@ function getArgumentValues(resolvers, node, variableValues) {
150
146
  `Argument "${name}" has invalid value ${print(
151
147
  valueNode
152
148
  )}.`,
153
- valueNode
149
+ { nodes: valueNode }
154
150
  );
155
151
  }
156
152
  coercedValues[name] = coercedValue;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/values.ts"],
4
- "sourcesContent": ["import {\n ArgumentNode as GraphQLArgumentNode,\n GraphQLBoolean,\n GraphQLError,\n GraphQLFloat,\n GraphQLID,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLScalarType,\n GraphQLString,\n GraphQLType,\n isInputType,\n isNonNullType,\n Kind,\n print,\n TypeNode as GraphQLTypeNode,\n ValueNode as GraphQLValueNode,\n VariableDefinitionNode as GraphQLVariableDefinitionNode,\n valueFromAST,\n coerceInputValue,\n} from \"graphql\";\nimport {\n DirectiveNode,\n FieldNode,\n TypeNode,\n VariableDefinitionNode,\n} from \"@graphitation/supermassive-ast\";\nimport { inspect } from \"./jsutils/inspect\";\nimport type { Maybe } from \"./jsutils/Maybe\";\nimport type { ObjMap } from \"./jsutils/ObjMap\";\nimport { printPathArray } from \"./jsutils/printPathArray\";\nimport { Resolvers } from \"./types\";\nimport { GraphQLDirective } from \"./directives\";\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 resolvers: Resolvers,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { [variable: string]: unknown },\n options?: { maxErrors?: number },\n): CoercedVariableValues {\n const errors = [];\n const maxErrors = options?.maxErrors;\n try {\n const coerced = coerceVariableValues(\n resolvers,\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);\n }\n\n return { errors: errors as GraphQLError[] };\n}\n\nfunction coerceVariableValues(\n resolvers: Resolvers,\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 varTypeAst = varDefNode.type;\n const varType: GraphQLType = graphqlTypeFromTypeAst(resolvers, varTypeAst);\n\n if (!isInputType(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = inspect(varType);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n varDefNode.type as GraphQLTypeNode,\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(\n varDefNode.defaultValue as Maybe<GraphQLValueNode>,\n varType,\n );\n } else if (isNonNullType(varType)) {\n const varTypeStr = print(varDefNode.type as GraphQLTypeNode);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n varDefNode as GraphQLVariableDefinitionNode,\n ),\n );\n }\n continue;\n }\n\n const value = inputs[varName];\n if (value === null && isNonNullType(varType)) {\n const varTypeStr = inspect(varType);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n varDefNode as GraphQLVariableDefinitionNode,\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varType,\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(\n prefix + \"; \" + error.message,\n varDefNode as GraphQLVariableDefinitionNode,\n undefined,\n undefined,\n undefined,\n 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 resolvers: Resolvers,\n node: FieldNode | DirectiveNode,\n variableValues?: Maybe<ObjMap<unknown>>,\n): { [argument: string]: unknown } {\n const coercedValues: { [argument: string]: unknown } = {};\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const argumentNodes = node.arguments ?? [];\n\n for (const argumentNode of argumentNodes) {\n const name = argumentNode.name.value;\n const argTypeNode = argumentNode.__type;\n const argType = graphqlTypeFromTypeAst(resolvers, argTypeNode);\n\n if (!isInputType(argType)) {\n throw new GraphQLError(\n `Argument \"$${name}\" expected value of type \"${inspect(\n argType,\n )}\" which cannot be used as an input type.`,\n argumentNode as GraphQLArgumentNode,\n );\n }\n\n let valueNode = argumentNode.value;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (\n variableValues == null ||\n !hasOwnProperty(variableValues, variableName)\n ) {\n if (argumentNode.__defaultValue) {\n valueNode = argumentNode.__defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of required type \"${inspect(argType)}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n valueNode as GraphQLValueNode,\n );\n }\n\n continue;\n }\n }\n\n const coercedValue = valueFromAST(\n valueNode as GraphQLValueNode,\n argType,\n 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(\n valueNode as GraphQLValueNode,\n )}.`,\n valueNode as GraphQLValueNode,\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 directiveDef: GraphQLDirective,\n node: { directives?: ReadonlyArray<DirectiveNode> },\n resolvers: Resolvers,\n variableValues?: Maybe<ObjMap<unknown>>,\n): undefined | { [argument: string]: unknown } {\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const directiveNode = node.directives?.find(\n (directive) => directive.name.value === directiveDef.name,\n );\n\n if (directiveNode) {\n return getArgumentValues(resolvers, directiveNode, variableValues);\n }\n}\n\nfunction hasOwnProperty(obj: unknown, prop: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport const specifiedScalars: { [key: string]: GraphQLScalarType } = {\n ID: GraphQLID,\n String: GraphQLString,\n Int: GraphQLInt,\n Float: GraphQLFloat,\n Boolean: GraphQLBoolean,\n};\n\nfunction graphqlTypeFromTypeAst(\n resolvers: Resolvers,\n node: TypeNode,\n): GraphQLType {\n if (node.kind === Kind.NON_NULL_TYPE) {\n return new GraphQLNonNull(graphqlTypeFromTypeAst(resolvers, node.type));\n } else if (node.kind === Kind.LIST_TYPE) {\n return new GraphQLList(graphqlTypeFromTypeAst(resolvers, node.type));\n } else {\n const typeName = node.name.value;\n const type = specifiedScalars[typeName] || resolvers[typeName];\n return type as unknown as GraphQLType;\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n ArgumentNode as GraphQLArgumentNode,\n GraphQLBoolean,\n GraphQLError,\n GraphQLFloat,\n GraphQLID,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLScalarType,\n GraphQLString,\n GraphQLType,\n isInputType,\n isNonNullType,\n Kind,\n print,\n TypeNode as GraphQLTypeNode,\n ValueNode as GraphQLValueNode,\n VariableDefinitionNode as GraphQLVariableDefinitionNode,\n valueFromAST,\n coerceInputValue,\n GraphQLDirective,\n} from \"graphql\";\nimport {\n DirectiveNode,\n FieldNode,\n TypeNode,\n VariableDefinitionNode,\n} from \"./supermassive-ast\";\nimport { inspect } from \"./jsutils/inspect\";\nimport type { Maybe } from \"./jsutils/Maybe\";\nimport type { ObjMap } from \"./jsutils/ObjMap\";\nimport { printPathArray } from \"./jsutils/printPathArray\";\nimport { Resolvers } 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 resolvers: Resolvers,\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 resolvers,\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 resolvers: Resolvers,\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 varTypeAst = varDefNode.type;\n const varType: GraphQLType = graphqlTypeFromTypeAst(resolvers, varTypeAst);\n\n if (!isInputType(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = inspect(varType);\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 as GraphQLTypeNode },\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(\n varDefNode.defaultValue as Maybe<GraphQLValueNode>,\n varType,\n );\n } else if (isNonNullType(varType)) {\n const varTypeStr = print(varDefNode.type as GraphQLTypeNode);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n { nodes: varDefNode as GraphQLVariableDefinitionNode },\n ),\n );\n }\n continue;\n }\n\n const value = inputs[varName];\n if (value === null && isNonNullType(varType)) {\n const varTypeStr = inspect(varType);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n { nodes: varDefNode as GraphQLVariableDefinitionNode },\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varType,\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 as GraphQLVariableDefinitionNode,\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 resolvers: Resolvers,\n node: FieldNode | DirectiveNode,\n variableValues?: Maybe<ObjMap<unknown>>,\n): { [argument: string]: unknown } {\n const coercedValues: { [argument: string]: unknown } = {};\n\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const argumentNodes = node.arguments ?? [];\n\n for (const argumentNode of argumentNodes) {\n const name = argumentNode.name.value;\n const argTypeNode = argumentNode.__type;\n const argType = graphqlTypeFromTypeAst(resolvers, argTypeNode);\n\n if (!isInputType(argType)) {\n throw new GraphQLError(\n `Argument \"$${name}\" expected value of type \"${inspect(\n argType,\n )}\" which cannot be used as an input type.`,\n { nodes: argumentNode as GraphQLArgumentNode },\n );\n }\n\n let valueNode = argumentNode.value;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (\n variableValues == null ||\n !hasOwnProperty(variableValues, variableName)\n ) {\n if (argumentNode.__defaultValue) {\n valueNode = argumentNode.__defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of required type \"${inspect(argType)}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n { nodes: valueNode as GraphQLValueNode },\n );\n }\n\n continue;\n }\n }\n\n const coercedValue = valueFromAST(\n valueNode as GraphQLValueNode,\n argType,\n 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(\n valueNode as GraphQLValueNode,\n )}.`,\n { nodes: valueNode as GraphQLValueNode },\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 directiveDef: GraphQLDirective,\n node: { directives?: ReadonlyArray<DirectiveNode> },\n resolvers: Resolvers,\n variableValues?: Maybe<ObjMap<unknown>>,\n): undefined | { [argument: string]: unknown } {\n // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')\n const directiveNode = node.directives?.find(\n (directive) => directive.name.value === directiveDef.name,\n );\n\n if (directiveNode) {\n return getArgumentValues(resolvers, directiveNode, variableValues);\n }\n}\n\nfunction hasOwnProperty(obj: unknown, prop: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport const specifiedScalars: { [key: string]: GraphQLScalarType } = {\n ID: GraphQLID,\n String: GraphQLString,\n Int: GraphQLInt,\n Float: GraphQLFloat,\n Boolean: GraphQLBoolean,\n};\n\nfunction graphqlTypeFromTypeAst(\n resolvers: Resolvers,\n node: TypeNode,\n): GraphQLType {\n if (node.kind === Kind.NON_NULL_TYPE) {\n return new GraphQLNonNull(graphqlTypeFromTypeAst(resolvers, node.type));\n } else if (node.kind === Kind.LIST_TYPE) {\n return new GraphQLList(graphqlTypeFromTypeAst(resolvers, node.type));\n } else {\n const typeName = node.name.value;\n const type = specifiedScalars[typeName] || resolvers[typeName];\n return type as GraphQLType;\n }\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": "2.5.0",
4
+ "version": "3.0.0-alpha.1",
5
5
  "main": "./lib/index",
6
6
  "repository": {
7
7
  "type": "git",
@@ -18,10 +18,8 @@
18
18
  "benchmark": "ts-node -T ./src/benchmarks/index.ts"
19
19
  },
20
20
  "devDependencies": {
21
- "@graphitation/graphql-js-tag": "*",
22
21
  "@graphitation/supermassive-extractors": "*",
23
22
  "@graphitation/cli": "*",
24
- "@graphql-tools/schema": "^9.0.19",
25
23
  "@ts-morph/bootstrap": "^0.11.0",
26
24
  "@types/benchmark": "^2.1.0",
27
25
  "@types/jest": "^26.0.22",
@@ -31,17 +29,14 @@
31
29
  "iterall": "^1.3.0",
32
30
  "monorepo-scripts": "*",
33
31
  "node-json-db": "^1.3.0",
34
- "ts-node": "^10.0.0"
32
+ "ts-node": "^10.0.0",
33
+ "typescript": "^4.9.5"
35
34
  },
36
35
  "sideEffects": false,
37
36
  "access": "public",
38
37
  "publishConfig": {},
39
38
  "dependencies": {
40
- "@graphitation/supermassive-ast": "*",
41
- "@graphql-tools/schema": "^9.0.19",
42
- "commander": "^8.3.0",
43
- "graphql": "^15.6.1",
44
- "typescript": "^4.4.3 <4.5.0"
39
+ "graphql": "^17.0.0-alpha.2"
45
40
  },
46
41
  "types": "./lib/index.d.ts",
47
42
  "module": "./lib/index.mjs",