@graphitation/supermassive 3.0.1 → 3.2.0

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 (79) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +18 -2
  3. package/lib/index.d.ts +18 -14
  4. package/lib/index.d.ts.map +1 -1
  5. package/lib/index.js +27 -8
  6. package/lib/index.js.map +3 -3
  7. package/lib/index.mjs +30 -18
  8. package/lib/index.mjs.map +3 -3
  9. package/lib/legacyAST/TypedAST.d.ts +366 -0
  10. package/lib/legacyAST/TypedAST.d.ts.map +1 -0
  11. package/lib/legacyAST/TypedAST.js +16 -0
  12. package/lib/legacyAST/TypedAST.js.map +7 -0
  13. package/lib/legacyAST/TypedAST.mjs +0 -0
  14. package/lib/legacyAST/TypedAST.mjs.map +7 -0
  15. package/lib/legacyAST/addTypesToRequestDocument.d.ts +6 -0
  16. package/lib/legacyAST/addTypesToRequestDocument.d.ts.map +1 -0
  17. package/lib/legacyAST/addTypesToRequestDocument.js +161 -0
  18. package/lib/legacyAST/addTypesToRequestDocument.js.map +7 -0
  19. package/lib/legacyAST/addTypesToRequestDocument.mjs +153 -0
  20. package/lib/legacyAST/addTypesToRequestDocument.mjs.map +7 -0
  21. package/lib/legacyAST/annotateDocumentGraphQLTransform.d.ts +3 -0
  22. package/lib/legacyAST/annotateDocumentGraphQLTransform.d.ts.map +1 -0
  23. package/lib/legacyAST/annotateDocumentGraphQLTransform.js +34 -0
  24. package/lib/legacyAST/annotateDocumentGraphQLTransform.js.map +7 -0
  25. package/lib/legacyAST/annotateDocumentGraphQLTransform.mjs +17 -0
  26. package/lib/legacyAST/annotateDocumentGraphQLTransform.mjs.map +7 -0
  27. package/lib/legacyAST/index.d.ts +4 -0
  28. package/lib/legacyAST/index.d.ts.map +1 -0
  29. package/lib/legacyAST/index.js +26 -0
  30. package/lib/legacyAST/index.js.map +7 -0
  31. package/lib/legacyAST/index.mjs +7 -0
  32. package/lib/legacyAST/index.mjs.map +7 -0
  33. package/lib/schema/definition.d.ts +31 -2
  34. package/lib/schema/definition.d.ts.map +1 -1
  35. package/lib/schema/definition.js +67 -5
  36. package/lib/schema/definition.js.map +3 -3
  37. package/lib/schema/definition.mjs +67 -4
  38. package/lib/schema/definition.mjs.map +2 -2
  39. package/lib/schema/directives.d.ts.map +1 -1
  40. package/lib/schema/directives.js +22 -1
  41. package/lib/schema/directives.js.map +2 -2
  42. package/lib/schema/directives.mjs +23 -1
  43. package/lib/schema/directives.mjs.map +2 -2
  44. package/lib/types.d.ts +8 -0
  45. package/lib/types.d.ts.map +1 -1
  46. package/lib/types.js.map +1 -1
  47. package/lib/utilities/decodeASTSchema.d.ts.map +1 -1
  48. package/lib/utilities/decodeASTSchema.js +7 -3
  49. package/lib/utilities/decodeASTSchema.js.map +2 -2
  50. package/lib/utilities/decodeASTSchema.mjs +10 -4
  51. package/lib/utilities/decodeASTSchema.mjs.map +2 -2
  52. package/lib/utilities/encodeASTSchema.d.ts.map +1 -1
  53. package/lib/utilities/encodeASTSchema.js +16 -1
  54. package/lib/utilities/encodeASTSchema.js.map +3 -3
  55. package/lib/utilities/encodeASTSchema.mjs +18 -2
  56. package/lib/utilities/encodeASTSchema.mjs.map +3 -3
  57. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.d.ts.map +1 -1
  58. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js +2 -2
  59. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.js.map +2 -2
  60. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs +3 -2
  61. package/lib/utilities/extractMinimalViableSchemaForRequestDocument.mjs.map +2 -2
  62. package/lib/utilities/mergeSchemaDefinitions.d.ts +1 -0
  63. package/lib/utilities/mergeSchemaDefinitions.d.ts.map +1 -1
  64. package/lib/utilities/mergeSchemaDefinitions.js +4 -0
  65. package/lib/utilities/mergeSchemaDefinitions.js.map +2 -2
  66. package/lib/utilities/mergeSchemaDefinitions.mjs +4 -0
  67. package/lib/utilities/mergeSchemaDefinitions.mjs.map +2 -2
  68. package/lib/utilities/schemaFragmentFromMinimalViableSchemaDocument.d.ts +3 -0
  69. package/lib/utilities/schemaFragmentFromMinimalViableSchemaDocument.d.ts.map +1 -0
  70. package/lib/utilities/schemaFragmentFromMinimalViableSchemaDocument.js +34 -0
  71. package/lib/utilities/schemaFragmentFromMinimalViableSchemaDocument.js.map +7 -0
  72. package/lib/utilities/schemaFragmentFromMinimalViableSchemaDocument.mjs +15 -0
  73. package/lib/utilities/schemaFragmentFromMinimalViableSchemaDocument.mjs.map +7 -0
  74. package/lib/values.d.ts.map +1 -1
  75. package/lib/values.js +1 -1
  76. package/lib/values.js.map +2 -2
  77. package/lib/values.mjs +4 -3
  78. package/lib/values.mjs.map +2 -2
  79. package/package.json +1 -1
package/lib/types.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/types.ts"],
4
- "sourcesContent": ["import {\n GraphQLError,\n GraphQLFormattedError,\n GraphQLScalarType,\n DocumentNode,\n FragmentDefinitionNode,\n OperationDefinitionNode,\n} from \"graphql\";\nimport { Maybe } from \"./jsutils/Maybe\";\nimport { PromiseOrValue } from \"./jsutils/PromiseOrValue\";\nimport { ObjMap } from \"./jsutils/ObjMap\";\nimport { Path } from \"./jsutils/Path\";\nimport { ExecutionHooks } from \"./hooks/types\";\nimport { FieldGroup } from \"./collectFields\";\nimport { OperationTypes, SchemaDefinitions } from \"./schema/definition\";\nimport { TypeName } from \"./schema/reference\";\n\nexport type ScalarTypeResolver = GraphQLScalarType;\nexport type EnumTypeResolver = Record<string, unknown>;\nexport type FunctionFieldResolver<\n TSource,\n TContext,\n TArgs = Record<string, unknown>,\n TReturn = unknown,\n> = (\n source: TSource,\n args: TArgs,\n context: TContext,\n info: ResolveInfo,\n) => TReturn;\n\nexport type FieldResolver<\n TSource,\n TContext,\n TArgs = Record<string, unknown>,\n TReturn = unknown,\n> =\n | FunctionFieldResolver<TSource, TContext, TArgs, TReturn>\n | FieldResolverObject<TSource, TContext, TArgs, TReturn>;\n\nexport type FieldResolverObject<\n TSource,\n TContext,\n TArgs = Record<string, unknown>,\n TReturn = unknown,\n> = {\n subscribe?: FunctionFieldResolver<TSource, TContext, TArgs, TReturn>;\n resolve?: FunctionFieldResolver<TSource, TContext, TArgs, TReturn>;\n};\n\nexport type TypeResolver<TSource, TContext> = (\n value: TSource,\n context: TContext,\n info: ResolveInfo,\n) => PromiseOrValue<Maybe<string>>;\n\nexport type ObjectTypeResolver<\n TSource = unknown,\n TContext = unknown,\n TArgs = unknown,\n> = {\n [key: string]: FieldResolver<TSource, TContext, TArgs>;\n};\n\nexport type UserInterfaceTypeResolver = {\n __resolveType?: TypeResolver<unknown, unknown>;\n};\n\nexport type UserUnionTypeResolver = {\n __resolveType?: TypeResolver<unknown, unknown>;\n};\n\nexport type UserResolver<TSource, TContext> =\n | ObjectTypeResolver<TSource, TContext>\n | UserInterfaceTypeResolver\n | UserUnionTypeResolver\n | ScalarTypeResolver\n | EnumTypeResolver;\n\n// TODO: Keep only UserResolver\nexport type Resolver<TSource, TContext> = UserResolver<TSource, TContext>;\n\nexport type Resolvers<TSource = unknown, TContext = unknown> = UserResolvers<\n TSource,\n TContext\n>;\n\nexport type UserResolvers<TSource = unknown, TContext = unknown> = Record<\n string,\n UserResolver<TSource, TContext>\n>;\n\nexport interface ResolveInfo {\n fieldName: string;\n fieldGroup: FieldGroup;\n returnTypeName: string;\n parentTypeName: string;\n // readonly returnType: GraphQLOutputType;\n // readonly parentType: GraphQLObjectType;\n path: Path;\n // readonly schema: GraphQLSchema;\n fragments: ObjMap<FragmentDefinitionNode>;\n rootValue: unknown;\n operation: OperationDefinitionNode;\n variableValues: { [variable: string]: unknown };\n}\n\nexport type ExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> =\n | TotalExecutionResult<TData, TExtensions>\n | SubscriptionExecutionResult<TData, TExtensions>\n | IncrementalExecutionResult<TData, TExtensions>;\n\n/**\n * The result of GraphQL execution.\n *\n * - `errors` is included when any errors occurred as a non-empty array.\n * - `data` is the result of a successful execution of the query.\n * - `hasNext` is true if a future payload is expected.\n * - `extensions` is reserved for adding non-standard properties.\n * - `incremental` is a list of the results from defer/stream directives.\n */\nexport interface TotalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n errors?: ReadonlyArray<GraphQLError>;\n data?: TData | null;\n extensions?: TExtensions;\n}\n\nexport type SubscriptionExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> = AsyncGenerator<TotalExecutionResult<TData, TExtensions>>;\n\nexport interface FormattedTotalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n errors?: ReadonlyArray<GraphQLFormattedError>;\n data?: TData | null;\n extensions?: TExtensions;\n}\n\nexport interface IncrementalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n initialResult: InitialIncrementalExecutionResult<TData, TExtensions>;\n subsequentResults: AsyncGenerator<\n SubsequentIncrementalExecutionResult<TData, TExtensions>,\n void,\n void\n >;\n}\n\nexport interface InitialIncrementalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> extends TotalExecutionResult<TData, TExtensions> {\n hasNext: boolean;\n incremental?: ReadonlyArray<IncrementalResult<TData, TExtensions>>;\n extensions?: TExtensions;\n}\n\nexport interface FormattedInitialIncrementalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> extends FormattedTotalExecutionResult<TData, TExtensions> {\n hasNext: boolean;\n incremental?: ReadonlyArray<FormattedIncrementalResult<TData, TExtensions>>;\n extensions?: TExtensions;\n}\n\nexport interface SubsequentIncrementalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n hasNext: boolean;\n incremental?: ReadonlyArray<IncrementalResult<TData, TExtensions>>;\n extensions?: TExtensions;\n}\n\nexport interface FormattedSubsequentIncrementalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n hasNext: boolean;\n incremental?: ReadonlyArray<FormattedIncrementalResult<TData, TExtensions>>;\n extensions?: TExtensions;\n}\n\nexport interface IncrementalDeferResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> extends TotalExecutionResult<TData, TExtensions> {\n path?: ReadonlyArray<string | number>;\n label?: string;\n}\n\nexport interface FormattedIncrementalDeferResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> extends FormattedTotalExecutionResult<TData, TExtensions> {\n path?: ReadonlyArray<string | number>;\n label?: string;\n}\n\nexport interface IncrementalStreamResult<\n TData = Array<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n errors?: ReadonlyArray<GraphQLError>;\n items?: TData | null;\n path?: ReadonlyArray<string | number>;\n label?: string;\n extensions?: TExtensions;\n}\n\nexport interface FormattedIncrementalStreamResult<\n TData = Array<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n errors?: ReadonlyArray<GraphQLFormattedError>;\n items?: TData | null;\n path?: ReadonlyArray<string | number>;\n label?: string;\n extensions?: TExtensions;\n}\n\nexport type IncrementalResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> =\n | IncrementalDeferResult<TData, TExtensions>\n | IncrementalStreamResult<TData, TExtensions>;\n\nexport type FormattedIncrementalResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> =\n | FormattedIncrementalDeferResult<TData, TExtensions>\n | FormattedIncrementalStreamResult<TData, TExtensions>;\n\nexport interface CommonExecutionArgs {\n document: DocumentNode;\n rootValue?: unknown;\n contextValue?: unknown;\n buildContextValue?: (contextValue?: unknown) => unknown;\n variableValues?: Maybe<{ [variable: string]: unknown }>;\n operationName?: Maybe<string>;\n fieldResolver?: Maybe<FunctionFieldResolver<unknown, unknown>>;\n typeResolver?: Maybe<TypeResolver<unknown, unknown>>;\n subscribeFieldResolver?: Maybe<FunctionFieldResolver<unknown, unknown>>;\n fieldExecutionHooks?: ExecutionHooks;\n}\nexport type ExecutionWithoutSchemaArgs = CommonExecutionArgs & {\n schemaFragment: SchemaFragment;\n schemaFragmentLoader?: SchemaFragmentLoader;\n};\n\nexport type ExecutionWithSchemaArgs = CommonExecutionArgs & {\n definitions: DocumentNode;\n resolvers: UserResolvers;\n};\n\nexport type SchemaId = string;\n\nexport type SchemaFragment = {\n schemaId: SchemaId;\n definitions: SchemaDefinitions;\n resolvers: UserResolvers;\n operationTypes?: OperationTypes;\n};\n\nexport type SchemaFragmentForReturnTypeRequest = {\n kind: \"ReturnType\";\n parentTypeName: TypeName;\n fieldName: string;\n};\nexport type SchemaFragmentForRuntimeTypeRequest = {\n kind: \"RuntimeType\";\n abstractTypeName: TypeName;\n runtimeTypeName: TypeName;\n};\n\nexport type SchemaFragmentRequest =\n | SchemaFragmentForReturnTypeRequest\n | SchemaFragmentForRuntimeTypeRequest;\n\nexport type SchemaFragmentLoaderResult = {\n mergedFragment: SchemaFragment;\n mergedContextValue?: unknown;\n};\n\nexport type SchemaFragmentLoader = (\n currentFragment: SchemaFragment,\n currentContextValue: unknown,\n req: SchemaFragmentRequest,\n) => Promise<SchemaFragmentLoaderResult>;\n"],
4
+ "sourcesContent": ["import {\n GraphQLError,\n GraphQLFormattedError,\n GraphQLScalarType,\n DocumentNode,\n FragmentDefinitionNode,\n OperationDefinitionNode,\n} from \"graphql\";\nimport { Maybe } from \"./jsutils/Maybe\";\nimport { PromiseOrValue } from \"./jsutils/PromiseOrValue\";\nimport { ObjMap } from \"./jsutils/ObjMap\";\nimport { Path } from \"./jsutils/Path\";\nimport { ExecutionHooks } from \"./hooks/types\";\nimport { FieldGroup } from \"./collectFields\";\nimport { OperationTypes, SchemaDefinitions } from \"./schema/definition\";\nimport { TypeName } from \"./schema/reference\";\n\nexport type ScalarTypeResolver = GraphQLScalarType;\nexport type EnumTypeResolver = Record<string, unknown>;\nexport type FunctionFieldResolver<\n TSource,\n TContext,\n TArgs = Record<string, unknown>,\n TReturn = unknown,\n> = (\n source: TSource,\n args: TArgs,\n context: TContext,\n info: ResolveInfo,\n) => TReturn;\n\nexport type FieldResolver<\n TSource,\n TContext,\n TArgs = Record<string, unknown>,\n TReturn = unknown,\n> =\n | FunctionFieldResolver<TSource, TContext, TArgs, TReturn>\n | FieldResolverObject<TSource, TContext, TArgs, TReturn>;\n\nexport type FieldResolverObject<\n TSource,\n TContext,\n TArgs = Record<string, unknown>,\n TReturn = unknown,\n> = {\n subscribe?: FunctionFieldResolver<TSource, TContext, TArgs, TReturn>;\n resolve?: FunctionFieldResolver<TSource, TContext, TArgs, TReturn>;\n};\n\nexport type TypeResolver<TSource, TContext> = (\n value: TSource,\n context: TContext,\n info: ResolveInfo,\n) => PromiseOrValue<Maybe<string>>;\n\nexport type ObjectTypeResolver<\n TSource = unknown,\n TContext = unknown,\n TArgs = unknown,\n> = {\n [key: string]: FieldResolver<TSource, TContext, TArgs>;\n};\n\nexport type UserInterfaceTypeResolver = {\n __resolveType?: TypeResolver<unknown, unknown>;\n};\n\nexport type UserUnionTypeResolver = {\n __resolveType?: TypeResolver<unknown, unknown>;\n};\n\nexport type UserResolver<TSource, TContext> =\n | ObjectTypeResolver<TSource, TContext>\n | UserInterfaceTypeResolver\n | UserUnionTypeResolver\n | ScalarTypeResolver\n | EnumTypeResolver;\n\n// TODO: Keep only UserResolver\nexport type Resolver<TSource, TContext> = UserResolver<TSource, TContext>;\n\nexport type Resolvers<TSource = unknown, TContext = unknown> = UserResolvers<\n TSource,\n TContext\n>;\n\nexport type UserResolvers<TSource = unknown, TContext = unknown> = Record<\n string,\n UserResolver<TSource, TContext>\n>;\n\nexport interface ResolveInfo {\n fieldName: string;\n fieldGroup: FieldGroup;\n returnTypeName: string;\n parentTypeName: string;\n // readonly returnType: GraphQLOutputType;\n // readonly parentType: GraphQLObjectType;\n path: Path;\n // readonly schema: GraphQLSchema;\n fragments: ObjMap<FragmentDefinitionNode>;\n rootValue: unknown;\n operation: OperationDefinitionNode;\n variableValues: { [variable: string]: unknown };\n}\n\nexport type ExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> =\n | TotalExecutionResult<TData, TExtensions>\n | SubscriptionExecutionResult<TData, TExtensions>\n | IncrementalExecutionResult<TData, TExtensions>;\n\n/**\n * The result of GraphQL execution.\n *\n * - `errors` is included when any errors occurred as a non-empty array.\n * - `data` is the result of a successful execution of the query.\n * - `hasNext` is true if a future payload is expected.\n * - `extensions` is reserved for adding non-standard properties.\n * - `incremental` is a list of the results from defer/stream directives.\n */\nexport interface TotalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n errors?: ReadonlyArray<GraphQLError>;\n data?: TData | null;\n extensions?: TExtensions;\n}\n\nexport type SubscriptionExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> = AsyncGenerator<TotalExecutionResult<TData, TExtensions>>;\n\nexport interface FormattedTotalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n errors?: ReadonlyArray<GraphQLFormattedError>;\n data?: TData | null;\n extensions?: TExtensions;\n}\n\nexport interface IncrementalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n initialResult: InitialIncrementalExecutionResult<TData, TExtensions>;\n subsequentResults: AsyncGenerator<\n SubsequentIncrementalExecutionResult<TData, TExtensions>,\n void,\n void\n >;\n}\n\nexport interface InitialIncrementalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> extends TotalExecutionResult<TData, TExtensions> {\n hasNext: boolean;\n incremental?: ReadonlyArray<IncrementalResult<TData, TExtensions>>;\n extensions?: TExtensions;\n}\n\nexport interface FormattedInitialIncrementalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> extends FormattedTotalExecutionResult<TData, TExtensions> {\n hasNext: boolean;\n incremental?: ReadonlyArray<FormattedIncrementalResult<TData, TExtensions>>;\n extensions?: TExtensions;\n}\n\nexport interface SubsequentIncrementalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n hasNext: boolean;\n incremental?: ReadonlyArray<IncrementalResult<TData, TExtensions>>;\n extensions?: TExtensions;\n}\n\nexport interface FormattedSubsequentIncrementalExecutionResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n hasNext: boolean;\n incremental?: ReadonlyArray<FormattedIncrementalResult<TData, TExtensions>>;\n extensions?: TExtensions;\n}\n\nexport interface IncrementalDeferResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> extends TotalExecutionResult<TData, TExtensions> {\n path?: ReadonlyArray<string | number>;\n label?: string;\n}\n\nexport interface FormattedIncrementalDeferResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> extends FormattedTotalExecutionResult<TData, TExtensions> {\n path?: ReadonlyArray<string | number>;\n label?: string;\n}\n\nexport interface IncrementalStreamResult<\n TData = Array<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n errors?: ReadonlyArray<GraphQLError>;\n items?: TData | null;\n path?: ReadonlyArray<string | number>;\n label?: string;\n extensions?: TExtensions;\n}\n\nexport interface FormattedIncrementalStreamResult<\n TData = Array<unknown>,\n TExtensions = ObjMap<unknown>,\n> {\n errors?: ReadonlyArray<GraphQLFormattedError>;\n items?: TData | null;\n path?: ReadonlyArray<string | number>;\n label?: string;\n extensions?: TExtensions;\n}\n\nexport type IncrementalResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> =\n | IncrementalDeferResult<TData, TExtensions>\n | IncrementalStreamResult<TData, TExtensions>;\n\nexport type FormattedIncrementalResult<\n TData = ObjMap<unknown>,\n TExtensions = ObjMap<unknown>,\n> =\n | FormattedIncrementalDeferResult<TData, TExtensions>\n | FormattedIncrementalStreamResult<TData, TExtensions>;\n\nexport interface CommonExecutionArgs {\n document: DocumentNode;\n rootValue?: unknown;\n contextValue?: unknown;\n buildContextValue?: (contextValue?: unknown) => unknown;\n variableValues?: Maybe<{ [variable: string]: unknown }>;\n operationName?: Maybe<string>;\n fieldResolver?: Maybe<FunctionFieldResolver<unknown, unknown>>;\n typeResolver?: Maybe<TypeResolver<unknown, unknown>>;\n subscribeFieldResolver?: Maybe<FunctionFieldResolver<unknown, unknown>>;\n fieldExecutionHooks?: ExecutionHooks;\n}\nexport type ExecutionWithoutSchemaArgs = CommonExecutionArgs & {\n schemaFragment: SchemaFragment;\n schemaFragmentLoader?: SchemaFragmentLoader;\n};\n\nexport type ExecutionWithSchemaArgs = CommonExecutionArgs & {\n definitions: DocumentNode;\n resolvers: UserResolvers;\n};\n\nexport type SchemaId = string;\n\nexport type SchemaFragment = {\n schemaId: SchemaId;\n definitions: SchemaDefinitions;\n resolvers: UserResolvers;\n operationTypes?: OperationTypes;\n};\n\nexport type SchemaFragmentForReturnTypeRequest = {\n kind: \"ReturnType\";\n parentTypeName: TypeName;\n fieldName: string;\n};\nexport type SchemaFragmentForRuntimeTypeRequest = {\n kind: \"RuntimeType\";\n abstractTypeName: TypeName;\n runtimeTypeName: TypeName;\n};\n\nexport type SchemaFragmentRequest =\n | SchemaFragmentForReturnTypeRequest\n | SchemaFragmentForRuntimeTypeRequest;\n\nexport type SchemaFragmentLoaderResult = {\n mergedFragment: SchemaFragment;\n mergedContextValue?: unknown;\n};\n\nexport type SchemaFragmentLoader = (\n currentFragment: SchemaFragment,\n currentContextValue: unknown,\n req: SchemaFragmentRequest,\n) => Promise<SchemaFragmentLoaderResult>;\n\nexport type DocumentWithMinimalViableSchema = {\n readonly kind: \"Document\";\n readonly loc?: Location;\n readonly definitions: DefinitionNodeWithMinimalViableSchema[];\n};\n\nexport type DefinitionNodeWithMinimalViableSchema = (\n | OperationDefinitionNode\n | FragmentDefinitionNode\n) & {\n readonly __defs: SchemaDefinitions;\n};\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"decodeASTSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/decodeASTSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAcb,MAAM,SAAS,CAAC;AACjB,OAAO,EAEL,iBAAiB,EA4BlB,MAAM,sBAAsB,CAAC;AAa9B;;GAEG;AACH,wBAAgB,eAAe,CAC7B,sBAAsB,EAAE,iBAAiB,EAAE,GAC1C,YAAY,CA+Bd"}
1
+ {"version":3,"file":"decodeASTSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/decodeASTSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAcb,MAAM,SAAS,CAAC;AACjB,OAAO,EAEL,iBAAiB,EA8BlB,MAAM,sBAAsB,CAAC;AAa9B;;GAEG;AACH,wBAAgB,eAAe,CAC7B,sBAAsB,EAAE,iBAAiB,EAAE,GAC1C,YAAY,CA+Bd"}
@@ -227,12 +227,16 @@ function decodeTypeReference(ref) {
227
227
  function decodeDirective(tuple, types) {
228
228
  const name = (0, import_definition.getDirectiveName)(tuple);
229
229
  const args = (0, import_definition.getDirectiveDefinitionArgs)(tuple);
230
+ const locations = (0, import_definition.getDirectiveLocations)(tuple);
230
231
  return {
231
232
  kind: import_graphql.Kind.DIRECTIVE_DEFINITION,
232
233
  name: nameNode(name),
233
234
  arguments: args ? decodeArguments(args, types) : [],
234
- // TODO? locations and repeatable are irrelevant for execution
235
- repeatable: false,
236
- locations: []
235
+ locations: locations.map((loc) => ({
236
+ kind: import_graphql.Kind.NAME,
237
+ value: (0, import_definition.decodeDirectiveLocation)(loc)
238
+ })),
239
+ // TODO? repeatable are irrelevant for execution
240
+ repeatable: false
237
241
  };
238
242
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/decodeASTSchema.ts"],
4
- "sourcesContent": ["import {\n DirectiveDefinitionNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n Kind,\n ListTypeNode,\n NamedTypeNode,\n NameNode,\n NonNullTypeNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n SchemaDefinitions,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n TypeDefinitionsRecord,\n UnionTypeDefinitionTuple,\n isScalarTypeDefinition,\n isEnumTypeDefinition,\n isObjectTypeDefinition,\n isInterfaceTypeDefinition,\n isUnionTypeDefinition,\n isInputObjectTypeDefinition,\n getEnumValues,\n getObjectFields,\n getObjectTypeInterfaces,\n getFields,\n getInterfaceTypeInterfaces,\n getUnionTypeMembers,\n getInputObjectFields,\n getFieldTypeReference,\n getFieldArgs,\n getInputValueTypeReference,\n getInputDefaultValue,\n getDirectiveName,\n getDirectiveDefinitionArgs,\n} from \"../schema/definition\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n typeNameFromReference,\n TypeReference,\n unwrap,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { ValueNode as ConstValueNode } from \"graphql/language/ast\"; // TODO: use ConstValueNode in graphql@17\nimport { inspect } from \"../jsutils/inspect\";\n\n/**\n * Converts encoded schema to standard AST representation of the same schema\n */\nexport function decodeASTSchema(\n encodedSchemaFragments: SchemaDefinitions[],\n): DocumentNode {\n if (encodedSchemaFragments.length !== 1) {\n // TODO:\n throw new Error(\"decodeSchema does not support decoding extensions yet\");\n }\n const definitions = [];\n const types = encodedSchemaFragments[0].types;\n const directives = encodedSchemaFragments[0].directives;\n\n for (const typeName in types) {\n const tuple = types[typeName];\n if (isScalarTypeDefinition(tuple)) {\n definitions.push(decodeScalarType(typeName));\n } else if (isEnumTypeDefinition(tuple)) {\n definitions.push(decodeEnumType(typeName, tuple));\n } else if (isObjectTypeDefinition(tuple)) {\n definitions.push(decodeObjectType(typeName, tuple, types));\n } else if (isInterfaceTypeDefinition(tuple)) {\n definitions.push(decodeInterfaceType(typeName, tuple, types));\n } else if (isUnionTypeDefinition(tuple)) {\n definitions.push(decodeUnionType(typeName, tuple));\n } else if (isInputObjectTypeDefinition(tuple)) {\n definitions.push(decodeInputObjectType(typeName, tuple, types));\n }\n }\n\n for (const directive of directives ?? []) {\n definitions.push(decodeDirective(directive, types));\n }\n\n return { kind: Kind.DOCUMENT, definitions };\n}\n\nfunction nameNode(value: string): NameNode {\n return { kind: Kind.NAME, value };\n}\n\nfunction decodeScalarType(typeName: string): ScalarTypeDefinitionNode {\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n name: nameNode(typeName),\n };\n}\n\nfunction decodeEnumType(\n typeName: string,\n tuple: EnumTypeDefinitionTuple,\n): EnumTypeDefinitionNode {\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n name: nameNode(typeName),\n values: getEnumValues(tuple).map((value) => ({\n kind: Kind.ENUM_VALUE_DEFINITION,\n name: nameNode(value),\n })),\n };\n}\n\nfunction decodeObjectType(\n typeName: string,\n tuple: ObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): ObjectTypeDefinitionNode {\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(getObjectFields(tuple) ?? {}, types),\n interfaces: getObjectTypeInterfaces(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInterfaceType(\n typeName: string,\n tuple: InterfaceTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InterfaceTypeDefinitionNode {\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(getFields(tuple), types),\n interfaces: getInterfaceTypeInterfaces(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeUnionType(\n typeName: string,\n tuple: UnionTypeDefinitionTuple,\n): UnionTypeDefinitionNode {\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n name: nameNode(typeName),\n types: getUnionTypeMembers(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInputObjectType(\n typeName: string,\n tuple: InputObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InputObjectTypeDefinitionNode {\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: Object.entries(getInputObjectFields(tuple)).map(([name, value]) =>\n decodeInputValue(name, value, types),\n ),\n };\n}\n\nfunction decodeFields(\n fields: Record<string, FieldDefinition>,\n types: TypeDefinitionsRecord,\n): FieldDefinitionNode[] {\n return Object.entries(fields).map(([name, value]) => {\n const type = decodeTypeReference(getFieldTypeReference(value));\n return {\n kind: Kind.FIELD_DEFINITION,\n name: nameNode(name),\n type,\n arguments: decodeArguments(getFieldArgs(value) ?? {}, types),\n };\n });\n}\n\nfunction decodeInputValue(\n name: string,\n value: InputValueDefinition,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode {\n const inputValueTypeRef = getInputValueTypeReference(value);\n const type = decodeTypeReference(inputValueTypeRef);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n name: nameNode(name),\n type,\n defaultValue: Array.isArray(value)\n ? (valueToConstValueNode(\n getInputDefaultValue(value),\n inputValueTypeRef,\n types,\n ) as any) // Note: \"any\" is necessary here for graphql15/graphql17 cross-compatibility\n : undefined,\n };\n}\n\nfunction valueToConstValueNode(\n jsValue: unknown,\n typeRef: TypeReference,\n types: TypeDefinitionsRecord,\n): ConstValueNode {\n const typeName = typeNameFromReference(typeRef);\n if (typeof jsValue === \"string\") {\n return typeName === \"String\"\n ? { kind: Kind.STRING, value: jsValue }\n : { kind: Kind.ENUM, value: jsValue };\n }\n if (jsValue === null) {\n invariant(!isNonNullType(typeRef), \"Expecting nullable type\");\n return { kind: Kind.NULL };\n }\n if (Number.isInteger(jsValue)) {\n return { kind: Kind.INT, value: String(jsValue) };\n }\n if (typeof jsValue === \"number\") {\n return { kind: Kind.FLOAT, value: String(jsValue) };\n }\n if (Array.isArray(jsValue)) {\n invariant(isListType(typeRef), \"Expecting list type\");\n return {\n kind: Kind.LIST,\n values: jsValue.map((item) =>\n valueToConstValueNode(item, unwrap(typeRef), types),\n ),\n };\n }\n if (typeof jsValue === \"object\") {\n const typeDef = types[typeName];\n invariant(\n Array.isArray(typeDef) && isInputObjectTypeDefinition(typeDef),\n `Expecting input object type for ${typeName}, got ${typeDef?.[0]}`,\n );\n const fields = getInputObjectFields(typeDef);\n return {\n kind: Kind.OBJECT,\n fields: Object.entries(jsValue).map(([name, value]) => {\n const fieldDef = fields[name];\n const fieldTypeRef = getInputValueTypeReference(fieldDef);\n invariant(\n fieldTypeRef !== undefined,\n `Could not find field definition for ${typeName}.${name}`,\n );\n return {\n kind: Kind.OBJECT_FIELD,\n name: nameNode(name),\n value: valueToConstValueNode(value, fieldTypeRef, types),\n };\n }),\n };\n }\n invariant(\n false,\n `Unexpected value for type ${inspectTypeReference(typeRef)}: ${inspect(\n jsValue,\n )}`,\n );\n}\n\nfunction decodeArguments(\n args: Record<string, InputValueDefinition>,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode[] {\n return Object.entries(args).map(([name, value]) =>\n decodeInputValue(name, value, types),\n );\n}\n\nfunction decodeTypeReference(\n ref: TypeReference,\n): NamedTypeNode | ListTypeNode | NonNullTypeNode {\n if (isListType(ref)) {\n return {\n kind: Kind.LIST_TYPE,\n type: decodeTypeReference(unwrap(ref)),\n };\n }\n if (isNonNullType(ref)) {\n const unwrappedType = decodeTypeReference(unwrap(ref));\n invariant(\n unwrappedType.kind !== Kind.NON_NULL_TYPE,\n \"Non-null modifier cannot be nested\",\n );\n return {\n kind: Kind.NON_NULL_TYPE,\n type: unwrappedType,\n };\n }\n return {\n kind: Kind.NAMED_TYPE,\n name: nameNode(typeNameFromReference(ref)),\n };\n}\n\nfunction decodeDirective(\n tuple: DirectiveDefinitionTuple,\n types: TypeDefinitionsRecord,\n): DirectiveDefinitionNode {\n const name = getDirectiveName(tuple);\n const args = getDirectiveDefinitionArgs(tuple);\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n name: nameNode(name),\n arguments: args ? decodeArguments(args, types) : [],\n // TODO? locations and repeatable are irrelevant for execution\n repeatable: false,\n locations: [],\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n DirectiveDefinitionNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n Kind,\n ListTypeNode,\n NamedTypeNode,\n NameNode,\n NonNullTypeNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n SchemaDefinitions,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n TypeDefinitionsRecord,\n UnionTypeDefinitionTuple,\n isScalarTypeDefinition,\n isEnumTypeDefinition,\n isObjectTypeDefinition,\n isInterfaceTypeDefinition,\n isUnionTypeDefinition,\n isInputObjectTypeDefinition,\n getEnumValues,\n getObjectFields,\n getObjectTypeInterfaces,\n getFields,\n getInterfaceTypeInterfaces,\n getUnionTypeMembers,\n getInputObjectFields,\n getFieldTypeReference,\n getFieldArgs,\n getInputValueTypeReference,\n getInputDefaultValue,\n getDirectiveName,\n getDirectiveDefinitionArgs,\n getDirectiveLocations,\n decodeDirectiveLocation,\n} from \"../schema/definition\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n typeNameFromReference,\n TypeReference,\n unwrap,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { ValueNode as ConstValueNode } from \"graphql/language/ast\"; // TODO: use ConstValueNode in graphql@17\nimport { inspect } from \"../jsutils/inspect\";\n\n/**\n * Converts encoded schema to standard AST representation of the same schema\n */\nexport function decodeASTSchema(\n encodedSchemaFragments: SchemaDefinitions[],\n): DocumentNode {\n if (encodedSchemaFragments.length !== 1) {\n // TODO:\n throw new Error(\"decodeSchema does not support decoding extensions yet\");\n }\n const definitions = [];\n const types = encodedSchemaFragments[0].types;\n const directives = encodedSchemaFragments[0].directives;\n\n for (const typeName in types) {\n const tuple = types[typeName];\n if (isScalarTypeDefinition(tuple)) {\n definitions.push(decodeScalarType(typeName));\n } else if (isEnumTypeDefinition(tuple)) {\n definitions.push(decodeEnumType(typeName, tuple));\n } else if (isObjectTypeDefinition(tuple)) {\n definitions.push(decodeObjectType(typeName, tuple, types));\n } else if (isInterfaceTypeDefinition(tuple)) {\n definitions.push(decodeInterfaceType(typeName, tuple, types));\n } else if (isUnionTypeDefinition(tuple)) {\n definitions.push(decodeUnionType(typeName, tuple));\n } else if (isInputObjectTypeDefinition(tuple)) {\n definitions.push(decodeInputObjectType(typeName, tuple, types));\n }\n }\n\n for (const directive of directives ?? []) {\n definitions.push(decodeDirective(directive, types));\n }\n\n return { kind: Kind.DOCUMENT, definitions };\n}\n\nfunction nameNode(value: string): NameNode {\n return { kind: Kind.NAME, value };\n}\n\nfunction decodeScalarType(typeName: string): ScalarTypeDefinitionNode {\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n name: nameNode(typeName),\n };\n}\n\nfunction decodeEnumType(\n typeName: string,\n tuple: EnumTypeDefinitionTuple,\n): EnumTypeDefinitionNode {\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n name: nameNode(typeName),\n values: getEnumValues(tuple).map((value) => ({\n kind: Kind.ENUM_VALUE_DEFINITION,\n name: nameNode(value),\n })),\n };\n}\n\nfunction decodeObjectType(\n typeName: string,\n tuple: ObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): ObjectTypeDefinitionNode {\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(getObjectFields(tuple) ?? {}, types),\n interfaces: getObjectTypeInterfaces(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInterfaceType(\n typeName: string,\n tuple: InterfaceTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InterfaceTypeDefinitionNode {\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(getFields(tuple), types),\n interfaces: getInterfaceTypeInterfaces(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeUnionType(\n typeName: string,\n tuple: UnionTypeDefinitionTuple,\n): UnionTypeDefinitionNode {\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n name: nameNode(typeName),\n types: getUnionTypeMembers(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInputObjectType(\n typeName: string,\n tuple: InputObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InputObjectTypeDefinitionNode {\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: Object.entries(getInputObjectFields(tuple)).map(([name, value]) =>\n decodeInputValue(name, value, types),\n ),\n };\n}\n\nfunction decodeFields(\n fields: Record<string, FieldDefinition>,\n types: TypeDefinitionsRecord,\n): FieldDefinitionNode[] {\n return Object.entries(fields).map(([name, value]) => {\n const type = decodeTypeReference(getFieldTypeReference(value));\n return {\n kind: Kind.FIELD_DEFINITION,\n name: nameNode(name),\n type,\n arguments: decodeArguments(getFieldArgs(value) ?? {}, types),\n };\n });\n}\n\nfunction decodeInputValue(\n name: string,\n value: InputValueDefinition,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode {\n const inputValueTypeRef = getInputValueTypeReference(value);\n const type = decodeTypeReference(inputValueTypeRef);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n name: nameNode(name),\n type,\n defaultValue: Array.isArray(value)\n ? (valueToConstValueNode(\n getInputDefaultValue(value),\n inputValueTypeRef,\n types,\n ) as any) // Note: \"any\" is necessary here for graphql15/graphql17 cross-compatibility\n : undefined,\n };\n}\n\nfunction valueToConstValueNode(\n jsValue: unknown,\n typeRef: TypeReference,\n types: TypeDefinitionsRecord,\n): ConstValueNode {\n const typeName = typeNameFromReference(typeRef);\n if (typeof jsValue === \"string\") {\n return typeName === \"String\"\n ? { kind: Kind.STRING, value: jsValue }\n : { kind: Kind.ENUM, value: jsValue };\n }\n if (jsValue === null) {\n invariant(!isNonNullType(typeRef), \"Expecting nullable type\");\n return { kind: Kind.NULL };\n }\n if (Number.isInteger(jsValue)) {\n return { kind: Kind.INT, value: String(jsValue) };\n }\n if (typeof jsValue === \"number\") {\n return { kind: Kind.FLOAT, value: String(jsValue) };\n }\n if (Array.isArray(jsValue)) {\n invariant(isListType(typeRef), \"Expecting list type\");\n return {\n kind: Kind.LIST,\n values: jsValue.map((item) =>\n valueToConstValueNode(item, unwrap(typeRef), types),\n ),\n };\n }\n if (typeof jsValue === \"object\") {\n const typeDef = types[typeName];\n invariant(\n Array.isArray(typeDef) && isInputObjectTypeDefinition(typeDef),\n `Expecting input object type for ${typeName}, got ${typeDef?.[0]}`,\n );\n const fields = getInputObjectFields(typeDef);\n return {\n kind: Kind.OBJECT,\n fields: Object.entries(jsValue).map(([name, value]) => {\n const fieldDef = fields[name];\n const fieldTypeRef = getInputValueTypeReference(fieldDef);\n invariant(\n fieldTypeRef !== undefined,\n `Could not find field definition for ${typeName}.${name}`,\n );\n return {\n kind: Kind.OBJECT_FIELD,\n name: nameNode(name),\n value: valueToConstValueNode(value, fieldTypeRef, types),\n };\n }),\n };\n }\n invariant(\n false,\n `Unexpected value for type ${inspectTypeReference(typeRef)}: ${inspect(\n jsValue,\n )}`,\n );\n}\n\nfunction decodeArguments(\n args: Record<string, InputValueDefinition>,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode[] {\n return Object.entries(args).map(([name, value]) =>\n decodeInputValue(name, value, types),\n );\n}\n\nfunction decodeTypeReference(\n ref: TypeReference,\n): NamedTypeNode | ListTypeNode | NonNullTypeNode {\n if (isListType(ref)) {\n return {\n kind: Kind.LIST_TYPE,\n type: decodeTypeReference(unwrap(ref)),\n };\n }\n if (isNonNullType(ref)) {\n const unwrappedType = decodeTypeReference(unwrap(ref));\n invariant(\n unwrappedType.kind !== Kind.NON_NULL_TYPE,\n \"Non-null modifier cannot be nested\",\n );\n return {\n kind: Kind.NON_NULL_TYPE,\n type: unwrappedType,\n };\n }\n return {\n kind: Kind.NAMED_TYPE,\n name: nameNode(typeNameFromReference(ref)),\n };\n}\n\nfunction decodeDirective(\n tuple: DirectiveDefinitionTuple,\n types: TypeDefinitionsRecord,\n): DirectiveDefinitionNode {\n const name = getDirectiveName(tuple);\n const args = getDirectiveDefinitionArgs(tuple);\n const locations = getDirectiveLocations(tuple);\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n name: nameNode(name),\n arguments: args ? decodeArguments(args, types) : [],\n locations: locations.map((loc) => ({\n kind: Kind.NAME,\n value: decodeDirectiveLocation(loc),\n })),\n // TODO? repeatable are irrelevant for execution\n repeatable: false,\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -21,7 +21,9 @@ import {
21
21
  getInputValueTypeReference,
22
22
  getInputDefaultValue,
23
23
  getDirectiveName,
24
- getDirectiveDefinitionArgs
24
+ getDirectiveDefinitionArgs,
25
+ getDirectiveLocations,
26
+ decodeDirectiveLocation
25
27
  } from "../schema/definition.mjs";
26
28
  import {
27
29
  inspectTypeReference,
@@ -233,13 +235,17 @@ function decodeTypeReference(ref) {
233
235
  function decodeDirective(tuple, types) {
234
236
  const name = getDirectiveName(tuple);
235
237
  const args = getDirectiveDefinitionArgs(tuple);
238
+ const locations = getDirectiveLocations(tuple);
236
239
  return {
237
240
  kind: Kind.DIRECTIVE_DEFINITION,
238
241
  name: nameNode(name),
239
242
  arguments: args ? decodeArguments(args, types) : [],
240
- // TODO? locations and repeatable are irrelevant for execution
241
- repeatable: false,
242
- locations: []
243
+ locations: locations.map((loc) => ({
244
+ kind: Kind.NAME,
245
+ value: decodeDirectiveLocation(loc)
246
+ })),
247
+ // TODO? repeatable are irrelevant for execution
248
+ repeatable: false
243
249
  };
244
250
  }
245
251
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/decodeASTSchema.ts"],
4
- "sourcesContent": ["import {\n DirectiveDefinitionNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n Kind,\n ListTypeNode,\n NamedTypeNode,\n NameNode,\n NonNullTypeNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n SchemaDefinitions,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n TypeDefinitionsRecord,\n UnionTypeDefinitionTuple,\n isScalarTypeDefinition,\n isEnumTypeDefinition,\n isObjectTypeDefinition,\n isInterfaceTypeDefinition,\n isUnionTypeDefinition,\n isInputObjectTypeDefinition,\n getEnumValues,\n getObjectFields,\n getObjectTypeInterfaces,\n getFields,\n getInterfaceTypeInterfaces,\n getUnionTypeMembers,\n getInputObjectFields,\n getFieldTypeReference,\n getFieldArgs,\n getInputValueTypeReference,\n getInputDefaultValue,\n getDirectiveName,\n getDirectiveDefinitionArgs,\n} from \"../schema/definition\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n typeNameFromReference,\n TypeReference,\n unwrap,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { ValueNode as ConstValueNode } from \"graphql/language/ast\"; // TODO: use ConstValueNode in graphql@17\nimport { inspect } from \"../jsutils/inspect\";\n\n/**\n * Converts encoded schema to standard AST representation of the same schema\n */\nexport function decodeASTSchema(\n encodedSchemaFragments: SchemaDefinitions[],\n): DocumentNode {\n if (encodedSchemaFragments.length !== 1) {\n // TODO:\n throw new Error(\"decodeSchema does not support decoding extensions yet\");\n }\n const definitions = [];\n const types = encodedSchemaFragments[0].types;\n const directives = encodedSchemaFragments[0].directives;\n\n for (const typeName in types) {\n const tuple = types[typeName];\n if (isScalarTypeDefinition(tuple)) {\n definitions.push(decodeScalarType(typeName));\n } else if (isEnumTypeDefinition(tuple)) {\n definitions.push(decodeEnumType(typeName, tuple));\n } else if (isObjectTypeDefinition(tuple)) {\n definitions.push(decodeObjectType(typeName, tuple, types));\n } else if (isInterfaceTypeDefinition(tuple)) {\n definitions.push(decodeInterfaceType(typeName, tuple, types));\n } else if (isUnionTypeDefinition(tuple)) {\n definitions.push(decodeUnionType(typeName, tuple));\n } else if (isInputObjectTypeDefinition(tuple)) {\n definitions.push(decodeInputObjectType(typeName, tuple, types));\n }\n }\n\n for (const directive of directives ?? []) {\n definitions.push(decodeDirective(directive, types));\n }\n\n return { kind: Kind.DOCUMENT, definitions };\n}\n\nfunction nameNode(value: string): NameNode {\n return { kind: Kind.NAME, value };\n}\n\nfunction decodeScalarType(typeName: string): ScalarTypeDefinitionNode {\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n name: nameNode(typeName),\n };\n}\n\nfunction decodeEnumType(\n typeName: string,\n tuple: EnumTypeDefinitionTuple,\n): EnumTypeDefinitionNode {\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n name: nameNode(typeName),\n values: getEnumValues(tuple).map((value) => ({\n kind: Kind.ENUM_VALUE_DEFINITION,\n name: nameNode(value),\n })),\n };\n}\n\nfunction decodeObjectType(\n typeName: string,\n tuple: ObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): ObjectTypeDefinitionNode {\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(getObjectFields(tuple) ?? {}, types),\n interfaces: getObjectTypeInterfaces(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInterfaceType(\n typeName: string,\n tuple: InterfaceTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InterfaceTypeDefinitionNode {\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(getFields(tuple), types),\n interfaces: getInterfaceTypeInterfaces(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeUnionType(\n typeName: string,\n tuple: UnionTypeDefinitionTuple,\n): UnionTypeDefinitionNode {\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n name: nameNode(typeName),\n types: getUnionTypeMembers(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInputObjectType(\n typeName: string,\n tuple: InputObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InputObjectTypeDefinitionNode {\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: Object.entries(getInputObjectFields(tuple)).map(([name, value]) =>\n decodeInputValue(name, value, types),\n ),\n };\n}\n\nfunction decodeFields(\n fields: Record<string, FieldDefinition>,\n types: TypeDefinitionsRecord,\n): FieldDefinitionNode[] {\n return Object.entries(fields).map(([name, value]) => {\n const type = decodeTypeReference(getFieldTypeReference(value));\n return {\n kind: Kind.FIELD_DEFINITION,\n name: nameNode(name),\n type,\n arguments: decodeArguments(getFieldArgs(value) ?? {}, types),\n };\n });\n}\n\nfunction decodeInputValue(\n name: string,\n value: InputValueDefinition,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode {\n const inputValueTypeRef = getInputValueTypeReference(value);\n const type = decodeTypeReference(inputValueTypeRef);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n name: nameNode(name),\n type,\n defaultValue: Array.isArray(value)\n ? (valueToConstValueNode(\n getInputDefaultValue(value),\n inputValueTypeRef,\n types,\n ) as any) // Note: \"any\" is necessary here for graphql15/graphql17 cross-compatibility\n : undefined,\n };\n}\n\nfunction valueToConstValueNode(\n jsValue: unknown,\n typeRef: TypeReference,\n types: TypeDefinitionsRecord,\n): ConstValueNode {\n const typeName = typeNameFromReference(typeRef);\n if (typeof jsValue === \"string\") {\n return typeName === \"String\"\n ? { kind: Kind.STRING, value: jsValue }\n : { kind: Kind.ENUM, value: jsValue };\n }\n if (jsValue === null) {\n invariant(!isNonNullType(typeRef), \"Expecting nullable type\");\n return { kind: Kind.NULL };\n }\n if (Number.isInteger(jsValue)) {\n return { kind: Kind.INT, value: String(jsValue) };\n }\n if (typeof jsValue === \"number\") {\n return { kind: Kind.FLOAT, value: String(jsValue) };\n }\n if (Array.isArray(jsValue)) {\n invariant(isListType(typeRef), \"Expecting list type\");\n return {\n kind: Kind.LIST,\n values: jsValue.map((item) =>\n valueToConstValueNode(item, unwrap(typeRef), types),\n ),\n };\n }\n if (typeof jsValue === \"object\") {\n const typeDef = types[typeName];\n invariant(\n Array.isArray(typeDef) && isInputObjectTypeDefinition(typeDef),\n `Expecting input object type for ${typeName}, got ${typeDef?.[0]}`,\n );\n const fields = getInputObjectFields(typeDef);\n return {\n kind: Kind.OBJECT,\n fields: Object.entries(jsValue).map(([name, value]) => {\n const fieldDef = fields[name];\n const fieldTypeRef = getInputValueTypeReference(fieldDef);\n invariant(\n fieldTypeRef !== undefined,\n `Could not find field definition for ${typeName}.${name}`,\n );\n return {\n kind: Kind.OBJECT_FIELD,\n name: nameNode(name),\n value: valueToConstValueNode(value, fieldTypeRef, types),\n };\n }),\n };\n }\n invariant(\n false,\n `Unexpected value for type ${inspectTypeReference(typeRef)}: ${inspect(\n jsValue,\n )}`,\n );\n}\n\nfunction decodeArguments(\n args: Record<string, InputValueDefinition>,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode[] {\n return Object.entries(args).map(([name, value]) =>\n decodeInputValue(name, value, types),\n );\n}\n\nfunction decodeTypeReference(\n ref: TypeReference,\n): NamedTypeNode | ListTypeNode | NonNullTypeNode {\n if (isListType(ref)) {\n return {\n kind: Kind.LIST_TYPE,\n type: decodeTypeReference(unwrap(ref)),\n };\n }\n if (isNonNullType(ref)) {\n const unwrappedType = decodeTypeReference(unwrap(ref));\n invariant(\n unwrappedType.kind !== Kind.NON_NULL_TYPE,\n \"Non-null modifier cannot be nested\",\n );\n return {\n kind: Kind.NON_NULL_TYPE,\n type: unwrappedType,\n };\n }\n return {\n kind: Kind.NAMED_TYPE,\n name: nameNode(typeNameFromReference(ref)),\n };\n}\n\nfunction decodeDirective(\n tuple: DirectiveDefinitionTuple,\n types: TypeDefinitionsRecord,\n): DirectiveDefinitionNode {\n const name = getDirectiveName(tuple);\n const args = getDirectiveDefinitionArgs(tuple);\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n name: nameNode(name),\n arguments: args ? decodeArguments(args, types) : [],\n // TODO? locations and repeatable are irrelevant for execution\n repeatable: false,\n locations: [],\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n DirectiveDefinitionNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n Kind,\n ListTypeNode,\n NamedTypeNode,\n NameNode,\n NonNullTypeNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n SchemaDefinitions,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n TypeDefinitionsRecord,\n UnionTypeDefinitionTuple,\n isScalarTypeDefinition,\n isEnumTypeDefinition,\n isObjectTypeDefinition,\n isInterfaceTypeDefinition,\n isUnionTypeDefinition,\n isInputObjectTypeDefinition,\n getEnumValues,\n getObjectFields,\n getObjectTypeInterfaces,\n getFields,\n getInterfaceTypeInterfaces,\n getUnionTypeMembers,\n getInputObjectFields,\n getFieldTypeReference,\n getFieldArgs,\n getInputValueTypeReference,\n getInputDefaultValue,\n getDirectiveName,\n getDirectiveDefinitionArgs,\n getDirectiveLocations,\n decodeDirectiveLocation,\n} from \"../schema/definition\";\nimport {\n inspectTypeReference,\n isListType,\n isNonNullType,\n typeNameFromReference,\n TypeReference,\n unwrap,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { ValueNode as ConstValueNode } from \"graphql/language/ast\"; // TODO: use ConstValueNode in graphql@17\nimport { inspect } from \"../jsutils/inspect\";\n\n/**\n * Converts encoded schema to standard AST representation of the same schema\n */\nexport function decodeASTSchema(\n encodedSchemaFragments: SchemaDefinitions[],\n): DocumentNode {\n if (encodedSchemaFragments.length !== 1) {\n // TODO:\n throw new Error(\"decodeSchema does not support decoding extensions yet\");\n }\n const definitions = [];\n const types = encodedSchemaFragments[0].types;\n const directives = encodedSchemaFragments[0].directives;\n\n for (const typeName in types) {\n const tuple = types[typeName];\n if (isScalarTypeDefinition(tuple)) {\n definitions.push(decodeScalarType(typeName));\n } else if (isEnumTypeDefinition(tuple)) {\n definitions.push(decodeEnumType(typeName, tuple));\n } else if (isObjectTypeDefinition(tuple)) {\n definitions.push(decodeObjectType(typeName, tuple, types));\n } else if (isInterfaceTypeDefinition(tuple)) {\n definitions.push(decodeInterfaceType(typeName, tuple, types));\n } else if (isUnionTypeDefinition(tuple)) {\n definitions.push(decodeUnionType(typeName, tuple));\n } else if (isInputObjectTypeDefinition(tuple)) {\n definitions.push(decodeInputObjectType(typeName, tuple, types));\n }\n }\n\n for (const directive of directives ?? []) {\n definitions.push(decodeDirective(directive, types));\n }\n\n return { kind: Kind.DOCUMENT, definitions };\n}\n\nfunction nameNode(value: string): NameNode {\n return { kind: Kind.NAME, value };\n}\n\nfunction decodeScalarType(typeName: string): ScalarTypeDefinitionNode {\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n name: nameNode(typeName),\n };\n}\n\nfunction decodeEnumType(\n typeName: string,\n tuple: EnumTypeDefinitionTuple,\n): EnumTypeDefinitionNode {\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n name: nameNode(typeName),\n values: getEnumValues(tuple).map((value) => ({\n kind: Kind.ENUM_VALUE_DEFINITION,\n name: nameNode(value),\n })),\n };\n}\n\nfunction decodeObjectType(\n typeName: string,\n tuple: ObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): ObjectTypeDefinitionNode {\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(getObjectFields(tuple) ?? {}, types),\n interfaces: getObjectTypeInterfaces(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInterfaceType(\n typeName: string,\n tuple: InterfaceTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InterfaceTypeDefinitionNode {\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: decodeFields(getFields(tuple), types),\n interfaces: getInterfaceTypeInterfaces(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeUnionType(\n typeName: string,\n tuple: UnionTypeDefinitionTuple,\n): UnionTypeDefinitionNode {\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n name: nameNode(typeName),\n types: getUnionTypeMembers(tuple).map((name) => ({\n kind: Kind.NAMED_TYPE,\n name: nameNode(name),\n })),\n };\n}\n\nfunction decodeInputObjectType(\n typeName: string,\n tuple: InputObjectTypeDefinitionTuple,\n types: TypeDefinitionsRecord,\n): InputObjectTypeDefinitionNode {\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n name: nameNode(typeName),\n fields: Object.entries(getInputObjectFields(tuple)).map(([name, value]) =>\n decodeInputValue(name, value, types),\n ),\n };\n}\n\nfunction decodeFields(\n fields: Record<string, FieldDefinition>,\n types: TypeDefinitionsRecord,\n): FieldDefinitionNode[] {\n return Object.entries(fields).map(([name, value]) => {\n const type = decodeTypeReference(getFieldTypeReference(value));\n return {\n kind: Kind.FIELD_DEFINITION,\n name: nameNode(name),\n type,\n arguments: decodeArguments(getFieldArgs(value) ?? {}, types),\n };\n });\n}\n\nfunction decodeInputValue(\n name: string,\n value: InputValueDefinition,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode {\n const inputValueTypeRef = getInputValueTypeReference(value);\n const type = decodeTypeReference(inputValueTypeRef);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n name: nameNode(name),\n type,\n defaultValue: Array.isArray(value)\n ? (valueToConstValueNode(\n getInputDefaultValue(value),\n inputValueTypeRef,\n types,\n ) as any) // Note: \"any\" is necessary here for graphql15/graphql17 cross-compatibility\n : undefined,\n };\n}\n\nfunction valueToConstValueNode(\n jsValue: unknown,\n typeRef: TypeReference,\n types: TypeDefinitionsRecord,\n): ConstValueNode {\n const typeName = typeNameFromReference(typeRef);\n if (typeof jsValue === \"string\") {\n return typeName === \"String\"\n ? { kind: Kind.STRING, value: jsValue }\n : { kind: Kind.ENUM, value: jsValue };\n }\n if (jsValue === null) {\n invariant(!isNonNullType(typeRef), \"Expecting nullable type\");\n return { kind: Kind.NULL };\n }\n if (Number.isInteger(jsValue)) {\n return { kind: Kind.INT, value: String(jsValue) };\n }\n if (typeof jsValue === \"number\") {\n return { kind: Kind.FLOAT, value: String(jsValue) };\n }\n if (Array.isArray(jsValue)) {\n invariant(isListType(typeRef), \"Expecting list type\");\n return {\n kind: Kind.LIST,\n values: jsValue.map((item) =>\n valueToConstValueNode(item, unwrap(typeRef), types),\n ),\n };\n }\n if (typeof jsValue === \"object\") {\n const typeDef = types[typeName];\n invariant(\n Array.isArray(typeDef) && isInputObjectTypeDefinition(typeDef),\n `Expecting input object type for ${typeName}, got ${typeDef?.[0]}`,\n );\n const fields = getInputObjectFields(typeDef);\n return {\n kind: Kind.OBJECT,\n fields: Object.entries(jsValue).map(([name, value]) => {\n const fieldDef = fields[name];\n const fieldTypeRef = getInputValueTypeReference(fieldDef);\n invariant(\n fieldTypeRef !== undefined,\n `Could not find field definition for ${typeName}.${name}`,\n );\n return {\n kind: Kind.OBJECT_FIELD,\n name: nameNode(name),\n value: valueToConstValueNode(value, fieldTypeRef, types),\n };\n }),\n };\n }\n invariant(\n false,\n `Unexpected value for type ${inspectTypeReference(typeRef)}: ${inspect(\n jsValue,\n )}`,\n );\n}\n\nfunction decodeArguments(\n args: Record<string, InputValueDefinition>,\n types: TypeDefinitionsRecord,\n): InputValueDefinitionNode[] {\n return Object.entries(args).map(([name, value]) =>\n decodeInputValue(name, value, types),\n );\n}\n\nfunction decodeTypeReference(\n ref: TypeReference,\n): NamedTypeNode | ListTypeNode | NonNullTypeNode {\n if (isListType(ref)) {\n return {\n kind: Kind.LIST_TYPE,\n type: decodeTypeReference(unwrap(ref)),\n };\n }\n if (isNonNullType(ref)) {\n const unwrappedType = decodeTypeReference(unwrap(ref));\n invariant(\n unwrappedType.kind !== Kind.NON_NULL_TYPE,\n \"Non-null modifier cannot be nested\",\n );\n return {\n kind: Kind.NON_NULL_TYPE,\n type: unwrappedType,\n };\n }\n return {\n kind: Kind.NAMED_TYPE,\n name: nameNode(typeNameFromReference(ref)),\n };\n}\n\nfunction decodeDirective(\n tuple: DirectiveDefinitionTuple,\n types: TypeDefinitionsRecord,\n): DirectiveDefinitionNode {\n const name = getDirectiveName(tuple);\n const args = getDirectiveDefinitionArgs(tuple);\n const locations = getDirectiveLocations(tuple);\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n name: nameNode(name),\n arguments: args ? decodeArguments(args, types) : [],\n locations: locations.map((loc) => ({\n kind: Kind.NAME,\n value: decodeDirectiveLocation(loc),\n })),\n // TODO? repeatable are irrelevant for execution\n repeatable: false,\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"encodeASTSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/encodeASTSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,YAAY,EAOb,MAAM,SAAS,CAAC;AACjB,OAAO,EAWL,iBAAiB,EAQlB,MAAM,sBAAsB,CAAC;AAI9B,wBAAgB,eAAe,CAC7B,cAAc,EAAE,YAAY,GAC3B,iBAAiB,EAAE,CAsCrB"}
1
+ {"version":3,"file":"encodeASTSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/encodeASTSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,YAAY,EAQb,MAAM,SAAS,CAAC;AACjB,OAAO,EAWL,iBAAiB,EASlB,MAAM,sBAAsB,CAAC;AAI9B,wBAAgB,eAAe,CAC7B,cAAc,EAAE,YAAY,GAC3B,iBAAiB,EAAE,CAsCrB"}
@@ -143,5 +143,20 @@ function encodeInputValue(node) {
143
143
  }
144
144
  function encodeDirective(node) {
145
145
  var _a;
146
- return !((_a = node.arguments) == null ? void 0 : _a.length) ? [node.name.value] : [node.name.value, encodeArguments(node)];
146
+ if ((_a = node.arguments) == null ? void 0 : _a.length) {
147
+ return [
148
+ node.name.value,
149
+ node.locations.map(
150
+ (node2) => (0, import_definition.encodeDirectiveLocation)(node2.value)
151
+ ),
152
+ encodeArguments(node)
153
+ ];
154
+ } else {
155
+ return [
156
+ node.name.value,
157
+ node.locations.map(
158
+ (node2) => (0, import_definition.encodeDirectiveLocation)(node2.value)
159
+ )
160
+ ];
161
+ }
147
162
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/encodeASTSchema.ts"],
4
- "sourcesContent": ["import {\n DirectiveDefinitionNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n DocumentNode,\n ObjectTypeExtensionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeExtensionNode,\n UnionTypeExtensionNode,\n EnumTypeExtensionNode,\n ScalarTypeExtensionNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionTuple,\n InputObjectTypeDefinitionTuple,\n InputValueDefinitionRecord,\n InputValueDefinitionTuple,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n UnionTypeDefinitionTuple,\n SchemaDefinitions,\n TypeDefinitionTuple,\n createScalarTypeDefinition,\n createEnumTypeDefinition,\n createObjectTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createUnionTypeDefinition,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n): SchemaDefinitions[] {\n const fragments: SchemaDefinitions[] = [{ types: {} }];\n const add = (name: string, def: TypeDefinitionTuple, extension = false) =>\n addTypeDefinition(fragments, name, def, extension);\n\n for (const definition of schemaFragment.definitions) {\n if (definition.kind === \"ObjectTypeDefinition\") {\n add(definition.name.value, encodeObjectType(definition));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(definition.name.value, encodeInputObjectType(definition), true);\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(definition.name.value, encodeInterfaceType(definition), true);\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition));\n }\n }\n return fragments;\n}\n\nfunction addTypeDefinition(\n fragments: SchemaDefinitions[],\n typeName: string,\n typeDef: TypeDefinitionTuple,\n isExtension = false,\n) {\n for (let i = 0; i < fragments.length; i++) {\n if (i === 0 && isExtension) {\n // Don't write extensions to the very first fragment (it is reserved for type definitions)\n // Note: 2nd+ type definition with the same name is treated as extension\n continue;\n }\n const fragment = fragments[i];\n if (!fragment.types[typeName]) {\n fragment.types[typeName] = typeDef;\n return;\n }\n }\n const newFragment = { types: { [typeName]: typeDef } };\n fragments.push(newFragment);\n}\n\nfunction encodeScalarType(\n _type: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n return createInputObjectTypeDefinition(fields);\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n): TypeReference | FieldDefinitionTuple {\n return !node.arguments?.length\n ? typeReferenceFromNode(node.type)\n : [typeReferenceFromNode(node.type), encodeArguments(node)];\n}\n\nfunction encodeArguments(\n node: FieldDefinitionNode | DirectiveDefinitionNode,\n): InputValueDefinitionRecord {\n const args = Object.create(null);\n for (const argument of node.arguments ?? []) {\n args[argument.name.value] = encodeInputValue(argument);\n }\n return args;\n}\n\nfunction encodeInputValue(\n node: InputValueDefinitionNode,\n): InputValueDefinitionTuple | TypeReference {\n if (!node.defaultValue) {\n return typeReferenceFromNode(node.type);\n }\n return [\n typeReferenceFromNode(node.type),\n valueFromASTUntyped(node.defaultValue),\n ];\n}\n\nfunction encodeDirective(\n node: DirectiveDefinitionNode,\n): DirectiveDefinitionTuple {\n return !node.arguments?.length\n ? [node.name.value]\n : [node.name.value, encodeArguments(node)];\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import {\n DirectiveDefinitionNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n DocumentNode,\n ObjectTypeExtensionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeExtensionNode,\n UnionTypeExtensionNode,\n EnumTypeExtensionNode,\n ScalarTypeExtensionNode,\n DirectiveLocationEnum,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionTuple,\n InputObjectTypeDefinitionTuple,\n InputValueDefinitionRecord,\n InputValueDefinitionTuple,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n UnionTypeDefinitionTuple,\n SchemaDefinitions,\n TypeDefinitionTuple,\n createScalarTypeDefinition,\n createEnumTypeDefinition,\n createObjectTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createUnionTypeDefinition,\n encodeDirectiveLocation,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n): SchemaDefinitions[] {\n const fragments: SchemaDefinitions[] = [{ types: {} }];\n const add = (name: string, def: TypeDefinitionTuple, extension = false) =>\n addTypeDefinition(fragments, name, def, extension);\n\n for (const definition of schemaFragment.definitions) {\n if (definition.kind === \"ObjectTypeDefinition\") {\n add(definition.name.value, encodeObjectType(definition));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(definition.name.value, encodeInputObjectType(definition), true);\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(definition.name.value, encodeInterfaceType(definition), true);\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition));\n }\n }\n return fragments;\n}\n\nfunction addTypeDefinition(\n fragments: SchemaDefinitions[],\n typeName: string,\n typeDef: TypeDefinitionTuple,\n isExtension = false,\n) {\n for (let i = 0; i < fragments.length; i++) {\n if (i === 0 && isExtension) {\n // Don't write extensions to the very first fragment (it is reserved for type definitions)\n // Note: 2nd+ type definition with the same name is treated as extension\n continue;\n }\n const fragment = fragments[i];\n if (!fragment.types[typeName]) {\n fragment.types[typeName] = typeDef;\n return;\n }\n }\n const newFragment = { types: { [typeName]: typeDef } };\n fragments.push(newFragment);\n}\n\nfunction encodeScalarType(\n _type: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n return createInputObjectTypeDefinition(fields);\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n): TypeReference | FieldDefinitionTuple {\n return !node.arguments?.length\n ? typeReferenceFromNode(node.type)\n : [typeReferenceFromNode(node.type), encodeArguments(node)];\n}\n\nfunction encodeArguments(\n node: FieldDefinitionNode | DirectiveDefinitionNode,\n): InputValueDefinitionRecord {\n const args = Object.create(null);\n for (const argument of node.arguments ?? []) {\n args[argument.name.value] = encodeInputValue(argument);\n }\n return args;\n}\n\nfunction encodeInputValue(\n node: InputValueDefinitionNode,\n): InputValueDefinitionTuple | TypeReference {\n if (!node.defaultValue) {\n return typeReferenceFromNode(node.type);\n }\n return [\n typeReferenceFromNode(node.type),\n valueFromASTUntyped(node.defaultValue),\n ];\n}\n\nfunction encodeDirective(\n node: DirectiveDefinitionNode,\n): DirectiveDefinitionTuple {\n if (node.arguments?.length) {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n encodeArguments(node),\n ];\n } else {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n ];\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["node"]
7
7
  }
@@ -5,7 +5,8 @@ import {
5
5
  createObjectTypeDefinition,
6
6
  createInputObjectTypeDefinition,
7
7
  createInterfaceTypeDefinition,
8
- createUnionTypeDefinition
8
+ createUnionTypeDefinition,
9
+ encodeDirectiveLocation
9
10
  } from "../schema/definition.mjs";
10
11
  import { typeReferenceFromNode } from "../schema/reference.mjs";
11
12
  import { valueFromASTUntyped } from "./valueFromASTUntyped.mjs";
@@ -128,7 +129,22 @@ function encodeInputValue(node) {
128
129
  }
129
130
  function encodeDirective(node) {
130
131
  var _a;
131
- return !((_a = node.arguments) == null ? void 0 : _a.length) ? [node.name.value] : [node.name.value, encodeArguments(node)];
132
+ if ((_a = node.arguments) == null ? void 0 : _a.length) {
133
+ return [
134
+ node.name.value,
135
+ node.locations.map(
136
+ (node2) => encodeDirectiveLocation(node2.value)
137
+ ),
138
+ encodeArguments(node)
139
+ ];
140
+ } else {
141
+ return [
142
+ node.name.value,
143
+ node.locations.map(
144
+ (node2) => encodeDirectiveLocation(node2.value)
145
+ )
146
+ ];
147
+ }
132
148
  }
133
149
  export {
134
150
  encodeASTSchema
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/encodeASTSchema.ts"],
4
- "sourcesContent": ["import {\n DirectiveDefinitionNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n DocumentNode,\n ObjectTypeExtensionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeExtensionNode,\n UnionTypeExtensionNode,\n EnumTypeExtensionNode,\n ScalarTypeExtensionNode,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionTuple,\n InputObjectTypeDefinitionTuple,\n InputValueDefinitionRecord,\n InputValueDefinitionTuple,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n UnionTypeDefinitionTuple,\n SchemaDefinitions,\n TypeDefinitionTuple,\n createScalarTypeDefinition,\n createEnumTypeDefinition,\n createObjectTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createUnionTypeDefinition,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n): SchemaDefinitions[] {\n const fragments: SchemaDefinitions[] = [{ types: {} }];\n const add = (name: string, def: TypeDefinitionTuple, extension = false) =>\n addTypeDefinition(fragments, name, def, extension);\n\n for (const definition of schemaFragment.definitions) {\n if (definition.kind === \"ObjectTypeDefinition\") {\n add(definition.name.value, encodeObjectType(definition));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(definition.name.value, encodeInputObjectType(definition), true);\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(definition.name.value, encodeInterfaceType(definition), true);\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition));\n }\n }\n return fragments;\n}\n\nfunction addTypeDefinition(\n fragments: SchemaDefinitions[],\n typeName: string,\n typeDef: TypeDefinitionTuple,\n isExtension = false,\n) {\n for (let i = 0; i < fragments.length; i++) {\n if (i === 0 && isExtension) {\n // Don't write extensions to the very first fragment (it is reserved for type definitions)\n // Note: 2nd+ type definition with the same name is treated as extension\n continue;\n }\n const fragment = fragments[i];\n if (!fragment.types[typeName]) {\n fragment.types[typeName] = typeDef;\n return;\n }\n }\n const newFragment = { types: { [typeName]: typeDef } };\n fragments.push(newFragment);\n}\n\nfunction encodeScalarType(\n _type: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n return createInputObjectTypeDefinition(fields);\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n): TypeReference | FieldDefinitionTuple {\n return !node.arguments?.length\n ? typeReferenceFromNode(node.type)\n : [typeReferenceFromNode(node.type), encodeArguments(node)];\n}\n\nfunction encodeArguments(\n node: FieldDefinitionNode | DirectiveDefinitionNode,\n): InputValueDefinitionRecord {\n const args = Object.create(null);\n for (const argument of node.arguments ?? []) {\n args[argument.name.value] = encodeInputValue(argument);\n }\n return args;\n}\n\nfunction encodeInputValue(\n node: InputValueDefinitionNode,\n): InputValueDefinitionTuple | TypeReference {\n if (!node.defaultValue) {\n return typeReferenceFromNode(node.type);\n }\n return [\n typeReferenceFromNode(node.type),\n valueFromASTUntyped(node.defaultValue),\n ];\n}\n\nfunction encodeDirective(\n node: DirectiveDefinitionNode,\n): DirectiveDefinitionTuple {\n return !node.arguments?.length\n ? [node.name.value]\n : [node.name.value, encodeArguments(node)];\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import {\n DirectiveDefinitionNode,\n EnumTypeDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n ObjectTypeDefinitionNode,\n ScalarTypeDefinitionNode,\n UnionTypeDefinitionNode,\n DocumentNode,\n ObjectTypeExtensionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeExtensionNode,\n UnionTypeExtensionNode,\n EnumTypeExtensionNode,\n ScalarTypeExtensionNode,\n DirectiveLocationEnum,\n} from \"graphql\";\nimport {\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinitionTuple,\n InputObjectTypeDefinitionTuple,\n InputValueDefinitionRecord,\n InputValueDefinitionTuple,\n InterfaceTypeDefinitionTuple,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n UnionTypeDefinitionTuple,\n SchemaDefinitions,\n TypeDefinitionTuple,\n createScalarTypeDefinition,\n createEnumTypeDefinition,\n createObjectTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createUnionTypeDefinition,\n encodeDirectiveLocation,\n} from \"../schema/definition\";\nimport { typeReferenceFromNode, TypeReference } from \"../schema/reference\";\nimport { valueFromASTUntyped } from \"./valueFromASTUntyped\";\n\nexport function encodeASTSchema(\n schemaFragment: DocumentNode,\n): SchemaDefinitions[] {\n const fragments: SchemaDefinitions[] = [{ types: {} }];\n const add = (name: string, def: TypeDefinitionTuple, extension = false) =>\n addTypeDefinition(fragments, name, def, extension);\n\n for (const definition of schemaFragment.definitions) {\n if (definition.kind === \"ObjectTypeDefinition\") {\n add(definition.name.value, encodeObjectType(definition));\n } else if (definition.kind === \"InputObjectTypeDefinition\") {\n add(definition.name.value, encodeInputObjectType(definition));\n } else if (definition.kind === \"EnumTypeDefinition\") {\n add(definition.name.value, encodeEnumType(definition));\n } else if (definition.kind === \"UnionTypeDefinition\") {\n add(definition.name.value, encodeUnionType(definition));\n } else if (definition.kind === \"InterfaceTypeDefinition\") {\n add(definition.name.value, encodeInterfaceType(definition));\n } else if (definition.kind === \"ScalarTypeDefinition\") {\n add(definition.name.value, encodeScalarType(definition));\n } else if (definition.kind === \"ObjectTypeExtension\") {\n add(definition.name.value, encodeObjectType(definition), true);\n } else if (definition.kind === \"InputObjectTypeExtension\") {\n add(definition.name.value, encodeInputObjectType(definition), true);\n } else if (definition.kind === \"EnumTypeExtension\") {\n add(definition.name.value, encodeEnumType(definition), true);\n } else if (definition.kind === \"UnionTypeExtension\") {\n add(definition.name.value, encodeUnionType(definition), true);\n } else if (definition.kind === \"InterfaceTypeExtension\") {\n add(definition.name.value, encodeInterfaceType(definition), true);\n } else if (definition.kind === \"ScalarTypeExtension\") {\n add(definition.name.value, encodeScalarType(definition), true);\n } else if (definition.kind === \"DirectiveDefinition\") {\n if (!fragments[0].directives) {\n fragments[0].directives = [];\n }\n fragments[0].directives.push(encodeDirective(definition));\n }\n }\n return fragments;\n}\n\nfunction addTypeDefinition(\n fragments: SchemaDefinitions[],\n typeName: string,\n typeDef: TypeDefinitionTuple,\n isExtension = false,\n) {\n for (let i = 0; i < fragments.length; i++) {\n if (i === 0 && isExtension) {\n // Don't write extensions to the very first fragment (it is reserved for type definitions)\n // Note: 2nd+ type definition with the same name is treated as extension\n continue;\n }\n const fragment = fragments[i];\n if (!fragment.types[typeName]) {\n fragment.types[typeName] = typeDef;\n return;\n }\n }\n const newFragment = { types: { [typeName]: typeDef } };\n fragments.push(newFragment);\n}\n\nfunction encodeScalarType(\n _type: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction encodeEnumType(\n node: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(\n (node.values ?? []).map((value) => value.name.value),\n );\n}\n\nfunction encodeObjectType(\n node: ObjectTypeDefinitionNode | ObjectTypeExtensionNode,\n): ObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createObjectTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeInterfaceType(\n node: InterfaceTypeDefinitionNode | InterfaceTypeExtensionNode,\n): InterfaceTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeField(field);\n }\n return createInterfaceTypeDefinition(\n fields,\n node.interfaces?.map((iface) => iface.name.value),\n );\n}\n\nfunction encodeUnionType(\n node: UnionTypeDefinitionNode | UnionTypeExtensionNode,\n): UnionTypeDefinitionTuple {\n return createUnionTypeDefinition(\n (node.types ?? []).map((type) => type.name.value),\n );\n}\n\nfunction encodeInputObjectType(\n node: InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode,\n): InputObjectTypeDefinitionTuple {\n const fields = Object.create(null);\n for (const field of node.fields ?? []) {\n fields[field.name.value] = encodeInputValue(field);\n }\n return createInputObjectTypeDefinition(fields);\n}\n\nfunction encodeField(\n node: FieldDefinitionNode,\n): TypeReference | FieldDefinitionTuple {\n return !node.arguments?.length\n ? typeReferenceFromNode(node.type)\n : [typeReferenceFromNode(node.type), encodeArguments(node)];\n}\n\nfunction encodeArguments(\n node: FieldDefinitionNode | DirectiveDefinitionNode,\n): InputValueDefinitionRecord {\n const args = Object.create(null);\n for (const argument of node.arguments ?? []) {\n args[argument.name.value] = encodeInputValue(argument);\n }\n return args;\n}\n\nfunction encodeInputValue(\n node: InputValueDefinitionNode,\n): InputValueDefinitionTuple | TypeReference {\n if (!node.defaultValue) {\n return typeReferenceFromNode(node.type);\n }\n return [\n typeReferenceFromNode(node.type),\n valueFromASTUntyped(node.defaultValue),\n ];\n}\n\nfunction encodeDirective(\n node: DirectiveDefinitionNode,\n): DirectiveDefinitionTuple {\n if (node.arguments?.length) {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n encodeArguments(node),\n ];\n } else {\n return [\n node.name.value,\n node.locations.map((node) =>\n encodeDirectiveLocation(node.value as DirectiveLocationEnum),\n ),\n ];\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["node"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extractMinimalViableSchemaForRequestDocument.d.ts","sourceRoot":"","sources":["../../src/utilities/extractMinimalViableSchemaForRequestDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,YAAY,EAWZ,aAAa,EAcd,MAAM,SAAS,CAAC;AACjB,OAAO,EAyBL,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAY9B,MAAM,MAAM,gCAAgC,GAAG;IAC7C,WAAW,EAAE,iBAAiB,CAAC;IAC/B,iBAAiB,EAAE,aAAa,EAAE,CAAC;CACpC,CAAC;AAEF,wBAAgB,4CAA4C,CAC1D,MAAM,EAAE,aAAa,EACrB,eAAe,EAAE,YAAY,GAC5B,gCAAgC,CA4DlC"}
1
+ {"version":3,"file":"extractMinimalViableSchemaForRequestDocument.d.ts","sourceRoot":"","sources":["../../src/utilities/extractMinimalViableSchemaForRequestDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,YAAY,EAWZ,aAAa,EAcd,MAAM,SAAS,CAAC;AACjB,OAAO,EA0BL,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAY9B,MAAM,MAAM,gCAAgC,GAAG;IAC7C,WAAW,EAAE,iBAAiB,CAAC;IAC/B,iBAAiB,EAAE,aAAa,EAAE,CAAC;CACpC,CAAC;AAEF,wBAAgB,4CAA4C,CAC1D,MAAM,EAAE,aAAa,EACrB,eAAe,EAAE,YAAY,GAC5B,gCAAgC,CA4DlC"}
@@ -28,7 +28,7 @@ var import_makeReadableErrorPath = require("./makeReadableErrorPath");
28
28
  var import_reference = require("../schema/reference");
29
29
  var import_invariant = require("../jsutils/invariant");
30
30
  function extractMinimalViableSchemaForRequestDocument(schema, requestDocument) {
31
- const types = /* @__PURE__ */ Object.create(null);
31
+ const types = {};
32
32
  const directives = [];
33
33
  const unknownDirectives = [];
34
34
  const typeInfo = new import_graphql.TypeInfo(schema);
@@ -152,7 +152,7 @@ function addDirective(directives, directive, node) {
152
152
  const name = directive.name;
153
153
  let tuple = directives.find((d) => (0, import_definition.getDirectiveName)(d) === name);
154
154
  if (!tuple) {
155
- tuple = [directive.name];
155
+ tuple = [directive.name, directive.locations.map(import_definition.encodeDirectiveLocation)];
156
156
  directives.push(tuple);
157
157
  }
158
158
  const previouslyAddedArgs = (0, import_definition.getDirectiveDefinitionArgs)(tuple);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utilities/extractMinimalViableSchemaForRequestDocument.ts"],
4
- "sourcesContent": ["import {\n ASTNode,\n DirectiveNode,\n DocumentNode,\n FieldNode,\n GraphQLArgument,\n GraphQLCompositeType,\n GraphQLDirective,\n GraphQLEnumType,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLOutputType,\n GraphQLScalarType,\n GraphQLSchema,\n isCompositeType,\n isEnumType,\n isInputObjectType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n TypeInfo,\n visit,\n visitWithTypeInfo,\n locatedError,\n} from \"graphql\";\nimport {\n CompositeTypeTuple,\n createEnumTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createObjectTypeDefinition,\n createScalarTypeDefinition,\n createUnionTypeDefinition,\n DirectiveDefinitionTuple,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n getDirectiveDefinitionArgs,\n getDirectiveName,\n getFieldArgs,\n getFields,\n getFieldTypeReference,\n getInputObjectFields,\n getInputValueTypeReference,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InputValueDefinitionRecord,\n InterfaceTypeDefinitionTuple,\n isUnionTypeDefinition,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n SchemaDefinitions,\n setDirectiveDefinitionArgs,\n TypeDefinitionsRecord,\n} from \"../schema/definition\";\nimport { isKnownDirective } from \"../schema/directives\";\nimport { makeReadableErrorPath } from \"./makeReadableErrorPath\";\nimport {\n inspectTypeReference,\n typeNameFromReference,\n TypeReference,\n typeReferenceFromName,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { Maybe } from \"../jsutils/Maybe\";\n\nexport type ExtractMinimalViableSchemaResult = {\n definitions: SchemaDefinitions;\n unknownDirectives: DirectiveNode[];\n};\n\nexport function extractMinimalViableSchemaForRequestDocument(\n schema: GraphQLSchema,\n requestDocument: DocumentNode,\n): ExtractMinimalViableSchemaResult {\n const types: TypeDefinitionsRecord = Object.create(null);\n const directives: DirectiveDefinitionTuple[] = [];\n const unknownDirectives: DirectiveNode[] = [];\n\n const typeInfo = new TypeInfo(schema);\n visit(\n requestDocument,\n visitWithTypeInfo(typeInfo, {\n Field(node, _key, _parent, _path, ancestors): void {\n const parentType = typeInfo.getParentType();\n assertCompositeType(parentType, node, ancestors);\n\n const typeDef = addCompositeType(types, parentType);\n if (\n isUnionTypeDefinition(typeDef) ||\n node.name.value === \"__typename\"\n ) {\n return;\n }\n const field = typeInfo.getFieldDef();\n assertExistingField(field, node, ancestors);\n assertAllArgumentsAreDefined(field, node, ancestors);\n\n const fieldDef = addField(typeDef, field, node);\n addReferencedOutputType(schema, types, getFieldTypeReference(fieldDef));\n addReferencedInputTypes(schema, types, getFieldArgs(fieldDef));\n },\n Directive(node, _key, _parent, _path) {\n if (isKnownDirective(node.name.value)) {\n return;\n }\n const directive = typeInfo.getDirective();\n if (!directive) {\n // This happens whenever a directive is requested that hasn't been defined in schema\n unknownDirectives.push(node);\n return;\n }\n addDirective(directives, directive, node);\n },\n FragmentDefinition(node, _key, _parent, _path, ancestors): void {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n },\n InlineFragment(node, _key, _parent, _path, ancestors): void {\n if (node?.typeCondition) {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n }\n },\n Argument() {\n // Perf: no need to visit arguments - they were handled by Field/Directive visitors\n return false;\n },\n }),\n );\n const definitions = directives.length ? { types, directives } : { types };\n return { definitions, unknownDirectives };\n}\n\nfunction addReferencedOutputType(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n typeRef: TypeReference,\n) {\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already added\n return;\n }\n if (isCompositeType(schemaType)) {\n addCompositeType(types, schemaType);\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-output type: \" + inspectTypeReference(typeRef));\n }\n}\n\nfunction addReferencedInputTypes(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n inputValues: InputValueDefinitionRecord | undefined,\n): void {\n if (!inputValues) {\n return;\n }\n for (const inputValueDef of Object.values(inputValues)) {\n const typeRef = getInputValueTypeReference(inputValueDef);\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already fully added\n continue;\n }\n if (isInputObjectType(schemaType)) {\n const inputObjectDef = encodeInputObjectType(schemaType);\n types[name] = inputObjectDef;\n addReferencedInputTypes(\n schema,\n types,\n getInputObjectFields(inputObjectDef),\n );\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-input type: \" + inspectTypeReference(typeRef));\n }\n }\n}\n\nfunction addCompositeType(\n types: TypeDefinitionsRecord,\n type: GraphQLCompositeType,\n): CompositeTypeTuple {\n if (types[type.name]) {\n // TODO: double check that the kind match?\n return types[type.name] as CompositeTypeTuple;\n }\n return (types[type.name] = encodeCompositeType(type));\n}\n\nfunction addField(\n type: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n field: GraphQLField<unknown, unknown>,\n fieldNode: FieldNode,\n): FieldDefinition {\n const fields = getFields(type);\n\n const existingFieldDef: FieldDefinition = fields[field.name];\n const previouslyAddedArgs =\n getFieldArgs(existingFieldDef) ?? Object.create(null);\n\n const nodeArgs = new Set(fieldNode.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n\n return (fields[field.name] = encodeFieldDef(field, argsFilter));\n}\n\nfunction addDirective(\n directives: DirectiveDefinitionTuple[],\n directive: GraphQLDirective,\n node: DirectiveNode,\n) {\n const name = directive.name;\n let tuple = directives.find((d) => getDirectiveName(d) === name);\n if (!tuple) {\n tuple = [directive.name];\n directives.push(tuple);\n }\n\n const previouslyAddedArgs = getDirectiveDefinitionArgs(tuple);\n const nodeArgs = new Set(node.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs?.[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n const [hasArgs, argsRecord] = encodeArguments(directive.args, argsFilter);\n if (hasArgs) {\n setDirectiveDefinitionArgs(tuple, argsRecord);\n }\n return tuple;\n}\n\nfunction encodeCompositeType(type: GraphQLCompositeType): CompositeTypeTuple {\n if (isUnionType(type)) {\n return createUnionTypeDefinition(type.getTypes().map((type) => type.name));\n }\n const ifaces = type.getInterfaces().map((iface) => iface.name);\n return isObjectType(type)\n ? createObjectTypeDefinition({}, ifaces)\n : createInterfaceTypeDefinition({}, ifaces);\n}\n\nfunction encodeInputObjectType(\n type: GraphQLInputObjectType,\n): InputObjectTypeDefinitionTuple {\n const result = Object.create(null);\n for (const [fieldName, field] of Object.entries(type.getFields())) {\n result[fieldName] = encodeInputField(field);\n }\n return createInputObjectTypeDefinition(result);\n}\n\nfunction encodeInputField(field: GraphQLInputField): InputValueDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n return field.defaultValue === undefined\n ? typeReference\n : [typeReference, field.defaultValue];\n}\n\nfunction encodeFieldDef(\n field: GraphQLField<unknown, unknown>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): FieldDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n const [hasArgs, argsRecord] = encodeArguments(field.args, argumentsFilter);\n return !hasArgs ? typeReference : [typeReference, argsRecord];\n}\n\nfunction encodeArguments(\n args: ReadonlyArray<GraphQLArgument>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): [boolean, InputValueDefinitionRecord] {\n let hasArgs = false;\n const argsRecord: InputValueDefinitionRecord = {};\n for (const argDef of args) {\n if (argumentsFilter && !argumentsFilter(argDef)) {\n continue;\n }\n const typeReference = typeReferenceFromName(argDef.type.toString());\n argsRecord[argDef.name] =\n argDef.defaultValue === undefined\n ? typeReference\n : [typeReference, argDef.defaultValue];\n hasArgs = true;\n }\n return [hasArgs, argsRecord];\n}\n\nfunction encodeEnumType(type: GraphQLEnumType): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(type.getValues().map((v) => v.name));\n}\n\nfunction encodeScalarType(_type: GraphQLScalarType): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction assertCompositeType(\n type: Maybe<GraphQLOutputType>,\n node: ASTNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts type is GraphQLCompositeType {\n if (!type || !isCompositeType(type)) {\n const path =\n node.kind === Kind.FIELD\n ? makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value\n : makeReadableErrorPath(ancestors).join(\".\");\n throw locatedError(`Cannot find type for: ${path}`, [node]);\n }\n}\n\nfunction assertExistingField(\n field: Maybe<GraphQLField<unknown, unknown>>,\n node: FieldNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts field is GraphQLField<unknown, unknown> {\n if (!field) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value;\n throw locatedError(`Cannot find field: ${path}`, [node]);\n }\n}\n\nfunction assertAllArgumentsAreDefined(\n field: GraphQLField<unknown, unknown> | GraphQLDirective,\n node: FieldNode | DirectiveNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n) {\n const defArgs = new Set(field.args.map((arg) => arg.name));\n for (const arg of node.arguments ?? []) {\n if (!defArgs.has(arg.name.value)) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") +\n \".\" +\n node.name.value +\n `(${arg.name.value}: ...)`;\n throw locatedError(`Cannot find type for argument: ${path}`, [arg]);\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n ASTNode,\n DirectiveNode,\n DocumentNode,\n FieldNode,\n GraphQLArgument,\n GraphQLCompositeType,\n GraphQLDirective,\n GraphQLEnumType,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLOutputType,\n GraphQLScalarType,\n GraphQLSchema,\n isCompositeType,\n isEnumType,\n isInputObjectType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n TypeInfo,\n visit,\n visitWithTypeInfo,\n locatedError,\n} from \"graphql\";\nimport {\n CompositeTypeTuple,\n createEnumTypeDefinition,\n createInputObjectTypeDefinition,\n createInterfaceTypeDefinition,\n createObjectTypeDefinition,\n createScalarTypeDefinition,\n createUnionTypeDefinition,\n DirectiveDefinitionTuple,\n encodeDirectiveLocation,\n EnumTypeDefinitionTuple,\n FieldDefinition,\n getDirectiveDefinitionArgs,\n getDirectiveName,\n getFieldArgs,\n getFields,\n getFieldTypeReference,\n getInputObjectFields,\n getInputValueTypeReference,\n InputObjectTypeDefinitionTuple,\n InputValueDefinition,\n InputValueDefinitionRecord,\n InterfaceTypeDefinitionTuple,\n isUnionTypeDefinition,\n ObjectTypeDefinitionTuple,\n ScalarTypeDefinitionTuple,\n SchemaDefinitions,\n setDirectiveDefinitionArgs,\n TypeDefinitionsRecord,\n} from \"../schema/definition\";\nimport { isKnownDirective } from \"../schema/directives\";\nimport { makeReadableErrorPath } from \"./makeReadableErrorPath\";\nimport {\n inspectTypeReference,\n typeNameFromReference,\n TypeReference,\n typeReferenceFromName,\n} from \"../schema/reference\";\nimport { invariant } from \"../jsutils/invariant\";\nimport { Maybe } from \"../jsutils/Maybe\";\n\nexport type ExtractMinimalViableSchemaResult = {\n definitions: SchemaDefinitions;\n unknownDirectives: DirectiveNode[];\n};\n\nexport function extractMinimalViableSchemaForRequestDocument(\n schema: GraphQLSchema,\n requestDocument: DocumentNode,\n): ExtractMinimalViableSchemaResult {\n const types: TypeDefinitionsRecord = {};\n const directives: DirectiveDefinitionTuple[] = [];\n const unknownDirectives: DirectiveNode[] = [];\n\n const typeInfo = new TypeInfo(schema);\n visit(\n requestDocument,\n visitWithTypeInfo(typeInfo, {\n Field(node, _key, _parent, _path, ancestors): void {\n const parentType = typeInfo.getParentType();\n assertCompositeType(parentType, node, ancestors);\n\n const typeDef = addCompositeType(types, parentType);\n if (\n isUnionTypeDefinition(typeDef) ||\n node.name.value === \"__typename\"\n ) {\n return;\n }\n const field = typeInfo.getFieldDef();\n assertExistingField(field, node, ancestors);\n assertAllArgumentsAreDefined(field, node, ancestors);\n\n const fieldDef = addField(typeDef, field, node);\n addReferencedOutputType(schema, types, getFieldTypeReference(fieldDef));\n addReferencedInputTypes(schema, types, getFieldArgs(fieldDef));\n },\n Directive(node, _key, _parent, _path) {\n if (isKnownDirective(node.name.value)) {\n return;\n }\n const directive = typeInfo.getDirective();\n if (!directive) {\n // This happens whenever a directive is requested that hasn't been defined in schema\n unknownDirectives.push(node);\n return;\n }\n addDirective(directives, directive, node);\n },\n FragmentDefinition(node, _key, _parent, _path, ancestors): void {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n },\n InlineFragment(node, _key, _parent, _path, ancestors): void {\n if (node?.typeCondition) {\n const type = typeInfo.getType();\n assertCompositeType(type, node, ancestors);\n addCompositeType(types, type);\n }\n },\n Argument() {\n // Perf: no need to visit arguments - they were handled by Field/Directive visitors\n return false;\n },\n }),\n );\n const definitions = directives.length ? { types, directives } : { types };\n return { definitions, unknownDirectives };\n}\n\nfunction addReferencedOutputType(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n typeRef: TypeReference,\n) {\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already added\n return;\n }\n if (isCompositeType(schemaType)) {\n addCompositeType(types, schemaType);\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-output type: \" + inspectTypeReference(typeRef));\n }\n}\n\nfunction addReferencedInputTypes(\n schema: GraphQLSchema,\n types: TypeDefinitionsRecord,\n inputValues: InputValueDefinitionRecord | undefined,\n): void {\n if (!inputValues) {\n return;\n }\n for (const inputValueDef of Object.values(inputValues)) {\n const typeRef = getInputValueTypeReference(inputValueDef);\n const name = typeNameFromReference(typeRef);\n const schemaType = schema.getType(name);\n\n if (!schemaType) {\n throw new Error(`Type ${name} not found in schema`);\n }\n if (types[name] || isSpecifiedScalarType(schemaType)) {\n // Assuming already fully added\n continue;\n }\n if (isInputObjectType(schemaType)) {\n const inputObjectDef = encodeInputObjectType(schemaType);\n types[name] = inputObjectDef;\n addReferencedInputTypes(\n schema,\n types,\n getInputObjectFields(inputObjectDef),\n );\n } else if (isEnumType(schemaType)) {\n types[name] = encodeEnumType(schemaType);\n } else if (isScalarType(schemaType)) {\n types[name] = encodeScalarType(schemaType);\n } else {\n invariant(false, \"Got non-input type: \" + inspectTypeReference(typeRef));\n }\n }\n}\n\nfunction addCompositeType(\n types: TypeDefinitionsRecord,\n type: GraphQLCompositeType,\n): CompositeTypeTuple {\n if (types[type.name]) {\n // TODO: double check that the kind match?\n return types[type.name] as CompositeTypeTuple;\n }\n return (types[type.name] = encodeCompositeType(type));\n}\n\nfunction addField(\n type: ObjectTypeDefinitionTuple | InterfaceTypeDefinitionTuple,\n field: GraphQLField<unknown, unknown>,\n fieldNode: FieldNode,\n): FieldDefinition {\n const fields = getFields(type);\n\n const existingFieldDef: FieldDefinition = fields[field.name];\n const previouslyAddedArgs =\n getFieldArgs(existingFieldDef) ?? Object.create(null);\n\n const nodeArgs = new Set(fieldNode.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n\n return (fields[field.name] = encodeFieldDef(field, argsFilter));\n}\n\nfunction addDirective(\n directives: DirectiveDefinitionTuple[],\n directive: GraphQLDirective,\n node: DirectiveNode,\n) {\n const name = directive.name;\n let tuple = directives.find((d) => getDirectiveName(d) === name);\n if (!tuple) {\n tuple = [directive.name, directive.locations.map(encodeDirectiveLocation)];\n directives.push(tuple);\n }\n\n const previouslyAddedArgs = getDirectiveDefinitionArgs(tuple);\n const nodeArgs = new Set(node.arguments?.map((arg) => arg.name.value));\n\n const argsFilter = (argDef: GraphQLArgument) =>\n Boolean(\n previouslyAddedArgs?.[argDef.name] ||\n isNonNullType(argDef.type) ||\n argDef.defaultValue !== undefined ||\n nodeArgs.has(argDef.name),\n );\n const [hasArgs, argsRecord] = encodeArguments(directive.args, argsFilter);\n if (hasArgs) {\n setDirectiveDefinitionArgs(tuple, argsRecord);\n }\n return tuple;\n}\n\nfunction encodeCompositeType(type: GraphQLCompositeType): CompositeTypeTuple {\n if (isUnionType(type)) {\n return createUnionTypeDefinition(type.getTypes().map((type) => type.name));\n }\n const ifaces = type.getInterfaces().map((iface) => iface.name);\n return isObjectType(type)\n ? createObjectTypeDefinition({}, ifaces)\n : createInterfaceTypeDefinition({}, ifaces);\n}\n\nfunction encodeInputObjectType(\n type: GraphQLInputObjectType,\n): InputObjectTypeDefinitionTuple {\n const result = Object.create(null);\n for (const [fieldName, field] of Object.entries(type.getFields())) {\n result[fieldName] = encodeInputField(field);\n }\n return createInputObjectTypeDefinition(result);\n}\n\nfunction encodeInputField(field: GraphQLInputField): InputValueDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n return field.defaultValue === undefined\n ? typeReference\n : [typeReference, field.defaultValue];\n}\n\nfunction encodeFieldDef(\n field: GraphQLField<unknown, unknown>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): FieldDefinition {\n const typeReference = typeReferenceFromName(field.type.toString());\n const [hasArgs, argsRecord] = encodeArguments(field.args, argumentsFilter);\n return !hasArgs ? typeReference : [typeReference, argsRecord];\n}\n\nfunction encodeArguments(\n args: ReadonlyArray<GraphQLArgument>,\n argumentsFilter?: (arg: GraphQLArgument) => boolean,\n): [boolean, InputValueDefinitionRecord] {\n let hasArgs = false;\n const argsRecord: InputValueDefinitionRecord = {};\n for (const argDef of args) {\n if (argumentsFilter && !argumentsFilter(argDef)) {\n continue;\n }\n const typeReference = typeReferenceFromName(argDef.type.toString());\n argsRecord[argDef.name] =\n argDef.defaultValue === undefined\n ? typeReference\n : [typeReference, argDef.defaultValue];\n hasArgs = true;\n }\n return [hasArgs, argsRecord];\n}\n\nfunction encodeEnumType(type: GraphQLEnumType): EnumTypeDefinitionTuple {\n return createEnumTypeDefinition(type.getValues().map((v) => v.name));\n}\n\nfunction encodeScalarType(_type: GraphQLScalarType): ScalarTypeDefinitionTuple {\n return createScalarTypeDefinition();\n}\n\nfunction assertCompositeType(\n type: Maybe<GraphQLOutputType>,\n node: ASTNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts type is GraphQLCompositeType {\n if (!type || !isCompositeType(type)) {\n const path =\n node.kind === Kind.FIELD\n ? makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value\n : makeReadableErrorPath(ancestors).join(\".\");\n throw locatedError(`Cannot find type for: ${path}`, [node]);\n }\n}\n\nfunction assertExistingField(\n field: Maybe<GraphQLField<unknown, unknown>>,\n node: FieldNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n): asserts field is GraphQLField<unknown, unknown> {\n if (!field) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") + \".\" + node.name.value;\n throw locatedError(`Cannot find field: ${path}`, [node]);\n }\n}\n\nfunction assertAllArgumentsAreDefined(\n field: GraphQLField<unknown, unknown> | GraphQLDirective,\n node: FieldNode | DirectiveNode,\n ancestors: ReadonlyArray<readonly ASTNode[] | ASTNode>,\n) {\n const defArgs = new Set(field.args.map((arg) => arg.name));\n for (const arg of node.arguments ?? []) {\n if (!defArgs.has(arg.name.value)) {\n const path =\n makeReadableErrorPath(ancestors).join(\".\") +\n \".\" +\n node.name.value +\n `(${arg.name.value}: ...)`;\n throw locatedError(`Cannot find type for argument: ${path}`, [arg]);\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["type"]
7
7
  }
@@ -21,6 +21,7 @@ import {
21
21
  createObjectTypeDefinition,
22
22
  createScalarTypeDefinition,
23
23
  createUnionTypeDefinition,
24
+ encodeDirectiveLocation,
24
25
  getDirectiveDefinitionArgs,
25
26
  getDirectiveName,
26
27
  getFieldArgs,
@@ -40,7 +41,7 @@ import {
40
41
  } from "../schema/reference.mjs";
41
42
  import { invariant } from "../jsutils/invariant.mjs";
42
43
  function extractMinimalViableSchemaForRequestDocument(schema, requestDocument) {
43
- const types = /* @__PURE__ */ Object.create(null);
44
+ const types = {};
44
45
  const directives = [];
45
46
  const unknownDirectives = [];
46
47
  const typeInfo = new TypeInfo(schema);
@@ -164,7 +165,7 @@ function addDirective(directives, directive, node) {
164
165
  const name = directive.name;
165
166
  let tuple = directives.find((d) => getDirectiveName(d) === name);
166
167
  if (!tuple) {
167
- tuple = [directive.name];
168
+ tuple = [directive.name, directive.locations.map(encodeDirectiveLocation)];
168
169
  directives.push(tuple);
169
170
  }
170
171
  const previouslyAddedArgs = getDirectiveDefinitionArgs(tuple);