graphql 17.0.0-rc.0 → 17.0.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 (232) hide show
  1. package/README.md +3 -5
  2. package/diagnostics.d.mts +67 -38
  3. package/diagnostics.d.ts +67 -38
  4. package/diagnostics.js +2 -1
  5. package/diagnostics.js.map +1 -1
  6. package/diagnostics.mjs +2 -1
  7. package/diagnostics.mjs.map +1 -1
  8. package/error/locatedError.d.mts +1 -3
  9. package/error/locatedError.d.ts +1 -3
  10. package/error/locatedError.js.map +1 -1
  11. package/error/locatedError.mjs.map +1 -1
  12. package/execution/Executor.d.mts +2 -2
  13. package/execution/Executor.d.ts +2 -2
  14. package/execution/Executor.js.map +1 -1
  15. package/execution/Executor.mjs.map +1 -1
  16. package/execution/execute.d.mts +65 -44
  17. package/execution/execute.d.ts +65 -44
  18. package/execution/execute.js +11 -2
  19. package/execution/execute.js.map +1 -1
  20. package/execution/execute.mjs +11 -2
  21. package/execution/execute.mjs.map +1 -1
  22. package/execution/values.d.mts +17 -17
  23. package/execution/values.d.ts +17 -17
  24. package/execution/values.js.map +1 -1
  25. package/execution/values.mjs.map +1 -1
  26. package/language/parser.d.mts +20 -30
  27. package/language/parser.d.ts +20 -30
  28. package/language/parser.js +3 -9
  29. package/language/parser.js.map +1 -1
  30. package/language/parser.mjs +3 -9
  31. package/language/parser.mjs.map +1 -1
  32. package/language/predicates.d.mts +5 -1
  33. package/language/predicates.d.ts +5 -1
  34. package/language/predicates.js.map +1 -1
  35. package/language/predicates.mjs.map +1 -1
  36. package/language/source.d.mts +4 -5
  37. package/language/source.d.ts +4 -5
  38. package/language/source.js.map +1 -1
  39. package/language/source.mjs.map +1 -1
  40. package/language/visitor.d.mts +10 -2
  41. package/language/visitor.d.ts +10 -2
  42. package/language/visitor.js.map +1 -1
  43. package/language/visitor.mjs.map +1 -1
  44. package/package.json +1 -4
  45. package/type/definition.d.mts +96 -64
  46. package/type/definition.d.ts +96 -64
  47. package/type/definition.js.map +1 -1
  48. package/type/definition.mjs.map +1 -1
  49. package/type/directives.d.mts +3 -3
  50. package/type/directives.d.ts +3 -3
  51. package/type/directives.js.map +1 -1
  52. package/type/directives.mjs.map +1 -1
  53. package/type/schema.d.mts +4 -8
  54. package/type/schema.d.ts +4 -8
  55. package/type/schema.js.map +1 -1
  56. package/type/schema.mjs.map +1 -1
  57. package/type/validate.js +101 -30
  58. package/type/validate.js.map +1 -1
  59. package/type/validate.mjs +101 -30
  60. package/type/validate.mjs.map +1 -1
  61. package/utilities/TypeInfo.d.mts +1 -1
  62. package/utilities/TypeInfo.d.ts +1 -1
  63. package/utilities/TypeInfo.js.map +1 -1
  64. package/utilities/TypeInfo.mjs.map +1 -1
  65. package/utilities/buildASTSchema.d.mts +0 -1
  66. package/utilities/buildASTSchema.d.ts +0 -1
  67. package/utilities/buildASTSchema.js +0 -1
  68. package/utilities/buildASTSchema.js.map +1 -1
  69. package/utilities/buildASTSchema.mjs +0 -1
  70. package/utilities/buildASTSchema.mjs.map +1 -1
  71. package/utilities/buildClientSchema.d.mts +5 -1
  72. package/utilities/buildClientSchema.d.ts +5 -1
  73. package/utilities/buildClientSchema.js.map +1 -1
  74. package/utilities/buildClientSchema.mjs.map +1 -1
  75. package/utilities/coerceInputValue.d.mts +7 -6
  76. package/utilities/coerceInputValue.d.ts +7 -6
  77. package/utilities/coerceInputValue.js.map +1 -1
  78. package/utilities/coerceInputValue.mjs.map +1 -1
  79. package/utilities/concatAST.d.mts +4 -1
  80. package/utilities/concatAST.d.ts +4 -1
  81. package/utilities/concatAST.js.map +1 -1
  82. package/utilities/concatAST.mjs.map +1 -1
  83. package/utilities/extendSchema.d.mts +3 -3
  84. package/utilities/extendSchema.d.ts +3 -3
  85. package/utilities/extendSchema.js +5 -1
  86. package/utilities/extendSchema.js.map +1 -1
  87. package/utilities/extendSchema.mjs +5 -1
  88. package/utilities/extendSchema.mjs.map +1 -1
  89. package/utilities/introspectionFromSchema.d.mts +6 -2
  90. package/utilities/introspectionFromSchema.d.ts +6 -2
  91. package/utilities/introspectionFromSchema.js.map +1 -1
  92. package/utilities/introspectionFromSchema.mjs.map +1 -1
  93. package/utilities/lexicographicSortSchema.d.mts +5 -1
  94. package/utilities/lexicographicSortSchema.d.ts +5 -1
  95. package/utilities/lexicographicSortSchema.js.map +1 -1
  96. package/utilities/lexicographicSortSchema.mjs.map +1 -1
  97. package/utilities/printSchema.d.mts +5 -1
  98. package/utilities/printSchema.d.ts +5 -1
  99. package/utilities/printSchema.js.map +1 -1
  100. package/utilities/printSchema.mjs.map +1 -1
  101. package/utilities/replaceVariables.d.mts +4 -8
  102. package/utilities/replaceVariables.d.ts +4 -8
  103. package/utilities/replaceVariables.js.map +1 -1
  104. package/utilities/replaceVariables.mjs.map +1 -1
  105. package/utilities/stripIgnoredCharacters.d.mts +2 -2
  106. package/utilities/stripIgnoredCharacters.d.ts +2 -2
  107. package/utilities/stripIgnoredCharacters.js.map +1 -1
  108. package/utilities/stripIgnoredCharacters.mjs.map +1 -1
  109. package/utilities/typeComparators.d.mts +1 -5
  110. package/utilities/typeComparators.d.ts +1 -5
  111. package/utilities/typeComparators.js.map +1 -1
  112. package/utilities/typeComparators.mjs.map +1 -1
  113. package/utilities/validateInputValue.d.mts +10 -8
  114. package/utilities/validateInputValue.d.ts +10 -8
  115. package/utilities/validateInputValue.js.map +1 -1
  116. package/utilities/validateInputValue.mjs.map +1 -1
  117. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.mts +4 -1
  118. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +4 -1
  119. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js.map +1 -1
  120. package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs.map +1 -1
  121. package/validation/rules/ExecutableDefinitionsRule.d.mts +6 -2
  122. package/validation/rules/ExecutableDefinitionsRule.d.ts +6 -2
  123. package/validation/rules/ExecutableDefinitionsRule.js.map +1 -1
  124. package/validation/rules/ExecutableDefinitionsRule.mjs.map +1 -1
  125. package/validation/rules/FieldsOnCorrectTypeRule.d.mts +3 -1
  126. package/validation/rules/FieldsOnCorrectTypeRule.d.ts +3 -1
  127. package/validation/rules/FieldsOnCorrectTypeRule.js.map +1 -1
  128. package/validation/rules/FieldsOnCorrectTypeRule.mjs.map +1 -1
  129. package/validation/rules/FragmentsOnCompositeTypesRule.d.mts +6 -2
  130. package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +6 -2
  131. package/validation/rules/FragmentsOnCompositeTypesRule.js.map +1 -1
  132. package/validation/rules/FragmentsOnCompositeTypesRule.mjs.map +1 -1
  133. package/validation/rules/KnownArgumentNamesRule.d.mts +3 -1
  134. package/validation/rules/KnownArgumentNamesRule.d.ts +3 -1
  135. package/validation/rules/KnownArgumentNamesRule.js.map +1 -1
  136. package/validation/rules/KnownArgumentNamesRule.mjs.map +1 -1
  137. package/validation/rules/KnownDirectivesRule.js +2 -1
  138. package/validation/rules/KnownDirectivesRule.js.map +1 -1
  139. package/validation/rules/KnownDirectivesRule.mjs +2 -1
  140. package/validation/rules/KnownDirectivesRule.mjs.map +1 -1
  141. package/validation/rules/KnownFragmentNamesRule.d.mts +3 -1
  142. package/validation/rules/KnownFragmentNamesRule.d.ts +3 -1
  143. package/validation/rules/KnownFragmentNamesRule.js.map +1 -1
  144. package/validation/rules/KnownFragmentNamesRule.mjs.map +1 -1
  145. package/validation/rules/LoneAnonymousOperationRule.d.mts +6 -2
  146. package/validation/rules/LoneAnonymousOperationRule.d.ts +6 -2
  147. package/validation/rules/LoneAnonymousOperationRule.js.map +1 -1
  148. package/validation/rules/LoneAnonymousOperationRule.mjs.map +1 -1
  149. package/validation/rules/MaxIntrospectionDepthRule.d.mts +6 -2
  150. package/validation/rules/MaxIntrospectionDepthRule.d.ts +6 -2
  151. package/validation/rules/MaxIntrospectionDepthRule.js.map +1 -1
  152. package/validation/rules/MaxIntrospectionDepthRule.mjs.map +1 -1
  153. package/validation/rules/NoUndefinedVariablesRule.d.mts +3 -1
  154. package/validation/rules/NoUndefinedVariablesRule.d.ts +3 -1
  155. package/validation/rules/NoUndefinedVariablesRule.js.map +1 -1
  156. package/validation/rules/NoUndefinedVariablesRule.mjs.map +1 -1
  157. package/validation/rules/NoUnusedFragmentsRule.d.mts +3 -1
  158. package/validation/rules/NoUnusedFragmentsRule.d.ts +3 -1
  159. package/validation/rules/NoUnusedFragmentsRule.js.map +1 -1
  160. package/validation/rules/NoUnusedFragmentsRule.mjs.map +1 -1
  161. package/validation/rules/NoUnusedVariablesRule.d.mts +3 -1
  162. package/validation/rules/NoUnusedVariablesRule.d.ts +3 -1
  163. package/validation/rules/NoUnusedVariablesRule.js.map +1 -1
  164. package/validation/rules/NoUnusedVariablesRule.mjs.map +1 -1
  165. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.mts +6 -2
  166. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +6 -2
  167. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.map +1 -1
  168. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs.map +1 -1
  169. package/validation/rules/PossibleFragmentSpreadsRule.d.mts +6 -2
  170. package/validation/rules/PossibleFragmentSpreadsRule.d.ts +6 -2
  171. package/validation/rules/PossibleFragmentSpreadsRule.js.map +1 -1
  172. package/validation/rules/PossibleFragmentSpreadsRule.mjs.map +1 -1
  173. package/validation/rules/ProvidedRequiredArgumentsRule.d.mts +6 -2
  174. package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +6 -2
  175. package/validation/rules/ProvidedRequiredArgumentsRule.js.map +1 -1
  176. package/validation/rules/ProvidedRequiredArgumentsRule.mjs.map +1 -1
  177. package/validation/rules/SingleFieldSubscriptionsRule.d.mts +6 -2
  178. package/validation/rules/SingleFieldSubscriptionsRule.d.ts +6 -2
  179. package/validation/rules/SingleFieldSubscriptionsRule.js.map +1 -1
  180. package/validation/rules/SingleFieldSubscriptionsRule.mjs.map +1 -1
  181. package/validation/rules/UniqueArgumentNamesRule.d.mts +3 -1
  182. package/validation/rules/UniqueArgumentNamesRule.d.ts +3 -1
  183. package/validation/rules/UniqueArgumentNamesRule.js.map +1 -1
  184. package/validation/rules/UniqueArgumentNamesRule.mjs.map +1 -1
  185. package/validation/rules/UniqueDirectivesPerLocationRule.d.mts +6 -2
  186. package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +6 -2
  187. package/validation/rules/UniqueDirectivesPerLocationRule.js.map +1 -1
  188. package/validation/rules/UniqueDirectivesPerLocationRule.mjs.map +1 -1
  189. package/validation/rules/UniqueFragmentNamesRule.d.mts +3 -1
  190. package/validation/rules/UniqueFragmentNamesRule.d.ts +3 -1
  191. package/validation/rules/UniqueFragmentNamesRule.js.map +1 -1
  192. package/validation/rules/UniqueFragmentNamesRule.mjs.map +1 -1
  193. package/validation/rules/UniqueInputFieldNamesRule.d.mts +6 -2
  194. package/validation/rules/UniqueInputFieldNamesRule.d.ts +6 -2
  195. package/validation/rules/UniqueInputFieldNamesRule.js.map +1 -1
  196. package/validation/rules/UniqueInputFieldNamesRule.mjs.map +1 -1
  197. package/validation/rules/UniqueOperationNamesRule.d.mts +3 -1
  198. package/validation/rules/UniqueOperationNamesRule.d.ts +3 -1
  199. package/validation/rules/UniqueOperationNamesRule.js.map +1 -1
  200. package/validation/rules/UniqueOperationNamesRule.mjs.map +1 -1
  201. package/validation/rules/UniqueVariableNamesRule.d.mts +3 -1
  202. package/validation/rules/UniqueVariableNamesRule.d.ts +3 -1
  203. package/validation/rules/UniqueVariableNamesRule.js.map +1 -1
  204. package/validation/rules/UniqueVariableNamesRule.mjs.map +1 -1
  205. package/validation/rules/ValuesOfCorrectTypeRule.d.mts +3 -1
  206. package/validation/rules/ValuesOfCorrectTypeRule.d.ts +3 -1
  207. package/validation/rules/ValuesOfCorrectTypeRule.js.map +1 -1
  208. package/validation/rules/ValuesOfCorrectTypeRule.mjs.map +1 -1
  209. package/validation/rules/VariablesAreInputTypesRule.d.mts +6 -2
  210. package/validation/rules/VariablesAreInputTypesRule.d.ts +6 -2
  211. package/validation/rules/VariablesAreInputTypesRule.js.map +1 -1
  212. package/validation/rules/VariablesAreInputTypesRule.mjs.map +1 -1
  213. package/validation/rules/VariablesInAllowedPositionRule.d.mts +6 -2
  214. package/validation/rules/VariablesInAllowedPositionRule.d.ts +6 -2
  215. package/validation/rules/VariablesInAllowedPositionRule.js.map +1 -1
  216. package/validation/rules/VariablesInAllowedPositionRule.mjs.map +1 -1
  217. package/validation/rules/custom/NoDeprecatedCustomRule.d.mts +3 -1
  218. package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +3 -1
  219. package/validation/rules/custom/NoDeprecatedCustomRule.js.map +1 -1
  220. package/validation/rules/custom/NoDeprecatedCustomRule.mjs.map +1 -1
  221. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.mts +6 -2
  222. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +6 -2
  223. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.map +1 -1
  224. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs.map +1 -1
  225. package/validation/validate.d.mts +3 -6
  226. package/validation/validate.d.ts +3 -6
  227. package/validation/validate.js.map +1 -1
  228. package/validation/validate.mjs.map +1 -1
  229. package/version.js +3 -3
  230. package/version.js.map +1 -1
  231. package/version.mjs +3 -3
  232. package/version.mjs.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/execution/values.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Values */\n\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\nimport type { ObjMap, ReadOnlyObjMap } from '../jsutils/ObjMap.ts';\nimport { printPathArray } from '../jsutils/printPathArray.ts';\n\nimport { ensureGraphQLError } from '../error/ensureGraphQLError.ts';\nimport { GraphQLError } from '../error/GraphQLError.ts';\n\nimport type {\n ArgumentNode,\n DirectiveNode,\n FieldNode,\n FragmentArgumentNode,\n FragmentSpreadNode,\n VariableDefinitionNode,\n} from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\nimport type { GraphQLArgument, GraphQLField } from '../type/definition.ts';\nimport {\n isArgument,\n isNonNullType,\n isRequiredArgument,\n} from '../type/definition.ts';\nimport type { GraphQLDirective } from '../type/directives.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\nimport { validateDefaultInput } from '../type/validate.ts';\n\nimport {\n coerceDefaultValue,\n coerceInputLiteral,\n coerceInputValue,\n} from '../utilities/coerceInputValue.ts';\nimport {\n validateInputLiteral,\n validateInputValue,\n} from '../utilities/validateInputValue.ts';\n\nimport type {\n FragmentVariableValues,\n FragmentVariableValueSource,\n} from './collectFields.ts';\nimport type { GraphQLVariableSignature } from './getVariableSignature.ts';\nimport { getVariableSignature } from './getVariableSignature.ts';\n\n/**\n * Coerced variable values prepared for execution.\n *\n * The `coerced` map contains runtime values keyed by variable name. The\n * `sources` map records whether each value came from request input, an operation\n * default, or a fragment-variable default so utilities can preserve defaults\n * when replacing variables in literals.\n */\nexport interface VariableValues {\n /** Source metadata for each variable value keyed by variable name. */\n readonly sources: ReadOnlyObjMap<VariableValueSource>;\n /** Coerced runtime variable values keyed by variable name. */\n readonly coerced: ReadOnlyObjMap<unknown>;\n}\n\ninterface VariableValueSource {\n readonly signature: GraphQLVariableSignature;\n readonly value?: unknown;\n}\n\ntype VariableValuesOrErrors =\n | { variableValues: VariableValues; errors?: never }\n | { errors: ReadonlyArray<GraphQLError>; variableValues?: 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, GraphQLError values are returned.\n *\n * Note: Returned maps use null prototypes to avoid collisions with\n * Object prototype properties.\n * @param schema - GraphQL schema to use.\n * @param varDefNodes - The variable definition AST nodes to coerce.\n * @param inputs - The runtime variable values keyed by variable name.\n * @param options - Optional configuration for this operation.\n * @param [options.maxErrors] - Maximum number of coercion errors to report.\n * @param [options.hideSuggestions] - Whether suggestion text should be omitted\n * from errors.\n * @returns Coerced variable values with source metadata, or request errors.\n * @example\n * ```ts\n * // Coerce provided variables and apply operation defaults.\n * import assert from 'node:assert';\n * import { parse } from 'graphql/language';\n * import { buildSchema } from 'graphql/utilities';\n * import { getVariableValues } from 'graphql/execution';\n *\n * const schema = buildSchema(`\n * type Query {\n * reviews(stars: Int!, limit: Int = 10): [String]\n * }\n * `);\n * const document = parse(`\n * query ($stars: Int!, $limit: Int = 10) {\n * reviews(stars: $stars, limit: $limit)\n * }\n * `);\n * const operation = document.definitions[0];\n *\n * const result = getVariableValues(\n * schema,\n * operation.variableDefinitions,\n * { stars: '5' },\n * );\n *\n * assert('variableValues' in result);\n *\n * result.variableValues.coerced; // => { stars: 5, limit: 10 }\n * ```\n * @example\n * ```ts\n * // This variant uses maxErrors to cap reported coercion errors.\n * import assert from 'node:assert';\n * import { parse } from 'graphql/language';\n * import { buildSchema } from 'graphql/utilities';\n * import { getVariableValues } from 'graphql/execution';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type Query {\n * review(input: ReviewInput!): String\n * }\n * `);\n * const document = parse(`\n * query ($first: ReviewInput!, $second: ReviewInput!) {\n * first: review(input: $first)\n * second: review(input: $second)\n * }\n * `);\n * const operation = document.definitions[0];\n *\n * const result = getVariableValues(\n * schema,\n * operation.variableDefinitions,\n * { first: { stars: 'bad' }, second: { stars: 'also bad' } },\n * { maxErrors: 1 },\n * );\n *\n * assert('errors' in result);\n *\n * result.errors.length; // => 2\n * result.errors[1].message; // matches /error limit reached/\n * ```\n */\nexport function getVariableValues(\n schema: GraphQLSchema,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { readonly [variable: string]: unknown },\n options?: { maxErrors?: number; hideSuggestions?: boolean },\n): VariableValuesOrErrors {\n const errors: Array<GraphQLError> = [];\n const maxErrors = options?.maxErrors;\n try {\n const variableValues = coerceVariableValues(\n schema,\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 options?.hideSuggestions,\n );\n\n if (errors.length === 0) {\n return { variableValues };\n }\n } catch (error) {\n errors.push(ensureGraphQLError(error));\n }\n\n return { errors };\n}\n\nfunction coerceVariableValues(\n schema: GraphQLSchema,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { readonly [variable: string]: unknown },\n onError: (error: GraphQLError) => void,\n hideSuggestions?: Maybe<boolean>,\n): VariableValues {\n const sources: ObjMap<VariableValueSource> = Object.create(null);\n const coerced: ObjMap<unknown> = Object.create(null);\n for (const varDefNode of varDefNodes) {\n const varSignature = getVariableSignature(schema, varDefNode);\n\n if (varSignature instanceof GraphQLError) {\n onError(varSignature);\n continue;\n }\n\n const { name: varName, type: varType } = varSignature;\n const value = Object.hasOwn(inputs, varName) ? inputs[varName] : undefined;\n if (value === undefined) {\n sources[varName] = { signature: varSignature };\n if (varDefNode.defaultValue) {\n maybeUseDefaultValue(\n coerced,\n varName,\n varSignature,\n (error, path) => {\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" has invalid default value${printPathArray(path)}: ${error.message}`,\n { nodes: varDefNode },\n ),\n );\n },\n hideSuggestions,\n );\n continue;\n } else if (!isNonNullType(varType)) {\n // Non-provided values for nullable variables are omitted.\n continue;\n }\n } else {\n sources[varName] = { signature: varSignature, value };\n }\n\n const coercedValue = coerceInputValue(value, varType);\n if (coercedValue !== undefined) {\n coerced[varName] = coercedValue;\n } else {\n validateInputValue(\n value,\n varType,\n (error, path) => {\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" has invalid value${printPathArray(path)}: ${\n error.message\n }`,\n { nodes: varDefNode, originalError: error },\n ),\n );\n },\n hideSuggestions,\n );\n }\n }\n\n return { sources, coerced };\n}\n\nfunction maybeUseDefaultValue(\n coercedValues: ObjMap<unknown>,\n name: string,\n inputValue: GraphQLArgument | GraphQLVariableSignature,\n onError: (error: GraphQLError, path: ReadonlyArray<string | number>) => void,\n hideSuggestions?: Maybe<boolean>,\n): void {\n try {\n // coerceDefaultValue assumes validation has already rejected invalid\n // defaults. If validation was skipped, invalid defaults or nested input\n // field defaults can throw here; recover with validation-style errors below.\n const coercedDefaultValue = coerceDefaultValue(inputValue);\n if (coercedDefaultValue !== undefined) {\n coercedValues[name] = coercedDefaultValue;\n }\n } catch (error) {\n const defaultInput = inputValue.default;\n // Defensive: coerceDefaultValue should only throw while coercing a default.\n /* node:coverage ignore next 3 */\n if (defaultInput === undefined) {\n throw error;\n }\n\n // Prefer validation's user-facing errors for invalid defaults.\n let reportedValidationError = false;\n validateDefaultInput(\n defaultInput,\n inputValue.type,\n (defaultError, path) => {\n reportedValidationError = true;\n onError(defaultError, path);\n },\n hideSuggestions,\n );\n\n if (!reportedValidationError) {\n // The default itself validated, so coercion failed while applying a nested\n // input field default. Surface the original coercion error.\n onError(ensureGraphQLError(error), []);\n }\n }\n}\n\n/** @internal */\nexport function getFragmentVariableValues(\n fragmentSpreadNode: FragmentSpreadNode,\n fragmentSignatures: ReadOnlyObjMap<GraphQLVariableSignature>,\n variableValues: VariableValues,\n fragmentVariableValues?: Maybe<FragmentVariableValues>,\n hideSuggestions?: Maybe<boolean>,\n): FragmentVariableValues {\n const argumentNodes = fragmentSpreadNode.arguments ?? [];\n const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));\n const sources: ObjMap<FragmentVariableValueSource> = Object.create(null);\n const coerced: ObjMap<unknown> = Object.create(null);\n for (const [varName, varSignature] of Object.entries(fragmentSignatures)) {\n const argumentNode = argNodeMap.get(varName);\n if (argumentNode !== undefined) {\n sources[varName] =\n fragmentVariableValues == null\n ? { signature: varSignature, value: argumentNode.value }\n : {\n signature: varSignature,\n value: argumentNode.value,\n fragmentVariableValues,\n };\n } else {\n sources[varName] = {\n signature: varSignature,\n };\n }\n\n coerceArgument(\n coerced,\n fragmentSpreadNode,\n varName,\n varSignature,\n argumentNode,\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n }\n\n return { sources, coerced };\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: Returned value uses a null prototype to avoid collisions with\n * JavaScript's own property names.\n * @param def - Field or directive definition that declares the arguments.\n * @param node - Field or directive AST node supplying argument literals.\n * @param variableValues - Operation variable values returned by getVariableValues.\n * @param fragmentVariableValues - Fragment variable values for the current fragment scope.\n * @param hideSuggestions - Whether suggestion text should be omitted from errors.\n * @returns A map of coerced argument values.\n * @example\n * ```ts\n * // Read literal argument values and defaults.\n * import { parse } from 'graphql/language';\n * import { buildSchema } from 'graphql/utilities';\n * import { getArgumentValues } from 'graphql/execution';\n *\n * const schema = buildSchema(`\n * type Query {\n * reviews(stars: Int!, limit: Int = 10): [String]\n * }\n * `);\n * const fieldDef = schema.getQueryType().getFields().reviews;\n * const document = parse('{ reviews(stars: 5) }');\n * const fieldNode = document.definitions[0].selectionSet.selections[0];\n *\n * getArgumentValues(fieldDef, fieldNode); // => { stars: 5, limit: 10 }\n * ```\n * @example\n * ```ts\n * // This variant resolves argument values from operation variables.\n * import assert from 'node:assert';\n * import { parse } from 'graphql/language';\n * import { buildSchema } from 'graphql/utilities';\n * import { getArgumentValues, getVariableValues } from 'graphql/execution';\n *\n * const schema = buildSchema(`\n * type Query {\n * reviews(stars: Int!): [String]\n * }\n * `);\n * const fieldDef = schema.getQueryType().getFields().reviews;\n * const document = parse('query ($stars: Int!) { reviews(stars: $stars) }');\n * const operation = document.definitions[0];\n * const fieldNode = document.definitions[0].selectionSet.selections[0];\n * const variables = getVariableValues(\n * schema,\n * operation.variableDefinitions,\n * { stars: '5' },\n * );\n *\n * assert('variableValues' in variables);\n *\n * getArgumentValues(fieldDef, fieldNode, variables.variableValues); // => { stars: 5 }\n * getArgumentValues(fieldDef, fieldNode); // throws an error\n * ```\n */\nexport function getArgumentValues(\n def: GraphQLField<unknown, unknown> | GraphQLDirective,\n node: FieldNode | DirectiveNode,\n variableValues?: Maybe<VariableValues>,\n fragmentVariableValues?: Maybe<FragmentVariableValues>,\n hideSuggestions?: Maybe<boolean>,\n): ObjMap<unknown> {\n const coercedValues: ObjMap<unknown> = Object.create(null);\n\n const argumentNodes = node.arguments ?? [];\n const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));\n\n for (const argDef of def.args) {\n const name = argDef.name;\n coerceArgument(\n coercedValues,\n node,\n name,\n argDef,\n argNodeMap.get(argDef.name),\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n }\n return coercedValues;\n}\n\n/** @internal */\n// eslint-disable-next-line max-params\nfunction coerceArgument(\n coercedValues: ObjMap<unknown>,\n node: FieldNode | DirectiveNode | FragmentSpreadNode,\n argName: string,\n argDef: GraphQLArgument | GraphQLVariableSignature,\n argumentNode: ArgumentNode | FragmentArgumentNode | undefined,\n variableValues: Maybe<VariableValues>,\n fragmentVariableValues: Maybe<FragmentVariableValues>,\n hideSuggestions?: Maybe<boolean>,\n): void {\n const argType = argDef.type;\n const onArgDefaultValueError = (\n error: GraphQLError,\n path: ReadonlyArray<string | number>,\n ): never => {\n throw new GraphQLError(\n `${printArgumentOrFragmentVariable(argDef, node)} has invalid default value${printPathArray(path)}: ${error.message}`,\n { nodes: node },\n );\n };\n\n if (!argumentNode) {\n if (isRequiredArgument(argDef)) {\n // Note: ProvidedRequiredArgumentsRule 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 // TODO: clean up the naming of isRequiredArgument(), isArgument(), and argDef if/when experimental fragment variables are merged\n `${printArgumentOrFragmentVariable(argDef, node)} of required type \"${argType}\" was not provided.`,\n { nodes: node },\n );\n }\n maybeUseDefaultValue(\n coercedValues,\n argName,\n argDef,\n onArgDefaultValueError,\n hideSuggestions,\n );\n return;\n }\n\n const valueNode = argumentNode.value;\n\n // Variables without a value are treated as if no argument was provided if\n // the argument is not required.\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n const scopedVariableValues = fragmentVariableValues?.sources[variableName]\n ? fragmentVariableValues\n : variableValues;\n if (\n (scopedVariableValues == null ||\n !Object.hasOwn(scopedVariableValues.coerced, variableName)) &&\n !isRequiredArgument(argDef)\n ) {\n maybeUseDefaultValue(\n coercedValues,\n argName,\n argDef,\n onArgDefaultValueError,\n hideSuggestions,\n );\n return;\n }\n }\n const coercedValue = coerceInputLiteral(\n valueNode,\n argType,\n variableValues,\n fragmentVariableValues,\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 validateInputLiteral(\n valueNode,\n argType,\n (error, path) => {\n // TODO: clean up the naming of isRequiredArgument(), isArgument(), and argDef if/when experimental fragment variables are merged\n error.message = `${printArgumentOrFragmentVariable(argDef, node)} has invalid value${printPathArray(\n path,\n )}: ${error.message}`;\n throw error;\n },\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n /* node:coverage ignore next */\n invariant(false, 'Invalid argument');\n }\n coercedValues[argName] = coercedValue;\n}\n\n// TODO: clean up the naming of isRequiredArgument(), isArgument(), and argDef if/when experimental fragment variables are merged\nfunction printArgumentOrFragmentVariable(\n argDef: GraphQLArgument | GraphQLVariableSignature,\n node: FieldNode | DirectiveNode | FragmentSpreadNode,\n): string {\n return isArgument(argDef)\n ? `Argument \"${argDef}\"`\n : `Variable \"$${argDef.name}\" defined by fragment \"${node.name.value}\"`;\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: Returned value uses a null prototype to avoid collisions with\n * JavaScript's own property names.\n * @param directiveDef - Directive definition to read argument definitions from.\n * @param node - AST node that may contain directives.\n * @param node.directives - The directives on the AST node.\n * @param variableValues - Operation variable values returned by getVariableValues.\n * @param fragmentVariableValues - Fragment variable values for the current fragment scope.\n * @param hideSuggestions - Whether suggestion text should be omitted from errors.\n * @returns A map of coerced directive argument values, or undefined when absent.\n * @example\n * ```ts\n * // Read literal directive arguments from a node.\n * import { parse } from 'graphql/language';\n * import { GraphQLSkipDirective } from 'graphql/type';\n * import { getDirectiveValues } from 'graphql/execution';\n *\n * const document = parse('{ name @skip(if: true) }');\n * const fieldNode = document.definitions[0].selectionSet.selections[0];\n *\n * getDirectiveValues(GraphQLSkipDirective, fieldNode); // => { if: true }\n * ```\n * @example\n * ```ts\n * // This variant resolves directive arguments from variables and handles absent directives.\n * import assert from 'node:assert';\n * import { parse } from 'graphql/language';\n * import { GraphQLIncludeDirective } from 'graphql/type';\n * import { buildSchema } from 'graphql/utilities';\n * import { getDirectiveValues, getVariableValues } from 'graphql/execution';\n *\n * const schema = buildSchema('type Query { name: String }');\n * const document = parse('query ($includeName: Boolean!) { name @include(if: $includeName) }');\n * const operation = document.definitions[0];\n * const fieldNode = document.definitions[0].selectionSet.selections[0];\n * const variables = getVariableValues(\n * schema,\n * operation.variableDefinitions,\n * { includeName: false },\n * );\n *\n * assert('variableValues' in variables);\n *\n * getDirectiveValues(GraphQLIncludeDirective, fieldNode, variables.variableValues); // => { if: false }\n * getDirectiveValues(GraphQLIncludeDirective, { directives: [] }); // => undefined\n * ```\n */\nexport function getDirectiveValues(\n directiveDef: GraphQLDirective,\n node: { readonly directives?: ReadonlyArray<DirectiveNode> | undefined },\n variableValues?: Maybe<VariableValues>,\n fragmentVariableValues?: Maybe<FragmentVariableValues>,\n hideSuggestions?: Maybe<boolean>,\n): undefined | ObjMap<unknown> {\n const directiveNode = node.directives?.find(\n (directive) => directive.name.value === directiveDef.name,\n );\n\n if (directiveNode) {\n return getArgumentValues(\n directiveDef,\n directiveNode,\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n }\n}\n"]}
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/execution/values.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Values */\n\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\nimport type { ObjMap, ReadOnlyObjMap } from '../jsutils/ObjMap.ts';\nimport { printPathArray } from '../jsutils/printPathArray.ts';\n\nimport { ensureGraphQLError } from '../error/ensureGraphQLError.ts';\nimport { GraphQLError } from '../error/GraphQLError.ts';\n\nimport type {\n ArgumentNode,\n DirectiveNode,\n FieldNode,\n FragmentArgumentNode,\n FragmentSpreadNode,\n VariableDefinitionNode,\n} from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\nimport type { GraphQLArgument, GraphQLField } from '../type/definition.ts';\nimport {\n isArgument,\n isNonNullType,\n isRequiredArgument,\n} from '../type/definition.ts';\nimport type { GraphQLDirective } from '../type/directives.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\nimport { validateDefaultInput } from '../type/validate.ts';\n\nimport {\n coerceDefaultValue,\n coerceInputLiteral,\n coerceInputValue,\n} from '../utilities/coerceInputValue.ts';\nimport {\n validateInputLiteral,\n validateInputValue,\n} from '../utilities/validateInputValue.ts';\n\nimport type {\n FragmentVariableValues,\n FragmentVariableValueSource,\n} from './collectFields.ts';\nimport type { GraphQLVariableSignature } from './getVariableSignature.ts';\nimport { getVariableSignature } from './getVariableSignature.ts';\n\n/**\n * Coerced variable values prepared for execution.\n *\n * The `coerced` map contains runtime values keyed by variable name. The\n * `sources` map records whether each value came from request input, an operation\n * default, or a fragment-variable default so utilities can preserve defaults\n * when replacing variables in literals.\n */\nexport interface VariableValues {\n /** Source metadata for each variable value keyed by variable name. */\n readonly sources: ReadOnlyObjMap<VariableValueSource>;\n /** Coerced runtime variable values keyed by variable name. */\n readonly coerced: ReadOnlyObjMap<unknown>;\n}\n\ninterface VariableValueSource {\n readonly signature: GraphQLVariableSignature;\n readonly value?: unknown;\n}\n\ntype VariableValuesOrErrors =\n | { variableValues: VariableValues; errors?: never }\n | { errors: ReadonlyArray<GraphQLError>; variableValues?: 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, GraphQLError values are returned.\n *\n * Note: Returned maps use null prototypes to avoid collisions with\n * Object prototype properties.\n * @param schema - GraphQL schema to use.\n * @param varDefNodes - The variable definition AST nodes to coerce.\n * @param inputs - The runtime variable values keyed by variable name.\n * @param options - Optional configuration for this operation.\n * @param [options.maxErrors] - Maximum number of coercion errors to report.\n * @param [options.hideSuggestions] - Whether suggestion text should be omitted\n * from errors.\n * @returns Coerced variable values with source metadata, or request errors.\n * @example\n * ```ts\n * // Coerce provided variables and apply operation defaults.\n * import assert from 'node:assert';\n * import { parse } from 'graphql/language';\n * import { buildSchema } from 'graphql/utilities';\n * import { getVariableValues } from 'graphql/execution';\n *\n * const schema = buildSchema(`\n * type Query {\n * reviews(stars: Int!, limit: Int = 10): [String]\n * }\n * `);\n * const document = parse(`\n * query ($stars: Int!, $limit: Int = 10) {\n * reviews(stars: $stars, limit: $limit)\n * }\n * `);\n * const operation = document.definitions[0];\n *\n * const result = getVariableValues(schema, operation.variableDefinitions, {\n * stars: '5',\n * });\n *\n * assert('variableValues' in result);\n *\n * result.variableValues.coerced; // => { stars: 5, limit: 10 }\n * ```\n * @example\n * ```ts\n * // This variant uses maxErrors to cap reported coercion errors.\n * import assert from 'node:assert';\n * import { parse } from 'graphql/language';\n * import { buildSchema } from 'graphql/utilities';\n * import { getVariableValues } from 'graphql/execution';\n *\n * const schema = buildSchema(`\n * input ReviewInput {\n * stars: Int!\n * }\n *\n * type Query {\n * review(input: ReviewInput!): String\n * }\n * `);\n * const document = parse(`\n * query ($first: ReviewInput!, $second: ReviewInput!) {\n * first: review(input: $first)\n * second: review(input: $second)\n * }\n * `);\n * const operation = document.definitions[0];\n *\n * const result = getVariableValues(\n * schema,\n * operation.variableDefinitions,\n * { first: { stars: 'bad' }, second: { stars: 'also bad' } },\n * { maxErrors: 1 },\n * );\n *\n * assert('errors' in result);\n *\n * result.errors.length; // => 2\n * result.errors[1].message; // matches /error limit reached/\n * ```\n */\nexport function getVariableValues(\n schema: GraphQLSchema,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { readonly [variable: string]: unknown },\n options?: { maxErrors?: number; hideSuggestions?: boolean },\n): VariableValuesOrErrors {\n const errors: Array<GraphQLError> = [];\n const maxErrors = options?.maxErrors;\n try {\n const variableValues = coerceVariableValues(\n schema,\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 options?.hideSuggestions,\n );\n\n if (errors.length === 0) {\n return { variableValues };\n }\n } catch (error) {\n errors.push(ensureGraphQLError(error));\n }\n\n return { errors };\n}\n\nfunction coerceVariableValues(\n schema: GraphQLSchema,\n varDefNodes: ReadonlyArray<VariableDefinitionNode>,\n inputs: { readonly [variable: string]: unknown },\n onError: (error: GraphQLError) => void,\n hideSuggestions?: Maybe<boolean>,\n): VariableValues {\n const sources: ObjMap<VariableValueSource> = Object.create(null);\n const coerced: ObjMap<unknown> = Object.create(null);\n for (const varDefNode of varDefNodes) {\n const varSignature = getVariableSignature(schema, varDefNode);\n\n if (varSignature instanceof GraphQLError) {\n onError(varSignature);\n continue;\n }\n\n const { name: varName, type: varType } = varSignature;\n const value = Object.hasOwn(inputs, varName) ? inputs[varName] : undefined;\n if (value === undefined) {\n sources[varName] = { signature: varSignature };\n if (varDefNode.defaultValue) {\n maybeUseDefaultValue(\n coerced,\n varName,\n varSignature,\n (error, path) => {\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" has invalid default value${printPathArray(path)}: ${error.message}`,\n { nodes: varDefNode },\n ),\n );\n },\n hideSuggestions,\n );\n continue;\n } else if (!isNonNullType(varType)) {\n // Non-provided values for nullable variables are omitted.\n continue;\n }\n } else {\n sources[varName] = { signature: varSignature, value };\n }\n\n const coercedValue = coerceInputValue(value, varType);\n if (coercedValue !== undefined) {\n coerced[varName] = coercedValue;\n } else {\n validateInputValue(\n value,\n varType,\n (error, path) => {\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" has invalid value${printPathArray(path)}: ${\n error.message\n }`,\n { nodes: varDefNode, originalError: error },\n ),\n );\n },\n hideSuggestions,\n );\n }\n }\n\n return { sources, coerced };\n}\n\nfunction maybeUseDefaultValue(\n coercedValues: ObjMap<unknown>,\n name: string,\n inputValue: GraphQLArgument | GraphQLVariableSignature,\n onError: (error: GraphQLError, path: ReadonlyArray<string | number>) => void,\n hideSuggestions?: Maybe<boolean>,\n): void {\n try {\n // coerceDefaultValue assumes validation has already rejected invalid\n // defaults. If validation was skipped, invalid defaults or nested input\n // field defaults can throw here; recover with validation-style errors below.\n const coercedDefaultValue = coerceDefaultValue(inputValue);\n if (coercedDefaultValue !== undefined) {\n coercedValues[name] = coercedDefaultValue;\n }\n } catch (error) {\n const defaultInput = inputValue.default;\n // Defensive: coerceDefaultValue should only throw while coercing a default.\n /* node:coverage ignore next 3 */\n if (defaultInput === undefined) {\n throw error;\n }\n\n // Prefer validation's user-facing errors for invalid defaults.\n let reportedValidationError = false;\n validateDefaultInput(\n defaultInput,\n inputValue.type,\n (defaultError, path) => {\n reportedValidationError = true;\n onError(defaultError, path);\n },\n hideSuggestions,\n );\n\n if (!reportedValidationError) {\n // The default itself validated, so coercion failed while applying a nested\n // input field default. Surface the original coercion error.\n onError(ensureGraphQLError(error), []);\n }\n }\n}\n\n/** @internal */\nexport function getFragmentVariableValues(\n fragmentSpreadNode: FragmentSpreadNode,\n fragmentSignatures: ReadOnlyObjMap<GraphQLVariableSignature>,\n variableValues: VariableValues,\n fragmentVariableValues?: Maybe<FragmentVariableValues>,\n hideSuggestions?: Maybe<boolean>,\n): FragmentVariableValues {\n const argumentNodes = fragmentSpreadNode.arguments ?? [];\n const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));\n const sources: ObjMap<FragmentVariableValueSource> = Object.create(null);\n const coerced: ObjMap<unknown> = Object.create(null);\n for (const [varName, varSignature] of Object.entries(fragmentSignatures)) {\n const argumentNode = argNodeMap.get(varName);\n if (argumentNode !== undefined) {\n sources[varName] =\n fragmentVariableValues == null\n ? { signature: varSignature, value: argumentNode.value }\n : {\n signature: varSignature,\n value: argumentNode.value,\n fragmentVariableValues,\n };\n } else {\n sources[varName] = {\n signature: varSignature,\n };\n }\n\n coerceArgument(\n coerced,\n fragmentSpreadNode,\n varName,\n varSignature,\n argumentNode,\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n }\n\n return { sources, coerced };\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: Returned value uses a null prototype to avoid collisions with\n * JavaScript's own property names.\n * @param def - Field or directive definition that declares the arguments.\n * @param node - Field or directive AST node supplying argument literals.\n * @param variableValues - Operation variable values returned by getVariableValues.\n * @param fragmentVariableValues - Fragment variable values for the current fragment scope.\n * @param hideSuggestions - Whether suggestion text should be omitted from errors.\n * @returns A map of coerced argument values.\n * @example\n * ```ts\n * // Read literal argument values and defaults.\n * import { parse } from 'graphql/language';\n * import { buildSchema } from 'graphql/utilities';\n * import { getArgumentValues } from 'graphql/execution';\n *\n * const schema = buildSchema(`\n * type Query {\n * reviews(stars: Int!, limit: Int = 10): [String]\n * }\n * `);\n * const fieldDef = schema.getQueryType().getFields().reviews;\n * const document = parse('{ reviews(stars: 5) }');\n * const fieldNode = document.definitions[0].selectionSet.selections[0];\n *\n * getArgumentValues(fieldDef, fieldNode); // => { stars: 5, limit: 10 }\n * ```\n * @example\n * ```ts\n * // This variant resolves argument values from operation variables.\n * import assert from 'node:assert';\n * import { parse } from 'graphql/language';\n * import { buildSchema } from 'graphql/utilities';\n * import { getArgumentValues, getVariableValues } from 'graphql/execution';\n *\n * const schema = buildSchema(`\n * type Query {\n * reviews(stars: Int!): [String]\n * }\n * `);\n * const fieldDef = schema.getQueryType().getFields().reviews;\n * const document = parse('query ($stars: Int!) { reviews(stars: $stars) }');\n * const operation = document.definitions[0];\n * const fieldNode = document.definitions[0].selectionSet.selections[0];\n * const variables = getVariableValues(schema, operation.variableDefinitions, {\n * stars: '5',\n * });\n *\n * assert('variableValues' in variables);\n *\n * getArgumentValues(fieldDef, fieldNode, variables.variableValues); // => { stars: 5 }\n * getArgumentValues(fieldDef, fieldNode); // throws an error\n * ```\n */\nexport function getArgumentValues(\n def: GraphQLField<unknown, unknown> | GraphQLDirective,\n node: FieldNode | DirectiveNode,\n variableValues?: Maybe<VariableValues>,\n fragmentVariableValues?: Maybe<FragmentVariableValues>,\n hideSuggestions?: Maybe<boolean>,\n): ObjMap<unknown> {\n const coercedValues: ObjMap<unknown> = Object.create(null);\n\n const argumentNodes = node.arguments ?? [];\n const argNodeMap = new Map(argumentNodes.map((arg) => [arg.name.value, arg]));\n\n for (const argDef of def.args) {\n const name = argDef.name;\n coerceArgument(\n coercedValues,\n node,\n name,\n argDef,\n argNodeMap.get(argDef.name),\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n }\n return coercedValues;\n}\n\n/** @internal */\n// eslint-disable-next-line max-params\nfunction coerceArgument(\n coercedValues: ObjMap<unknown>,\n node: FieldNode | DirectiveNode | FragmentSpreadNode,\n argName: string,\n argDef: GraphQLArgument | GraphQLVariableSignature,\n argumentNode: ArgumentNode | FragmentArgumentNode | undefined,\n variableValues: Maybe<VariableValues>,\n fragmentVariableValues: Maybe<FragmentVariableValues>,\n hideSuggestions?: Maybe<boolean>,\n): void {\n const argType = argDef.type;\n const onArgDefaultValueError = (\n error: GraphQLError,\n path: ReadonlyArray<string | number>,\n ): never => {\n throw new GraphQLError(\n `${printArgumentOrFragmentVariable(argDef, node)} has invalid default value${printPathArray(path)}: ${error.message}`,\n { nodes: node },\n );\n };\n\n if (!argumentNode) {\n if (isRequiredArgument(argDef)) {\n // Note: ProvidedRequiredArgumentsRule 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 // TODO: clean up the naming of isRequiredArgument(), isArgument(), and argDef if/when experimental fragment variables are merged\n `${printArgumentOrFragmentVariable(argDef, node)} of required type \"${argType}\" was not provided.`,\n { nodes: node },\n );\n }\n maybeUseDefaultValue(\n coercedValues,\n argName,\n argDef,\n onArgDefaultValueError,\n hideSuggestions,\n );\n return;\n }\n\n const valueNode = argumentNode.value;\n\n // Variables without a value are treated as if no argument was provided if\n // the argument is not required.\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n const scopedVariableValues = fragmentVariableValues?.sources[variableName]\n ? fragmentVariableValues\n : variableValues;\n if (\n (scopedVariableValues == null ||\n !Object.hasOwn(scopedVariableValues.coerced, variableName)) &&\n !isRequiredArgument(argDef)\n ) {\n maybeUseDefaultValue(\n coercedValues,\n argName,\n argDef,\n onArgDefaultValueError,\n hideSuggestions,\n );\n return;\n }\n }\n const coercedValue = coerceInputLiteral(\n valueNode,\n argType,\n variableValues,\n fragmentVariableValues,\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 validateInputLiteral(\n valueNode,\n argType,\n (error, path) => {\n // TODO: clean up the naming of isRequiredArgument(), isArgument(), and argDef if/when experimental fragment variables are merged\n error.message = `${printArgumentOrFragmentVariable(argDef, node)} has invalid value${printPathArray(\n path,\n )}: ${error.message}`;\n throw error;\n },\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n /* node:coverage ignore next */\n invariant(false, 'Invalid argument');\n }\n coercedValues[argName] = coercedValue;\n}\n\n// TODO: clean up the naming of isRequiredArgument(), isArgument(), and argDef if/when experimental fragment variables are merged\nfunction printArgumentOrFragmentVariable(\n argDef: GraphQLArgument | GraphQLVariableSignature,\n node: FieldNode | DirectiveNode | FragmentSpreadNode,\n): string {\n return isArgument(argDef)\n ? `Argument \"${argDef}\"`\n : `Variable \"$${argDef.name}\" defined by fragment \"${node.name.value}\"`;\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: Returned value uses a null prototype to avoid collisions with\n * JavaScript's own property names.\n * @param directiveDef - Directive definition to read argument definitions from.\n * @param node - AST node that may contain directives.\n * @param node.directives - The directives on the AST node.\n * @param variableValues - Operation variable values returned by getVariableValues.\n * @param fragmentVariableValues - Fragment variable values for the current fragment scope.\n * @param hideSuggestions - Whether suggestion text should be omitted from errors.\n * @returns A map of coerced directive argument values, or undefined when absent.\n * @example\n * ```ts\n * // Read literal directive arguments from a node.\n * import { parse } from 'graphql/language';\n * import { GraphQLSkipDirective } from 'graphql/type';\n * import { getDirectiveValues } from 'graphql/execution';\n *\n * const document = parse('{ name @skip(if: true) }');\n * const fieldNode = document.definitions[0].selectionSet.selections[0];\n *\n * getDirectiveValues(GraphQLSkipDirective, fieldNode); // => { if: true }\n * ```\n * @example\n * ```ts\n * // This variant resolves directive arguments from variables and handles absent directives.\n * import assert from 'node:assert';\n * import { parse } from 'graphql/language';\n * import { GraphQLIncludeDirective } from 'graphql/type';\n * import { buildSchema } from 'graphql/utilities';\n * import { getDirectiveValues, getVariableValues } from 'graphql/execution';\n *\n * const schema = buildSchema('type Query { name: String }');\n * const document = parse(\n * 'query ($includeName: Boolean!) { name @include(if: $includeName) }',\n * );\n * const operation = document.definitions[0];\n * const fieldNode = document.definitions[0].selectionSet.selections[0];\n * const variables = getVariableValues(schema, operation.variableDefinitions, {\n * includeName: false,\n * });\n *\n * assert('variableValues' in variables);\n *\n * getDirectiveValues(\n * GraphQLIncludeDirective,\n * fieldNode,\n * variables.variableValues,\n * ); // => { if: false }\n * getDirectiveValues(GraphQLIncludeDirective, { directives: [] }); // => undefined\n * ```\n */\nexport function getDirectiveValues(\n directiveDef: GraphQLDirective,\n node: { readonly directives?: ReadonlyArray<DirectiveNode> | undefined },\n variableValues?: Maybe<VariableValues>,\n fragmentVariableValues?: Maybe<FragmentVariableValues>,\n hideSuggestions?: Maybe<boolean>,\n): undefined | ObjMap<unknown> {\n const directiveNode = node.directives?.find(\n (directive) => directive.name.value === directiveDef.name,\n );\n\n if (directiveNode) {\n return getArgumentValues(\n directiveDef,\n directiveNode,\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n }\n}\n"]}
@@ -30,7 +30,7 @@ export interface ParseOptions {
30
30
  * in the `variableDefinitions` field of the FragmentDefinitionNode.
31
31
  * Fragment spread arguments will be represented in the `arguments` field of FragmentSpreadNode.
32
32
  * @example
33
- * ```graphql
33
+ * ```graphql prettier-ignore
34
34
  * {
35
35
  * t { ...A(var: true) }
36
36
  * }
@@ -40,17 +40,6 @@ export interface ParseOptions {
40
40
  * ```
41
41
  */
42
42
  experimentalFragmentArguments?: boolean | undefined;
43
- /**
44
- * EXPERIMENTAL:
45
- *
46
- * If enabled, the parser will parse directives on directive definitions.
47
- * This syntax is not part of the GraphQL specification and may change.
48
- * @example
49
- * ```graphql
50
- * directive @foo @bar on FIELD
51
- * ```
52
- */
53
- experimentalDirectivesOnDirectiveDefinitions?: boolean | undefined;
54
43
  /**
55
44
  * Internal parser hook for GraphQL.js entry points that need to parse a
56
45
  * restricted grammar with an alternate lexer.
@@ -78,21 +67,22 @@ export interface ParseOptions {
78
67
  * // This variant enables parser options and provides an explicit lexer.
79
68
  * import { Lexer, Source, parse } from 'graphql/language';
80
69
  *
81
- * const document = parse(`
70
+ * const document = parse(
71
+ * `
72
+ * {
73
+ * t { ...A(var: true) }
74
+ * }
75
+ * fragment A($var: Boolean = false) on T {
76
+ * name
77
+ * }
78
+ * `,
82
79
  * {
83
- * t { ...A(var: true) }
84
- * }
85
- * fragment A($var: Boolean = false) on T {
86
- * name
87
- * }
88
- * `, {
89
- * experimentalFragmentArguments: true,
90
- * maxTokens: 80,
91
- * noLocation: true,
92
- * });
93
- * const directiveDocument = parse('directive @foo @bar on FIELD', {
94
- * experimentalDirectivesOnDirectiveDefinitions: true,
95
- * });
80
+ * experimentalFragmentArguments: true,
81
+ * maxTokens: 80,
82
+ * noLocation: true,
83
+ * },
84
+ * );
85
+ * const directiveDocument = parse('directive @foo @bar on FIELD');
96
86
  * const source = new Source('{ hero }');
97
87
  * const lexerDocument = parse(source, { lexer: new Lexer(source) });
98
88
  *
@@ -561,6 +551,7 @@ export declare class Parser {
561
551
  * TypeSystemExtension :
562
552
  * - SchemaExtension
563
553
  * - TypeExtension
554
+ * - DirectiveExtension
564
555
  *
565
556
  * TypeExtension :
566
557
  * - ScalarTypeExtension
@@ -568,8 +559,7 @@ export declare class Parser {
568
559
  * - InterfaceTypeExtension
569
560
  * - UnionTypeExtension
570
561
  * - EnumTypeExtension
571
- * - InputObjectTypeDefinition
572
- * - DirectiveDefinitionExtension
562
+ * - InputObjectTypeExtension
573
563
  *
574
564
  * @internal
575
565
  */
@@ -633,11 +623,11 @@ export declare class Parser {
633
623
  * @internal
634
624
  */
635
625
  parseInputObjectTypeExtension(): InputObjectTypeExtensionNode;
636
- parseDirectiveDefinitionExtension(): DirectiveExtensionNode;
626
+ parseDirectiveExtension(): DirectiveExtensionNode;
637
627
  /**
638
628
  * ```
639
629
  * DirectiveDefinition :
640
- * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations
630
+ * - Description? directive @ Name ArgumentsDefinition? Directives[Const]? `repeatable`? on DirectiveLocations
641
631
  * ```
642
632
  *
643
633
  * @internal
@@ -30,7 +30,7 @@ export interface ParseOptions {
30
30
  * in the `variableDefinitions` field of the FragmentDefinitionNode.
31
31
  * Fragment spread arguments will be represented in the `arguments` field of FragmentSpreadNode.
32
32
  * @example
33
- * ```graphql
33
+ * ```graphql prettier-ignore
34
34
  * {
35
35
  * t { ...A(var: true) }
36
36
  * }
@@ -40,17 +40,6 @@ export interface ParseOptions {
40
40
  * ```
41
41
  */
42
42
  experimentalFragmentArguments?: boolean | undefined;
43
- /**
44
- * EXPERIMENTAL:
45
- *
46
- * If enabled, the parser will parse directives on directive definitions.
47
- * This syntax is not part of the GraphQL specification and may change.
48
- * @example
49
- * ```graphql
50
- * directive @foo @bar on FIELD
51
- * ```
52
- */
53
- experimentalDirectivesOnDirectiveDefinitions?: boolean | undefined;
54
43
  /**
55
44
  * Internal parser hook for GraphQL.js entry points that need to parse a
56
45
  * restricted grammar with an alternate lexer.
@@ -78,21 +67,22 @@ export interface ParseOptions {
78
67
  * // This variant enables parser options and provides an explicit lexer.
79
68
  * import { Lexer, Source, parse } from 'graphql/language';
80
69
  *
81
- * const document = parse(`
70
+ * const document = parse(
71
+ * `
72
+ * {
73
+ * t { ...A(var: true) }
74
+ * }
75
+ * fragment A($var: Boolean = false) on T {
76
+ * name
77
+ * }
78
+ * `,
82
79
  * {
83
- * t { ...A(var: true) }
84
- * }
85
- * fragment A($var: Boolean = false) on T {
86
- * name
87
- * }
88
- * `, {
89
- * experimentalFragmentArguments: true,
90
- * maxTokens: 80,
91
- * noLocation: true,
92
- * });
93
- * const directiveDocument = parse('directive @foo @bar on FIELD', {
94
- * experimentalDirectivesOnDirectiveDefinitions: true,
95
- * });
80
+ * experimentalFragmentArguments: true,
81
+ * maxTokens: 80,
82
+ * noLocation: true,
83
+ * },
84
+ * );
85
+ * const directiveDocument = parse('directive @foo @bar on FIELD');
96
86
  * const source = new Source('{ hero }');
97
87
  * const lexerDocument = parse(source, { lexer: new Lexer(source) });
98
88
  *
@@ -561,6 +551,7 @@ export declare class Parser {
561
551
  * TypeSystemExtension :
562
552
  * - SchemaExtension
563
553
  * - TypeExtension
554
+ * - DirectiveExtension
564
555
  *
565
556
  * TypeExtension :
566
557
  * - ScalarTypeExtension
@@ -568,8 +559,7 @@ export declare class Parser {
568
559
  * - InterfaceTypeExtension
569
560
  * - UnionTypeExtension
570
561
  * - EnumTypeExtension
571
- * - InputObjectTypeDefinition
572
- * - DirectiveDefinitionExtension
562
+ * - InputObjectTypeExtension
573
563
  *
574
564
  * @internal
575
565
  */
@@ -633,11 +623,11 @@ export declare class Parser {
633
623
  * @internal
634
624
  */
635
625
  parseInputObjectTypeExtension(): InputObjectTypeExtensionNode;
636
- parseDirectiveDefinitionExtension(): DirectiveExtensionNode;
626
+ parseDirectiveExtension(): DirectiveExtensionNode;
637
627
  /**
638
628
  * ```
639
629
  * DirectiveDefinition :
640
- * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations
630
+ * - Description? directive @ Name ArgumentsDefinition? Directives[Const]? `repeatable`? on DirectiveLocations
641
631
  * ```
642
632
  *
643
633
  * @internal
@@ -690,10 +690,7 @@ class Parser {
690
690
  case 'input':
691
691
  return this.parseInputObjectTypeExtension();
692
692
  case 'directive':
693
- if (this._options.experimentalDirectivesOnDirectiveDefinitions) {
694
- return this.parseDirectiveDefinitionExtension();
695
- }
696
- break;
693
+ return this.parseDirectiveExtension();
697
694
  }
698
695
  }
699
696
  throw this.unexpected(keywordToken);
@@ -821,7 +818,7 @@ class Parser {
821
818
  fields,
822
819
  });
823
820
  }
824
- parseDirectiveDefinitionExtension() {
821
+ parseDirectiveExtension() {
825
822
  const start = this._lexer.token;
826
823
  this.expectKeyword('extend');
827
824
  this.expectKeyword('directive');
@@ -844,10 +841,7 @@ class Parser {
844
841
  this.expectToken(tokenKind_ts_1.TokenKind.AT);
845
842
  const name = this.parseName();
846
843
  const args = this.parseArgumentDefs();
847
- const directives = this._options
848
- .experimentalDirectivesOnDirectiveDefinitions
849
- ? this.parseConstDirectives()
850
- : undefined;
844
+ const directives = this.parseConstDirectives();
851
845
  const repeatable = this.expectOptionalKeyword('repeatable');
852
846
  this.expectKeyword('on');
853
847
  const locations = this.parseDirectiveLocations();