graphql 17.0.0-rc.0 → 17.0.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.
- package/README.md +3 -5
- package/diagnostics.d.mts +67 -38
- package/diagnostics.d.ts +67 -38
- package/diagnostics.js.map +1 -1
- package/diagnostics.mjs.map +1 -1
- package/error/locatedError.d.mts +1 -3
- package/error/locatedError.d.ts +1 -3
- package/error/locatedError.js.map +1 -1
- package/error/locatedError.mjs.map +1 -1
- package/execution/Executor.d.mts +2 -2
- package/execution/Executor.d.ts +2 -2
- package/execution/Executor.js.map +1 -1
- package/execution/Executor.mjs.map +1 -1
- package/execution/execute.d.mts +65 -44
- package/execution/execute.d.ts +65 -44
- package/execution/execute.js +11 -2
- package/execution/execute.js.map +1 -1
- package/execution/execute.mjs +11 -2
- package/execution/execute.mjs.map +1 -1
- package/execution/values.d.mts +17 -17
- package/execution/values.d.ts +17 -17
- package/execution/values.js.map +1 -1
- package/execution/values.mjs.map +1 -1
- package/language/parser.d.mts +20 -30
- package/language/parser.d.ts +20 -30
- package/language/parser.js +3 -9
- package/language/parser.js.map +1 -1
- package/language/parser.mjs +3 -9
- package/language/parser.mjs.map +1 -1
- package/language/predicates.d.mts +5 -1
- package/language/predicates.d.ts +5 -1
- package/language/predicates.js.map +1 -1
- package/language/predicates.mjs.map +1 -1
- package/language/source.d.mts +4 -5
- package/language/source.d.ts +4 -5
- package/language/source.js.map +1 -1
- package/language/source.mjs.map +1 -1
- package/language/visitor.d.mts +10 -2
- package/language/visitor.d.ts +10 -2
- package/language/visitor.js.map +1 -1
- package/language/visitor.mjs.map +1 -1
- package/package.json +2 -2
- package/type/definition.d.mts +96 -64
- package/type/definition.d.ts +96 -64
- package/type/definition.js.map +1 -1
- package/type/definition.mjs.map +1 -1
- package/type/directives.d.mts +3 -3
- package/type/directives.d.ts +3 -3
- package/type/directives.js.map +1 -1
- package/type/directives.mjs.map +1 -1
- package/type/schema.d.mts +4 -8
- package/type/schema.d.ts +4 -8
- package/type/schema.js.map +1 -1
- package/type/schema.mjs.map +1 -1
- package/type/validate.js +101 -30
- package/type/validate.js.map +1 -1
- package/type/validate.mjs +101 -30
- package/type/validate.mjs.map +1 -1
- package/utilities/TypeInfo.d.mts +1 -1
- package/utilities/TypeInfo.d.ts +1 -1
- package/utilities/TypeInfo.js.map +1 -1
- package/utilities/TypeInfo.mjs.map +1 -1
- package/utilities/buildASTSchema.d.mts +0 -1
- package/utilities/buildASTSchema.d.ts +0 -1
- package/utilities/buildASTSchema.js +0 -1
- package/utilities/buildASTSchema.js.map +1 -1
- package/utilities/buildASTSchema.mjs +0 -1
- package/utilities/buildASTSchema.mjs.map +1 -1
- package/utilities/buildClientSchema.d.mts +5 -1
- package/utilities/buildClientSchema.d.ts +5 -1
- package/utilities/buildClientSchema.js.map +1 -1
- package/utilities/buildClientSchema.mjs.map +1 -1
- package/utilities/coerceInputValue.d.mts +7 -6
- package/utilities/coerceInputValue.d.ts +7 -6
- package/utilities/coerceInputValue.js.map +1 -1
- package/utilities/coerceInputValue.mjs.map +1 -1
- package/utilities/concatAST.d.mts +4 -1
- package/utilities/concatAST.d.ts +4 -1
- package/utilities/concatAST.js.map +1 -1
- package/utilities/concatAST.mjs.map +1 -1
- package/utilities/extendSchema.d.mts +3 -3
- package/utilities/extendSchema.d.ts +3 -3
- package/utilities/extendSchema.js +5 -1
- package/utilities/extendSchema.js.map +1 -1
- package/utilities/extendSchema.mjs +5 -1
- package/utilities/extendSchema.mjs.map +1 -1
- package/utilities/introspectionFromSchema.d.mts +6 -2
- package/utilities/introspectionFromSchema.d.ts +6 -2
- package/utilities/introspectionFromSchema.js.map +1 -1
- package/utilities/introspectionFromSchema.mjs.map +1 -1
- package/utilities/lexicographicSortSchema.d.mts +5 -1
- package/utilities/lexicographicSortSchema.d.ts +5 -1
- package/utilities/lexicographicSortSchema.js.map +1 -1
- package/utilities/lexicographicSortSchema.mjs.map +1 -1
- package/utilities/printSchema.d.mts +5 -1
- package/utilities/printSchema.d.ts +5 -1
- package/utilities/printSchema.js.map +1 -1
- package/utilities/printSchema.mjs.map +1 -1
- package/utilities/replaceVariables.d.mts +4 -8
- package/utilities/replaceVariables.d.ts +4 -8
- package/utilities/replaceVariables.js.map +1 -1
- package/utilities/replaceVariables.mjs.map +1 -1
- package/utilities/stripIgnoredCharacters.d.mts +2 -2
- package/utilities/stripIgnoredCharacters.d.ts +2 -2
- package/utilities/stripIgnoredCharacters.js.map +1 -1
- package/utilities/stripIgnoredCharacters.mjs.map +1 -1
- package/utilities/typeComparators.d.mts +1 -5
- package/utilities/typeComparators.d.ts +1 -5
- package/utilities/typeComparators.js.map +1 -1
- package/utilities/typeComparators.mjs.map +1 -1
- package/utilities/validateInputValue.d.mts +10 -8
- package/utilities/validateInputValue.d.ts +10 -8
- package/utilities/validateInputValue.js.map +1 -1
- package/utilities/validateInputValue.mjs.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.mts +4 -1
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +4 -1
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs.map +1 -1
- package/validation/rules/ExecutableDefinitionsRule.d.mts +6 -2
- package/validation/rules/ExecutableDefinitionsRule.d.ts +6 -2
- package/validation/rules/ExecutableDefinitionsRule.js.map +1 -1
- package/validation/rules/ExecutableDefinitionsRule.mjs.map +1 -1
- package/validation/rules/FieldsOnCorrectTypeRule.d.mts +3 -1
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +3 -1
- package/validation/rules/FieldsOnCorrectTypeRule.js.map +1 -1
- package/validation/rules/FieldsOnCorrectTypeRule.mjs.map +1 -1
- package/validation/rules/FragmentsOnCompositeTypesRule.d.mts +6 -2
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +6 -2
- package/validation/rules/FragmentsOnCompositeTypesRule.js.map +1 -1
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs.map +1 -1
- package/validation/rules/KnownArgumentNamesRule.d.mts +3 -1
- package/validation/rules/KnownArgumentNamesRule.d.ts +3 -1
- package/validation/rules/KnownArgumentNamesRule.js.map +1 -1
- package/validation/rules/KnownArgumentNamesRule.mjs.map +1 -1
- package/validation/rules/KnownDirectivesRule.js +2 -1
- package/validation/rules/KnownDirectivesRule.js.map +1 -1
- package/validation/rules/KnownDirectivesRule.mjs +2 -1
- package/validation/rules/KnownDirectivesRule.mjs.map +1 -1
- package/validation/rules/KnownFragmentNamesRule.d.mts +3 -1
- package/validation/rules/KnownFragmentNamesRule.d.ts +3 -1
- package/validation/rules/KnownFragmentNamesRule.js.map +1 -1
- package/validation/rules/KnownFragmentNamesRule.mjs.map +1 -1
- package/validation/rules/LoneAnonymousOperationRule.d.mts +6 -2
- package/validation/rules/LoneAnonymousOperationRule.d.ts +6 -2
- package/validation/rules/LoneAnonymousOperationRule.js.map +1 -1
- package/validation/rules/LoneAnonymousOperationRule.mjs.map +1 -1
- package/validation/rules/MaxIntrospectionDepthRule.d.mts +6 -2
- package/validation/rules/MaxIntrospectionDepthRule.d.ts +6 -2
- package/validation/rules/MaxIntrospectionDepthRule.js.map +1 -1
- package/validation/rules/MaxIntrospectionDepthRule.mjs.map +1 -1
- package/validation/rules/NoUndefinedVariablesRule.d.mts +3 -1
- package/validation/rules/NoUndefinedVariablesRule.d.ts +3 -1
- package/validation/rules/NoUndefinedVariablesRule.js.map +1 -1
- package/validation/rules/NoUndefinedVariablesRule.mjs.map +1 -1
- package/validation/rules/NoUnusedFragmentsRule.d.mts +3 -1
- package/validation/rules/NoUnusedFragmentsRule.d.ts +3 -1
- package/validation/rules/NoUnusedFragmentsRule.js.map +1 -1
- package/validation/rules/NoUnusedFragmentsRule.mjs.map +1 -1
- package/validation/rules/NoUnusedVariablesRule.d.mts +3 -1
- package/validation/rules/NoUnusedVariablesRule.d.ts +3 -1
- package/validation/rules/NoUnusedVariablesRule.js.map +1 -1
- package/validation/rules/NoUnusedVariablesRule.mjs.map +1 -1
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.mts +6 -2
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +6 -2
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js.map +1 -1
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs.map +1 -1
- package/validation/rules/PossibleFragmentSpreadsRule.d.mts +6 -2
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +6 -2
- package/validation/rules/PossibleFragmentSpreadsRule.js.map +1 -1
- package/validation/rules/PossibleFragmentSpreadsRule.mjs.map +1 -1
- package/validation/rules/ProvidedRequiredArgumentsRule.d.mts +6 -2
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +6 -2
- package/validation/rules/ProvidedRequiredArgumentsRule.js.map +1 -1
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs.map +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.d.mts +6 -2
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +6 -2
- package/validation/rules/SingleFieldSubscriptionsRule.js.map +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.mjs.map +1 -1
- package/validation/rules/UniqueArgumentNamesRule.d.mts +3 -1
- package/validation/rules/UniqueArgumentNamesRule.d.ts +3 -1
- package/validation/rules/UniqueArgumentNamesRule.js.map +1 -1
- package/validation/rules/UniqueArgumentNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueDirectivesPerLocationRule.d.mts +6 -2
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +6 -2
- package/validation/rules/UniqueDirectivesPerLocationRule.js.map +1 -1
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs.map +1 -1
- package/validation/rules/UniqueFragmentNamesRule.d.mts +3 -1
- package/validation/rules/UniqueFragmentNamesRule.d.ts +3 -1
- package/validation/rules/UniqueFragmentNamesRule.js.map +1 -1
- package/validation/rules/UniqueFragmentNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.d.mts +6 -2
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +6 -2
- package/validation/rules/UniqueInputFieldNamesRule.js.map +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueOperationNamesRule.d.mts +3 -1
- package/validation/rules/UniqueOperationNamesRule.d.ts +3 -1
- package/validation/rules/UniqueOperationNamesRule.js.map +1 -1
- package/validation/rules/UniqueOperationNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueVariableNamesRule.d.mts +3 -1
- package/validation/rules/UniqueVariableNamesRule.d.ts +3 -1
- package/validation/rules/UniqueVariableNamesRule.js.map +1 -1
- package/validation/rules/UniqueVariableNamesRule.mjs.map +1 -1
- package/validation/rules/ValuesOfCorrectTypeRule.d.mts +3 -1
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +3 -1
- package/validation/rules/ValuesOfCorrectTypeRule.js.map +1 -1
- package/validation/rules/ValuesOfCorrectTypeRule.mjs.map +1 -1
- package/validation/rules/VariablesAreInputTypesRule.d.mts +6 -2
- package/validation/rules/VariablesAreInputTypesRule.d.ts +6 -2
- package/validation/rules/VariablesAreInputTypesRule.js.map +1 -1
- package/validation/rules/VariablesAreInputTypesRule.mjs.map +1 -1
- package/validation/rules/VariablesInAllowedPositionRule.d.mts +6 -2
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +6 -2
- package/validation/rules/VariablesInAllowedPositionRule.js.map +1 -1
- package/validation/rules/VariablesInAllowedPositionRule.mjs.map +1 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.d.mts +3 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +3 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.js.map +1 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs.map +1 -1
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.mts +6 -2
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +6 -2
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.map +1 -1
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs.map +1 -1
- package/validation/validate.d.mts +3 -6
- package/validation/validate.d.ts +3 -6
- package/validation/validate.js.map +1 -1
- package/validation/validate.mjs.map +1 -1
- package/version.js +2 -2
- package/version.js.map +1 -1
- package/version.mjs +2 -2
- package/version.mjs.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendSchema.js","sourceRoot":"","sources":["../../src/utilities/extendSchema.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Construction */\n\nimport { AccumulatorMap } from '../jsutils/AccumulatorMap.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport type {\n DirectiveDefinitionNode,\n DirectiveExtensionNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n EnumValueDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n ScalarTypeDefinitionNode,\n ScalarTypeExtensionNode,\n SchemaDefinitionNode,\n SchemaExtensionNode,\n TypeDefinitionNode,\n TypeNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n} from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\nimport type {\n GraphQLEnumValueNormalizedConfigMap,\n GraphQLFieldConfigArgumentMap,\n GraphQLFieldNormalizedConfigMap,\n GraphQLInputFieldNormalizedConfigMap,\n GraphQLNamedType,\n GraphQLNullableType,\n GraphQLType,\n} from '../type/definition.ts';\nimport {\n GraphQLEnumType,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n} from '../type/definition.ts';\nimport {\n GraphQLDeprecatedDirective,\n GraphQLDirective,\n GraphQLOneOfDirective,\n GraphQLSpecifiedByDirective,\n} from '../type/directives.ts';\nimport { introspectionTypes } from '../type/introspection.ts';\nimport { specifiedScalarTypes } from '../type/scalars.ts';\nimport type {\n GraphQLSchemaNormalizedConfig,\n GraphQLSchemaValidationOptions,\n} from '../type/schema.ts';\nimport { assertSchema, GraphQLSchema } from '../type/schema.ts';\n\nimport { assertValidSDLExtension } from '../validation/validate.ts';\n\nimport { getDirectiveValues } from '../execution/values.ts';\n\nimport { mapSchemaConfig, SchemaElementKind } from './mapSchemaConfig.ts';\n\ninterface Options extends GraphQLSchemaValidationOptions {\n /**\n * Set to true to assume the SDL is valid.\n *\n * Default: false\n *\n * @internal\n */\n assumeValidSDL?: boolean | undefined;\n}\n\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n * @param schema - GraphQL schema to use.\n * @param documentAST - The parsed GraphQL document AST.\n * @param options - Optional configuration for this operation.\n * @returns A new schema with the extensions and definitions applied.\n * @example\n * ```ts\n * // Extend a schema with new fields and types.\n * import { parse } from 'graphql/language';\n * import { buildSchema, extendSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const extensionAST = parse(`\n * extend type Query {\n * farewell: String\n * }\n *\n * type Review {\n * body: String\n * }\n * `);\n *\n * const extendedSchema = extendSchema(schema, extensionAST);\n *\n * schema.getType('Review'); // => undefined\n * extendedSchema.getType('Review')?.name; // => 'Review'\n * Object.keys(extendedSchema.getQueryType().getFields()); // => ['greeting', 'farewell']\n * ```\n * @example\n * ```ts\n * // This variant bypasses validation for an otherwise invalid extension.\n * import { parse } from 'graphql/language';\n * import { buildSchema, extendSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const invalidExtension = parse(`\n * extend type Missing {\n * field: String\n * }\n * `);\n *\n * extendSchema(schema, invalidExtension); // throws an error\n * extendSchema(schema, invalidExtension, {\n * assumeValid: true,\n * assumeValidSDL: true,\n * }); // does not throw\n * ```\n */\nexport function extendSchema(\n schema: GraphQLSchema,\n documentAST: DocumentNode,\n options?: Options,\n): GraphQLSchema {\n assertSchema(schema);\n\n if (options?.assumeValid !== true && options?.assumeValidSDL !== true) {\n assertValidSDLExtension(documentAST, schema);\n }\n\n const schemaConfig = schema.toConfig();\n const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);\n return schemaConfig === extendedConfig\n ? schema\n : new GraphQLSchema(extendedConfig);\n}\n\n/** @internal */\nexport function extendSchemaImpl(\n schemaConfig: GraphQLSchemaNormalizedConfig,\n documentAST: DocumentNode,\n options?: Options,\n): GraphQLSchemaNormalizedConfig {\n // Collect the type definitions and extensions found in the document.\n const typeDefs: Array<TypeDefinitionNode> = [];\n\n const scalarExtensions = new AccumulatorMap<\n string,\n ScalarTypeExtensionNode\n >();\n const objectExtensions = new AccumulatorMap<\n string,\n ObjectTypeExtensionNode\n >();\n const interfaceExtensions = new AccumulatorMap<\n string,\n InterfaceTypeExtensionNode\n >();\n const unionExtensions = new AccumulatorMap<string, UnionTypeExtensionNode>();\n const enumExtensions = new AccumulatorMap<string, EnumTypeExtensionNode>();\n const inputObjectExtensions = new AccumulatorMap<\n string,\n InputObjectTypeExtensionNode\n >();\n const directiveExtensions = new AccumulatorMap<\n string,\n DirectiveExtensionNode\n >();\n\n // New directives and types are separate because a directives and types can\n // have the same name. For example, a type named \"skip\".\n const directiveDefs: Array<DirectiveDefinitionNode> = [];\n\n let schemaDef: Maybe<SchemaDefinitionNode>;\n // Schema extensions are collected which may add additional operation types.\n const schemaExtensions: Array<SchemaExtensionNode> = [];\n\n let isSchemaChanged = false;\n for (const def of documentAST.definitions) {\n switch (def.kind) {\n case Kind.SCHEMA_DEFINITION:\n schemaDef = def;\n break;\n case Kind.SCHEMA_EXTENSION:\n schemaExtensions.push(def);\n break;\n case Kind.DIRECTIVE_DEFINITION:\n directiveDefs.push(def);\n break;\n case Kind.DIRECTIVE_EXTENSION:\n directiveExtensions.add(def.name.value, def);\n break;\n\n // Type Definitions\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.INTERFACE_TYPE_DEFINITION:\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n typeDefs.push(def);\n break;\n\n // Type System Extensions\n case Kind.SCALAR_TYPE_EXTENSION:\n scalarExtensions.add(def.name.value, def);\n break;\n case Kind.OBJECT_TYPE_EXTENSION:\n objectExtensions.add(def.name.value, def);\n break;\n case Kind.INTERFACE_TYPE_EXTENSION:\n interfaceExtensions.add(def.name.value, def);\n break;\n case Kind.UNION_TYPE_EXTENSION:\n unionExtensions.add(def.name.value, def);\n break;\n case Kind.ENUM_TYPE_EXTENSION:\n enumExtensions.add(def.name.value, def);\n break;\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n inputObjectExtensions.add(def.name.value, def);\n break;\n default:\n continue;\n }\n isSchemaChanged = true;\n }\n\n // If this document contains no new types, extensions, or directives then\n // return the same unmodified GraphQLSchema instance.\n if (!isSchemaChanged) {\n return schemaConfig;\n }\n\n return mapSchemaConfig(schemaConfig, (context) => {\n const { getNamedType, setNamedType, getNamedTypes } = context;\n return {\n [SchemaElementKind.SCHEMA]: (config) => {\n for (const typeNode of typeDefs) {\n const type =\n stdTypeMap.get(typeNode.name.value) ?? buildNamedType(typeNode);\n setNamedType(type);\n }\n\n const operationTypes = {\n // Get the extended root operation types.\n query:\n config.query &&\n (getNamedType(config.query.name) as GraphQLObjectType),\n mutation:\n config.mutation &&\n (getNamedType(config.mutation.name) as GraphQLObjectType),\n subscription:\n config.subscription &&\n (getNamedType(config.subscription.name) as GraphQLObjectType),\n // Then, incorporate schema definition and all schema extensions.\n ...(schemaDef && getOperationTypes([schemaDef])),\n ...getOperationTypes(schemaExtensions),\n };\n\n // Then produce and return a Schema config with these types.\n return {\n description: schemaDef?.description?.value ?? config.description,\n ...operationTypes,\n types: getNamedTypes(),\n directives: [\n ...config.directives.map(extendDirective),\n ...directiveDefs.map(buildDirective),\n ],\n extensions: config.extensions,\n astNode: schemaDef ?? config.astNode,\n extensionASTNodes: config.extensionASTNodes.concat(schemaExtensions),\n assumeValid: options?.assumeValid ?? false,\n };\n },\n [SchemaElementKind.INPUT_OBJECT]: (config) => {\n const extensions = inputObjectExtensions.get(config.name) ?? [];\n return {\n ...config,\n fields: () => ({\n ...config.fields(),\n ...buildInputFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n [SchemaElementKind.ENUM]: (config) => {\n const extensions = enumExtensions.get(config.name) ?? [];\n return {\n ...config,\n values: () => ({\n ...config.values(),\n ...buildEnumValueMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n [SchemaElementKind.SCALAR]: (config) => {\n const extensions = scalarExtensions.get(config.name) ?? [];\n let specifiedByURL = config.specifiedByURL;\n for (const extensionNode of extensions) {\n specifiedByURL = getSpecifiedByURL(extensionNode) ?? specifiedByURL;\n }\n return {\n ...config,\n specifiedByURL,\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n [SchemaElementKind.OBJECT]: (config) => {\n const extensions = objectExtensions.get(config.name) ?? [];\n return {\n ...config,\n interfaces: () => [\n ...config.interfaces(),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...config.fields(),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n [SchemaElementKind.INTERFACE]: (config) => {\n const extensions = interfaceExtensions.get(config.name) ?? [];\n return {\n ...config,\n interfaces: () => [\n ...config.interfaces(),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...config.fields(),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n [SchemaElementKind.UNION]: (config) => {\n const extensions = unionExtensions.get(config.name) ?? [];\n return {\n ...config,\n types: () => [...config.types(), ...buildUnionTypes(extensions)],\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n };\n\n function getOperationTypes(\n nodes: ReadonlyArray<SchemaDefinitionNode | SchemaExtensionNode>,\n ): {\n query?: Maybe<GraphQLObjectType>;\n mutation?: Maybe<GraphQLObjectType>;\n subscription?: Maybe<GraphQLObjectType>;\n } {\n const opTypes = {};\n for (const node of nodes) {\n const operationTypesNodes = node.operationTypes ?? [];\n\n for (const operationType of operationTypesNodes) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n opTypes[operationType.operation] = namedTypeFromAST(\n operationType.type,\n );\n }\n }\n\n return opTypes;\n }\n\n function namedTypeFromAST(node: NamedTypeNode): GraphQLNamedType {\n const name = node.name.value;\n const type = getNamedType(name);\n invariant(type !== undefined, `Unknown type: \"${name}\".`);\n return type;\n }\n\n function typeFromAST(node: TypeNode): GraphQLType {\n if (node.kind === Kind.LIST_TYPE) {\n return new GraphQLList(typeFromAST(node.type));\n }\n if (node.kind === Kind.NON_NULL_TYPE) {\n return new GraphQLNonNull(\n typeFromAST(node.type) as GraphQLNullableType,\n );\n }\n return namedTypeFromAST(node);\n }\n\n function buildDirective(node: DirectiveDefinitionNode): GraphQLDirective {\n const extensionASTNodes = directiveExtensions.get(node.name.value) ?? [];\n const deprecationReason =\n getDeprecationReason(node) ??\n extensionASTNodes\n .map((extensionNode) => getDeprecationReason(extensionNode))\n .find((reason) => reason != null);\n\n return new GraphQLDirective({\n name: node.name.value,\n description: node.description?.value,\n // @ts-expect-error\n locations: node.locations.map(({ value }) => value),\n isRepeatable: node.repeatable,\n args: buildArgumentMap(node.arguments),\n deprecationReason,\n astNode: node,\n extensionASTNodes,\n });\n }\n\n function extendDirective(directive: GraphQLDirective): GraphQLDirective {\n const extensionASTNodes = directiveExtensions.get(directive.name) ?? [];\n if (extensionASTNodes.length === 0) {\n return directive;\n }\n const deprecationReason =\n directive.deprecationReason ??\n extensionASTNodes\n .map((extensionNode) => getDeprecationReason(extensionNode))\n .find((reason) => reason != null);\n\n return new GraphQLDirective({\n ...directive.toConfig(),\n deprecationReason,\n extensionASTNodes:\n directive.extensionASTNodes.concat(extensionASTNodes),\n });\n }\n\n function buildFieldMap(\n nodes: ReadonlyArray<\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n >,\n ): GraphQLFieldNormalizedConfigMap<unknown, unknown> {\n const fieldConfigMap = Object.create(null);\n for (const node of nodes) {\n const nodeFields = node.fields ?? [];\n\n for (const field of nodeFields) {\n fieldConfigMap[field.name.value] = {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n type: typeFromAST(field.type),\n description: field.description?.value,\n args: buildArgumentMap(field.arguments),\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n return fieldConfigMap;\n }\n\n function buildArgumentMap(\n args: Maybe<ReadonlyArray<InputValueDefinitionNode>>,\n ): GraphQLFieldConfigArgumentMap {\n const argsNodes = args ?? [];\n\n const argConfigMap = Object.create(null);\n for (const arg of argsNodes) {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type: any = typeFromAST(arg.type);\n\n argConfigMap[arg.name.value] = {\n type,\n description: arg.description?.value,\n default: arg.defaultValue && { literal: arg.defaultValue },\n deprecationReason: getDeprecationReason(arg),\n astNode: arg,\n };\n }\n return argConfigMap;\n }\n\n function buildInputFieldMap(\n nodes: ReadonlyArray<\n InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode\n >,\n ): GraphQLInputFieldNormalizedConfigMap {\n const inputFieldMap = Object.create(null);\n for (const node of nodes) {\n const fieldsNodes = node.fields ?? [];\n\n for (const field of fieldsNodes) {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type: any = typeFromAST(field.type);\n\n inputFieldMap[field.name.value] = {\n type,\n description: field.description?.value,\n default: field.defaultValue && { literal: field.defaultValue },\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n return inputFieldMap;\n }\n\n function buildEnumValueMap(\n nodes: ReadonlyArray<EnumTypeDefinitionNode | EnumTypeExtensionNode>,\n ): GraphQLEnumValueNormalizedConfigMap {\n const enumValueMap = Object.create(null);\n for (const node of nodes) {\n const valuesNodes = node.values ?? [];\n\n for (const value of valuesNodes) {\n enumValueMap[value.name.value] = {\n description: value.description?.value,\n deprecationReason: getDeprecationReason(value),\n astNode: value,\n };\n }\n }\n return enumValueMap;\n }\n\n function buildInterfaces(\n nodes: ReadonlyArray<\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n >,\n ): Array<GraphQLInterfaceType> {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap(\n (node) => node.interfaces?.map(namedTypeFromAST) ?? [],\n );\n }\n\n function buildUnionTypes(\n nodes: ReadonlyArray<UnionTypeDefinitionNode | UnionTypeExtensionNode>,\n ): Array<GraphQLObjectType> {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap((node) => node.types?.map(namedTypeFromAST) ?? []);\n }\n\n function buildNamedType(astNode: TypeDefinitionNode): GraphQLNamedType {\n const name = astNode.name.value;\n\n switch (astNode.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n const extensionASTNodes = objectExtensions.get(name) ?? [];\n const allNodes = [astNode, ...extensionASTNodes];\n\n return new GraphQLObjectType({\n name,\n description: astNode.description?.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n case Kind.INTERFACE_TYPE_DEFINITION: {\n const extensionASTNodes = interfaceExtensions.get(name) ?? [];\n const allNodes = [astNode, ...extensionASTNodes];\n\n return new GraphQLInterfaceType({\n name,\n description: astNode.description?.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n case Kind.ENUM_TYPE_DEFINITION: {\n const extensionASTNodes = enumExtensions.get(name) ?? [];\n const allNodes = [astNode, ...extensionASTNodes];\n\n return new GraphQLEnumType({\n name,\n description: astNode.description?.value,\n values: () => buildEnumValueMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n case Kind.UNION_TYPE_DEFINITION: {\n const extensionASTNodes = unionExtensions.get(name) ?? [];\n const allNodes = [astNode, ...extensionASTNodes];\n\n return new GraphQLUnionType({\n name,\n description: astNode.description?.value,\n types: () => buildUnionTypes(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n case Kind.SCALAR_TYPE_DEFINITION: {\n const extensionASTNodes = scalarExtensions.get(name) ?? [];\n return new GraphQLScalarType({\n name,\n description: astNode.description?.value,\n specifiedByURL: getSpecifiedByURL(astNode),\n astNode,\n extensionASTNodes,\n });\n }\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n const extensionASTNodes = inputObjectExtensions.get(name) ?? [];\n const allNodes = [astNode, ...extensionASTNodes];\n\n return new GraphQLInputObjectType({\n name,\n description: astNode.description?.value,\n fields: () => buildInputFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n isOneOf: isOneOf(astNode),\n });\n }\n }\n }\n });\n}\n\nconst stdTypeMap = new Map(\n [...specifiedScalarTypes, ...introspectionTypes].map((type) => [\n type.name,\n type,\n ]),\n);\n\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n *\n * @internal\n */\nfunction getDeprecationReason(\n node:\n | EnumValueDefinitionNode\n | FieldDefinitionNode\n | InputValueDefinitionNode\n | DirectiveDefinitionNode\n | DirectiveExtensionNode,\n): Maybe<string> {\n const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node);\n // @ts-expect-error validated by `getDirectiveValues`\n return deprecated?.reason;\n}\n\n/**\n * Given a scalar node, returns the string value for the specifiedByURL.\n *\n * @internal\n */\nfunction getSpecifiedByURL(\n node: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): Maybe<string> {\n const specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node);\n // @ts-expect-error validated by `getDirectiveValues`\n return specifiedBy?.url;\n}\n\n/**\n * Given an input object node, returns if the node should be OneOf.\n *\n * @internal\n */\nfunction isOneOf(node: InputObjectTypeDefinitionNode): boolean {\n return Boolean(getDirectiveValues(GraphQLOneOfDirective, node));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"extendSchema.js","sourceRoot":"","sources":["../../src/utilities/extendSchema.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Construction */\n\nimport { AccumulatorMap } from '../jsutils/AccumulatorMap.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport type {\n DirectiveDefinitionNode,\n DirectiveExtensionNode,\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n EnumValueDefinitionNode,\n FieldDefinitionNode,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InputValueDefinitionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n ScalarTypeDefinitionNode,\n ScalarTypeExtensionNode,\n SchemaDefinitionNode,\n SchemaExtensionNode,\n TypeDefinitionNode,\n TypeNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n} from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\nimport type {\n GraphQLEnumValueNormalizedConfigMap,\n GraphQLFieldConfigArgumentMap,\n GraphQLFieldNormalizedConfigMap,\n GraphQLInputFieldNormalizedConfigMap,\n GraphQLNamedType,\n GraphQLNullableType,\n GraphQLType,\n} from '../type/definition.ts';\nimport {\n GraphQLEnumType,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n} from '../type/definition.ts';\nimport {\n GraphQLDeprecatedDirective,\n GraphQLDirective,\n GraphQLOneOfDirective,\n GraphQLSpecifiedByDirective,\n} from '../type/directives.ts';\nimport { introspectionTypes } from '../type/introspection.ts';\nimport { specifiedScalarTypes } from '../type/scalars.ts';\nimport type {\n GraphQLSchemaNormalizedConfig,\n GraphQLSchemaValidationOptions,\n} from '../type/schema.ts';\nimport { assertSchema, GraphQLSchema } from '../type/schema.ts';\n\nimport { assertValidSDLExtension } from '../validation/validate.ts';\n\nimport { getDirectiveValues } from '../execution/values.ts';\n\nimport { mapSchemaConfig, SchemaElementKind } from './mapSchemaConfig.ts';\n\ninterface Options extends GraphQLSchemaValidationOptions {\n /**\n * Set to true to assume the SDL is valid.\n *\n * Default: false\n *\n * @internal\n */\n assumeValidSDL?: boolean | undefined;\n}\n\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n * @param schema - GraphQL schema to use.\n * @param documentAST - The parsed GraphQL document AST.\n * @param options - Optional configuration for this operation.\n * @returns A new schema with the extensions and definitions applied.\n * @example\n * ```ts\n * // Extend a schema with new fields and types.\n * import { parse } from 'graphql/language';\n * import { buildSchema, extendSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const extensionAST = parse(`\n * extend type Query {\n * farewell: String\n * }\n *\n * type Review {\n * body: String\n * }\n * `);\n *\n * const extendedSchema = extendSchema(schema, extensionAST);\n *\n * schema.getType('Review'); // => undefined\n * extendedSchema.getType('Review')?.name; // => 'Review'\n * Object.keys(extendedSchema.getQueryType().getFields()); // => ['greeting', 'farewell']\n * ```\n * @example\n * ```ts\n * // This variant bypasses validation for an otherwise invalid extension.\n * import { parse } from 'graphql/language';\n * import { buildSchema, extendSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const invalidExtension = parse(`\n * extend type Missing {\n * field: String\n * }\n * `);\n *\n * extendSchema(schema, invalidExtension); // throws an error\n * extendSchema(schema, invalidExtension, {\n * assumeValid: true,\n * assumeValidSDL: true,\n * }); // does not throw\n * ```\n */\nexport function extendSchema(\n schema: GraphQLSchema,\n documentAST: DocumentNode,\n options?: Options,\n): GraphQLSchema {\n assertSchema(schema);\n\n if (options?.assumeValid !== true && options?.assumeValidSDL !== true) {\n assertValidSDLExtension(documentAST, schema);\n }\n\n const schemaConfig = schema.toConfig();\n const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);\n return schemaConfig === extendedConfig\n ? schema\n : new GraphQLSchema(extendedConfig);\n}\n\n/** @internal */\nexport function extendSchemaImpl(\n schemaConfig: GraphQLSchemaNormalizedConfig,\n documentAST: DocumentNode,\n options?: Options,\n): GraphQLSchemaNormalizedConfig {\n // Collect the type definitions and extensions found in the document.\n const typeDefs: Array<TypeDefinitionNode> = [];\n\n const scalarExtensions = new AccumulatorMap<\n string,\n ScalarTypeExtensionNode\n >();\n const objectExtensions = new AccumulatorMap<\n string,\n ObjectTypeExtensionNode\n >();\n const interfaceExtensions = new AccumulatorMap<\n string,\n InterfaceTypeExtensionNode\n >();\n const unionExtensions = new AccumulatorMap<string, UnionTypeExtensionNode>();\n const enumExtensions = new AccumulatorMap<string, EnumTypeExtensionNode>();\n const inputObjectExtensions = new AccumulatorMap<\n string,\n InputObjectTypeExtensionNode\n >();\n const directiveExtensions = new AccumulatorMap<\n string,\n DirectiveExtensionNode\n >();\n\n // New directives and types are separate because a directives and types can\n // have the same name. For example, a type named \"skip\".\n const directiveDefs: Array<DirectiveDefinitionNode> = [];\n\n let schemaDef: Maybe<SchemaDefinitionNode>;\n // Schema extensions are collected which may add additional operation types.\n const schemaExtensions: Array<SchemaExtensionNode> = [];\n\n let isSchemaChanged = false;\n for (const def of documentAST.definitions) {\n switch (def.kind) {\n case Kind.SCHEMA_DEFINITION:\n schemaDef = def;\n break;\n case Kind.SCHEMA_EXTENSION:\n schemaExtensions.push(def);\n break;\n case Kind.DIRECTIVE_DEFINITION:\n directiveDefs.push(def);\n break;\n case Kind.DIRECTIVE_EXTENSION:\n directiveExtensions.add(def.name.value, def);\n break;\n\n // Type Definitions\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.INTERFACE_TYPE_DEFINITION:\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n typeDefs.push(def);\n break;\n\n // Type System Extensions\n case Kind.SCALAR_TYPE_EXTENSION:\n scalarExtensions.add(def.name.value, def);\n break;\n case Kind.OBJECT_TYPE_EXTENSION:\n objectExtensions.add(def.name.value, def);\n break;\n case Kind.INTERFACE_TYPE_EXTENSION:\n interfaceExtensions.add(def.name.value, def);\n break;\n case Kind.UNION_TYPE_EXTENSION:\n unionExtensions.add(def.name.value, def);\n break;\n case Kind.ENUM_TYPE_EXTENSION:\n enumExtensions.add(def.name.value, def);\n break;\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n inputObjectExtensions.add(def.name.value, def);\n break;\n default:\n continue;\n }\n isSchemaChanged = true;\n }\n\n // If this document contains no new types, extensions, or directives then\n // return the same unmodified GraphQLSchema instance.\n if (!isSchemaChanged) {\n return schemaConfig;\n }\n\n return mapSchemaConfig(schemaConfig, (context) => {\n const { getNamedType, setNamedType, getNamedTypes } = context;\n return {\n [SchemaElementKind.SCHEMA]: (config) => {\n for (const typeNode of typeDefs) {\n const type =\n stdTypeMap.get(typeNode.name.value) ?? buildNamedType(typeNode);\n setNamedType(type);\n }\n\n const operationTypes = {\n // Get the extended root operation types.\n query:\n config.query &&\n (getNamedType(config.query.name) as GraphQLObjectType),\n mutation:\n config.mutation &&\n (getNamedType(config.mutation.name) as GraphQLObjectType),\n subscription:\n config.subscription &&\n (getNamedType(config.subscription.name) as GraphQLObjectType),\n // Then, incorporate schema definition and all schema extensions.\n ...(schemaDef && getOperationTypes([schemaDef])),\n ...getOperationTypes(schemaExtensions),\n };\n\n // Then produce and return a Schema config with these types.\n return {\n description: schemaDef?.description?.value ?? config.description,\n ...operationTypes,\n types: getNamedTypes(),\n directives: [\n ...config.directives.map(extendDirective),\n ...directiveDefs.map(buildDirective),\n ],\n extensions: config.extensions,\n astNode: schemaDef ?? config.astNode,\n extensionASTNodes: config.extensionASTNodes.concat(schemaExtensions),\n assumeValid: options?.assumeValid ?? false,\n };\n },\n [SchemaElementKind.INPUT_OBJECT]: (config) => {\n const extensions = inputObjectExtensions.get(config.name) ?? [];\n return {\n ...config,\n fields: () => ({\n ...config.fields(),\n ...buildInputFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n [SchemaElementKind.ENUM]: (config) => {\n const extensions = enumExtensions.get(config.name) ?? [];\n return {\n ...config,\n values: () => ({\n ...config.values(),\n ...buildEnumValueMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n [SchemaElementKind.SCALAR]: (config) => {\n const extensions = scalarExtensions.get(config.name) ?? [];\n let specifiedByURL = config.specifiedByURL;\n for (const extensionNode of extensions) {\n specifiedByURL = getSpecifiedByURL(extensionNode) ?? specifiedByURL;\n }\n return {\n ...config,\n specifiedByURL,\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n [SchemaElementKind.OBJECT]: (config) => {\n const extensions = objectExtensions.get(config.name) ?? [];\n return {\n ...config,\n interfaces: () => [\n ...config.interfaces(),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...config.fields(),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n [SchemaElementKind.INTERFACE]: (config) => {\n const extensions = interfaceExtensions.get(config.name) ?? [];\n return {\n ...config,\n interfaces: () => [\n ...config.interfaces(),\n ...buildInterfaces(extensions),\n ],\n fields: () => ({\n ...config.fields(),\n ...buildFieldMap(extensions),\n }),\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n [SchemaElementKind.UNION]: (config) => {\n const extensions = unionExtensions.get(config.name) ?? [];\n return {\n ...config,\n types: () => [...config.types(), ...buildUnionTypes(extensions)],\n extensionASTNodes: config.extensionASTNodes.concat(extensions),\n };\n },\n };\n\n function getOperationTypes(\n nodes: ReadonlyArray<SchemaDefinitionNode | SchemaExtensionNode>,\n ): {\n query?: Maybe<GraphQLObjectType>;\n mutation?: Maybe<GraphQLObjectType>;\n subscription?: Maybe<GraphQLObjectType>;\n } {\n const opTypes = {};\n for (const node of nodes) {\n const operationTypesNodes = node.operationTypes ?? [];\n\n for (const operationType of operationTypesNodes) {\n // Note: While this could make early assertions to get the correctly\n // typed values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n opTypes[operationType.operation] = namedTypeFromAST(\n operationType.type,\n );\n }\n }\n\n return opTypes;\n }\n\n function namedTypeFromAST(node: NamedTypeNode): GraphQLNamedType {\n const name = node.name.value;\n const type = getNamedType(name);\n invariant(type !== undefined, `Unknown type: \"${name}\".`);\n return type;\n }\n\n function typeFromAST(node: TypeNode): GraphQLType {\n if (node.kind === Kind.LIST_TYPE) {\n return new GraphQLList(typeFromAST(node.type));\n }\n if (node.kind === Kind.NON_NULL_TYPE) {\n return new GraphQLNonNull(\n typeFromAST(node.type) as GraphQLNullableType,\n );\n }\n return namedTypeFromAST(node);\n }\n\n function buildDirective(node: DirectiveDefinitionNode): GraphQLDirective {\n const extensionASTNodes = directiveExtensions.get(node.name.value) ?? [];\n const deprecationReason =\n getDeprecationReason(node) ??\n extensionASTNodes\n .map((extensionNode) => getDeprecationReason(extensionNode))\n .find((reason) => reason != null);\n\n return new GraphQLDirective({\n name: node.name.value,\n description: node.description?.value,\n // @ts-expect-error\n locations: node.locations.map(({ value }) => value),\n isRepeatable: node.repeatable,\n args: buildArgumentMap(node.arguments),\n deprecationReason,\n astNode: node,\n extensionASTNodes,\n });\n }\n\n function extendDirective(directive: GraphQLDirective): GraphQLDirective {\n const extensionASTNodes = directiveExtensions.get(directive.name) ?? [];\n if (extensionASTNodes.length === 0) {\n return directive;\n }\n const deprecationReason =\n directive.deprecationReason ??\n extensionASTNodes\n .map((extensionNode) => getDeprecationReason(extensionNode))\n .find((reason) => reason != null);\n\n return new GraphQLDirective({\n ...directive.toConfig(),\n deprecationReason,\n extensionASTNodes:\n directive.extensionASTNodes.concat(extensionASTNodes),\n });\n }\n\n function buildFieldMap(\n nodes: ReadonlyArray<\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n >,\n ): GraphQLFieldNormalizedConfigMap<unknown, unknown> {\n const fieldConfigMap = Object.create(null);\n for (const node of nodes) {\n const nodeFields = node.fields ?? [];\n\n for (const field of nodeFields) {\n fieldConfigMap[field.name.value] = {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n type: typeFromAST(field.type),\n description: field.description?.value,\n args: buildArgumentMap(field.arguments),\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n return fieldConfigMap;\n }\n\n function buildArgumentMap(\n args: Maybe<ReadonlyArray<InputValueDefinitionNode>>,\n ): GraphQLFieldConfigArgumentMap {\n const argsNodes = args ?? [];\n\n const argConfigMap = Object.create(null);\n for (const arg of argsNodes) {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type: any = typeFromAST(arg.type);\n\n argConfigMap[arg.name.value] = {\n type,\n description: arg.description?.value,\n default: arg.defaultValue && { literal: arg.defaultValue },\n deprecationReason: getDeprecationReason(arg),\n astNode: arg,\n };\n }\n return argConfigMap;\n }\n\n function buildInputFieldMap(\n nodes: ReadonlyArray<\n InputObjectTypeDefinitionNode | InputObjectTypeExtensionNode\n >,\n ): GraphQLInputFieldNormalizedConfigMap {\n const inputFieldMap = Object.create(null);\n for (const node of nodes) {\n const fieldsNodes = node.fields ?? [];\n\n for (const field of fieldsNodes) {\n // Note: While this could make assertions to get the correctly typed\n // value, that would throw immediately while type system validation\n // with validateSchema() will produce more actionable results.\n const type: any = typeFromAST(field.type);\n\n inputFieldMap[field.name.value] = {\n type,\n description: field.description?.value,\n default: field.defaultValue && { literal: field.defaultValue },\n deprecationReason: getDeprecationReason(field),\n astNode: field,\n };\n }\n }\n return inputFieldMap;\n }\n\n function buildEnumValueMap(\n nodes: ReadonlyArray<EnumTypeDefinitionNode | EnumTypeExtensionNode>,\n ): GraphQLEnumValueNormalizedConfigMap {\n const enumValueMap = Object.create(null);\n for (const node of nodes) {\n const valuesNodes = node.values ?? [];\n\n for (const value of valuesNodes) {\n enumValueMap[value.name.value] = {\n description: value.description?.value,\n deprecationReason: getDeprecationReason(value),\n astNode: value,\n };\n }\n }\n return enumValueMap;\n }\n\n function buildInterfaces(\n nodes: ReadonlyArray<\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n >,\n ): Array<GraphQLInterfaceType> {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap(\n (node) => node.interfaces?.map(namedTypeFromAST) ?? [],\n );\n }\n\n function buildUnionTypes(\n nodes: ReadonlyArray<UnionTypeDefinitionNode | UnionTypeExtensionNode>,\n ): Array<GraphQLObjectType> {\n // Note: While this could make assertions to get the correctly typed\n // values below, that would throw immediately while type system\n // validation with validateSchema() will produce more actionable results.\n // @ts-expect-error\n return nodes.flatMap((node) => node.types?.map(namedTypeFromAST) ?? []);\n }\n\n function buildNamedType(astNode: TypeDefinitionNode): GraphQLNamedType {\n const name = astNode.name.value;\n\n switch (astNode.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n const extensionASTNodes = objectExtensions.get(name) ?? [];\n const allNodes = [astNode, ...extensionASTNodes];\n\n return new GraphQLObjectType({\n name,\n description: astNode.description?.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n case Kind.INTERFACE_TYPE_DEFINITION: {\n const extensionASTNodes = interfaceExtensions.get(name) ?? [];\n const allNodes = [astNode, ...extensionASTNodes];\n\n return new GraphQLInterfaceType({\n name,\n description: astNode.description?.value,\n interfaces: () => buildInterfaces(allNodes),\n fields: () => buildFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n case Kind.ENUM_TYPE_DEFINITION: {\n const extensionASTNodes = enumExtensions.get(name) ?? [];\n const allNodes = [astNode, ...extensionASTNodes];\n\n return new GraphQLEnumType({\n name,\n description: astNode.description?.value,\n values: () => buildEnumValueMap(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n case Kind.UNION_TYPE_DEFINITION: {\n const extensionASTNodes = unionExtensions.get(name) ?? [];\n const allNodes = [astNode, ...extensionASTNodes];\n\n return new GraphQLUnionType({\n name,\n description: astNode.description?.value,\n types: () => buildUnionTypes(allNodes),\n astNode,\n extensionASTNodes,\n });\n }\n case Kind.SCALAR_TYPE_DEFINITION: {\n const extensionASTNodes = scalarExtensions.get(name) ?? [];\n let specifiedByURL = getSpecifiedByURL(astNode);\n for (const extensionNode of extensionASTNodes) {\n specifiedByURL = getSpecifiedByURL(extensionNode) ?? specifiedByURL;\n }\n return new GraphQLScalarType({\n name,\n description: astNode.description?.value,\n specifiedByURL,\n astNode,\n extensionASTNodes,\n });\n }\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n const extensionASTNodes = inputObjectExtensions.get(name) ?? [];\n const allNodes = [astNode, ...extensionASTNodes];\n\n return new GraphQLInputObjectType({\n name,\n description: astNode.description?.value,\n fields: () => buildInputFieldMap(allNodes),\n astNode,\n extensionASTNodes,\n isOneOf: isOneOf(astNode),\n });\n }\n }\n }\n });\n}\n\nconst stdTypeMap = new Map(\n [...specifiedScalarTypes, ...introspectionTypes].map((type) => [\n type.name,\n type,\n ]),\n);\n\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n *\n * @internal\n */\nfunction getDeprecationReason(\n node:\n | EnumValueDefinitionNode\n | FieldDefinitionNode\n | InputValueDefinitionNode\n | DirectiveDefinitionNode\n | DirectiveExtensionNode,\n): Maybe<string> {\n const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node);\n // @ts-expect-error validated by `getDirectiveValues`\n return deprecated?.reason;\n}\n\n/**\n * Given a scalar node, returns the string value for the specifiedByURL.\n *\n * @internal\n */\nfunction getSpecifiedByURL(\n node: ScalarTypeDefinitionNode | ScalarTypeExtensionNode,\n): Maybe<string> {\n const specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node);\n // @ts-expect-error validated by `getDirectiveValues`\n return specifiedBy?.url;\n}\n\n/**\n * Given an input object node, returns if the node should be OneOf.\n *\n * @internal\n */\nfunction isOneOf(node: InputObjectTypeDefinitionNode): boolean {\n return Boolean(getDirectiveValues(GraphQLOneOfDirective, node));\n}\n"]}
|
|
@@ -26,7 +26,9 @@ import type { IntrospectionOptions, IntrospectionQuery } from "./getIntrospectio
|
|
|
26
26
|
* `);
|
|
27
27
|
*
|
|
28
28
|
* const introspection = introspectionFromSchema(schema);
|
|
29
|
-
* const urlType = introspection.__schema.types.find(
|
|
29
|
+
* const urlType = introspection.__schema.types.find(
|
|
30
|
+
* (type) => type.name === 'Url',
|
|
31
|
+
* );
|
|
30
32
|
*
|
|
31
33
|
* urlType.specifiedByURL; // => 'https://url.spec.whatwg.org/'
|
|
32
34
|
* ```
|
|
@@ -52,7 +54,9 @@ import type { IntrospectionOptions, IntrospectionQuery } from "./getIntrospectio
|
|
|
52
54
|
* experimentalDirectiveDeprecation: false,
|
|
53
55
|
* oneOf: false,
|
|
54
56
|
* });
|
|
55
|
-
* const urlType = introspection.__schema.types.find(
|
|
57
|
+
* const urlType = introspection.__schema.types.find(
|
|
58
|
+
* (type) => type.name === 'Url',
|
|
59
|
+
* );
|
|
56
60
|
* const deprecatedDirective = introspection.__schema.directives.find(
|
|
57
61
|
* (directive) => directive.name === 'deprecated',
|
|
58
62
|
* );
|
|
@@ -26,7 +26,9 @@ import type { IntrospectionOptions, IntrospectionQuery } from "./getIntrospectio
|
|
|
26
26
|
* `);
|
|
27
27
|
*
|
|
28
28
|
* const introspection = introspectionFromSchema(schema);
|
|
29
|
-
* const urlType = introspection.__schema.types.find(
|
|
29
|
+
* const urlType = introspection.__schema.types.find(
|
|
30
|
+
* (type) => type.name === 'Url',
|
|
31
|
+
* );
|
|
30
32
|
*
|
|
31
33
|
* urlType.specifiedByURL; // => 'https://url.spec.whatwg.org/'
|
|
32
34
|
* ```
|
|
@@ -52,7 +54,9 @@ import type { IntrospectionOptions, IntrospectionQuery } from "./getIntrospectio
|
|
|
52
54
|
* experimentalDirectiveDeprecation: false,
|
|
53
55
|
* oneOf: false,
|
|
54
56
|
* });
|
|
55
|
-
* const urlType = introspection.__schema.types.find(
|
|
57
|
+
* const urlType = introspection.__schema.types.find(
|
|
58
|
+
* (type) => type.name === 'Url',
|
|
59
|
+
* );
|
|
56
60
|
* const deprecatedDirective = introspection.__schema.directives.find(
|
|
57
61
|
* (directive) => directive.name === 'deprecated',
|
|
58
62
|
* );
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspectionFromSchema.js","sourceRoot":"","sources":["../../src/utilities/introspectionFromSchema.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"introspectionFromSchema.js","sourceRoot":"","sources":["../../src/utilities/introspectionFromSchema.ts"],"names":[],"mappings":";;AAkFA,0DAkBC;AAlGD,0DAAoD;AAEpD,qDAA8C;AAI9C,wDAAsD;AAMtD,yEAAmE;AAoEnE,SAAgB,uBAAuB,CACrC,MAAqB,EACrB,OAA8B;IAE9B,MAAM,mBAAmB,GAAG;QAC1B,cAAc,EAAE,IAAI;QACpB,qBAAqB,EAAE,IAAI;QAC3B,iBAAiB,EAAE,IAAI;QACvB,qBAAqB,EAAE,IAAI;QAC3B,gCAAgC,EAAE,IAAI;QACtC,KAAK,EAAE,IAAI;QACX,GAAG,OAAO;KACX,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,iBAAK,EAAC,IAAA,gDAAqB,EAAC,mBAAmB,CAAC,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;UACvC,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI;YAAtD,wBAAS;IACT,OAAO,MAAM,CAAC,IAAW,CAAC;AAC5B,CAAC","sourcesContent":["/** @category Introspection */\n\nimport { invariant } from '../jsutils/invariant.ts';\n\nimport { parse } from '../language/parser.ts';\n\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { executeSync } from '../execution/execute.ts';\n\nimport type {\n IntrospectionOptions,\n IntrospectionQuery,\n} from './getIntrospectionQuery.ts';\nimport { getIntrospectionQuery } from './getIntrospectionQuery.ts';\n\n/**\n * Build an IntrospectionQuery from a GraphQLSchema\n *\n * IntrospectionQuery is useful for utilities that care about type and field\n * relationships, but do not need to traverse through those relationships.\n *\n * This is the inverse of buildClientSchema. The primary use case is outside\n * of the server context, for instance when doing schema comparisons.\n * @param schema - GraphQL schema to use.\n * @param options - Optional configuration for this operation.\n * @returns Introspection result data for the schema.\n * @example\n * ```ts\n * // Include schema metadata using the default introspection options.\n * import { buildSchema, introspectionFromSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * scalar Url @specifiedBy(url: \"https://url.spec.whatwg.org/\")\n *\n * type Query {\n * homepage: Url\n * }\n * `);\n *\n * const introspection = introspectionFromSchema(schema);\n * const urlType = introspection.__schema.types.find(\n * (type) => type.name === 'Url',\n * );\n *\n * urlType.specifiedByURL; // => 'https://url.spec.whatwg.org/'\n * ```\n * @example\n * ```ts\n * // This variant disables optional introspection metadata.\n * import { buildSchema, introspectionFromSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * scalar Url @specifiedBy(url: \"https://url.spec.whatwg.org/\")\n *\n * type Query {\n * homepage: Url\n * }\n * `);\n *\n * const introspection = introspectionFromSchema(schema, {\n * descriptions: false,\n * specifiedByUrl: false,\n * directiveIsRepeatable: false,\n * schemaDescription: false,\n * inputValueDeprecation: false,\n * experimentalDirectiveDeprecation: false,\n * oneOf: false,\n * });\n * const urlType = introspection.__schema.types.find(\n * (type) => type.name === 'Url',\n * );\n * const deprecatedDirective = introspection.__schema.directives.find(\n * (directive) => directive.name === 'deprecated',\n * );\n *\n * urlType.specifiedByURL; // => undefined\n * urlType.description; // => undefined\n * introspection.__schema.description; // => undefined\n * deprecatedDirective.isRepeatable; // => undefined\n * ```\n */\nexport function introspectionFromSchema(\n schema: GraphQLSchema,\n options?: IntrospectionOptions,\n): IntrospectionQuery {\n const optionsWithDefaults = {\n specifiedByUrl: true,\n directiveIsRepeatable: true,\n schemaDescription: true,\n inputValueDeprecation: true,\n experimentalDirectiveDeprecation: true,\n oneOf: true,\n ...options,\n };\n\n const document = parse(getIntrospectionQuery(optionsWithDefaults));\n const result = executeSync({ schema, document });\n invariant(result.errors == null && result.data != null);\n return result.data as any;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspectionFromSchema.js","sourceRoot":"","sources":["../../src/utilities/introspectionFromSchema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,iCAAgC;AAEpD,OAAO,EAAE,KAAK,EAAE,+BAA8B;AAI9C,OAAO,EAAE,WAAW,EAAE,iCAAgC;AAMtD,OAAO,EAAE,qBAAqB,EAAE,oCAAmC;
|
|
1
|
+
{"version":3,"file":"introspectionFromSchema.js","sourceRoot":"","sources":["../../src/utilities/introspectionFromSchema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,iCAAgC;AAEpD,OAAO,EAAE,KAAK,EAAE,+BAA8B;AAI9C,OAAO,EAAE,WAAW,EAAE,iCAAgC;AAMtD,OAAO,EAAE,qBAAqB,EAAE,oCAAmC;AAoEnE,MAAM,UAAU,uBAAuB,CACrC,MAAqB,EACrB,OAA8B;IAE9B,MAAM,mBAAmB,GAAG;QAC1B,cAAc,EAAE,IAAI;QACpB,qBAAqB,EAAE,IAAI;QAC3B,iBAAiB,EAAE,IAAI;QACvB,qBAAqB,EAAE,IAAI;QAC3B,gCAAgC,EAAE,IAAI;QACtC,KAAK,EAAE,IAAI;QACX,GAAG,OAAO;KACX,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;UACvC,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI;QAAtD,SAAS;IACT,OAAO,MAAM,CAAC,IAAW,CAAC;AAC5B,CAAC","sourcesContent":["/** @category Introspection */\n\nimport { invariant } from '../jsutils/invariant.ts';\n\nimport { parse } from '../language/parser.ts';\n\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { executeSync } from '../execution/execute.ts';\n\nimport type {\n IntrospectionOptions,\n IntrospectionQuery,\n} from './getIntrospectionQuery.ts';\nimport { getIntrospectionQuery } from './getIntrospectionQuery.ts';\n\n/**\n * Build an IntrospectionQuery from a GraphQLSchema\n *\n * IntrospectionQuery is useful for utilities that care about type and field\n * relationships, but do not need to traverse through those relationships.\n *\n * This is the inverse of buildClientSchema. The primary use case is outside\n * of the server context, for instance when doing schema comparisons.\n * @param schema - GraphQL schema to use.\n * @param options - Optional configuration for this operation.\n * @returns Introspection result data for the schema.\n * @example\n * ```ts\n * // Include schema metadata using the default introspection options.\n * import { buildSchema, introspectionFromSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * scalar Url @specifiedBy(url: \"https://url.spec.whatwg.org/\")\n *\n * type Query {\n * homepage: Url\n * }\n * `);\n *\n * const introspection = introspectionFromSchema(schema);\n * const urlType = introspection.__schema.types.find(\n * (type) => type.name === 'Url',\n * );\n *\n * urlType.specifiedByURL; // => 'https://url.spec.whatwg.org/'\n * ```\n * @example\n * ```ts\n * // This variant disables optional introspection metadata.\n * import { buildSchema, introspectionFromSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * scalar Url @specifiedBy(url: \"https://url.spec.whatwg.org/\")\n *\n * type Query {\n * homepage: Url\n * }\n * `);\n *\n * const introspection = introspectionFromSchema(schema, {\n * descriptions: false,\n * specifiedByUrl: false,\n * directiveIsRepeatable: false,\n * schemaDescription: false,\n * inputValueDeprecation: false,\n * experimentalDirectiveDeprecation: false,\n * oneOf: false,\n * });\n * const urlType = introspection.__schema.types.find(\n * (type) => type.name === 'Url',\n * );\n * const deprecatedDirective = introspection.__schema.directives.find(\n * (directive) => directive.name === 'deprecated',\n * );\n *\n * urlType.specifiedByURL; // => undefined\n * urlType.description; // => undefined\n * introspection.__schema.description; // => undefined\n * deprecatedDirective.isRepeatable; // => undefined\n * ```\n */\nexport function introspectionFromSchema(\n schema: GraphQLSchema,\n options?: IntrospectionOptions,\n): IntrospectionQuery {\n const optionsWithDefaults = {\n specifiedByUrl: true,\n directiveIsRepeatable: true,\n schemaDescription: true,\n inputValueDeprecation: true,\n experimentalDirectiveDeprecation: true,\n oneOf: true,\n ...options,\n };\n\n const document = parse(getIntrospectionQuery(optionsWithDefaults));\n const result = executeSync({ schema, document });\n invariant(result.errors == null && result.data != null);\n return result.data as any;\n}\n"]}
|
|
@@ -8,7 +8,11 @@ import { GraphQLSchema } from "../type/schema.mjs";
|
|
|
8
8
|
* @returns A copy of the schema with types, fields, arguments, and values sorted lexicographically.
|
|
9
9
|
* @example
|
|
10
10
|
* ```ts
|
|
11
|
-
* import {
|
|
11
|
+
* import {
|
|
12
|
+
* buildSchema,
|
|
13
|
+
* lexicographicSortSchema,
|
|
14
|
+
* printSchema,
|
|
15
|
+
* } from 'graphql/utilities';
|
|
12
16
|
*
|
|
13
17
|
* const schema = buildSchema(`
|
|
14
18
|
* type Query {
|
|
@@ -8,7 +8,11 @@ import { GraphQLSchema } from "../type/schema.js";
|
|
|
8
8
|
* @returns A copy of the schema with types, fields, arguments, and values sorted lexicographically.
|
|
9
9
|
* @example
|
|
10
10
|
* ```ts
|
|
11
|
-
* import {
|
|
11
|
+
* import {
|
|
12
|
+
* buildSchema,
|
|
13
|
+
* lexicographicSortSchema,
|
|
14
|
+
* printSchema,
|
|
15
|
+
* } from 'graphql/utilities';
|
|
12
16
|
*
|
|
13
17
|
* const schema = buildSchema(`
|
|
14
18
|
* type Query {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexicographicSortSchema.js","sourceRoot":"","sources":["../../src/utilities/lexicographicSortSchema.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"lexicographicSortSchema.js","sourceRoot":"","sources":["../../src/utilities/lexicographicSortSchema.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Construction */\n\nimport { naturalCompare } from '../jsutils/naturalCompare.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\n\nimport { GraphQLSchema } from '../type/schema.ts';\n\nimport { mapSchemaConfig, SchemaElementKind } from './mapSchemaConfig.ts';\n\n/**\n * Sort GraphQLSchema.\n *\n * This function returns a sorted copy of the given GraphQLSchema.\n * @param schema - GraphQL schema to use.\n * @returns A copy of the schema with types, fields, arguments, and values sorted lexicographically.\n * @example\n * ```ts\n * import {\n * buildSchema,\n * lexicographicSortSchema,\n * printSchema,\n * } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * zebra: String\n * apple: String\n * }\n *\n * enum Episode {\n * JEDI\n * NEW_HOPE\n * EMPIRE\n * }\n * `);\n *\n * const sortedSchema = lexicographicSortSchema(schema);\n *\n * printSchema(sortedSchema);\n * // =>\n * // enum Episode {\n * // EMPIRE\n * // JEDI\n * // NEW_HOPE\n * // }\n * //\n * // type Query {\n * // apple: String\n * // zebra: String\n * // }\n * ```\n */\nexport function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {\n return new GraphQLSchema(\n mapSchemaConfig(schema.toConfig(), () => ({\n [SchemaElementKind.OBJECT]: (config) => ({\n ...config,\n interfaces: () => sortByName(config.interfaces()),\n fields: () => sortObjMap(config.fields()),\n }),\n [SchemaElementKind.FIELD]: (config) => ({\n ...config,\n args: sortObjMap(config.args),\n }),\n [SchemaElementKind.INTERFACE]: (config) => ({\n ...config,\n interfaces: () => sortByName(config.interfaces()),\n fields: () => sortObjMap(config.fields()),\n }),\n [SchemaElementKind.UNION]: (config) => ({\n ...config,\n types: () => sortByName(config.types()),\n }),\n [SchemaElementKind.ENUM]: (config) => ({\n ...config,\n values: () => sortObjMap(config.values()),\n }),\n [SchemaElementKind.INPUT_OBJECT]: (config) => ({\n ...config,\n fields: () => sortObjMap(config.fields()),\n }),\n [SchemaElementKind.DIRECTIVE]: (config) => ({\n ...config,\n locations: sortBy(config.locations, (x) => x),\n args: sortObjMap(config.args),\n }),\n [SchemaElementKind.SCHEMA]: (config) => ({\n ...config,\n types: sortByName(config.types),\n directives: sortByName(config.directives),\n }),\n })),\n );\n}\n\nfunction sortObjMap<T, R>(map: ObjMap<T>): ObjMap<R> {\n const sortedMap = Object.create(null);\n for (const key of Object.keys(map).sort(naturalCompare)) {\n sortedMap[key] = map[key];\n }\n return sortedMap;\n}\n\nfunction sortByName<T extends { readonly name: string }>(\n array: ReadonlyArray<T>,\n): Array<T> {\n return sortBy(array, (obj) => obj.name);\n}\n\nfunction sortBy<T>(\n array: ReadonlyArray<T>,\n mapToKey: (item: T) => string,\n): Array<T> {\n return array.slice().sort((obj1, obj2) => {\n const key1 = mapToKey(obj1);\n const key2 = mapToKey(obj2);\n return naturalCompare(key1, key2);\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lexicographicSortSchema.js","sourceRoot":"","sources":["../../src/utilities/lexicographicSortSchema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,sCAAqC;AAG9D,OAAO,EAAE,aAAa,EAAE,2BAA0B;AAElD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,8BAA6B;
|
|
1
|
+
{"version":3,"file":"lexicographicSortSchema.js","sourceRoot":"","sources":["../../src/utilities/lexicographicSortSchema.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Construction */\n\nimport { naturalCompare } from '../jsutils/naturalCompare.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\n\nimport { GraphQLSchema } from '../type/schema.ts';\n\nimport { mapSchemaConfig, SchemaElementKind } from './mapSchemaConfig.ts';\n\n/**\n * Sort GraphQLSchema.\n *\n * This function returns a sorted copy of the given GraphQLSchema.\n * @param schema - GraphQL schema to use.\n * @returns A copy of the schema with types, fields, arguments, and values sorted lexicographically.\n * @example\n * ```ts\n * import {\n * buildSchema,\n * lexicographicSortSchema,\n * printSchema,\n * } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * zebra: String\n * apple: String\n * }\n *\n * enum Episode {\n * JEDI\n * NEW_HOPE\n * EMPIRE\n * }\n * `);\n *\n * const sortedSchema = lexicographicSortSchema(schema);\n *\n * printSchema(sortedSchema);\n * // =>\n * // enum Episode {\n * // EMPIRE\n * // JEDI\n * // NEW_HOPE\n * // }\n * //\n * // type Query {\n * // apple: String\n * // zebra: String\n * // }\n * ```\n */\nexport function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {\n return new GraphQLSchema(\n mapSchemaConfig(schema.toConfig(), () => ({\n [SchemaElementKind.OBJECT]: (config) => ({\n ...config,\n interfaces: () => sortByName(config.interfaces()),\n fields: () => sortObjMap(config.fields()),\n }),\n [SchemaElementKind.FIELD]: (config) => ({\n ...config,\n args: sortObjMap(config.args),\n }),\n [SchemaElementKind.INTERFACE]: (config) => ({\n ...config,\n interfaces: () => sortByName(config.interfaces()),\n fields: () => sortObjMap(config.fields()),\n }),\n [SchemaElementKind.UNION]: (config) => ({\n ...config,\n types: () => sortByName(config.types()),\n }),\n [SchemaElementKind.ENUM]: (config) => ({\n ...config,\n values: () => sortObjMap(config.values()),\n }),\n [SchemaElementKind.INPUT_OBJECT]: (config) => ({\n ...config,\n fields: () => sortObjMap(config.fields()),\n }),\n [SchemaElementKind.DIRECTIVE]: (config) => ({\n ...config,\n locations: sortBy(config.locations, (x) => x),\n args: sortObjMap(config.args),\n }),\n [SchemaElementKind.SCHEMA]: (config) => ({\n ...config,\n types: sortByName(config.types),\n directives: sortByName(config.directives),\n }),\n })),\n );\n}\n\nfunction sortObjMap<T, R>(map: ObjMap<T>): ObjMap<R> {\n const sortedMap = Object.create(null);\n for (const key of Object.keys(map).sort(naturalCompare)) {\n sortedMap[key] = map[key];\n }\n return sortedMap;\n}\n\nfunction sortByName<T extends { readonly name: string }>(\n array: ReadonlyArray<T>,\n): Array<T> {\n return sortBy(array, (obj) => obj.name);\n}\n\nfunction sortBy<T>(\n array: ReadonlyArray<T>,\n mapToKey: (item: T) => string,\n): Array<T> {\n return array.slice().sort((obj1, obj2) => {\n const key1 = mapToKey(obj1);\n const key2 = mapToKey(obj2);\n return naturalCompare(key1, key2);\n });\n}\n"]}
|
|
@@ -73,7 +73,11 @@ export declare function printType(type: GraphQLNamedType): string;
|
|
|
73
73
|
* @returns SDL string for the directive definition.
|
|
74
74
|
* @example
|
|
75
75
|
* ```ts
|
|
76
|
-
* import {
|
|
76
|
+
* import {
|
|
77
|
+
* DirectiveLocation,
|
|
78
|
+
* GraphQLDirective,
|
|
79
|
+
* GraphQLString,
|
|
80
|
+
* } from 'graphql/type';
|
|
77
81
|
* import { printDirective } from 'graphql/utilities';
|
|
78
82
|
*
|
|
79
83
|
* const authDirective = new GraphQLDirective({
|
|
@@ -73,7 +73,11 @@ export declare function printType(type: GraphQLNamedType): string;
|
|
|
73
73
|
* @returns SDL string for the directive definition.
|
|
74
74
|
* @example
|
|
75
75
|
* ```ts
|
|
76
|
-
* import {
|
|
76
|
+
* import {
|
|
77
|
+
* DirectiveLocation,
|
|
78
|
+
* GraphQLDirective,
|
|
79
|
+
* GraphQLString,
|
|
80
|
+
* } from 'graphql/type';
|
|
77
81
|
* import { printDirective } from 'graphql/utilities';
|
|
78
82
|
*
|
|
79
83
|
* const authDirective = new GraphQLDirective({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printSchema.js","sourceRoot":"","sources":["../../src/utilities/printSchema.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Printing */\n\nimport { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport { isPrintableAsBlockString } from '../language/blockString.ts';\nimport { Kind } from '../language/kinds.ts';\nimport { print } from '../language/printer.ts';\n\nimport type {\n GraphQLArgument,\n GraphQLEnumType,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n} from '../type/definition.ts';\nimport {\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../type/definition.ts';\nimport type { GraphQLDirective } from '../type/directives.ts';\nimport {\n DEFAULT_DEPRECATION_REASON,\n isSpecifiedDirective,\n} from '../type/directives.ts';\nimport { isIntrospectionType } from '../type/introspection.ts';\nimport { isSpecifiedScalarType } from '../type/scalars.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { getDefaultValueAST } from './getDefaultValueAST.ts';\n\n/**\n * Prints the schema.\n * @param schema - GraphQL schema to use.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * directive @upper on FIELD_DEFINITION\n *\n * type Query {\n * greeting: String @upper\n * }\n * `);\n *\n * printSchema(schema); // => ['directive @upper on FIELD_DEFINITION', '', 'type Query {', ' greeting: String', '}'].join('\\n')\n * ```\n */\nexport function printSchema(schema: GraphQLSchema): string {\n return printFilteredSchema(\n schema,\n (n) => !isSpecifiedDirective(n),\n isDefinedType,\n );\n}\n\n/**\n * Prints the introspection schema.\n * @param schema - GraphQL schema to use.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printIntrospectionSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n *\n * const printed = printIntrospectionSchema(schema);\n *\n * printed; // matches /type __Schema/\n * printed; // matches /enum __TypeKind/\n * printed; // does not match /type Query/\n * ```\n */\nexport function printIntrospectionSchema(schema: GraphQLSchema): string {\n return printFilteredSchema(schema, isSpecifiedDirective, isIntrospectionType);\n}\n\nfunction isDefinedType(type: GraphQLNamedType): boolean {\n return !isSpecifiedScalarType(type) && !isIntrospectionType(type);\n}\n\nfunction printFilteredSchema(\n schema: GraphQLSchema,\n directiveFilter: (type: GraphQLDirective) => boolean,\n typeFilter: (type: GraphQLNamedType) => boolean,\n): string {\n const directives = schema.getDirectives().filter(directiveFilter);\n const types = Object.values(schema.getTypeMap()).filter(typeFilter);\n\n return [\n printSchemaDefinition(schema),\n ...directives.map((directive) => printDirective(directive)),\n ...types.map((type) => printType(type)),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n}\n\nfunction printSchemaDefinition(schema: GraphQLSchema): Maybe<string> {\n const queryType = schema.getQueryType();\n const mutationType = schema.getMutationType();\n const subscriptionType = schema.getSubscriptionType();\n\n // Special case: When a schema has no root operation types, no valid schema\n // definition can be printed.\n if (!queryType && !mutationType && !subscriptionType) {\n return;\n }\n\n // Only print a schema definition if there is a description or if it should\n // not be omitted because of having default type names.\n if (schema.description != null || !hasDefaultRootOperationTypes(schema)) {\n return (\n printDescription(schema) +\n 'schema {\\n' +\n (queryType ? ` query: ${queryType}\\n` : '') +\n (mutationType ? ` mutation: ${mutationType}\\n` : '') +\n (subscriptionType ? ` subscription: ${subscriptionType}\\n` : '') +\n '}'\n );\n }\n}\n\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * ```graphql\n * schema {\n * query: Query\n * mutation: Mutation\n * subscription: Subscription\n * }\n * ```\n *\n * When using this naming convention, the schema description can be omitted so\n * long as these names are only used for operation types.\n *\n * Note however that if any of these default names are used elsewhere in the\n * schema but not as a root operation type, the schema definition must still\n * be printed to avoid ambiguity.\n *\n * @internal\n */\nfunction hasDefaultRootOperationTypes(schema: GraphQLSchema): boolean {\n /* eslint-disable eqeqeq */\n return (\n schema.getQueryType() == schema.getType('Query') &&\n schema.getMutationType() == schema.getType('Mutation') &&\n schema.getSubscriptionType() == schema.getType('Subscription')\n );\n}\n\n/**\n * Prints the type.\n * @param type - The GraphQL type to inspect.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printType } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type User {\n * id: ID!\n * name: String\n * }\n *\n * type Query {\n * viewer: User\n * }\n * `);\n *\n * printType(schema.getType('User')); // => ['type User {', ' id: ID!', ' name: String', '}'].join('\\n')\n * ```\n */\nexport function printType(type: GraphQLNamedType): string {\n if (isScalarType(type)) {\n return printScalar(type);\n }\n if (isObjectType(type)) {\n return printObject(type);\n }\n if (isInterfaceType(type)) {\n return printInterface(type);\n }\n if (isUnionType(type)) {\n return printUnion(type);\n }\n if (isEnumType(type)) {\n return printEnum(type);\n }\n if (isInputObjectType(type)) {\n return printInputObject(type);\n /* node:coverage ignore next 4 */\n }\n // Not reachable, all possible types have been considered.\n invariant(false, 'Unexpected type: ' + inspect(type));\n}\n\nfunction printScalar(type: GraphQLScalarType): string {\n return printDescription(type) + `scalar ${type}` + printSpecifiedByURL(type);\n}\n\nfunction printImplementedInterfaces(\n type: GraphQLObjectType | GraphQLInterfaceType,\n): string {\n const interfaces = type.getInterfaces();\n return interfaces.length\n ? ' implements ' + interfaces.map((i) => i.name).join(' & ')\n : '';\n}\n\nfunction printObject(type: GraphQLObjectType): string {\n return (\n printDescription(type) +\n `type ${type}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printInterface(type: GraphQLInterfaceType): string {\n return (\n printDescription(type) +\n `interface ${type}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printUnion(type: GraphQLUnionType): string {\n const types = type.getTypes();\n const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n return printDescription(type) + `union ${type.name}` + possibleTypes;\n}\n\nfunction printEnum(type: GraphQLEnumType): string {\n const values = type\n .getValues()\n .map(\n (value, i) =>\n printDescription(value, ' ', !i) +\n ' ' +\n value.name +\n printDeprecated(value.deprecationReason),\n );\n\n return printDescription(type) + `enum ${type}` + printBlock(values);\n}\n\nfunction printInputObject(type: GraphQLInputObjectType): string {\n const fields = Object.values(type.getFields()).map(\n (f, i) => printDescription(f, ' ', !i) + ' ' + printInputValue(f),\n );\n return (\n printDescription(type) +\n `input ${type}` +\n (type.isOneOf ? ' @oneOf' : '') +\n printBlock(fields)\n );\n}\n\nfunction printFields(type: GraphQLObjectType | GraphQLInterfaceType): string {\n const fields = Object.values(type.getFields()).map(\n (f, i) =>\n printDescription(f, ' ', !i) +\n ' ' +\n f.name +\n printArgs(f.args, ' ') +\n ': ' +\n String(f.type) +\n printDeprecated(f.deprecationReason),\n );\n return printBlock(fields);\n}\n\nfunction printBlock(items: ReadonlyArray<string>): string {\n return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(\n args: ReadonlyArray<GraphQLArgument>,\n indentation: string = '',\n): string {\n if (args.length === 0) {\n return '';\n }\n\n // If every arg does not have a description, print them on one line.\n if (args.every((arg) => arg.description == null)) {\n return '(' + args.map(printInputValue).join(', ') + ')';\n }\n\n return (\n '(\\n' +\n args\n .map(\n (arg, i) =>\n printDescription(arg, ' ' + indentation, !i) +\n ' ' +\n indentation +\n printInputValue(arg),\n )\n .join('\\n') +\n '\\n' +\n indentation +\n ')'\n );\n}\n\nfunction printInputValue(\n argOrInputField: GraphQLArgument | GraphQLInputField,\n): string {\n let argDecl = argOrInputField.name + ': ' + String(argOrInputField.type);\n const defaultValueAST = getDefaultValueAST(argOrInputField);\n if (defaultValueAST) {\n argDecl += ` = ${print(defaultValueAST)}`;\n }\n return argDecl + printDeprecated(argOrInputField.deprecationReason);\n}\n\n/**\n * Prints a directive definition in GraphQL SDL.\n * @param directive - Directive to print.\n * @returns SDL string for the directive definition.\n * @example\n * ```ts\n * import { DirectiveLocation, GraphQLDirective, GraphQLString } from 'graphql/type';\n * import { printDirective } from 'graphql/utilities';\n *\n * const authDirective = new GraphQLDirective({\n * name: 'auth',\n * description: 'Requires authorization.',\n * locations: [DirectiveLocation.FIELD_DEFINITION],\n * args: {\n * scope: { type: GraphQLString },\n * },\n * });\n *\n * printDirective(authDirective); // => '\"\"\"Requires authorization.\"\"\"\\ndirective @auth(scope: String) on FIELD_DEFINITION'\n * ```\n */\nexport function printDirective(directive: GraphQLDirective): string {\n return (\n printDescription(directive) +\n `directive ${directive}` +\n printArgs(directive.args) +\n printDeprecated(directive.deprecationReason) +\n (directive.isRepeatable ? ' repeatable' : '') +\n ' on ' +\n directive.locations.join(' | ')\n );\n}\n\nfunction printDeprecated(reason: Maybe<string>): string {\n if (reason == null) {\n return '';\n }\n if (reason !== DEFAULT_DEPRECATION_REASON) {\n const astValue = print({ kind: Kind.STRING, value: reason });\n return ` @deprecated(reason: ${astValue})`;\n }\n return ' @deprecated';\n}\n\nfunction printSpecifiedByURL(scalar: GraphQLScalarType): string {\n if (scalar.specifiedByURL == null) {\n return '';\n }\n const astValue = print({\n kind: Kind.STRING,\n value: scalar.specifiedByURL,\n });\n return ` @specifiedBy(url: ${astValue})`;\n}\n\nfunction printDescription(\n def: { readonly description: Maybe<string> },\n indentation: string = '',\n firstInBlock: boolean = true,\n): string {\n const { description } = def;\n if (description == null) {\n return '';\n }\n\n const blockString = print({\n kind: Kind.STRING,\n value: description,\n block: isPrintableAsBlockString(description),\n });\n\n const prefix =\n indentation && !firstInBlock ? '\\n' + indentation : indentation;\n\n return prefix + blockString.replaceAll('\\n', '\\n' + indentation) + '\\n';\n}\n"]}
|
|
1
|
+
{"version":3,"file":"printSchema.js","sourceRoot":"","sources":["../../src/utilities/printSchema.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Printing */\n\nimport { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport { isPrintableAsBlockString } from '../language/blockString.ts';\nimport { Kind } from '../language/kinds.ts';\nimport { print } from '../language/printer.ts';\n\nimport type {\n GraphQLArgument,\n GraphQLEnumType,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n} from '../type/definition.ts';\nimport {\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../type/definition.ts';\nimport type { GraphQLDirective } from '../type/directives.ts';\nimport {\n DEFAULT_DEPRECATION_REASON,\n isSpecifiedDirective,\n} from '../type/directives.ts';\nimport { isIntrospectionType } from '../type/introspection.ts';\nimport { isSpecifiedScalarType } from '../type/scalars.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { getDefaultValueAST } from './getDefaultValueAST.ts';\n\n/**\n * Prints the schema.\n * @param schema - GraphQL schema to use.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * directive @upper on FIELD_DEFINITION\n *\n * type Query {\n * greeting: String @upper\n * }\n * `);\n *\n * printSchema(schema); // => ['directive @upper on FIELD_DEFINITION', '', 'type Query {', ' greeting: String', '}'].join('\\n')\n * ```\n */\nexport function printSchema(schema: GraphQLSchema): string {\n return printFilteredSchema(\n schema,\n (n) => !isSpecifiedDirective(n),\n isDefinedType,\n );\n}\n\n/**\n * Prints the introspection schema.\n * @param schema - GraphQL schema to use.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printIntrospectionSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n *\n * const printed = printIntrospectionSchema(schema);\n *\n * printed; // matches /type __Schema/\n * printed; // matches /enum __TypeKind/\n * printed; // does not match /type Query/\n * ```\n */\nexport function printIntrospectionSchema(schema: GraphQLSchema): string {\n return printFilteredSchema(schema, isSpecifiedDirective, isIntrospectionType);\n}\n\nfunction isDefinedType(type: GraphQLNamedType): boolean {\n return !isSpecifiedScalarType(type) && !isIntrospectionType(type);\n}\n\nfunction printFilteredSchema(\n schema: GraphQLSchema,\n directiveFilter: (type: GraphQLDirective) => boolean,\n typeFilter: (type: GraphQLNamedType) => boolean,\n): string {\n const directives = schema.getDirectives().filter(directiveFilter);\n const types = Object.values(schema.getTypeMap()).filter(typeFilter);\n\n return [\n printSchemaDefinition(schema),\n ...directives.map((directive) => printDirective(directive)),\n ...types.map((type) => printType(type)),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n}\n\nfunction printSchemaDefinition(schema: GraphQLSchema): Maybe<string> {\n const queryType = schema.getQueryType();\n const mutationType = schema.getMutationType();\n const subscriptionType = schema.getSubscriptionType();\n\n // Special case: When a schema has no root operation types, no valid schema\n // definition can be printed.\n if (!queryType && !mutationType && !subscriptionType) {\n return;\n }\n\n // Only print a schema definition if there is a description or if it should\n // not be omitted because of having default type names.\n if (schema.description != null || !hasDefaultRootOperationTypes(schema)) {\n return (\n printDescription(schema) +\n 'schema {\\n' +\n (queryType ? ` query: ${queryType}\\n` : '') +\n (mutationType ? ` mutation: ${mutationType}\\n` : '') +\n (subscriptionType ? ` subscription: ${subscriptionType}\\n` : '') +\n '}'\n );\n }\n}\n\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * ```graphql\n * schema {\n * query: Query\n * mutation: Mutation\n * subscription: Subscription\n * }\n * ```\n *\n * When using this naming convention, the schema description can be omitted so\n * long as these names are only used for operation types.\n *\n * Note however that if any of these default names are used elsewhere in the\n * schema but not as a root operation type, the schema definition must still\n * be printed to avoid ambiguity.\n *\n * @internal\n */\nfunction hasDefaultRootOperationTypes(schema: GraphQLSchema): boolean {\n /* eslint-disable eqeqeq */\n return (\n schema.getQueryType() == schema.getType('Query') &&\n schema.getMutationType() == schema.getType('Mutation') &&\n schema.getSubscriptionType() == schema.getType('Subscription')\n );\n}\n\n/**\n * Prints the type.\n * @param type - The GraphQL type to inspect.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printType } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type User {\n * id: ID!\n * name: String\n * }\n *\n * type Query {\n * viewer: User\n * }\n * `);\n *\n * printType(schema.getType('User')); // => ['type User {', ' id: ID!', ' name: String', '}'].join('\\n')\n * ```\n */\nexport function printType(type: GraphQLNamedType): string {\n if (isScalarType(type)) {\n return printScalar(type);\n }\n if (isObjectType(type)) {\n return printObject(type);\n }\n if (isInterfaceType(type)) {\n return printInterface(type);\n }\n if (isUnionType(type)) {\n return printUnion(type);\n }\n if (isEnumType(type)) {\n return printEnum(type);\n }\n if (isInputObjectType(type)) {\n return printInputObject(type);\n /* node:coverage ignore next 4 */\n }\n // Not reachable, all possible types have been considered.\n invariant(false, 'Unexpected type: ' + inspect(type));\n}\n\nfunction printScalar(type: GraphQLScalarType): string {\n return printDescription(type) + `scalar ${type}` + printSpecifiedByURL(type);\n}\n\nfunction printImplementedInterfaces(\n type: GraphQLObjectType | GraphQLInterfaceType,\n): string {\n const interfaces = type.getInterfaces();\n return interfaces.length\n ? ' implements ' + interfaces.map((i) => i.name).join(' & ')\n : '';\n}\n\nfunction printObject(type: GraphQLObjectType): string {\n return (\n printDescription(type) +\n `type ${type}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printInterface(type: GraphQLInterfaceType): string {\n return (\n printDescription(type) +\n `interface ${type}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printUnion(type: GraphQLUnionType): string {\n const types = type.getTypes();\n const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n return printDescription(type) + `union ${type.name}` + possibleTypes;\n}\n\nfunction printEnum(type: GraphQLEnumType): string {\n const values = type\n .getValues()\n .map(\n (value, i) =>\n printDescription(value, ' ', !i) +\n ' ' +\n value.name +\n printDeprecated(value.deprecationReason),\n );\n\n return printDescription(type) + `enum ${type}` + printBlock(values);\n}\n\nfunction printInputObject(type: GraphQLInputObjectType): string {\n const fields = Object.values(type.getFields()).map(\n (f, i) => printDescription(f, ' ', !i) + ' ' + printInputValue(f),\n );\n return (\n printDescription(type) +\n `input ${type}` +\n (type.isOneOf ? ' @oneOf' : '') +\n printBlock(fields)\n );\n}\n\nfunction printFields(type: GraphQLObjectType | GraphQLInterfaceType): string {\n const fields = Object.values(type.getFields()).map(\n (f, i) =>\n printDescription(f, ' ', !i) +\n ' ' +\n f.name +\n printArgs(f.args, ' ') +\n ': ' +\n String(f.type) +\n printDeprecated(f.deprecationReason),\n );\n return printBlock(fields);\n}\n\nfunction printBlock(items: ReadonlyArray<string>): string {\n return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(\n args: ReadonlyArray<GraphQLArgument>,\n indentation: string = '',\n): string {\n if (args.length === 0) {\n return '';\n }\n\n // If every arg does not have a description, print them on one line.\n if (args.every((arg) => arg.description == null)) {\n return '(' + args.map(printInputValue).join(', ') + ')';\n }\n\n return (\n '(\\n' +\n args\n .map(\n (arg, i) =>\n printDescription(arg, ' ' + indentation, !i) +\n ' ' +\n indentation +\n printInputValue(arg),\n )\n .join('\\n') +\n '\\n' +\n indentation +\n ')'\n );\n}\n\nfunction printInputValue(\n argOrInputField: GraphQLArgument | GraphQLInputField,\n): string {\n let argDecl = argOrInputField.name + ': ' + String(argOrInputField.type);\n const defaultValueAST = getDefaultValueAST(argOrInputField);\n if (defaultValueAST) {\n argDecl += ` = ${print(defaultValueAST)}`;\n }\n return argDecl + printDeprecated(argOrInputField.deprecationReason);\n}\n\n/**\n * Prints a directive definition in GraphQL SDL.\n * @param directive - Directive to print.\n * @returns SDL string for the directive definition.\n * @example\n * ```ts\n * import {\n * DirectiveLocation,\n * GraphQLDirective,\n * GraphQLString,\n * } from 'graphql/type';\n * import { printDirective } from 'graphql/utilities';\n *\n * const authDirective = new GraphQLDirective({\n * name: 'auth',\n * description: 'Requires authorization.',\n * locations: [DirectiveLocation.FIELD_DEFINITION],\n * args: {\n * scope: { type: GraphQLString },\n * },\n * });\n *\n * printDirective(authDirective); // => '\"\"\"Requires authorization.\"\"\"\\ndirective @auth(scope: String) on FIELD_DEFINITION'\n * ```\n */\nexport function printDirective(directive: GraphQLDirective): string {\n return (\n printDescription(directive) +\n `directive ${directive}` +\n printArgs(directive.args) +\n printDeprecated(directive.deprecationReason) +\n (directive.isRepeatable ? ' repeatable' : '') +\n ' on ' +\n directive.locations.join(' | ')\n );\n}\n\nfunction printDeprecated(reason: Maybe<string>): string {\n if (reason == null) {\n return '';\n }\n if (reason !== DEFAULT_DEPRECATION_REASON) {\n const astValue = print({ kind: Kind.STRING, value: reason });\n return ` @deprecated(reason: ${astValue})`;\n }\n return ' @deprecated';\n}\n\nfunction printSpecifiedByURL(scalar: GraphQLScalarType): string {\n if (scalar.specifiedByURL == null) {\n return '';\n }\n const astValue = print({\n kind: Kind.STRING,\n value: scalar.specifiedByURL,\n });\n return ` @specifiedBy(url: ${astValue})`;\n}\n\nfunction printDescription(\n def: { readonly description: Maybe<string> },\n indentation: string = '',\n firstInBlock: boolean = true,\n): string {\n const { description } = def;\n if (description == null) {\n return '';\n }\n\n const blockString = print({\n kind: Kind.STRING,\n value: description,\n block: isPrintableAsBlockString(description),\n });\n\n const prefix =\n indentation && !firstInBlock ? '\\n' + indentation : indentation;\n\n return prefix + blockString.replaceAll('\\n', '\\n' + indentation) + '\\n';\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printSchema.js","sourceRoot":"","sources":["../../src/utilities/printSchema.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Printing */\n\nimport { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport { isPrintableAsBlockString } from '../language/blockString.ts';\nimport { Kind } from '../language/kinds.ts';\nimport { print } from '../language/printer.ts';\n\nimport type {\n GraphQLArgument,\n GraphQLEnumType,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n} from '../type/definition.ts';\nimport {\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../type/definition.ts';\nimport type { GraphQLDirective } from '../type/directives.ts';\nimport {\n DEFAULT_DEPRECATION_REASON,\n isSpecifiedDirective,\n} from '../type/directives.ts';\nimport { isIntrospectionType } from '../type/introspection.ts';\nimport { isSpecifiedScalarType } from '../type/scalars.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { getDefaultValueAST } from './getDefaultValueAST.ts';\n\n/**\n * Prints the schema.\n * @param schema - GraphQL schema to use.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * directive @upper on FIELD_DEFINITION\n *\n * type Query {\n * greeting: String @upper\n * }\n * `);\n *\n * printSchema(schema); // => ['directive @upper on FIELD_DEFINITION', '', 'type Query {', ' greeting: String', '}'].join('\\n')\n * ```\n */\nexport function printSchema(schema: GraphQLSchema): string {\n return printFilteredSchema(\n schema,\n (n) => !isSpecifiedDirective(n),\n isDefinedType,\n );\n}\n\n/**\n * Prints the introspection schema.\n * @param schema - GraphQL schema to use.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printIntrospectionSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n *\n * const printed = printIntrospectionSchema(schema);\n *\n * printed; // matches /type __Schema/\n * printed; // matches /enum __TypeKind/\n * printed; // does not match /type Query/\n * ```\n */\nexport function printIntrospectionSchema(schema: GraphQLSchema): string {\n return printFilteredSchema(schema, isSpecifiedDirective, isIntrospectionType);\n}\n\nfunction isDefinedType(type: GraphQLNamedType): boolean {\n return !isSpecifiedScalarType(type) && !isIntrospectionType(type);\n}\n\nfunction printFilteredSchema(\n schema: GraphQLSchema,\n directiveFilter: (type: GraphQLDirective) => boolean,\n typeFilter: (type: GraphQLNamedType) => boolean,\n): string {\n const directives = schema.getDirectives().filter(directiveFilter);\n const types = Object.values(schema.getTypeMap()).filter(typeFilter);\n\n return [\n printSchemaDefinition(schema),\n ...directives.map((directive) => printDirective(directive)),\n ...types.map((type) => printType(type)),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n}\n\nfunction printSchemaDefinition(schema: GraphQLSchema): Maybe<string> {\n const queryType = schema.getQueryType();\n const mutationType = schema.getMutationType();\n const subscriptionType = schema.getSubscriptionType();\n\n // Special case: When a schema has no root operation types, no valid schema\n // definition can be printed.\n if (!queryType && !mutationType && !subscriptionType) {\n return;\n }\n\n // Only print a schema definition if there is a description or if it should\n // not be omitted because of having default type names.\n if (schema.description != null || !hasDefaultRootOperationTypes(schema)) {\n return (\n printDescription(schema) +\n 'schema {\\n' +\n (queryType ? ` query: ${queryType}\\n` : '') +\n (mutationType ? ` mutation: ${mutationType}\\n` : '') +\n (subscriptionType ? ` subscription: ${subscriptionType}\\n` : '') +\n '}'\n );\n }\n}\n\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * ```graphql\n * schema {\n * query: Query\n * mutation: Mutation\n * subscription: Subscription\n * }\n * ```\n *\n * When using this naming convention, the schema description can be omitted so\n * long as these names are only used for operation types.\n *\n * Note however that if any of these default names are used elsewhere in the\n * schema but not as a root operation type, the schema definition must still\n * be printed to avoid ambiguity.\n *\n * @internal\n */\nfunction hasDefaultRootOperationTypes(schema: GraphQLSchema): boolean {\n /* eslint-disable eqeqeq */\n return (\n schema.getQueryType() == schema.getType('Query') &&\n schema.getMutationType() == schema.getType('Mutation') &&\n schema.getSubscriptionType() == schema.getType('Subscription')\n );\n}\n\n/**\n * Prints the type.\n * @param type - The GraphQL type to inspect.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printType } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type User {\n * id: ID!\n * name: String\n * }\n *\n * type Query {\n * viewer: User\n * }\n * `);\n *\n * printType(schema.getType('User')); // => ['type User {', ' id: ID!', ' name: String', '}'].join('\\n')\n * ```\n */\nexport function printType(type: GraphQLNamedType): string {\n if (isScalarType(type)) {\n return printScalar(type);\n }\n if (isObjectType(type)) {\n return printObject(type);\n }\n if (isInterfaceType(type)) {\n return printInterface(type);\n }\n if (isUnionType(type)) {\n return printUnion(type);\n }\n if (isEnumType(type)) {\n return printEnum(type);\n }\n if (isInputObjectType(type)) {\n return printInputObject(type);\n /* node:coverage ignore next 4 */\n }\n // Not reachable, all possible types have been considered.\n invariant(false, 'Unexpected type: ' + inspect(type));\n}\n\nfunction printScalar(type: GraphQLScalarType): string {\n return printDescription(type) + `scalar ${type}` + printSpecifiedByURL(type);\n}\n\nfunction printImplementedInterfaces(\n type: GraphQLObjectType | GraphQLInterfaceType,\n): string {\n const interfaces = type.getInterfaces();\n return interfaces.length\n ? ' implements ' + interfaces.map((i) => i.name).join(' & ')\n : '';\n}\n\nfunction printObject(type: GraphQLObjectType): string {\n return (\n printDescription(type) +\n `type ${type}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printInterface(type: GraphQLInterfaceType): string {\n return (\n printDescription(type) +\n `interface ${type}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printUnion(type: GraphQLUnionType): string {\n const types = type.getTypes();\n const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n return printDescription(type) + `union ${type.name}` + possibleTypes;\n}\n\nfunction printEnum(type: GraphQLEnumType): string {\n const values = type\n .getValues()\n .map(\n (value, i) =>\n printDescription(value, ' ', !i) +\n ' ' +\n value.name +\n printDeprecated(value.deprecationReason),\n );\n\n return printDescription(type) + `enum ${type}` + printBlock(values);\n}\n\nfunction printInputObject(type: GraphQLInputObjectType): string {\n const fields = Object.values(type.getFields()).map(\n (f, i) => printDescription(f, ' ', !i) + ' ' + printInputValue(f),\n );\n return (\n printDescription(type) +\n `input ${type}` +\n (type.isOneOf ? ' @oneOf' : '') +\n printBlock(fields)\n );\n}\n\nfunction printFields(type: GraphQLObjectType | GraphQLInterfaceType): string {\n const fields = Object.values(type.getFields()).map(\n (f, i) =>\n printDescription(f, ' ', !i) +\n ' ' +\n f.name +\n printArgs(f.args, ' ') +\n ': ' +\n String(f.type) +\n printDeprecated(f.deprecationReason),\n );\n return printBlock(fields);\n}\n\nfunction printBlock(items: ReadonlyArray<string>): string {\n return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(\n args: ReadonlyArray<GraphQLArgument>,\n indentation: string = '',\n): string {\n if (args.length === 0) {\n return '';\n }\n\n // If every arg does not have a description, print them on one line.\n if (args.every((arg) => arg.description == null)) {\n return '(' + args.map(printInputValue).join(', ') + ')';\n }\n\n return (\n '(\\n' +\n args\n .map(\n (arg, i) =>\n printDescription(arg, ' ' + indentation, !i) +\n ' ' +\n indentation +\n printInputValue(arg),\n )\n .join('\\n') +\n '\\n' +\n indentation +\n ')'\n );\n}\n\nfunction printInputValue(\n argOrInputField: GraphQLArgument | GraphQLInputField,\n): string {\n let argDecl = argOrInputField.name + ': ' + String(argOrInputField.type);\n const defaultValueAST = getDefaultValueAST(argOrInputField);\n if (defaultValueAST) {\n argDecl += ` = ${print(defaultValueAST)}`;\n }\n return argDecl + printDeprecated(argOrInputField.deprecationReason);\n}\n\n/**\n * Prints a directive definition in GraphQL SDL.\n * @param directive - Directive to print.\n * @returns SDL string for the directive definition.\n * @example\n * ```ts\n * import { DirectiveLocation, GraphQLDirective, GraphQLString } from 'graphql/type';\n * import { printDirective } from 'graphql/utilities';\n *\n * const authDirective = new GraphQLDirective({\n * name: 'auth',\n * description: 'Requires authorization.',\n * locations: [DirectiveLocation.FIELD_DEFINITION],\n * args: {\n * scope: { type: GraphQLString },\n * },\n * });\n *\n * printDirective(authDirective); // => '\"\"\"Requires authorization.\"\"\"\\ndirective @auth(scope: String) on FIELD_DEFINITION'\n * ```\n */\nexport function printDirective(directive: GraphQLDirective): string {\n return (\n printDescription(directive) +\n `directive ${directive}` +\n printArgs(directive.args) +\n printDeprecated(directive.deprecationReason) +\n (directive.isRepeatable ? ' repeatable' : '') +\n ' on ' +\n directive.locations.join(' | ')\n );\n}\n\nfunction printDeprecated(reason: Maybe<string>): string {\n if (reason == null) {\n return '';\n }\n if (reason !== DEFAULT_DEPRECATION_REASON) {\n const astValue = print({ kind: Kind.STRING, value: reason });\n return ` @deprecated(reason: ${astValue})`;\n }\n return ' @deprecated';\n}\n\nfunction printSpecifiedByURL(scalar: GraphQLScalarType): string {\n if (scalar.specifiedByURL == null) {\n return '';\n }\n const astValue = print({\n kind: Kind.STRING,\n value: scalar.specifiedByURL,\n });\n return ` @specifiedBy(url: ${astValue})`;\n}\n\nfunction printDescription(\n def: { readonly description: Maybe<string> },\n indentation: string = '',\n firstInBlock: boolean = true,\n): string {\n const { description } = def;\n if (description == null) {\n return '';\n }\n\n const blockString = print({\n kind: Kind.STRING,\n value: description,\n block: isPrintableAsBlockString(description),\n });\n\n const prefix =\n indentation && !firstInBlock ? '\\n' + indentation : indentation;\n\n return prefix + blockString.replaceAll('\\n', '\\n' + indentation) + '\\n';\n}\n"]}
|
|
1
|
+
{"version":3,"file":"printSchema.js","sourceRoot":"","sources":["../../src/utilities/printSchema.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Printing */\n\nimport { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport { isPrintableAsBlockString } from '../language/blockString.ts';\nimport { Kind } from '../language/kinds.ts';\nimport { print } from '../language/printer.ts';\n\nimport type {\n GraphQLArgument,\n GraphQLEnumType,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n} from '../type/definition.ts';\nimport {\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../type/definition.ts';\nimport type { GraphQLDirective } from '../type/directives.ts';\nimport {\n DEFAULT_DEPRECATION_REASON,\n isSpecifiedDirective,\n} from '../type/directives.ts';\nimport { isIntrospectionType } from '../type/introspection.ts';\nimport { isSpecifiedScalarType } from '../type/scalars.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { getDefaultValueAST } from './getDefaultValueAST.ts';\n\n/**\n * Prints the schema.\n * @param schema - GraphQL schema to use.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * directive @upper on FIELD_DEFINITION\n *\n * type Query {\n * greeting: String @upper\n * }\n * `);\n *\n * printSchema(schema); // => ['directive @upper on FIELD_DEFINITION', '', 'type Query {', ' greeting: String', '}'].join('\\n')\n * ```\n */\nexport function printSchema(schema: GraphQLSchema): string {\n return printFilteredSchema(\n schema,\n (n) => !isSpecifiedDirective(n),\n isDefinedType,\n );\n}\n\n/**\n * Prints the introspection schema.\n * @param schema - GraphQL schema to use.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printIntrospectionSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n *\n * const printed = printIntrospectionSchema(schema);\n *\n * printed; // matches /type __Schema/\n * printed; // matches /enum __TypeKind/\n * printed; // does not match /type Query/\n * ```\n */\nexport function printIntrospectionSchema(schema: GraphQLSchema): string {\n return printFilteredSchema(schema, isSpecifiedDirective, isIntrospectionType);\n}\n\nfunction isDefinedType(type: GraphQLNamedType): boolean {\n return !isSpecifiedScalarType(type) && !isIntrospectionType(type);\n}\n\nfunction printFilteredSchema(\n schema: GraphQLSchema,\n directiveFilter: (type: GraphQLDirective) => boolean,\n typeFilter: (type: GraphQLNamedType) => boolean,\n): string {\n const directives = schema.getDirectives().filter(directiveFilter);\n const types = Object.values(schema.getTypeMap()).filter(typeFilter);\n\n return [\n printSchemaDefinition(schema),\n ...directives.map((directive) => printDirective(directive)),\n ...types.map((type) => printType(type)),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n}\n\nfunction printSchemaDefinition(schema: GraphQLSchema): Maybe<string> {\n const queryType = schema.getQueryType();\n const mutationType = schema.getMutationType();\n const subscriptionType = schema.getSubscriptionType();\n\n // Special case: When a schema has no root operation types, no valid schema\n // definition can be printed.\n if (!queryType && !mutationType && !subscriptionType) {\n return;\n }\n\n // Only print a schema definition if there is a description or if it should\n // not be omitted because of having default type names.\n if (schema.description != null || !hasDefaultRootOperationTypes(schema)) {\n return (\n printDescription(schema) +\n 'schema {\\n' +\n (queryType ? ` query: ${queryType}\\n` : '') +\n (mutationType ? ` mutation: ${mutationType}\\n` : '') +\n (subscriptionType ? ` subscription: ${subscriptionType}\\n` : '') +\n '}'\n );\n }\n}\n\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * ```graphql\n * schema {\n * query: Query\n * mutation: Mutation\n * subscription: Subscription\n * }\n * ```\n *\n * When using this naming convention, the schema description can be omitted so\n * long as these names are only used for operation types.\n *\n * Note however that if any of these default names are used elsewhere in the\n * schema but not as a root operation type, the schema definition must still\n * be printed to avoid ambiguity.\n *\n * @internal\n */\nfunction hasDefaultRootOperationTypes(schema: GraphQLSchema): boolean {\n /* eslint-disable eqeqeq */\n return (\n schema.getQueryType() == schema.getType('Query') &&\n schema.getMutationType() == schema.getType('Mutation') &&\n schema.getSubscriptionType() == schema.getType('Subscription')\n );\n}\n\n/**\n * Prints the type.\n * @param type - The GraphQL type to inspect.\n * @returns The printed string representation.\n * @example\n * ```ts\n * import { buildSchema, printType } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type User {\n * id: ID!\n * name: String\n * }\n *\n * type Query {\n * viewer: User\n * }\n * `);\n *\n * printType(schema.getType('User')); // => ['type User {', ' id: ID!', ' name: String', '}'].join('\\n')\n * ```\n */\nexport function printType(type: GraphQLNamedType): string {\n if (isScalarType(type)) {\n return printScalar(type);\n }\n if (isObjectType(type)) {\n return printObject(type);\n }\n if (isInterfaceType(type)) {\n return printInterface(type);\n }\n if (isUnionType(type)) {\n return printUnion(type);\n }\n if (isEnumType(type)) {\n return printEnum(type);\n }\n if (isInputObjectType(type)) {\n return printInputObject(type);\n /* node:coverage ignore next 4 */\n }\n // Not reachable, all possible types have been considered.\n invariant(false, 'Unexpected type: ' + inspect(type));\n}\n\nfunction printScalar(type: GraphQLScalarType): string {\n return printDescription(type) + `scalar ${type}` + printSpecifiedByURL(type);\n}\n\nfunction printImplementedInterfaces(\n type: GraphQLObjectType | GraphQLInterfaceType,\n): string {\n const interfaces = type.getInterfaces();\n return interfaces.length\n ? ' implements ' + interfaces.map((i) => i.name).join(' & ')\n : '';\n}\n\nfunction printObject(type: GraphQLObjectType): string {\n return (\n printDescription(type) +\n `type ${type}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printInterface(type: GraphQLInterfaceType): string {\n return (\n printDescription(type) +\n `interface ${type}` +\n printImplementedInterfaces(type) +\n printFields(type)\n );\n}\n\nfunction printUnion(type: GraphQLUnionType): string {\n const types = type.getTypes();\n const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n return printDescription(type) + `union ${type.name}` + possibleTypes;\n}\n\nfunction printEnum(type: GraphQLEnumType): string {\n const values = type\n .getValues()\n .map(\n (value, i) =>\n printDescription(value, ' ', !i) +\n ' ' +\n value.name +\n printDeprecated(value.deprecationReason),\n );\n\n return printDescription(type) + `enum ${type}` + printBlock(values);\n}\n\nfunction printInputObject(type: GraphQLInputObjectType): string {\n const fields = Object.values(type.getFields()).map(\n (f, i) => printDescription(f, ' ', !i) + ' ' + printInputValue(f),\n );\n return (\n printDescription(type) +\n `input ${type}` +\n (type.isOneOf ? ' @oneOf' : '') +\n printBlock(fields)\n );\n}\n\nfunction printFields(type: GraphQLObjectType | GraphQLInterfaceType): string {\n const fields = Object.values(type.getFields()).map(\n (f, i) =>\n printDescription(f, ' ', !i) +\n ' ' +\n f.name +\n printArgs(f.args, ' ') +\n ': ' +\n String(f.type) +\n printDeprecated(f.deprecationReason),\n );\n return printBlock(fields);\n}\n\nfunction printBlock(items: ReadonlyArray<string>): string {\n return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(\n args: ReadonlyArray<GraphQLArgument>,\n indentation: string = '',\n): string {\n if (args.length === 0) {\n return '';\n }\n\n // If every arg does not have a description, print them on one line.\n if (args.every((arg) => arg.description == null)) {\n return '(' + args.map(printInputValue).join(', ') + ')';\n }\n\n return (\n '(\\n' +\n args\n .map(\n (arg, i) =>\n printDescription(arg, ' ' + indentation, !i) +\n ' ' +\n indentation +\n printInputValue(arg),\n )\n .join('\\n') +\n '\\n' +\n indentation +\n ')'\n );\n}\n\nfunction printInputValue(\n argOrInputField: GraphQLArgument | GraphQLInputField,\n): string {\n let argDecl = argOrInputField.name + ': ' + String(argOrInputField.type);\n const defaultValueAST = getDefaultValueAST(argOrInputField);\n if (defaultValueAST) {\n argDecl += ` = ${print(defaultValueAST)}`;\n }\n return argDecl + printDeprecated(argOrInputField.deprecationReason);\n}\n\n/**\n * Prints a directive definition in GraphQL SDL.\n * @param directive - Directive to print.\n * @returns SDL string for the directive definition.\n * @example\n * ```ts\n * import {\n * DirectiveLocation,\n * GraphQLDirective,\n * GraphQLString,\n * } from 'graphql/type';\n * import { printDirective } from 'graphql/utilities';\n *\n * const authDirective = new GraphQLDirective({\n * name: 'auth',\n * description: 'Requires authorization.',\n * locations: [DirectiveLocation.FIELD_DEFINITION],\n * args: {\n * scope: { type: GraphQLString },\n * },\n * });\n *\n * printDirective(authDirective); // => '\"\"\"Requires authorization.\"\"\"\\ndirective @auth(scope: String) on FIELD_DEFINITION'\n * ```\n */\nexport function printDirective(directive: GraphQLDirective): string {\n return (\n printDescription(directive) +\n `directive ${directive}` +\n printArgs(directive.args) +\n printDeprecated(directive.deprecationReason) +\n (directive.isRepeatable ? ' repeatable' : '') +\n ' on ' +\n directive.locations.join(' | ')\n );\n}\n\nfunction printDeprecated(reason: Maybe<string>): string {\n if (reason == null) {\n return '';\n }\n if (reason !== DEFAULT_DEPRECATION_REASON) {\n const astValue = print({ kind: Kind.STRING, value: reason });\n return ` @deprecated(reason: ${astValue})`;\n }\n return ' @deprecated';\n}\n\nfunction printSpecifiedByURL(scalar: GraphQLScalarType): string {\n if (scalar.specifiedByURL == null) {\n return '';\n }\n const astValue = print({\n kind: Kind.STRING,\n value: scalar.specifiedByURL,\n });\n return ` @specifiedBy(url: ${astValue})`;\n}\n\nfunction printDescription(\n def: { readonly description: Maybe<string> },\n indentation: string = '',\n firstInBlock: boolean = true,\n): string {\n const { description } = def;\n if (description == null) {\n return '';\n }\n\n const blockString = print({\n kind: Kind.STRING,\n value: description,\n block: isPrintableAsBlockString(description),\n });\n\n const prefix =\n indentation && !firstInBlock ? '\\n' + indentation : indentation;\n\n return prefix + blockString.replaceAll('\\n', '\\n' + indentation) + '\\n';\n}\n"]}
|