@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,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
  var valueFromAST_exports = {};
20
30
  __export(valueFromAST_exports, {
@@ -24,7 +34,9 @@ module.exports = __toCommonJS(valueFromAST_exports);
24
34
  var import_invariant = require("../jsutils/invariant");
25
35
  var import_graphql = require("graphql");
26
36
  var import_reference = require("../schema/reference");
27
- function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
37
+ var Definitions = __toESM(require("../schema/definition"));
38
+ var Resolvers = __toESM(require("../schema/resolvers"));
39
+ function valueFromAST(valueNode, typeRef, schemaFragment, variables) {
28
40
  if (!valueNode) {
29
41
  return;
30
42
  }
@@ -43,7 +55,7 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
43
55
  if (valueNode.kind === import_graphql.Kind.NULL) {
44
56
  return;
45
57
  }
46
- return valueFromAST(valueNode, (0, import_reference.unwrap)(typeRef), schemaTypes, variables);
58
+ return valueFromAST(valueNode, (0, import_reference.unwrap)(typeRef), schemaFragment, variables);
47
59
  }
48
60
  if (valueNode.kind === import_graphql.Kind.NULL) {
49
61
  return null;
@@ -62,7 +74,7 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
62
74
  const itemValue = valueFromAST(
63
75
  itemNode,
64
76
  itemTypeRef,
65
- schemaTypes,
77
+ schemaFragment,
66
78
  variables
67
79
  );
68
80
  if (itemValue === void 0) {
@@ -76,7 +88,7 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
76
88
  const coercedValue = valueFromAST(
77
89
  valueNode,
78
90
  itemTypeRef,
79
- schemaTypes,
91
+ schemaFragment,
80
92
  variables
81
93
  );
82
94
  if (coercedValue === void 0) {
@@ -84,7 +96,8 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
84
96
  }
85
97
  return [coercedValue];
86
98
  }
87
- const inputObjectType = schemaTypes.getInputObjectType(typeRef);
99
+ const defs = schemaFragment.definitions;
100
+ const inputObjectType = Definitions.getInputObjectType(defs, typeRef);
88
101
  if (inputObjectType) {
89
102
  if (valueNode.kind !== import_graphql.Kind.OBJECT) {
90
103
  return;
@@ -93,12 +106,12 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
93
106
  const fieldNodes = new Map(
94
107
  valueNode.fields.map((field) => [field.name.value, field])
95
108
  );
96
- const fieldDefs = schemaTypes.getInputObjectFields(inputObjectType);
109
+ const fieldDefs = Definitions.getInputObjectFields(inputObjectType);
97
110
  for (const [name, field] of Object.entries(fieldDefs)) {
98
111
  const fieldNode = fieldNodes.get(name);
99
- const fieldTypeRef = schemaTypes.getTypeReference(field);
112
+ const fieldTypeRef = Definitions.getInputValueTypeReference(field);
100
113
  if (fieldNode == null || isMissingVariable(fieldNode.value, variables)) {
101
- const defaultValue = schemaTypes.getInputDefaultValue(field);
114
+ const defaultValue = Definitions.getInputDefaultValue(field);
102
115
  if (defaultValue !== void 0) {
103
116
  coercedObj[name] = defaultValue;
104
117
  } else if ((0, import_reference.isNonNullType)(fieldTypeRef)) {
@@ -109,7 +122,7 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
109
122
  const fieldValue = valueFromAST(
110
123
  fieldNode.value,
111
124
  fieldTypeRef,
112
- schemaTypes,
125
+ schemaFragment,
113
126
  variables
114
127
  );
115
128
  if (fieldValue === void 0) {
@@ -119,7 +132,7 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
119
132
  }
120
133
  return coercedObj;
121
134
  }
122
- const leafType = schemaTypes.getLeafTypeResolver(typeRef);
135
+ const leafType = Resolvers.getLeafTypeResolver(schemaFragment, typeRef);
123
136
  if (leafType) {
124
137
  let result;
125
138
  try {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/valueFromAST.ts"],
4
- "sourcesContent": ["import { invariant } from \"../jsutils/invariant\";\nimport type { Maybe } from \"../jsutils/Maybe\";\nimport type { ObjMap } from \"../jsutils/ObjMap\";\n\nimport { TypeReference } from \"../schema/definition\";\nimport { PartialSchema } from \"../schema/fragment\";\nimport { ValueNode, Kind } from \"graphql\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n unwrap,\n} from \"../schema/reference\";\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Unknown |\n * | NullValue | null |\n *\n */\nexport function valueFromAST(\n valueNode: Maybe<ValueNode>,\n typeRef: TypeReference,\n schemaTypes: PartialSchema,\n variables?: Maybe<ObjMap<unknown>>,\n): unknown {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (variables == null || variables[variableName] === undefined) {\n // No valid return value.\n return;\n }\n const variableValue = variables[variableName];\n if (variableValue === null && isNonNullType(typeRef)) {\n return; // Invalid: intentionally return no value.\n }\n // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n return variableValue;\n }\n\n if (isNonNullType(typeRef)) {\n if (valueNode.kind === Kind.NULL) {\n return; // Invalid: intentionally return no value.\n }\n return valueFromAST(valueNode, unwrap(typeRef), schemaTypes, variables);\n }\n\n if (valueNode.kind === Kind.NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (isListType(typeRef)) {\n const itemTypeRef = unwrap(typeRef);\n if (valueNode.kind === Kind.LIST) {\n const coercedValues = [];\n for (const itemNode of valueNode.values) {\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (isNonNullType(itemTypeRef)) {\n return; // Invalid: intentionally return no value.\n }\n coercedValues.push(null);\n } else {\n const itemValue = valueFromAST(\n itemNode,\n itemTypeRef,\n schemaTypes,\n variables,\n );\n if (itemValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n coercedValues.push(itemValue);\n }\n }\n return coercedValues;\n }\n const coercedValue = valueFromAST(\n valueNode,\n itemTypeRef,\n schemaTypes,\n variables,\n );\n if (coercedValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n return [coercedValue];\n }\n\n const inputObjectType = schemaTypes.getInputObjectType(typeRef);\n if (inputObjectType) {\n if (valueNode.kind !== Kind.OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n const coercedObj = Object.create(null);\n const fieldNodes = new Map(\n valueNode.fields.map((field) => [field.name.value, field]),\n );\n\n const fieldDefs = schemaTypes.getInputObjectFields(inputObjectType);\n\n for (const [name, field] of Object.entries(fieldDefs)) {\n const fieldNode = fieldNodes.get(name);\n const fieldTypeRef = schemaTypes.getTypeReference(field);\n if (fieldNode == null || isMissingVariable(fieldNode.value, variables)) {\n const defaultValue = schemaTypes.getInputDefaultValue(field);\n if (defaultValue !== undefined) {\n coercedObj[name] = defaultValue;\n } else if (isNonNullType(fieldTypeRef)) {\n return; // Invalid: intentionally return no value.\n }\n continue;\n }\n const fieldValue = valueFromAST(\n fieldNode.value,\n fieldTypeRef,\n schemaTypes,\n variables,\n );\n if (fieldValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n coercedObj[name] = fieldValue;\n }\n return coercedObj;\n }\n\n const leafType = schemaTypes.getLeafTypeResolver(typeRef);\n if (leafType) {\n // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n let result;\n try {\n result = leafType.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n if (result === undefined) {\n return; // Invalid: intentionally return no value.\n }\n return result;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible input types have been considered.\n invariant(false, \"Unexpected input type: \" + inspectTypeReference(typeRef));\n}\n\n// Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\nfunction isMissingVariable(\n valueNode: ValueNode,\n variables: Maybe<ObjMap<unknown>>,\n): boolean {\n return (\n valueNode.kind === Kind.VARIABLE &&\n (variables == null || variables[valueNode.name.value] === undefined)\n );\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA0B;AAM1B,qBAAgC;AAChC,uBAKO;AAsBA,SAAS,aACd,WACA,SACA,aACA,WACS;AACT,MAAI,CAAC,WAAW;AAGd;AAAA,EACF;AAEA,MAAI,UAAU,SAAS,oBAAK,UAAU;AACpC,UAAM,eAAe,UAAU,KAAK;AACpC,QAAI,aAAa,QAAQ,UAAU,YAAY,MAAM,QAAW;AAE9D;AAAA,IACF;AACA,UAAM,gBAAgB,UAAU,YAAY;AAC5C,QAAI,kBAAkB,YAAQ,gCAAc,OAAO,GAAG;AACpD;AAAA,IACF;AAIA,WAAO;AAAA,EACT;AAEA,UAAI,gCAAc,OAAO,GAAG;AAC1B,QAAI,UAAU,SAAS,oBAAK,MAAM;AAChC;AAAA,IACF;AACA,WAAO,aAAa,eAAW,yBAAO,OAAO,GAAG,aAAa,SAAS;AAAA,EACxE;AAEA,MAAI,UAAU,SAAS,oBAAK,MAAM;AAEhC,WAAO;AAAA,EACT;AAEA,UAAI,6BAAW,OAAO,GAAG;AACvB,UAAM,kBAAc,yBAAO,OAAO;AAClC,QAAI,UAAU,SAAS,oBAAK,MAAM;AAChC,YAAM,gBAAgB,CAAC;AACvB,iBAAW,YAAY,UAAU,QAAQ;AACvC,YAAI,kBAAkB,UAAU,SAAS,GAAG;AAG1C,kBAAI,gCAAc,WAAW,GAAG;AAC9B;AAAA,UACF;AACA,wBAAc,KAAK,IAAI;AAAA,QACzB,OAAO;AACL,gBAAM,YAAY;AAAA,YAChB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AACA,cAAI,cAAc,QAAW;AAC3B;AAAA,UACF;AACA,wBAAc,KAAK,SAAS;AAAA,QAC9B;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,QAAI,iBAAiB,QAAW;AAC9B;AAAA,IACF;AACA,WAAO,CAAC,YAAY;AAAA,EACtB;AAEA,QAAM,kBAAkB,YAAY,mBAAmB,OAAO;AAC9D,MAAI,iBAAiB;AACnB,QAAI,UAAU,SAAS,oBAAK,QAAQ;AAClC;AAAA,IACF;AACA,UAAM,aAAa,uBAAO,OAAO,IAAI;AACrC,UAAM,aAAa,IAAI;AAAA,MACrB,UAAU,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,OAAO,KAAK,CAAC;AAAA,IAC3D;AAEA,UAAM,YAAY,YAAY,qBAAqB,eAAe;AAElE,eAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,SAAS,GAAG;AACrD,YAAM,YAAY,WAAW,IAAI,IAAI;AACrC,YAAM,eAAe,YAAY,iBAAiB,KAAK;AACvD,UAAI,aAAa,QAAQ,kBAAkB,UAAU,OAAO,SAAS,GAAG;AACtE,cAAM,eAAe,YAAY,qBAAqB,KAAK;AAC3D,YAAI,iBAAiB,QAAW;AAC9B,qBAAW,IAAI,IAAI;AAAA,QACrB,eAAW,gCAAc,YAAY,GAAG;AACtC;AAAA,QACF;AACA;AAAA,MACF;AACA,YAAM,aAAa;AAAA,QACjB,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,UAAI,eAAe,QAAW;AAC5B;AAAA,MACF;AACA,iBAAW,IAAI,IAAI;AAAA,IACrB;AACA,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,YAAY,oBAAoB,OAAO;AACxD,MAAI,UAAU;AAIZ,QAAI;AACJ,QAAI;AACF,eAAS,SAAS,aAAa,WAAW,SAAS;AAAA,IACrD,SAAS,QAAP;AACA;AAAA,IACF;AACA,QAAI,WAAW,QAAW;AACxB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAGA,kCAAU,OAAO,gCAA4B,uCAAqB,OAAO,CAAC;AAC5E;AAIA,SAAS,kBACP,WACA,WACS;AACT,SACE,UAAU,SAAS,oBAAK,aACvB,aAAa,QAAQ,UAAU,UAAU,KAAK,KAAK,MAAM;AAE9D;",
4
+ "sourcesContent": ["import { invariant } from \"../jsutils/invariant\";\nimport type { Maybe } from \"../jsutils/Maybe\";\nimport type { ObjMap } from \"../jsutils/ObjMap\";\n\nimport type { TypeReference } from \"../schema/reference\";\nimport { ValueNode, Kind } from \"graphql\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n unwrap,\n} from \"../schema/reference\";\nimport * as Definitions from \"../schema/definition\";\nimport * as Resolvers from \"../schema/resolvers\";\nimport { SchemaFragment } from \"../types\";\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Unknown |\n * | NullValue | null |\n *\n */\nexport function valueFromAST(\n valueNode: Maybe<ValueNode>,\n typeRef: TypeReference,\n schemaFragment: SchemaFragment,\n variables?: Maybe<ObjMap<unknown>>,\n): unknown {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (variables == null || variables[variableName] === undefined) {\n // No valid return value.\n return;\n }\n const variableValue = variables[variableName];\n if (variableValue === null && isNonNullType(typeRef)) {\n return; // Invalid: intentionally return no value.\n }\n // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n return variableValue;\n }\n\n if (isNonNullType(typeRef)) {\n if (valueNode.kind === Kind.NULL) {\n return; // Invalid: intentionally return no value.\n }\n return valueFromAST(valueNode, unwrap(typeRef), schemaFragment, variables);\n }\n\n if (valueNode.kind === Kind.NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (isListType(typeRef)) {\n const itemTypeRef = unwrap(typeRef);\n if (valueNode.kind === Kind.LIST) {\n const coercedValues = [];\n for (const itemNode of valueNode.values) {\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (isNonNullType(itemTypeRef)) {\n return; // Invalid: intentionally return no value.\n }\n coercedValues.push(null);\n } else {\n const itemValue = valueFromAST(\n itemNode,\n itemTypeRef,\n schemaFragment,\n variables,\n );\n if (itemValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n coercedValues.push(itemValue);\n }\n }\n return coercedValues;\n }\n const coercedValue = valueFromAST(\n valueNode,\n itemTypeRef,\n schemaFragment,\n variables,\n );\n if (coercedValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n return [coercedValue];\n }\n\n const defs = schemaFragment.definitions;\n\n const inputObjectType = Definitions.getInputObjectType(defs, typeRef);\n if (inputObjectType) {\n if (valueNode.kind !== Kind.OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n const coercedObj = Object.create(null);\n const fieldNodes = new Map(\n valueNode.fields.map((field) => [field.name.value, field]),\n );\n\n const fieldDefs = Definitions.getInputObjectFields(inputObjectType);\n\n for (const [name, field] of Object.entries(fieldDefs)) {\n const fieldNode = fieldNodes.get(name);\n const fieldTypeRef = Definitions.getInputValueTypeReference(field);\n if (fieldNode == null || isMissingVariable(fieldNode.value, variables)) {\n const defaultValue = Definitions.getInputDefaultValue(field);\n if (defaultValue !== undefined) {\n coercedObj[name] = defaultValue;\n } else if (isNonNullType(fieldTypeRef)) {\n return; // Invalid: intentionally return no value.\n }\n continue;\n }\n const fieldValue = valueFromAST(\n fieldNode.value,\n fieldTypeRef,\n schemaFragment,\n variables,\n );\n if (fieldValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n coercedObj[name] = fieldValue;\n }\n return coercedObj;\n }\n\n const leafType = Resolvers.getLeafTypeResolver(schemaFragment, typeRef);\n if (leafType) {\n // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n let result;\n try {\n result = leafType.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n if (result === undefined) {\n return; // Invalid: intentionally return no value.\n }\n return result;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible input types have been considered.\n invariant(false, \"Unexpected input type: \" + inspectTypeReference(typeRef));\n}\n\n// Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\nfunction isMissingVariable(\n valueNode: ValueNode,\n variables: Maybe<ObjMap<unknown>>,\n): boolean {\n return (\n valueNode.kind === Kind.VARIABLE &&\n (variables == null || variables[valueNode.name.value] === undefined)\n );\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -7,7 +7,9 @@ import {
7
7
  isNonNullType,
8
8
  unwrap
9
9
  } from "../schema/reference.mjs";
10
- function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
10
+ import * as Definitions from "../schema/definition.mjs";
11
+ import * as Resolvers from "../schema/resolvers.mjs";
12
+ function valueFromAST(valueNode, typeRef, schemaFragment, variables) {
11
13
  if (!valueNode) {
12
14
  return;
13
15
  }
@@ -26,7 +28,7 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
26
28
  if (valueNode.kind === Kind.NULL) {
27
29
  return;
28
30
  }
29
- return valueFromAST(valueNode, unwrap(typeRef), schemaTypes, variables);
31
+ return valueFromAST(valueNode, unwrap(typeRef), schemaFragment, variables);
30
32
  }
31
33
  if (valueNode.kind === Kind.NULL) {
32
34
  return null;
@@ -45,7 +47,7 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
45
47
  const itemValue = valueFromAST(
46
48
  itemNode,
47
49
  itemTypeRef,
48
- schemaTypes,
50
+ schemaFragment,
49
51
  variables
50
52
  );
51
53
  if (itemValue === void 0) {
@@ -59,7 +61,7 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
59
61
  const coercedValue = valueFromAST(
60
62
  valueNode,
61
63
  itemTypeRef,
62
- schemaTypes,
64
+ schemaFragment,
63
65
  variables
64
66
  );
65
67
  if (coercedValue === void 0) {
@@ -67,7 +69,8 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
67
69
  }
68
70
  return [coercedValue];
69
71
  }
70
- const inputObjectType = schemaTypes.getInputObjectType(typeRef);
72
+ const defs = schemaFragment.definitions;
73
+ const inputObjectType = Definitions.getInputObjectType(defs, typeRef);
71
74
  if (inputObjectType) {
72
75
  if (valueNode.kind !== Kind.OBJECT) {
73
76
  return;
@@ -76,12 +79,12 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
76
79
  const fieldNodes = new Map(
77
80
  valueNode.fields.map((field) => [field.name.value, field])
78
81
  );
79
- const fieldDefs = schemaTypes.getInputObjectFields(inputObjectType);
82
+ const fieldDefs = Definitions.getInputObjectFields(inputObjectType);
80
83
  for (const [name, field] of Object.entries(fieldDefs)) {
81
84
  const fieldNode = fieldNodes.get(name);
82
- const fieldTypeRef = schemaTypes.getTypeReference(field);
85
+ const fieldTypeRef = Definitions.getInputValueTypeReference(field);
83
86
  if (fieldNode == null || isMissingVariable(fieldNode.value, variables)) {
84
- const defaultValue = schemaTypes.getInputDefaultValue(field);
87
+ const defaultValue = Definitions.getInputDefaultValue(field);
85
88
  if (defaultValue !== void 0) {
86
89
  coercedObj[name] = defaultValue;
87
90
  } else if (isNonNullType(fieldTypeRef)) {
@@ -92,7 +95,7 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
92
95
  const fieldValue = valueFromAST(
93
96
  fieldNode.value,
94
97
  fieldTypeRef,
95
- schemaTypes,
98
+ schemaFragment,
96
99
  variables
97
100
  );
98
101
  if (fieldValue === void 0) {
@@ -102,7 +105,7 @@ function valueFromAST(valueNode, typeRef, schemaTypes, variables) {
102
105
  }
103
106
  return coercedObj;
104
107
  }
105
- const leafType = schemaTypes.getLeafTypeResolver(typeRef);
108
+ const leafType = Resolvers.getLeafTypeResolver(schemaFragment, typeRef);
106
109
  if (leafType) {
107
110
  let result;
108
111
  try {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/valueFromAST.ts"],
4
- "sourcesContent": ["import { invariant } from \"../jsutils/invariant\";\nimport type { Maybe } from \"../jsutils/Maybe\";\nimport type { ObjMap } from \"../jsutils/ObjMap\";\n\nimport { TypeReference } from \"../schema/definition\";\nimport { PartialSchema } from \"../schema/fragment\";\nimport { ValueNode, Kind } from \"graphql\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n unwrap,\n} from \"../schema/reference\";\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Unknown |\n * | NullValue | null |\n *\n */\nexport function valueFromAST(\n valueNode: Maybe<ValueNode>,\n typeRef: TypeReference,\n schemaTypes: PartialSchema,\n variables?: Maybe<ObjMap<unknown>>,\n): unknown {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (variables == null || variables[variableName] === undefined) {\n // No valid return value.\n return;\n }\n const variableValue = variables[variableName];\n if (variableValue === null && isNonNullType(typeRef)) {\n return; // Invalid: intentionally return no value.\n }\n // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n return variableValue;\n }\n\n if (isNonNullType(typeRef)) {\n if (valueNode.kind === Kind.NULL) {\n return; // Invalid: intentionally return no value.\n }\n return valueFromAST(valueNode, unwrap(typeRef), schemaTypes, variables);\n }\n\n if (valueNode.kind === Kind.NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (isListType(typeRef)) {\n const itemTypeRef = unwrap(typeRef);\n if (valueNode.kind === Kind.LIST) {\n const coercedValues = [];\n for (const itemNode of valueNode.values) {\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (isNonNullType(itemTypeRef)) {\n return; // Invalid: intentionally return no value.\n }\n coercedValues.push(null);\n } else {\n const itemValue = valueFromAST(\n itemNode,\n itemTypeRef,\n schemaTypes,\n variables,\n );\n if (itemValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n coercedValues.push(itemValue);\n }\n }\n return coercedValues;\n }\n const coercedValue = valueFromAST(\n valueNode,\n itemTypeRef,\n schemaTypes,\n variables,\n );\n if (coercedValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n return [coercedValue];\n }\n\n const inputObjectType = schemaTypes.getInputObjectType(typeRef);\n if (inputObjectType) {\n if (valueNode.kind !== Kind.OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n const coercedObj = Object.create(null);\n const fieldNodes = new Map(\n valueNode.fields.map((field) => [field.name.value, field]),\n );\n\n const fieldDefs = schemaTypes.getInputObjectFields(inputObjectType);\n\n for (const [name, field] of Object.entries(fieldDefs)) {\n const fieldNode = fieldNodes.get(name);\n const fieldTypeRef = schemaTypes.getTypeReference(field);\n if (fieldNode == null || isMissingVariable(fieldNode.value, variables)) {\n const defaultValue = schemaTypes.getInputDefaultValue(field);\n if (defaultValue !== undefined) {\n coercedObj[name] = defaultValue;\n } else if (isNonNullType(fieldTypeRef)) {\n return; // Invalid: intentionally return no value.\n }\n continue;\n }\n const fieldValue = valueFromAST(\n fieldNode.value,\n fieldTypeRef,\n schemaTypes,\n variables,\n );\n if (fieldValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n coercedObj[name] = fieldValue;\n }\n return coercedObj;\n }\n\n const leafType = schemaTypes.getLeafTypeResolver(typeRef);\n if (leafType) {\n // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n let result;\n try {\n result = leafType.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n if (result === undefined) {\n return; // Invalid: intentionally return no value.\n }\n return result;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible input types have been considered.\n invariant(false, \"Unexpected input type: \" + inspectTypeReference(typeRef));\n}\n\n// Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\nfunction isMissingVariable(\n valueNode: ValueNode,\n variables: Maybe<ObjMap<unknown>>,\n): boolean {\n return (\n valueNode.kind === Kind.VARIABLE &&\n (variables == null || variables[valueNode.name.value] === undefined)\n );\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { invariant } from \"../jsutils/invariant\";\nimport type { Maybe } from \"../jsutils/Maybe\";\nimport type { ObjMap } from \"../jsutils/ObjMap\";\n\nimport type { TypeReference } from \"../schema/reference\";\nimport { ValueNode, Kind } from \"graphql\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n unwrap,\n} from \"../schema/reference\";\nimport * as Definitions from \"../schema/definition\";\nimport * as Resolvers from \"../schema/resolvers\";\nimport { SchemaFragment } from \"../types\";\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Unknown |\n * | NullValue | null |\n *\n */\nexport function valueFromAST(\n valueNode: Maybe<ValueNode>,\n typeRef: TypeReference,\n schemaFragment: SchemaFragment,\n variables?: Maybe<ObjMap<unknown>>,\n): unknown {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (variables == null || variables[variableName] === undefined) {\n // No valid return value.\n return;\n }\n const variableValue = variables[variableName];\n if (variableValue === null && isNonNullType(typeRef)) {\n return; // Invalid: intentionally return no value.\n }\n // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n return variableValue;\n }\n\n if (isNonNullType(typeRef)) {\n if (valueNode.kind === Kind.NULL) {\n return; // Invalid: intentionally return no value.\n }\n return valueFromAST(valueNode, unwrap(typeRef), schemaFragment, variables);\n }\n\n if (valueNode.kind === Kind.NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (isListType(typeRef)) {\n const itemTypeRef = unwrap(typeRef);\n if (valueNode.kind === Kind.LIST) {\n const coercedValues = [];\n for (const itemNode of valueNode.values) {\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (isNonNullType(itemTypeRef)) {\n return; // Invalid: intentionally return no value.\n }\n coercedValues.push(null);\n } else {\n const itemValue = valueFromAST(\n itemNode,\n itemTypeRef,\n schemaFragment,\n variables,\n );\n if (itemValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n coercedValues.push(itemValue);\n }\n }\n return coercedValues;\n }\n const coercedValue = valueFromAST(\n valueNode,\n itemTypeRef,\n schemaFragment,\n variables,\n );\n if (coercedValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n return [coercedValue];\n }\n\n const defs = schemaFragment.definitions;\n\n const inputObjectType = Definitions.getInputObjectType(defs, typeRef);\n if (inputObjectType) {\n if (valueNode.kind !== Kind.OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n const coercedObj = Object.create(null);\n const fieldNodes = new Map(\n valueNode.fields.map((field) => [field.name.value, field]),\n );\n\n const fieldDefs = Definitions.getInputObjectFields(inputObjectType);\n\n for (const [name, field] of Object.entries(fieldDefs)) {\n const fieldNode = fieldNodes.get(name);\n const fieldTypeRef = Definitions.getInputValueTypeReference(field);\n if (fieldNode == null || isMissingVariable(fieldNode.value, variables)) {\n const defaultValue = Definitions.getInputDefaultValue(field);\n if (defaultValue !== undefined) {\n coercedObj[name] = defaultValue;\n } else if (isNonNullType(fieldTypeRef)) {\n return; // Invalid: intentionally return no value.\n }\n continue;\n }\n const fieldValue = valueFromAST(\n fieldNode.value,\n fieldTypeRef,\n schemaFragment,\n variables,\n );\n if (fieldValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n coercedObj[name] = fieldValue;\n }\n return coercedObj;\n }\n\n const leafType = Resolvers.getLeafTypeResolver(schemaFragment, typeRef);\n if (leafType) {\n // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n let result;\n try {\n result = leafType.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n if (result === undefined) {\n return; // Invalid: intentionally return no value.\n }\n return result;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible input types have been considered.\n invariant(false, \"Unexpected input type: \" + inspectTypeReference(typeRef));\n}\n\n// Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\nfunction isMissingVariable(\n valueNode: ValueNode,\n variables: Maybe<ObjMap<unknown>>,\n): boolean {\n return (\n valueNode.kind === Kind.VARIABLE &&\n (variables == null || variables[valueNode.name.value] === undefined)\n );\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/lib/values.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { GraphQLError, DirectiveNode, FieldNode, VariableDefinitionNode } from "graphql";
2
2
  import { ExecutionContext } from "./executeWithoutSchema";
3
3
  import { DirectiveDefinitionTuple, FieldDefinition } from "./schema/definition";
4
- import { PartialSchema } from "./schema/fragment";
4
+ import type { SchemaFragment } from "./types";
5
5
  type CoercedVariableValues = {
6
6
  errors: Array<GraphQLError>;
7
7
  coerced?: never;
@@ -22,7 +22,7 @@ type CoercedVariableValues = {
22
22
  *
23
23
  * @internal
24
24
  */
25
- export declare function getVariableValues(schemaTypes: PartialSchema, varDefNodes: ReadonlyArray<VariableDefinitionNode>, inputs: {
25
+ export declare function getVariableValues(schemaFragment: SchemaFragment, varDefNodes: ReadonlyArray<VariableDefinitionNode>, inputs: {
26
26
  [variable: string]: unknown;
27
27
  }, options?: {
28
28
  maxErrors?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAIZ,aAAa,EACb,SAAS,EACT,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQlD,KAAK,qBAAqB,GACtB;IAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,aAAa,EAC1B,WAAW,EAAE,aAAa,CAAC,sBAAsB,CAAC,EAClD,MAAM,EAAE;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EACvC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,qBAAqB,CA0BvB;AAgFD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,eAAe,GAAG,wBAAwB,EAC/C,IAAI,EAAE,SAAS,GAAG,aAAa,GAC9B;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CA+FjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EAAE,wBAAwB,EACtC,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;CAAE,GAClD,SAAS,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAY7C"}
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAIZ,aAAa,EACb,SAAS,EACT,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,eAAe,EAOhB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,KAAK,qBAAqB,GACtB;IAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,aAAa,CAAC,sBAAsB,CAAC,EAClD,MAAM,EAAE;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EACvC,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,qBAAqB,CA0BvB;AAgFD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,eAAe,GAAG,wBAAwB,EAC/C,IAAI,EAAE,SAAS,GAAG,aAAa,GAC9B;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CA+FjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EAAE,wBAAwB,EACtC,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;CAAE,GAClD,SAAS,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAW7C"}
package/lib/values.js CHANGED
@@ -26,15 +26,16 @@ module.exports = __toCommonJS(values_exports);
26
26
  var import_graphql = require("graphql");
27
27
  var import_inspect = require("./jsutils/inspect");
28
28
  var import_printPathArray = require("./jsutils/printPathArray");
29
+ var import_definition = require("./schema/definition");
29
30
  var import_valueFromAST = require("./utilities/valueFromAST");
30
31
  var import_coerceInputValue = require("./utilities/coerceInputValue");
31
32
  var import_reference = require("./schema/reference");
32
- function getVariableValues(schemaTypes, varDefNodes, inputs, options) {
33
+ function getVariableValues(schemaFragment, varDefNodes, inputs, options) {
33
34
  const errors = [];
34
35
  const maxErrors = options == null ? void 0 : options.maxErrors;
35
36
  try {
36
37
  const coerced = coerceVariableValues(
37
- schemaTypes,
38
+ schemaFragment,
38
39
  varDefNodes,
39
40
  inputs,
40
41
  (error) => {
@@ -54,12 +55,12 @@ function getVariableValues(schemaTypes, varDefNodes, inputs, options) {
54
55
  }
55
56
  return { errors };
56
57
  }
57
- function coerceVariableValues(schemaTypes, varDefNodes, inputs, onError) {
58
+ function coerceVariableValues(schemaFragment, varDefNodes, inputs, onError) {
58
59
  const coercedValues = {};
59
60
  for (const varDefNode of varDefNodes) {
60
61
  const varName = varDefNode.variable.name.value;
61
62
  const varTypeReference = (0, import_reference.typeReferenceFromNode)(varDefNode.type);
62
- if (!schemaTypes.isInputType(varTypeReference)) {
63
+ if (!(0, import_definition.isInputType)(schemaFragment.definitions, varTypeReference)) {
63
64
  const varTypeStr = (0, import_reference.inspectTypeReference)(varTypeReference);
64
65
  onError(
65
66
  new import_graphql.GraphQLError(
@@ -74,7 +75,7 @@ function coerceVariableValues(schemaTypes, varDefNodes, inputs, onError) {
74
75
  coercedValues[varName] = (0, import_valueFromAST.valueFromAST)(
75
76
  varDefNode.defaultValue,
76
77
  varTypeReference,
77
- schemaTypes
78
+ schemaFragment
78
79
  );
79
80
  } else if ((0, import_reference.isNonNullType)(varTypeReference)) {
80
81
  const varTypeStr = (0, import_reference.inspectTypeReference)(varTypeReference);
@@ -101,7 +102,7 @@ function coerceVariableValues(schemaTypes, varDefNodes, inputs, onError) {
101
102
  coercedValues[varName] = (0, import_coerceInputValue.coerceInputValue)(
102
103
  value,
103
104
  varTypeReference,
104
- schemaTypes,
105
+ schemaFragment,
105
106
  (path, invalidValue, error) => {
106
107
  let prefix = `Variable "$${varName}" got invalid value ` + (0, import_inspect.inspect)(invalidValue);
107
108
  if (path.length > 0) {
@@ -120,9 +121,9 @@ function coerceVariableValues(schemaTypes, varDefNodes, inputs, onError) {
120
121
  }
121
122
  function getArgumentValues(exeContext, def, node) {
122
123
  var _a;
123
- const schemaTypes = exeContext.partialSchema;
124
+ const definitions = exeContext.schemaFragment.definitions;
124
125
  const coercedValues = {};
125
- const argumentDefs = schemaTypes.resolveDefinitionArguments(def);
126
+ const argumentDefs = (0, import_definition.getDefinitionArguments)(def);
126
127
  if (!argumentDefs) {
127
128
  return coercedValues;
128
129
  }
@@ -130,8 +131,8 @@ function getArgumentValues(exeContext, def, node) {
130
131
  const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));
131
132
  for (const [name, argumentDef] of Object.entries(argumentDefs)) {
132
133
  const argumentNode = argNodeMap.get(name);
133
- const argumentTypeRef = schemaTypes.getTypeReference(argumentDef);
134
- const defaultValue = schemaTypes.getInputDefaultValue(argumentDef);
134
+ const argumentTypeRef = (0, import_definition.getInputValueTypeReference)(argumentDef);
135
+ const defaultValue = (0, import_definition.getInputDefaultValue)(argumentDef);
135
136
  if (argumentNode == null) {
136
137
  if (defaultValue !== void 0) {
137
138
  coercedValues[name] = defaultValue;
@@ -144,7 +145,7 @@ function getArgumentValues(exeContext, def, node) {
144
145
  }
145
146
  continue;
146
147
  }
147
- if (!schemaTypes.isDefined(argumentTypeRef)) {
148
+ if (!(0, import_definition.isDefined)(definitions, argumentTypeRef)) {
148
149
  throw (0, import_graphql.locatedError)(
149
150
  `Could not find type for argument ${name} in ${node.kind} ${node.name.value}`,
150
151
  [argumentNode]
@@ -178,7 +179,7 @@ function getArgumentValues(exeContext, def, node) {
178
179
  const coercedValue = (0, import_valueFromAST.valueFromAST)(
179
180
  valueNode,
180
181
  argumentTypeRef,
181
- schemaTypes,
182
+ exeContext.schemaFragment,
182
183
  exeContext.variableValues
183
184
  );
184
185
  if (coercedValue === void 0) {
@@ -193,8 +194,7 @@ function getArgumentValues(exeContext, def, node) {
193
194
  }
194
195
  function getDirectiveValues(exeContext, directiveDef, node) {
195
196
  var _a;
196
- const schemaTypes = exeContext.partialSchema;
197
- const name = schemaTypes.getDirectiveName(directiveDef);
197
+ const name = (0, import_definition.getDirectiveName)(directiveDef);
198
198
  const directiveNode = (_a = node.directives) == null ? void 0 : _a.find(
199
199
  (directive) => directive.name.value === name
200
200
  );
package/lib/values.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/values.ts"],
4
- "sourcesContent": ["import {\n GraphQLError,\n Kind,\n print,\n locatedError,\n DirectiveNode,\n FieldNode,\n VariableDefinitionNode,\n} from \"graphql\";\nimport { inspect } from \"./jsutils/inspect\";\nimport { printPathArray } from \"./jsutils/printPathArray\";\nimport { ExecutionContext } from \"./executeWithoutSchema\";\nimport { 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/lib/values.mjs CHANGED
@@ -7,6 +7,14 @@ import {
7
7
  } from "graphql";
8
8
  import { inspect } from "./jsutils/inspect.mjs";
9
9
  import { printPathArray } from "./jsutils/printPathArray.mjs";
10
+ import {
11
+ getDefinitionArguments,
12
+ getDirectiveName,
13
+ getInputDefaultValue,
14
+ getInputValueTypeReference,
15
+ isDefined,
16
+ isInputType
17
+ } from "./schema/definition.mjs";
10
18
  import { valueFromAST } from "./utilities/valueFromAST.mjs";
11
19
  import { coerceInputValue } from "./utilities/coerceInputValue.mjs";
12
20
  import {
@@ -14,12 +22,12 @@ import {
14
22
  isNonNullType,
15
23
  typeReferenceFromNode
16
24
  } from "./schema/reference.mjs";
17
- function getVariableValues(schemaTypes, varDefNodes, inputs, options) {
25
+ function getVariableValues(schemaFragment, varDefNodes, inputs, options) {
18
26
  const errors = [];
19
27
  const maxErrors = options == null ? void 0 : options.maxErrors;
20
28
  try {
21
29
  const coerced = coerceVariableValues(
22
- schemaTypes,
30
+ schemaFragment,
23
31
  varDefNodes,
24
32
  inputs,
25
33
  (error) => {
@@ -39,12 +47,12 @@ function getVariableValues(schemaTypes, varDefNodes, inputs, options) {
39
47
  }
40
48
  return { errors };
41
49
  }
42
- function coerceVariableValues(schemaTypes, varDefNodes, inputs, onError) {
50
+ function coerceVariableValues(schemaFragment, varDefNodes, inputs, onError) {
43
51
  const coercedValues = {};
44
52
  for (const varDefNode of varDefNodes) {
45
53
  const varName = varDefNode.variable.name.value;
46
54
  const varTypeReference = typeReferenceFromNode(varDefNode.type);
47
- if (!schemaTypes.isInputType(varTypeReference)) {
55
+ if (!isInputType(schemaFragment.definitions, varTypeReference)) {
48
56
  const varTypeStr = inspectTypeReference(varTypeReference);
49
57
  onError(
50
58
  new GraphQLError(
@@ -59,7 +67,7 @@ function coerceVariableValues(schemaTypes, varDefNodes, inputs, onError) {
59
67
  coercedValues[varName] = valueFromAST(
60
68
  varDefNode.defaultValue,
61
69
  varTypeReference,
62
- schemaTypes
70
+ schemaFragment
63
71
  );
64
72
  } else if (isNonNullType(varTypeReference)) {
65
73
  const varTypeStr = inspectTypeReference(varTypeReference);
@@ -86,7 +94,7 @@ function coerceVariableValues(schemaTypes, varDefNodes, inputs, onError) {
86
94
  coercedValues[varName] = coerceInputValue(
87
95
  value,
88
96
  varTypeReference,
89
- schemaTypes,
97
+ schemaFragment,
90
98
  (path, invalidValue, error) => {
91
99
  let prefix = `Variable "$${varName}" got invalid value ` + inspect(invalidValue);
92
100
  if (path.length > 0) {
@@ -105,9 +113,9 @@ function coerceVariableValues(schemaTypes, varDefNodes, inputs, onError) {
105
113
  }
106
114
  function getArgumentValues(exeContext, def, node) {
107
115
  var _a;
108
- const schemaTypes = exeContext.partialSchema;
116
+ const definitions = exeContext.schemaFragment.definitions;
109
117
  const coercedValues = {};
110
- const argumentDefs = schemaTypes.resolveDefinitionArguments(def);
118
+ const argumentDefs = getDefinitionArguments(def);
111
119
  if (!argumentDefs) {
112
120
  return coercedValues;
113
121
  }
@@ -115,8 +123,8 @@ function getArgumentValues(exeContext, def, node) {
115
123
  const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));
116
124
  for (const [name, argumentDef] of Object.entries(argumentDefs)) {
117
125
  const argumentNode = argNodeMap.get(name);
118
- const argumentTypeRef = schemaTypes.getTypeReference(argumentDef);
119
- const defaultValue = schemaTypes.getInputDefaultValue(argumentDef);
126
+ const argumentTypeRef = getInputValueTypeReference(argumentDef);
127
+ const defaultValue = getInputDefaultValue(argumentDef);
120
128
  if (argumentNode == null) {
121
129
  if (defaultValue !== void 0) {
122
130
  coercedValues[name] = defaultValue;
@@ -129,7 +137,7 @@ function getArgumentValues(exeContext, def, node) {
129
137
  }
130
138
  continue;
131
139
  }
132
- if (!schemaTypes.isDefined(argumentTypeRef)) {
140
+ if (!isDefined(definitions, argumentTypeRef)) {
133
141
  throw locatedError(
134
142
  `Could not find type for argument ${name} in ${node.kind} ${node.name.value}`,
135
143
  [argumentNode]
@@ -163,7 +171,7 @@ function getArgumentValues(exeContext, def, node) {
163
171
  const coercedValue = valueFromAST(
164
172
  valueNode,
165
173
  argumentTypeRef,
166
- schemaTypes,
174
+ exeContext.schemaFragment,
167
175
  exeContext.variableValues
168
176
  );
169
177
  if (coercedValue === void 0) {
@@ -178,8 +186,7 @@ function getArgumentValues(exeContext, def, node) {
178
186
  }
179
187
  function getDirectiveValues(exeContext, directiveDef, node) {
180
188
  var _a;
181
- const schemaTypes = exeContext.partialSchema;
182
- const name = schemaTypes.getDirectiveName(directiveDef);
189
+ const name = getDirectiveName(directiveDef);
183
190
  const directiveNode = (_a = node.directives) == null ? void 0 : _a.find(
184
191
  (directive) => directive.name.value === name
185
192
  );