graphql 17.0.0-beta.0 → 17.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__dev__/execution/buildResolveInfo.d.mts +1 -0
- package/__dev__/execution/buildResolveInfo.d.ts +1 -0
- package/__dev__/execution/buildResolveInfo.js +3 -0
- package/__dev__/execution/buildResolveInfo.mjs +3 -0
- package/devMode.js +2 -2
- package/devMode.js.map +1 -1
- package/devMode.mjs.map +1 -1
- package/error/GraphQLError.d.mts +4 -4
- package/error/GraphQLError.d.ts +4 -4
- package/error/GraphQLError.js +10 -11
- package/error/GraphQLError.js.map +1 -1
- package/error/GraphQLError.mjs +2 -3
- package/error/GraphQLError.mjs.map +1 -1
- package/error/ensureGraphQLError.d.mts +1 -1
- package/error/ensureGraphQLError.d.ts +1 -1
- package/error/ensureGraphQLError.js +5 -5
- package/error/ensureGraphQLError.js.map +1 -1
- package/error/ensureGraphQLError.mjs.map +1 -1
- package/error/index.d.mts +4 -4
- package/error/index.d.ts +4 -4
- package/error/index.js +6 -6
- package/error/index.js.map +1 -1
- package/error/index.mjs.map +1 -1
- package/error/locatedError.d.mts +3 -3
- package/error/locatedError.d.ts +3 -3
- package/error/locatedError.js +4 -4
- package/error/locatedError.js.map +1 -1
- package/error/locatedError.mjs.map +1 -1
- package/error/syntaxError.d.mts +2 -2
- package/error/syntaxError.d.ts +2 -2
- package/error/syntaxError.js +2 -2
- package/error/syntaxError.js.map +1 -1
- package/error/syntaxError.mjs.map +1 -1
- package/execution/AbortedGraphQLExecutionError.d.mts +1 -1
- package/execution/AbortedGraphQLExecutionError.d.ts +1 -1
- package/execution/AbortedGraphQLExecutionError.js.map +1 -1
- package/execution/AbortedGraphQLExecutionError.mjs.map +1 -1
- package/execution/AsyncWorkTracker.js +2 -2
- package/execution/AsyncWorkTracker.js.map +1 -1
- package/execution/AsyncWorkTracker.mjs.map +1 -1
- package/execution/Executor.d.mts +16 -17
- package/execution/Executor.d.ts +16 -17
- package/execution/Executor.js +83 -85
- package/execution/Executor.js.map +1 -1
- package/execution/Executor.mjs +3 -5
- package/execution/Executor.mjs.map +1 -1
- package/execution/ExecutorThrowingOnIncremental.d.mts +6 -6
- package/execution/ExecutorThrowingOnIncremental.d.ts +6 -6
- package/execution/ExecutorThrowingOnIncremental.js +11 -11
- package/execution/ExecutorThrowingOnIncremental.js.map +1 -1
- package/execution/ExecutorThrowingOnIncremental.mjs.map +1 -1
- package/execution/buildResolveInfo.d.mts +14 -0
- package/execution/buildResolveInfo.d.ts +14 -0
- package/execution/buildResolveInfo.js +24 -0
- package/execution/buildResolveInfo.js.map +1 -0
- package/execution/buildResolveInfo.mjs +21 -0
- package/execution/buildResolveInfo.mjs.map +1 -0
- package/execution/cancellablePromise.js +2 -2
- package/execution/cancellablePromise.js.map +1 -1
- package/execution/cancellablePromise.mjs.map +1 -1
- package/execution/collectFields.d.mts +6 -6
- package/execution/collectFields.d.ts +6 -6
- package/execution/collectFields.js +19 -19
- package/execution/collectFields.js.map +1 -1
- package/execution/collectFields.mjs.map +1 -1
- package/execution/collectIteratorPromises.js +2 -2
- package/execution/collectIteratorPromises.js.map +1 -1
- package/execution/collectIteratorPromises.mjs.map +1 -1
- package/execution/createSharedExecutionContext.d.mts +2 -2
- package/execution/createSharedExecutionContext.d.ts +2 -2
- package/execution/createSharedExecutionContext.js +2 -2
- package/execution/createSharedExecutionContext.js.map +1 -1
- package/execution/createSharedExecutionContext.mjs.map +1 -1
- package/execution/execute.d.mts +14 -14
- package/execution/execute.d.ts +14 -14
- package/execution/execute.js +78 -98
- package/execution/execute.js.map +1 -1
- package/execution/execute.mjs +17 -37
- package/execution/execute.mjs.map +1 -1
- package/execution/getStreamUsage.d.mts +2 -2
- package/execution/getStreamUsage.d.ts +2 -2
- package/execution/getStreamUsage.js +9 -9
- package/execution/getStreamUsage.js.map +1 -1
- package/execution/getStreamUsage.mjs.map +1 -1
- package/execution/getVariableSignature.d.mts +3 -3
- package/execution/getVariableSignature.d.ts +3 -3
- package/execution/getVariableSignature.js +8 -8
- package/execution/getVariableSignature.js.map +1 -1
- package/execution/getVariableSignature.mjs.map +1 -1
- package/execution/hooks.d.mts +2 -2
- package/execution/hooks.d.ts +2 -2
- package/execution/hooks.js.map +1 -1
- package/execution/hooks.mjs.map +1 -1
- package/execution/incremental/Computation.d.mts +1 -1
- package/execution/incremental/Computation.d.ts +1 -1
- package/execution/incremental/Computation.js +2 -2
- package/execution/incremental/Computation.js.map +1 -1
- package/execution/incremental/Computation.mjs.map +1 -1
- package/execution/incremental/IncrementalExecutor.d.mts +14 -14
- package/execution/incremental/IncrementalExecutor.d.ts +14 -14
- package/execution/incremental/IncrementalExecutor.js +48 -48
- package/execution/incremental/IncrementalExecutor.js.map +1 -1
- package/execution/incremental/IncrementalExecutor.mjs +3 -3
- package/execution/incremental/IncrementalExecutor.mjs.map +1 -1
- package/execution/incremental/IncrementalPublisher.d.mts +3 -3
- package/execution/incremental/IncrementalPublisher.d.ts +3 -3
- package/execution/incremental/IncrementalPublisher.js +13 -14
- package/execution/incremental/IncrementalPublisher.js.map +1 -1
- package/execution/incremental/IncrementalPublisher.mjs +1 -2
- package/execution/incremental/IncrementalPublisher.mjs.map +1 -1
- package/execution/incremental/Queue.d.mts +1 -1
- package/execution/incremental/Queue.d.ts +1 -1
- package/execution/incremental/Queue.js +26 -22
- package/execution/incremental/Queue.js.map +1 -1
- package/execution/incremental/Queue.mjs +10 -6
- package/execution/incremental/Queue.mjs.map +1 -1
- package/execution/incremental/WorkQueue.d.mts +2 -2
- package/execution/incremental/WorkQueue.d.ts +2 -2
- package/execution/incremental/WorkQueue.js +7 -7
- package/execution/incremental/WorkQueue.js.map +1 -1
- package/execution/incremental/WorkQueue.mjs.map +1 -1
- package/execution/incremental/buildExecutionPlan.d.mts +1 -1
- package/execution/incremental/buildExecutionPlan.d.ts +1 -1
- package/execution/incremental/buildExecutionPlan.js +4 -4
- package/execution/incremental/buildExecutionPlan.js.map +1 -1
- package/execution/incremental/buildExecutionPlan.mjs.map +1 -1
- package/execution/index.d.mts +8 -8
- package/execution/index.d.ts +8 -8
- package/execution/index.js +23 -22
- package/execution/index.js.map +1 -1
- package/execution/index.mjs +1 -1
- package/execution/index.mjs.map +1 -1
- package/execution/mapAsyncIterable.d.mts +1 -1
- package/execution/mapAsyncIterable.d.ts +1 -1
- package/execution/mapAsyncIterable.js +4 -4
- package/execution/mapAsyncIterable.js.map +1 -1
- package/execution/mapAsyncIterable.mjs.map +1 -1
- package/execution/returnIteratorCatchingErrors.js +1 -1
- package/execution/returnIteratorCatchingErrors.js.map +1 -1
- package/execution/returnIteratorCatchingErrors.mjs +1 -1
- package/execution/returnIteratorCatchingErrors.mjs.map +1 -1
- package/execution/values.d.mts +9 -9
- package/execution/values.d.ts +9 -9
- package/execution/values.js +34 -34
- package/execution/values.js.map +1 -1
- package/execution/values.mjs +2 -2
- package/execution/values.mjs.map +1 -1
- package/execution/withConcurrentAbruptClose.d.mts +1 -1
- package/execution/withConcurrentAbruptClose.d.ts +1 -1
- package/execution/withConcurrentAbruptClose.js +4 -4
- package/execution/withConcurrentAbruptClose.js.map +1 -1
- package/execution/withConcurrentAbruptClose.mjs +2 -2
- package/execution/withConcurrentAbruptClose.mjs.map +1 -1
- package/graphql.d.mts +7 -7
- package/graphql.d.ts +7 -7
- package/graphql.js +11 -11
- package/graphql.js.map +1 -1
- package/graphql.mjs.map +1 -1
- package/harness.d.mts +4 -4
- package/harness.d.ts +4 -4
- package/harness.js +7 -7
- package/harness.js.map +1 -1
- package/harness.mjs.map +1 -1
- package/index.d.mts +20 -20
- package/index.d.ts +20 -20
- package/index.js +253 -252
- package/index.js.map +1 -1
- package/index.mjs +1 -1
- package/index.mjs.map +1 -1
- package/jsutils/Path.d.mts +1 -1
- package/jsutils/Path.d.ts +1 -1
- package/jsutils/Path.js.map +1 -1
- package/jsutils/Path.mjs.map +1 -1
- package/jsutils/didYouMean.js +2 -2
- package/jsutils/didYouMean.js.map +1 -1
- package/jsutils/didYouMean.mjs.map +1 -1
- package/jsutils/formatList.js +2 -2
- package/jsutils/formatList.js.map +1 -1
- package/jsutils/formatList.mjs.map +1 -1
- package/jsutils/getBySet.js +2 -2
- package/jsutils/getBySet.js.map +1 -1
- package/jsutils/getBySet.mjs.map +1 -1
- package/jsutils/groupBy.js +2 -2
- package/jsutils/groupBy.js.map +1 -1
- package/jsutils/groupBy.mjs.map +1 -1
- package/jsutils/instanceOf.js +2 -2
- package/jsutils/instanceOf.js.map +1 -1
- package/jsutils/instanceOf.mjs.map +1 -1
- package/jsutils/keyMap.d.mts +1 -1
- package/jsutils/keyMap.d.ts +1 -1
- package/jsutils/keyMap.js.map +1 -1
- package/jsutils/keyMap.mjs.map +1 -1
- package/jsutils/keyValMap.d.mts +1 -1
- package/jsutils/keyValMap.d.ts +1 -1
- package/jsutils/keyValMap.js.map +1 -1
- package/jsutils/keyValMap.mjs.map +1 -1
- package/jsutils/mapValue.d.mts +1 -1
- package/jsutils/mapValue.d.ts +1 -1
- package/jsutils/mapValue.js.map +1 -1
- package/jsutils/mapValue.mjs.map +1 -1
- package/jsutils/promiseForObject.d.mts +2 -2
- package/jsutils/promiseForObject.d.ts +2 -2
- package/jsutils/promiseForObject.js.map +1 -1
- package/jsutils/promiseForObject.mjs.map +1 -1
- package/jsutils/promiseReduce.d.mts +1 -1
- package/jsutils/promiseReduce.d.ts +1 -1
- package/jsutils/promiseReduce.js +2 -2
- package/jsutils/promiseReduce.js.map +1 -1
- package/jsutils/promiseReduce.mjs.map +1 -1
- package/jsutils/promiseWithResolvers.d.mts +1 -1
- package/jsutils/promiseWithResolvers.d.ts +1 -1
- package/jsutils/promiseWithResolvers.js.map +1 -1
- package/jsutils/promiseWithResolvers.mjs.map +1 -1
- package/jsutils/suggestionList.js +2 -2
- package/jsutils/suggestionList.js.map +1 -1
- package/jsutils/suggestionList.mjs.map +1 -1
- package/jsutils/toError.js +2 -2
- package/jsutils/toError.js.map +1 -1
- package/jsutils/toError.mjs.map +1 -1
- package/jsutils/toObjMap.d.mts +2 -2
- package/jsutils/toObjMap.d.ts +2 -2
- package/jsutils/toObjMap.js.map +1 -1
- package/jsutils/toObjMap.mjs.map +1 -1
- package/language/KindTypeMap.d.mts +1 -1
- package/language/KindTypeMap.d.ts +1 -1
- package/language/KindTypeMap.js.map +1 -1
- package/language/KindTypeMap.mjs.map +1 -1
- package/language/ast.d.mts +12 -5
- package/language/ast.d.ts +12 -5
- package/language/ast.js +8 -1
- package/language/ast.js.map +1 -1
- package/language/ast.mjs +8 -1
- package/language/ast.mjs.map +1 -1
- package/language/blockString.js +4 -4
- package/language/blockString.js.map +1 -1
- package/language/blockString.mjs.map +1 -1
- package/language/directiveLocation.d.mts +2 -1
- package/language/directiveLocation.d.ts +2 -1
- package/language/directiveLocation.js +2 -1
- package/language/directiveLocation.js.map +1 -1
- package/language/directiveLocation.mjs +2 -1
- package/language/directiveLocation.mjs.map +1 -1
- package/language/index.d.mts +16 -16
- package/language/index.d.ts +16 -16
- package/language/index.js +45 -45
- package/language/index.js.map +1 -1
- package/language/index.mjs.map +1 -1
- package/language/kinds.d.mts +2 -2
- package/language/kinds.d.ts +2 -2
- package/language/kinds.js.map +1 -1
- package/language/kinds.mjs.map +1 -1
- package/language/kinds_.d.mts +2 -0
- package/language/kinds_.d.ts +2 -0
- package/language/kinds_.js +2 -1
- package/language/kinds_.js.map +1 -1
- package/language/kinds_.mjs +1 -0
- package/language/kinds_.mjs.map +1 -1
- package/language/lexer.d.mts +3 -3
- package/language/lexer.d.ts +3 -3
- package/language/lexer.js +67 -67
- package/language/lexer.js.map +1 -1
- package/language/lexer.mjs.map +1 -1
- package/language/location.d.mts +1 -1
- package/language/location.d.ts +1 -1
- package/language/location.js +2 -2
- package/language/location.js.map +1 -1
- package/language/location.mjs.map +1 -1
- package/language/parser.d.mts +20 -7
- package/language/parser.d.ts +20 -7
- package/language/parser.js +185 -155
- package/language/parser.js.map +1 -1
- package/language/parser.mjs +30 -0
- package/language/parser.mjs.map +1 -1
- package/language/predicates.d.mts +1 -1
- package/language/predicates.d.ts +1 -1
- package/language/predicates.js +45 -43
- package/language/predicates.js.map +1 -1
- package/language/predicates.mjs +3 -1
- package/language/predicates.mjs.map +1 -1
- package/language/printLocation.d.mts +3 -3
- package/language/printLocation.d.ts +3 -3
- package/language/printLocation.js +2 -2
- package/language/printLocation.js.map +1 -1
- package/language/printLocation.mjs.map +1 -1
- package/language/printer.d.mts +1 -1
- package/language/printer.d.ts +1 -1
- package/language/printer.js +10 -6
- package/language/printer.js.map +1 -1
- package/language/printer.mjs +5 -1
- package/language/printer.mjs.map +1 -1
- package/language/schemaCoordinateLexer.d.mts +3 -3
- package/language/schemaCoordinateLexer.d.ts +3 -3
- package/language/schemaCoordinateLexer.js +16 -16
- package/language/schemaCoordinateLexer.js.map +1 -1
- package/language/schemaCoordinateLexer.mjs.map +1 -1
- package/language/source.js +5 -5
- package/language/source.js.map +1 -1
- package/language/source.mjs.map +1 -1
- package/language/visitor.d.mts +2 -2
- package/language/visitor.d.ts +2 -2
- package/language/visitor.js +10 -10
- package/language/visitor.js.map +1 -1
- package/language/visitor.mjs.map +1 -1
- package/package.json +2 -2
- package/type/assertName.js +8 -8
- package/type/assertName.js.map +1 -1
- package/type/assertName.mjs.map +1 -1
- package/type/definition.d.mts +9 -9
- package/type/definition.d.ts +9 -9
- package/type/definition.js +94 -94
- package/type/definition.js.map +1 -1
- package/type/definition.mjs.map +1 -1
- package/type/directives.d.mts +11 -6
- package/type/directives.d.ts +11 -6
- package/type/directives.js +51 -46
- package/type/directives.js.map +1 -1
- package/type/directives.mjs +5 -0
- package/type/directives.mjs.map +1 -1
- package/type/index.d.mts +12 -12
- package/type/index.d.ts +12 -12
- package/type/index.js +106 -106
- package/type/index.js.map +1 -1
- package/type/index.mjs.map +1 -1
- package/type/introspection.d.mts +2 -2
- package/type/introspection.d.ts +2 -2
- package/type/introspection.js +123 -103
- package/type/introspection.js.map +1 -1
- package/type/introspection.mjs +25 -5
- package/type/introspection.mjs.map +1 -1
- package/type/scalars.d.mts +2 -2
- package/type/scalars.d.ts +2 -2
- package/type/scalars.js +61 -61
- package/type/scalars.js.map +1 -1
- package/type/scalars.mjs.map +1 -1
- package/type/schema.d.mts +7 -7
- package/type/schema.d.ts +7 -7
- package/type/schema.js +32 -32
- package/type/schema.js.map +1 -1
- package/type/schema.mjs.map +1 -1
- package/type/validate.d.mts +4 -4
- package/type/validate.d.ts +4 -4
- package/type/validate.js +83 -83
- package/type/validate.js.map +1 -1
- package/type/validate.mjs +1 -1
- package/type/validate.mjs.map +1 -1
- package/utilities/TypeInfo.d.mts +6 -6
- package/utilities/TypeInfo.d.ts +6 -6
- package/utilities/TypeInfo.js +61 -61
- package/utilities/TypeInfo.js.map +1 -1
- package/utilities/TypeInfo.mjs +1 -1
- package/utilities/TypeInfo.mjs.map +1 -1
- package/utilities/astFromValue.d.mts +3 -3
- package/utilities/astFromValue.d.ts +3 -3
- package/utilities/astFromValue.js +31 -33
- package/utilities/astFromValue.js.map +1 -1
- package/utilities/astFromValue.mjs +1 -3
- package/utilities/astFromValue.mjs.map +1 -1
- package/utilities/buildASTSchema.d.mts +5 -5
- package/utilities/buildASTSchema.d.ts +5 -5
- package/utilities/buildASTSchema.js +11 -10
- package/utilities/buildASTSchema.js.map +1 -1
- package/utilities/buildASTSchema.mjs +1 -0
- package/utilities/buildASTSchema.mjs.map +1 -1
- package/utilities/buildClientSchema.d.mts +3 -3
- package/utilities/buildClientSchema.d.ts +3 -3
- package/utilities/buildClientSchema.js +53 -52
- package/utilities/buildClientSchema.js.map +1 -1
- package/utilities/buildClientSchema.mjs +1 -0
- package/utilities/buildClientSchema.mjs.map +1 -1
- package/utilities/coerceInputValue.d.mts +5 -5
- package/utilities/coerceInputValue.d.ts +5 -5
- package/utilities/coerceInputValue.js +31 -31
- package/utilities/coerceInputValue.js.map +1 -1
- package/utilities/coerceInputValue.mjs.map +1 -1
- package/utilities/concatAST.d.mts +1 -1
- package/utilities/concatAST.d.ts +1 -1
- package/utilities/concatAST.js +2 -2
- 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 +92 -66
- package/utilities/extendSchema.js.map +1 -1
- package/utilities/extendSchema.mjs +27 -1
- package/utilities/extendSchema.mjs.map +1 -1
- package/utilities/findSchemaChanges.d.mts +1 -1
- package/utilities/findSchemaChanges.d.ts +1 -1
- package/utilities/findSchemaChanges.js +42 -44
- package/utilities/findSchemaChanges.js.map +1 -1
- package/utilities/findSchemaChanges.mjs +1 -3
- package/utilities/findSchemaChanges.mjs.map +1 -1
- package/utilities/getDefaultValueAST.d.mts +2 -2
- package/utilities/getDefaultValueAST.d.ts +2 -2
- package/utilities/getDefaultValueAST.js +9 -7
- package/utilities/getDefaultValueAST.js.map +1 -1
- package/utilities/getDefaultValueAST.mjs +2 -0
- package/utilities/getDefaultValueAST.mjs.map +1 -1
- package/utilities/getIntrospectionQuery.d.mts +19 -3
- package/utilities/getIntrospectionQuery.d.ts +19 -3
- package/utilities/getIntrospectionQuery.js +22 -38
- package/utilities/getIntrospectionQuery.js.map +1 -1
- package/utilities/getIntrospectionQuery.mjs +22 -38
- package/utilities/getIntrospectionQuery.mjs.map +1 -1
- package/utilities/getOperationAST.d.mts +2 -2
- package/utilities/getOperationAST.d.ts +2 -2
- package/utilities/getOperationAST.js +2 -2
- package/utilities/getOperationAST.js.map +1 -1
- package/utilities/getOperationAST.mjs.map +1 -1
- package/utilities/index.d.mts +28 -28
- package/utilities/index.d.ts +28 -28
- package/utilities/index.js +61 -61
- package/utilities/index.js.map +1 -1
- package/utilities/index.mjs.map +1 -1
- package/utilities/introspectionFromSchema.d.mts +2 -2
- package/utilities/introspectionFromSchema.d.ts +2 -2
- package/utilities/introspectionFromSchema.js +8 -7
- package/utilities/introspectionFromSchema.js.map +1 -1
- package/utilities/introspectionFromSchema.mjs +1 -0
- package/utilities/introspectionFromSchema.mjs.map +1 -1
- package/utilities/lexicographicSortSchema.d.mts +1 -1
- package/utilities/lexicographicSortSchema.d.ts +1 -1
- package/utilities/lexicographicSortSchema.js +14 -14
- package/utilities/lexicographicSortSchema.js.map +1 -1
- package/utilities/lexicographicSortSchema.mjs.map +1 -1
- package/utilities/mapSchemaConfig.d.mts +3 -3
- package/utilities/mapSchemaConfig.d.ts +3 -3
- package/utilities/mapSchemaConfig.js +29 -31
- package/utilities/mapSchemaConfig.js.map +1 -1
- package/utilities/mapSchemaConfig.mjs +1 -3
- package/utilities/mapSchemaConfig.mjs.map +1 -1
- package/utilities/printSchema.d.mts +3 -3
- package/utilities/printSchema.d.ts +3 -3
- package/utilities/printSchema.js +31 -32
- package/utilities/printSchema.js.map +1 -1
- package/utilities/printSchema.mjs +2 -3
- package/utilities/printSchema.mjs.map +1 -1
- package/utilities/replaceVariables.d.mts +4 -4
- package/utilities/replaceVariables.d.ts +4 -4
- package/utilities/replaceVariables.js +9 -9
- package/utilities/replaceVariables.js.map +1 -1
- package/utilities/replaceVariables.mjs.map +1 -1
- package/utilities/resolveSchemaCoordinate.d.mts +5 -5
- package/utilities/resolveSchemaCoordinate.d.ts +5 -5
- package/utilities/resolveSchemaCoordinate.js +23 -23
- package/utilities/resolveSchemaCoordinate.js.map +1 -1
- package/utilities/resolveSchemaCoordinate.mjs.map +1 -1
- package/utilities/separateOperations.d.mts +2 -2
- package/utilities/separateOperations.d.ts +2 -2
- package/utilities/separateOperations.js +7 -7
- package/utilities/separateOperations.js.map +1 -1
- package/utilities/separateOperations.mjs.map +1 -1
- package/utilities/sortValueNode.d.mts +1 -1
- package/utilities/sortValueNode.d.ts +1 -1
- package/utilities/sortValueNode.js +12 -12
- package/utilities/sortValueNode.js.map +1 -1
- package/utilities/sortValueNode.mjs.map +1 -1
- package/utilities/stripIgnoredCharacters.d.mts +1 -1
- package/utilities/stripIgnoredCharacters.d.ts +1 -1
- package/utilities/stripIgnoredCharacters.js +11 -11
- package/utilities/stripIgnoredCharacters.js.map +1 -1
- package/utilities/stripIgnoredCharacters.mjs.map +1 -1
- package/utilities/typeComparators.d.mts +2 -2
- package/utilities/typeComparators.d.ts +2 -2
- package/utilities/typeComparators.js +14 -14
- package/utilities/typeComparators.js.map +1 -1
- package/utilities/typeComparators.mjs.map +1 -1
- package/utilities/typeFromAST.d.mts +4 -4
- package/utilities/typeFromAST.d.ts +4 -4
- package/utilities/typeFromAST.js +7 -7
- package/utilities/typeFromAST.js.map +1 -1
- package/utilities/typeFromAST.mjs.map +1 -1
- package/utilities/typedQueryDocumentNode.d.mts +1 -1
- package/utilities/typedQueryDocumentNode.d.ts +1 -1
- package/utilities/typedQueryDocumentNode.js.map +1 -1
- package/utilities/typedQueryDocumentNode.mjs.map +1 -1
- package/utilities/validateInputValue.d.mts +6 -6
- package/utilities/validateInputValue.d.ts +6 -6
- package/utilities/validateInputValue.js +60 -60
- package/utilities/validateInputValue.js.map +1 -1
- package/utilities/validateInputValue.mjs.map +1 -1
- package/utilities/valueFromAST.d.mts +4 -4
- package/utilities/valueFromAST.d.ts +4 -4
- package/utilities/valueFromAST.js +20 -22
- package/utilities/valueFromAST.js.map +1 -1
- package/utilities/valueFromAST.mjs +1 -3
- package/utilities/valueFromAST.mjs.map +1 -1
- package/utilities/valueFromASTUntyped.d.mts +3 -3
- package/utilities/valueFromASTUntyped.d.ts +3 -3
- package/utilities/valueFromASTUntyped.js +12 -12
- package/utilities/valueFromASTUntyped.js.map +1 -1
- package/utilities/valueFromASTUntyped.mjs.map +1 -1
- package/utilities/valueToLiteral.d.mts +2 -2
- package/utilities/valueToLiteral.d.ts +2 -2
- package/utilities/valueToLiteral.js +30 -30
- package/utilities/valueToLiteral.js.map +1 -1
- package/utilities/valueToLiteral.mjs.map +1 -1
- package/validation/ValidationContext.d.mts +9 -9
- package/validation/ValidationContext.d.ts +9 -9
- package/validation/ValidationContext.js +8 -8
- package/validation/ValidationContext.js.map +1 -1
- package/validation/ValidationContext.mjs.map +1 -1
- package/validation/index.d.mts +46 -46
- package/validation/index.d.ts +46 -46
- package/validation/index.js +91 -91
- package/validation/index.js.map +1 -1
- package/validation/index.mjs.map +1 -1
- package/validation/rules/DeferStreamDirectiveLabelRule.d.mts +2 -2
- package/validation/rules/DeferStreamDirectiveLabelRule.d.ts +2 -2
- package/validation/rules/DeferStreamDirectiveLabelRule.js +9 -9
- package/validation/rules/DeferStreamDirectiveLabelRule.js.map +1 -1
- package/validation/rules/DeferStreamDirectiveLabelRule.mjs.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.mts +2 -2
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +2 -2
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js +8 -8
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.mts +2 -2
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts +2 -2
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js +14 -14
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs.map +1 -1
- package/validation/rules/ExecutableDefinitionsRule.d.mts +2 -2
- package/validation/rules/ExecutableDefinitionsRule.d.ts +2 -2
- package/validation/rules/ExecutableDefinitionsRule.js +7 -7
- package/validation/rules/ExecutableDefinitionsRule.js.map +1 -1
- package/validation/rules/ExecutableDefinitionsRule.mjs.map +1 -1
- package/validation/rules/FieldsOnCorrectTypeRule.d.mts +2 -2
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +2 -2
- package/validation/rules/FieldsOnCorrectTypeRule.js +14 -14
- package/validation/rules/FieldsOnCorrectTypeRule.js.map +1 -1
- package/validation/rules/FieldsOnCorrectTypeRule.mjs.map +1 -1
- package/validation/rules/FragmentsOnCompositeTypesRule.d.mts +2 -2
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +2 -2
- package/validation/rules/FragmentsOnCompositeTypesRule.js +12 -12
- package/validation/rules/FragmentsOnCompositeTypesRule.js.map +1 -1
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs.map +1 -1
- package/validation/rules/KnownArgumentNamesRule.d.mts +2 -2
- package/validation/rules/KnownArgumentNamesRule.d.ts +2 -2
- package/validation/rules/KnownArgumentNamesRule.js +16 -16
- package/validation/rules/KnownArgumentNamesRule.js.map +1 -1
- package/validation/rules/KnownArgumentNamesRule.mjs.map +1 -1
- package/validation/rules/KnownDirectivesRule.d.mts +2 -2
- package/validation/rules/KnownDirectivesRule.d.ts +2 -2
- package/validation/rules/KnownDirectivesRule.js +67 -64
- package/validation/rules/KnownDirectivesRule.js.map +1 -1
- package/validation/rules/KnownDirectivesRule.mjs +4 -1
- package/validation/rules/KnownDirectivesRule.mjs.map +1 -1
- package/validation/rules/KnownFragmentNamesRule.d.mts +2 -2
- package/validation/rules/KnownFragmentNamesRule.d.ts +2 -2
- package/validation/rules/KnownFragmentNamesRule.js +2 -2
- package/validation/rules/KnownFragmentNamesRule.js.map +1 -1
- package/validation/rules/KnownFragmentNamesRule.mjs.map +1 -1
- package/validation/rules/KnownOperationTypesRule.d.mts +2 -2
- package/validation/rules/KnownOperationTypesRule.d.ts +2 -2
- package/validation/rules/KnownOperationTypesRule.js +2 -2
- package/validation/rules/KnownOperationTypesRule.js.map +1 -1
- package/validation/rules/KnownOperationTypesRule.mjs.map +1 -1
- package/validation/rules/KnownTypeNamesRule.d.mts +2 -2
- package/validation/rules/KnownTypeNamesRule.d.ts +2 -2
- package/validation/rules/KnownTypeNamesRule.js +11 -11
- package/validation/rules/KnownTypeNamesRule.js.map +1 -1
- package/validation/rules/KnownTypeNamesRule.mjs.map +1 -1
- package/validation/rules/LoneAnonymousOperationRule.d.mts +2 -2
- package/validation/rules/LoneAnonymousOperationRule.d.ts +2 -2
- package/validation/rules/LoneAnonymousOperationRule.js +4 -4
- package/validation/rules/LoneAnonymousOperationRule.js.map +1 -1
- package/validation/rules/LoneAnonymousOperationRule.mjs.map +1 -1
- package/validation/rules/LoneSchemaDefinitionRule.d.mts +2 -2
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +2 -2
- package/validation/rules/LoneSchemaDefinitionRule.js +3 -3
- package/validation/rules/LoneSchemaDefinitionRule.js.map +1 -1
- package/validation/rules/LoneSchemaDefinitionRule.mjs.map +1 -1
- package/validation/rules/MaxIntrospectionDepthRule.d.mts +2 -2
- package/validation/rules/MaxIntrospectionDepthRule.d.ts +2 -2
- package/validation/rules/MaxIntrospectionDepthRule.js +5 -5
- package/validation/rules/MaxIntrospectionDepthRule.js.map +1 -1
- package/validation/rules/MaxIntrospectionDepthRule.mjs.map +1 -1
- package/validation/rules/NoFragmentCyclesRule.d.mts +2 -2
- package/validation/rules/NoFragmentCyclesRule.d.ts +2 -2
- package/validation/rules/NoFragmentCyclesRule.js +2 -2
- package/validation/rules/NoFragmentCyclesRule.js.map +1 -1
- package/validation/rules/NoFragmentCyclesRule.mjs.map +1 -1
- package/validation/rules/NoUndefinedVariablesRule.d.mts +2 -2
- package/validation/rules/NoUndefinedVariablesRule.d.ts +2 -2
- package/validation/rules/NoUndefinedVariablesRule.js +2 -2
- package/validation/rules/NoUndefinedVariablesRule.js.map +1 -1
- package/validation/rules/NoUndefinedVariablesRule.mjs.map +1 -1
- package/validation/rules/NoUnusedFragmentsRule.d.mts +2 -2
- package/validation/rules/NoUnusedFragmentsRule.d.ts +2 -2
- package/validation/rules/NoUnusedFragmentsRule.js +2 -2
- package/validation/rules/NoUnusedFragmentsRule.js.map +1 -1
- package/validation/rules/NoUnusedFragmentsRule.mjs.map +1 -1
- package/validation/rules/NoUnusedVariablesRule.d.mts +2 -2
- package/validation/rules/NoUnusedVariablesRule.d.ts +2 -2
- package/validation/rules/NoUnusedVariablesRule.js +3 -3
- package/validation/rules/NoUnusedVariablesRule.js.map +1 -1
- package/validation/rules/NoUnusedVariablesRule.mjs.map +1 -1
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.mts +2 -2
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +2 -2
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +31 -31
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js.map +1 -1
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs.map +1 -1
- package/validation/rules/PossibleFragmentSpreadsRule.d.mts +2 -2
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +2 -2
- package/validation/rules/PossibleFragmentSpreadsRule.js +17 -17
- package/validation/rules/PossibleFragmentSpreadsRule.js.map +1 -1
- package/validation/rules/PossibleFragmentSpreadsRule.mjs.map +1 -1
- package/validation/rules/PossibleTypeExtensionsRule.d.mts +2 -2
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +2 -2
- package/validation/rules/PossibleTypeExtensionsRule.js +40 -42
- package/validation/rules/PossibleTypeExtensionsRule.js.map +1 -1
- package/validation/rules/PossibleTypeExtensionsRule.mjs +2 -4
- package/validation/rules/PossibleTypeExtensionsRule.mjs.map +1 -1
- package/validation/rules/ProvidedRequiredArgumentsRule.d.mts +2 -2
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +2 -2
- package/validation/rules/ProvidedRequiredArgumentsRule.js +20 -20
- package/validation/rules/ProvidedRequiredArgumentsRule.js.map +1 -1
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs.map +1 -1
- package/validation/rules/ScalarLeafsRule.d.mts +2 -2
- package/validation/rules/ScalarLeafsRule.d.ts +2 -2
- package/validation/rules/ScalarLeafsRule.js +10 -10
- package/validation/rules/ScalarLeafsRule.js.map +1 -1
- package/validation/rules/ScalarLeafsRule.mjs.map +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.d.mts +2 -2
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +2 -2
- package/validation/rules/SingleFieldSubscriptionsRule.js +8 -8
- package/validation/rules/SingleFieldSubscriptionsRule.js.map +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.mjs.map +1 -1
- package/validation/rules/StreamDirectiveOnListFieldRule.d.mts +2 -2
- package/validation/rules/StreamDirectiveOnListFieldRule.d.ts +2 -2
- package/validation/rules/StreamDirectiveOnListFieldRule.js +7 -7
- package/validation/rules/StreamDirectiveOnListFieldRule.js.map +1 -1
- package/validation/rules/StreamDirectiveOnListFieldRule.mjs.map +1 -1
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.mts +2 -2
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +2 -2
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +4 -4
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js.map +1 -1
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueArgumentNamesRule.d.mts +2 -2
- package/validation/rules/UniqueArgumentNamesRule.d.ts +2 -2
- package/validation/rules/UniqueArgumentNamesRule.js +4 -4
- package/validation/rules/UniqueArgumentNamesRule.js.map +1 -1
- package/validation/rules/UniqueArgumentNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueDirectiveNamesRule.d.mts +2 -2
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +2 -2
- package/validation/rules/UniqueDirectiveNamesRule.js +3 -3
- package/validation/rules/UniqueDirectiveNamesRule.js.map +1 -1
- package/validation/rules/UniqueDirectiveNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueDirectivesPerLocationRule.d.mts +2 -2
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +2 -2
- package/validation/rules/UniqueDirectivesPerLocationRule.js +20 -10
- package/validation/rules/UniqueDirectivesPerLocationRule.js.map +1 -1
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +10 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs.map +1 -1
- package/validation/rules/UniqueEnumValueNamesRule.d.mts +2 -2
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +2 -2
- package/validation/rules/UniqueEnumValueNamesRule.js +5 -5
- package/validation/rules/UniqueEnumValueNamesRule.js.map +1 -1
- package/validation/rules/UniqueEnumValueNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.mts +2 -2
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +2 -2
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +5 -5
- package/validation/rules/UniqueFieldDefinitionNamesRule.js.map +1 -1
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueFragmentNamesRule.d.mts +2 -2
- package/validation/rules/UniqueFragmentNamesRule.d.ts +2 -2
- package/validation/rules/UniqueFragmentNamesRule.js +2 -2
- package/validation/rules/UniqueFragmentNamesRule.js.map +1 -1
- package/validation/rules/UniqueFragmentNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.d.mts +2 -2
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +2 -2
- package/validation/rules/UniqueInputFieldNamesRule.js +4 -4
- package/validation/rules/UniqueInputFieldNamesRule.js.map +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueOperationNamesRule.d.mts +2 -2
- package/validation/rules/UniqueOperationNamesRule.d.ts +2 -2
- package/validation/rules/UniqueOperationNamesRule.js +2 -2
- package/validation/rules/UniqueOperationNamesRule.js.map +1 -1
- package/validation/rules/UniqueOperationNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueOperationTypesRule.d.mts +2 -2
- package/validation/rules/UniqueOperationTypesRule.d.ts +2 -2
- package/validation/rules/UniqueOperationTypesRule.js +3 -3
- package/validation/rules/UniqueOperationTypesRule.js.map +1 -1
- package/validation/rules/UniqueOperationTypesRule.mjs.map +1 -1
- package/validation/rules/UniqueTypeNamesRule.d.mts +2 -2
- package/validation/rules/UniqueTypeNamesRule.d.ts +2 -2
- package/validation/rules/UniqueTypeNamesRule.js +3 -3
- package/validation/rules/UniqueTypeNamesRule.js.map +1 -1
- package/validation/rules/UniqueTypeNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueVariableNamesRule.d.mts +2 -2
- package/validation/rules/UniqueVariableNamesRule.d.ts +2 -2
- package/validation/rules/UniqueVariableNamesRule.js +4 -4
- package/validation/rules/UniqueVariableNamesRule.js.map +1 -1
- package/validation/rules/UniqueVariableNamesRule.mjs.map +1 -1
- package/validation/rules/ValuesOfCorrectTypeRule.d.mts +2 -2
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +2 -2
- package/validation/rules/ValuesOfCorrectTypeRule.js +2 -2
- package/validation/rules/ValuesOfCorrectTypeRule.js.map +1 -1
- package/validation/rules/ValuesOfCorrectTypeRule.mjs.map +1 -1
- package/validation/rules/VariablesAreInputTypesRule.d.mts +2 -2
- package/validation/rules/VariablesAreInputTypesRule.d.ts +2 -2
- package/validation/rules/VariablesAreInputTypesRule.js +8 -8
- package/validation/rules/VariablesAreInputTypesRule.js.map +1 -1
- package/validation/rules/VariablesAreInputTypesRule.mjs.map +1 -1
- package/validation/rules/VariablesInAllowedPositionRule.d.mts +2 -2
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +2 -2
- package/validation/rules/VariablesInAllowedPositionRule.js +14 -14
- package/validation/rules/VariablesInAllowedPositionRule.js.map +1 -1
- package/validation/rules/VariablesInAllowedPositionRule.mjs.map +1 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.d.mts +2 -2
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +2 -2
- package/validation/rules/custom/NoDeprecatedCustomRule.js +8 -8
- 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 +2 -2
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +2 -2
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +6 -6
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.map +1 -1
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs.map +1 -1
- package/validation/specifiedRules.d.mts +1 -1
- package/validation/specifiedRules.d.ts +1 -1
- package/validation/specifiedRules.js +87 -87
- package/validation/specifiedRules.js.map +1 -1
- package/validation/specifiedRules.mjs.map +1 -1
- package/validation/validate.d.mts +5 -5
- package/validation/validate.d.ts +5 -5
- package/validation/validate.js +19 -19
- 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":["import { AccumulatorMap } from '../jsutils/AccumulatorMap.js';\nimport { invariant } from '../jsutils/invariant.js';\nimport type { Maybe } from '../jsutils/Maybe.js';\n\nimport type {\n DirectiveDefinitionNode,\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.js';\nimport { Kind } from '../language/kinds.js';\n\nimport type {\n GraphQLEnumValueNormalizedConfigMap,\n GraphQLFieldConfigArgumentMap,\n GraphQLFieldNormalizedConfigMap,\n GraphQLInputFieldNormalizedConfigMap,\n GraphQLNamedType,\n GraphQLType,\n} from '../type/definition.js';\nimport {\n GraphQLEnumType,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n} from '../type/definition.js';\nimport {\n GraphQLDeprecatedDirective,\n GraphQLDirective,\n GraphQLOneOfDirective,\n GraphQLSpecifiedByDirective,\n} from '../type/directives.js';\nimport { introspectionTypes } from '../type/introspection.js';\nimport { specifiedScalarTypes } from '../type/scalars.js';\nimport type {\n GraphQLSchemaNormalizedConfig,\n GraphQLSchemaValidationOptions,\n} from '../type/schema.js';\nimport { assertSchema, GraphQLSchema } from '../type/schema.js';\n\nimport { assertValidSDLExtension } from '../validation/validate.js';\n\nimport { getDirectiveValues } from '../execution/values.js';\n\nimport { mapSchemaConfig, SchemaElementKind } from './mapSchemaConfig.js';\n\ninterface Options extends GraphQLSchemaValidationOptions {\n /**\n * Set to true to assume the SDL is valid.\n *\n * Default: false\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 */\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/**\n * @internal\n */\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\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\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,\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(typeFromAST(node.type));\n }\n return namedTypeFromAST(node);\n }\n\n function buildDirective(node: DirectiveDefinitionNode): GraphQLDirective {\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 astNode: node,\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 */\nfunction getDeprecationReason(\n node:\n | EnumValueDefinitionNode\n | FieldDefinitionNode\n | InputValueDefinitionNode,\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 */\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 */\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":["import { 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 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 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 */\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/**\n * @internal\n */\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(typeFromAST(node.type));\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 */\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 */\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 */\nfunction isOneOf(node: InputObjectTypeDefinitionNode): boolean {\n return Boolean(getDirectiveValues(GraphQLOneOfDirective, node));\n}\n"]}
|
|
@@ -4,14 +4,14 @@ exports.SafeChangeType = exports.DangerousChangeType = exports.BreakingChangeTyp
|
|
|
4
4
|
exports.findBreakingChanges = findBreakingChanges;
|
|
5
5
|
exports.findDangerousChanges = findDangerousChanges;
|
|
6
6
|
exports.findSchemaChanges = findSchemaChanges;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
7
|
+
const inspect_ts_1 = require("../jsutils/inspect.js");
|
|
8
|
+
const invariant_ts_1 = require("../jsutils/invariant.js");
|
|
9
|
+
const keyMap_ts_1 = require("../jsutils/keyMap.js");
|
|
10
|
+
const printer_ts_1 = require("../language/printer.js");
|
|
11
|
+
const definition_ts_1 = require("../type/definition.js");
|
|
12
|
+
const scalars_ts_1 = require("../type/scalars.js");
|
|
13
|
+
const getDefaultValueAST_ts_1 = require("./getDefaultValueAST.js");
|
|
14
|
+
const sortValueNode_ts_1 = require("./sortValueNode.js");
|
|
15
15
|
exports.BreakingChangeType = {
|
|
16
16
|
TYPE_REMOVED: 'TYPE_REMOVED',
|
|
17
17
|
TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND',
|
|
@@ -96,7 +96,7 @@ function findDirectiveChanges(oldSchema, newSchema) {
|
|
|
96
96
|
for (const [oldDirective, newDirective] of directivesDiff.persisted) {
|
|
97
97
|
const argsDiff = diff(oldDirective.args, newDirective.args);
|
|
98
98
|
for (const newArg of argsDiff.added) {
|
|
99
|
-
if ((0,
|
|
99
|
+
if ((0, definition_ts_1.isRequiredArgument)(newArg)) {
|
|
100
100
|
schemaChanges.push({
|
|
101
101
|
type: exports.BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,
|
|
102
102
|
description: `A required argument ${newArg} was added.`,
|
|
@@ -204,7 +204,7 @@ function findTypeChanges(oldSchema, newSchema) {
|
|
|
204
204
|
for (const oldType of typesDiff.removed) {
|
|
205
205
|
schemaChanges.push({
|
|
206
206
|
type: exports.BreakingChangeType.TYPE_REMOVED,
|
|
207
|
-
description: (0,
|
|
207
|
+
description: (0, scalars_ts_1.isSpecifiedScalarType)(oldType)
|
|
208
208
|
? `Standard scalar ${oldType} was removed because it is not referenced anymore.`
|
|
209
209
|
: `${oldType} was removed.`,
|
|
210
210
|
});
|
|
@@ -222,19 +222,19 @@ function findTypeChanges(oldSchema, newSchema) {
|
|
|
222
222
|
description: `Description of ${oldType.name} has changed to "${newType.description}".`,
|
|
223
223
|
});
|
|
224
224
|
}
|
|
225
|
-
if ((0,
|
|
225
|
+
if ((0, definition_ts_1.isEnumType)(oldType) && (0, definition_ts_1.isEnumType)(newType)) {
|
|
226
226
|
schemaChanges.push(...findEnumTypeChanges(oldType, newType));
|
|
227
227
|
}
|
|
228
|
-
else if ((0,
|
|
228
|
+
else if ((0, definition_ts_1.isUnionType)(oldType) && (0, definition_ts_1.isUnionType)(newType)) {
|
|
229
229
|
schemaChanges.push(...findUnionTypeChanges(oldType, newType));
|
|
230
230
|
}
|
|
231
|
-
else if ((0,
|
|
231
|
+
else if ((0, definition_ts_1.isInputObjectType)(oldType) && (0, definition_ts_1.isInputObjectType)(newType)) {
|
|
232
232
|
schemaChanges.push(...findInputObjectTypeChanges(oldType, newType));
|
|
233
233
|
}
|
|
234
|
-
else if ((0,
|
|
234
|
+
else if ((0, definition_ts_1.isObjectType)(oldType) && (0, definition_ts_1.isObjectType)(newType)) {
|
|
235
235
|
schemaChanges.push(...findFieldChanges(oldType, newType), ...findImplementedInterfacesChanges(oldType, newType));
|
|
236
236
|
}
|
|
237
|
-
else if ((0,
|
|
237
|
+
else if ((0, definition_ts_1.isInterfaceType)(oldType) && (0, definition_ts_1.isInterfaceType)(newType)) {
|
|
238
238
|
schemaChanges.push(...findFieldChanges(oldType, newType), ...findImplementedInterfacesChanges(oldType, newType));
|
|
239
239
|
}
|
|
240
240
|
else if (oldType.constructor !== newType.constructor) {
|
|
@@ -250,7 +250,7 @@ function findInputObjectTypeChanges(oldType, newType) {
|
|
|
250
250
|
const schemaChanges = [];
|
|
251
251
|
const fieldsDiff = diff(Object.values(oldType.getFields()), Object.values(newType.getFields()));
|
|
252
252
|
for (const newField of fieldsDiff.added) {
|
|
253
|
-
if ((0,
|
|
253
|
+
if ((0, definition_ts_1.isRequiredInputField)(newField)) {
|
|
254
254
|
schemaChanges.push({
|
|
255
255
|
type: exports.BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,
|
|
256
256
|
description: `A required field ${newField} was added.`,
|
|
@@ -447,7 +447,7 @@ function findArgChanges(oldField, newField) {
|
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
449
|
for (const newArg of argsDiff.added) {
|
|
450
|
-
if ((0,
|
|
450
|
+
if ((0, definition_ts_1.isRequiredArgument)(newArg)) {
|
|
451
451
|
schemaChanges.push({
|
|
452
452
|
type: exports.BreakingChangeType.REQUIRED_ARG_ADDED,
|
|
453
453
|
description: `A required argument ${newArg} was added.`,
|
|
@@ -463,86 +463,84 @@ function findArgChanges(oldField, newField) {
|
|
|
463
463
|
return schemaChanges;
|
|
464
464
|
}
|
|
465
465
|
function isChangeSafeForObjectOrInterfaceField(oldType, newType) {
|
|
466
|
-
if ((0,
|
|
466
|
+
if ((0, definition_ts_1.isListType)(oldType)) {
|
|
467
467
|
return (
|
|
468
468
|
// if they're both lists, make sure the underlying types are compatible
|
|
469
|
-
((0,
|
|
469
|
+
((0, definition_ts_1.isListType)(newType) &&
|
|
470
470
|
isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType)) ||
|
|
471
471
|
// moving from nullable to non-null of the same underlying type is safe
|
|
472
|
-
((0,
|
|
472
|
+
((0, definition_ts_1.isNonNullType)(newType) &&
|
|
473
473
|
isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)));
|
|
474
474
|
}
|
|
475
|
-
if ((0,
|
|
475
|
+
if ((0, definition_ts_1.isNonNullType)(oldType)) {
|
|
476
476
|
// if they're both non-null, make sure the underlying types are compatible
|
|
477
|
-
return ((0,
|
|
477
|
+
return ((0, definition_ts_1.isNonNullType)(newType) &&
|
|
478
478
|
isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType));
|
|
479
479
|
}
|
|
480
480
|
return (
|
|
481
481
|
// if they're both named types, see if their names are equivalent
|
|
482
|
-
((0,
|
|
482
|
+
((0, definition_ts_1.isNamedType)(newType) && oldType.name === newType.name) ||
|
|
483
483
|
// moving from nullable to non-null of the same underlying type is safe
|
|
484
|
-
((0,
|
|
484
|
+
((0, definition_ts_1.isNonNullType)(newType) &&
|
|
485
485
|
isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType)));
|
|
486
486
|
}
|
|
487
487
|
function isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {
|
|
488
|
-
if ((0,
|
|
488
|
+
if ((0, definition_ts_1.isListType)(oldType)) {
|
|
489
489
|
// if they're both lists, make sure the underlying types are compatible
|
|
490
|
-
return ((0,
|
|
490
|
+
return ((0, definition_ts_1.isListType)(newType) &&
|
|
491
491
|
isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType));
|
|
492
492
|
}
|
|
493
|
-
if ((0,
|
|
493
|
+
if ((0, definition_ts_1.isNonNullType)(oldType)) {
|
|
494
494
|
return (
|
|
495
495
|
// if they're both non-null, make sure the underlying types are
|
|
496
496
|
// compatible
|
|
497
|
-
((0,
|
|
497
|
+
((0, definition_ts_1.isNonNullType)(newType) &&
|
|
498
498
|
isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType)) ||
|
|
499
499
|
// moving from non-null to nullable of the same underlying type is safe
|
|
500
|
-
(!(0,
|
|
500
|
+
(!(0, definition_ts_1.isNonNullType)(newType) &&
|
|
501
501
|
isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType)));
|
|
502
502
|
}
|
|
503
503
|
// if they're both named types, see if their names are equivalent
|
|
504
|
-
return (0,
|
|
504
|
+
return (0, definition_ts_1.isNamedType)(newType) && oldType.name === newType.name;
|
|
505
505
|
}
|
|
506
506
|
function typeKindName(type) {
|
|
507
|
-
if ((0,
|
|
507
|
+
if ((0, definition_ts_1.isScalarType)(type)) {
|
|
508
508
|
return 'a Scalar type';
|
|
509
509
|
}
|
|
510
|
-
if ((0,
|
|
510
|
+
if ((0, definition_ts_1.isObjectType)(type)) {
|
|
511
511
|
return 'an Object type';
|
|
512
512
|
}
|
|
513
|
-
if ((0,
|
|
513
|
+
if ((0, definition_ts_1.isInterfaceType)(type)) {
|
|
514
514
|
return 'an Interface type';
|
|
515
515
|
}
|
|
516
|
-
if ((0,
|
|
516
|
+
if ((0, definition_ts_1.isUnionType)(type)) {
|
|
517
517
|
return 'a Union type';
|
|
518
518
|
}
|
|
519
|
-
if ((0,
|
|
519
|
+
if ((0, definition_ts_1.isEnumType)(type)) {
|
|
520
520
|
return 'an Enum type';
|
|
521
521
|
}
|
|
522
|
-
if ((0,
|
|
522
|
+
if ((0, definition_ts_1.isInputObjectType)(type)) {
|
|
523
523
|
return 'an Input type';
|
|
524
|
-
|
|
525
|
-
// slight swc source mapping error (at least as compared to ts-node without swc)
|
|
526
|
-
/* c8 ignore next 4 */
|
|
524
|
+
/* node:coverage ignore next 4 */
|
|
527
525
|
}
|
|
528
526
|
// Not reachable, all possible types have been considered.
|
|
529
|
-
(0,
|
|
527
|
+
(0, invariant_ts_1.invariant)(false, 'Unexpected type: ' + (0, inspect_ts_1.inspect)(type));
|
|
530
528
|
}
|
|
531
529
|
// Since we looking only for client's observable changes we should
|
|
532
530
|
// compare default values in the same representation as they are
|
|
533
531
|
// represented inside introspection.
|
|
534
532
|
function getDefaultValue(argOrInputField) {
|
|
535
|
-
const ast = (0,
|
|
533
|
+
const ast = (0, getDefaultValueAST_ts_1.getDefaultValueAST)(argOrInputField);
|
|
536
534
|
if (ast) {
|
|
537
|
-
return (0,
|
|
535
|
+
return (0, printer_ts_1.print)((0, sortValueNode_ts_1.sortValueNode)(ast));
|
|
538
536
|
}
|
|
539
537
|
}
|
|
540
538
|
function diff(oldArray, newArray) {
|
|
541
539
|
const added = [];
|
|
542
540
|
const removed = [];
|
|
543
541
|
const persisted = [];
|
|
544
|
-
const oldMap = (0,
|
|
545
|
-
const newMap = (0,
|
|
542
|
+
const oldMap = (0, keyMap_ts_1.keyMap)(oldArray, ({ name }) => name);
|
|
543
|
+
const newMap = (0, keyMap_ts_1.keyMap)(newArray, ({ name }) => name);
|
|
546
544
|
for (const oldItem of oldArray) {
|
|
547
545
|
const newItem = newMap[oldItem.name];
|
|
548
546
|
if (newItem === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findSchemaChanges.js","sourceRoot":"","sources":["../../src/utilities/findSchemaChanges.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.js';\nimport { invariant } from '../jsutils/invariant.js';\nimport { keyMap } from '../jsutils/keyMap.js';\n\nimport { print } from '../language/printer.js';\n\nimport type {\n GraphQLArgument,\n GraphQLEnumType,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLType,\n GraphQLUnionType,\n} from '../type/definition.js';\nimport {\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNamedType,\n isNonNullType,\n isObjectType,\n isRequiredArgument,\n isRequiredInputField,\n isScalarType,\n isUnionType,\n} from '../type/definition.js';\nimport { isSpecifiedScalarType } from '../type/scalars.js';\nimport type { GraphQLSchema } from '../type/schema.js';\n\nimport { getDefaultValueAST } from './getDefaultValueAST.js';\nimport { sortValueNode } from './sortValueNode.js';\n\nexport const BreakingChangeType = {\n TYPE_REMOVED: 'TYPE_REMOVED' as const,\n TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND' as const,\n TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION' as const,\n VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM' as const,\n REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED' as const,\n IMPLEMENTED_INTERFACE_REMOVED: 'IMPLEMENTED_INTERFACE_REMOVED' as const,\n FIELD_REMOVED: 'FIELD_REMOVED' as const,\n FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND' as const,\n REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED' as const,\n ARG_REMOVED: 'ARG_REMOVED' as const,\n ARG_CHANGED_KIND: 'ARG_CHANGED_KIND' as const,\n DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED' as const,\n DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED' as const,\n REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED' as const,\n DIRECTIVE_REPEATABLE_REMOVED: 'DIRECTIVE_REPEATABLE_REMOVED' as const,\n DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED' as const,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type BreakingChangeType =\n (typeof BreakingChangeType)[keyof typeof BreakingChangeType];\n\nexport const DangerousChangeType = {\n VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM' as const,\n TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION' as const,\n OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED' as const,\n OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED' as const,\n IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED' as const,\n ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE' as const,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DangerousChangeType =\n (typeof DangerousChangeType)[keyof typeof DangerousChangeType];\n\nexport const SafeChangeType = {\n DESCRIPTION_CHANGED: 'DESCRIPTION_CHANGED' as const,\n TYPE_ADDED: 'TYPE_ADDED' as const,\n OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED' as const,\n OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED' as const,\n DIRECTIVE_ADDED: 'DIRECTIVE_ADDED' as const,\n FIELD_ADDED: 'FIELD_ADDED' as const,\n DIRECTIVE_REPEATABLE_ADDED: 'DIRECTIVE_REPEATABLE_ADDED' as const,\n DIRECTIVE_LOCATION_ADDED: 'DIRECTIVE_LOCATION_ADDED' as const,\n OPTIONAL_DIRECTIVE_ARG_ADDED: 'OPTIONAL_DIRECTIVE_ARG_ADDED' as const,\n FIELD_CHANGED_KIND_SAFE: 'FIELD_CHANGED_KIND_SAFE' as const,\n ARG_CHANGED_KIND_SAFE: 'ARG_CHANGED_KIND_SAFE' as const,\n ARG_DEFAULT_VALUE_ADDED: 'ARG_DEFAULT_VALUE_ADDED' as const,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type SafeChangeType =\n (typeof SafeChangeType)[keyof typeof SafeChangeType];\n\nexport interface BreakingChange {\n type: BreakingChangeType;\n description: string;\n}\n\nexport interface DangerousChange {\n type: DangerousChangeType;\n description: string;\n}\n\nexport interface SafeChange {\n type: SafeChangeType;\n description: string;\n}\n\nexport type SchemaChange = SafeChange | DangerousChange | BreakingChange;\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of breaking changes covered by the other functions down below.\n *\n * @deprecated Please use `findSchemaChanges` instead. Will be removed in v18.\n */\nexport function findBreakingChanges(\n oldSchema: GraphQLSchema,\n newSchema: GraphQLSchema,\n): Array<BreakingChange> {\n // @ts-expect-error\n return findSchemaChanges(oldSchema, newSchema).filter(\n (change) => change.type in BreakingChangeType,\n );\n}\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of potentially dangerous changes covered by the other functions down below.\n *\n * @deprecated Please use `findSchemaChanges` instead. Will be removed in v18.\n */\nexport function findDangerousChanges(\n oldSchema: GraphQLSchema,\n newSchema: GraphQLSchema,\n): Array<DangerousChange> {\n // @ts-expect-error\n return findSchemaChanges(oldSchema, newSchema).filter(\n (change) => change.type in DangerousChangeType,\n );\n}\n\nexport function findSchemaChanges(\n oldSchema: GraphQLSchema,\n newSchema: GraphQLSchema,\n): Array<SchemaChange> {\n return [\n ...findTypeChanges(oldSchema, newSchema),\n ...findDirectiveChanges(oldSchema, newSchema),\n ];\n}\n\nfunction findDirectiveChanges(\n oldSchema: GraphQLSchema,\n newSchema: GraphQLSchema,\n): Array<SchemaChange> {\n const schemaChanges = [];\n\n const directivesDiff = diff(\n oldSchema.getDirectives(),\n newSchema.getDirectives(),\n );\n\n for (const oldDirective of directivesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REMOVED,\n description: `Directive ${oldDirective} was removed.`,\n });\n }\n\n for (const newDirective of directivesDiff.added) {\n schemaChanges.push({\n type: SafeChangeType.DIRECTIVE_ADDED,\n description: `Directive @${newDirective.name} was added.`,\n });\n }\n\n for (const [oldDirective, newDirective] of directivesDiff.persisted) {\n const argsDiff = diff(oldDirective.args, newDirective.args);\n\n for (const newArg of argsDiff.added) {\n if (isRequiredArgument(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,\n description: `A required argument ${newArg} was added.`,\n });\n } else {\n schemaChanges.push({\n type: SafeChangeType.OPTIONAL_DIRECTIVE_ARG_ADDED,\n description: `An optional argument @${oldDirective.name}(${newArg.name}:) was added.`,\n });\n }\n }\n\n for (const oldArg of argsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,\n description: `Argument ${oldArg} was removed.`,\n });\n }\n\n for (const [oldArg, newArg] of argsDiff.persisted) {\n const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n oldArg.type,\n newArg.type,\n );\n\n const oldDefaultValueStr = getDefaultValue(oldArg);\n const newDefaultValueStr = getDefaultValue(newArg);\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_CHANGED_KIND,\n description:\n `Argument @${oldDirective.name}(${oldArg.name}:) has changed type from ` +\n `${String(oldArg.type)} to ${String(newArg.type)}.`,\n });\n } else if (oldDefaultValueStr !== undefined) {\n if (newDefaultValueStr === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `@${oldDirective.name}(${oldArg.name}:) defaultValue was removed.`,\n });\n } else if (oldDefaultValueStr !== newDefaultValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `@${oldDirective.name}(${oldArg.name}:) has changed defaultValue from ${oldDefaultValueStr} to ${newDefaultValueStr}.`,\n });\n }\n } else if (\n newDefaultValueStr !== undefined &&\n oldDefaultValueStr === undefined\n ) {\n schemaChanges.push({\n type: SafeChangeType.ARG_DEFAULT_VALUE_ADDED,\n description: `@${oldDirective.name}(${oldArg.name}:) added a defaultValue ${newDefaultValueStr}.`,\n });\n } else if (oldArg.type.toString() !== newArg.type.toString()) {\n schemaChanges.push({\n type: SafeChangeType.ARG_CHANGED_KIND_SAFE,\n description:\n `Argument @${oldDirective.name}(${oldArg.name}:) has changed type from ` +\n `${String(oldArg.type)} to ${String(newArg.type)}.`,\n });\n }\n\n if (oldArg.description !== newArg.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of @${oldDirective.name}(${oldDirective.name}) has changed to \"${newArg.description}\".`,\n });\n }\n }\n\n if (oldDirective.isRepeatable && !newDirective.isRepeatable) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,\n description: `Repeatable flag was removed from ${oldDirective}.`,\n });\n } else if (newDirective.isRepeatable && !oldDirective.isRepeatable) {\n schemaChanges.push({\n type: SafeChangeType.DIRECTIVE_REPEATABLE_ADDED,\n description: `Repeatable flag was added to @${oldDirective.name}.`,\n });\n }\n\n if (oldDirective.description !== newDirective.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of @${oldDirective.name} has changed to \"${newDirective.description}\".`,\n });\n }\n\n for (const location of oldDirective.locations) {\n if (!newDirective.locations.includes(location)) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,\n description: `${location} was removed from ${oldDirective}.`,\n });\n }\n }\n\n for (const location of newDirective.locations) {\n if (!oldDirective.locations.includes(location)) {\n schemaChanges.push({\n type: SafeChangeType.DIRECTIVE_LOCATION_ADDED,\n description: `${location} was added to @${oldDirective.name}.`,\n });\n }\n }\n }\n\n return schemaChanges;\n}\n\nfunction findTypeChanges(\n oldSchema: GraphQLSchema,\n newSchema: GraphQLSchema,\n): Array<SchemaChange> {\n const schemaChanges = [];\n\n const typesDiff = diff(\n Object.values(oldSchema.getTypeMap()),\n Object.values(newSchema.getTypeMap()),\n );\n\n for (const oldType of typesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED,\n description: isSpecifiedScalarType(oldType)\n ? `Standard scalar ${oldType} was removed because it is not referenced anymore.`\n : `${oldType} was removed.`,\n });\n }\n\n for (const newType of typesDiff.added) {\n schemaChanges.push({\n type: SafeChangeType.TYPE_ADDED,\n description: `${newType} was added.`,\n });\n }\n\n for (const [oldType, newType] of typesDiff.persisted) {\n if (oldType.description !== newType.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of ${oldType.name} has changed to \"${newType.description}\".`,\n });\n }\n\n if (isEnumType(oldType) && isEnumType(newType)) {\n schemaChanges.push(...findEnumTypeChanges(oldType, newType));\n } else if (isUnionType(oldType) && isUnionType(newType)) {\n schemaChanges.push(...findUnionTypeChanges(oldType, newType));\n } else if (isInputObjectType(oldType) && isInputObjectType(newType)) {\n schemaChanges.push(...findInputObjectTypeChanges(oldType, newType));\n } else if (isObjectType(oldType) && isObjectType(newType)) {\n schemaChanges.push(\n ...findFieldChanges(oldType, newType),\n ...findImplementedInterfacesChanges(oldType, newType),\n );\n } else if (isInterfaceType(oldType) && isInterfaceType(newType)) {\n schemaChanges.push(\n ...findFieldChanges(oldType, newType),\n ...findImplementedInterfacesChanges(oldType, newType),\n );\n } else if (oldType.constructor !== newType.constructor) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_CHANGED_KIND,\n description: `${oldType} changed from ${typeKindName(\n oldType,\n )} to ${typeKindName(newType)}.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findInputObjectTypeChanges(\n oldType: GraphQLInputObjectType,\n newType: GraphQLInputObjectType,\n): Array<SchemaChange> {\n const schemaChanges = [];\n const fieldsDiff = diff(\n Object.values(oldType.getFields()),\n Object.values(newType.getFields()),\n );\n\n for (const newField of fieldsDiff.added) {\n if (isRequiredInputField(newField)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,\n description: `A required field ${newField} was added.`,\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,\n description: `An optional field ${newField} was added.`,\n });\n }\n }\n\n for (const oldField of fieldsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: `Field ${oldField} was removed.`,\n });\n }\n\n for (const [oldField, newField] of fieldsDiff.persisted) {\n const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n oldField.type,\n newField.type,\n );\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description: `Field ${newField} changed type from ${oldField.type} to ${newField.type}.`,\n });\n } else if (oldField.type.toString() !== newField.type.toString()) {\n schemaChanges.push({\n type: SafeChangeType.FIELD_CHANGED_KIND_SAFE,\n description:\n `Field ${oldType}.${oldField.name} changed type from ` +\n `${String(oldField.type)} to ${String(newField.type)}.`,\n });\n }\n\n if (oldField.description !== newField.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of input-field ${newType}.${newField.name} has changed to \"${newField.description}\".`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findUnionTypeChanges(\n oldType: GraphQLUnionType,\n newType: GraphQLUnionType,\n): Array<BreakingChange | DangerousChange> {\n const schemaChanges = [];\n const possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());\n\n for (const newPossibleType of possibleTypesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.TYPE_ADDED_TO_UNION,\n description: `${newPossibleType} was added to union type ${oldType}.`,\n });\n }\n\n for (const oldPossibleType of possibleTypesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,\n description: `${oldPossibleType} was removed from union type ${oldType}.`,\n });\n }\n\n return schemaChanges;\n}\n\nfunction findEnumTypeChanges(\n oldType: GraphQLEnumType,\n newType: GraphQLEnumType,\n): Array<SchemaChange> {\n const schemaChanges = [];\n const valuesDiff = diff(oldType.getValues(), newType.getValues());\n\n for (const newValue of valuesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.VALUE_ADDED_TO_ENUM,\n description: `Enum value ${newValue} was added.`,\n });\n }\n\n for (const oldValue of valuesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,\n description: `Enum value ${oldValue} was removed.`,\n });\n }\n\n for (const [oldValue, newValue] of valuesDiff.persisted) {\n if (oldValue.description !== newValue.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of enum value ${oldType}.${oldValue.name} has changed to \"${newValue.description}\".`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findImplementedInterfacesChanges(\n oldType: GraphQLObjectType | GraphQLInterfaceType,\n newType: GraphQLObjectType | GraphQLInterfaceType,\n): Array<BreakingChange | DangerousChange> {\n const schemaChanges = [];\n const interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());\n\n for (const newInterface of interfacesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,\n description: `${newInterface} added to interfaces implemented by ${oldType}.`,\n });\n }\n\n for (const oldInterface of interfacesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,\n description: `${oldType} no longer implements interface ${oldInterface}.`,\n });\n }\n\n return schemaChanges;\n}\n\nfunction findFieldChanges(\n oldType: GraphQLObjectType | GraphQLInterfaceType,\n newType: GraphQLObjectType | GraphQLInterfaceType,\n): Array<SchemaChange> {\n const schemaChanges = [];\n const fieldsDiff = diff(\n Object.values(oldType.getFields()),\n Object.values(newType.getFields()),\n );\n\n for (const oldField of fieldsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: `Field ${oldField} was removed.`,\n });\n }\n\n for (const newField of fieldsDiff.added) {\n schemaChanges.push({\n type: SafeChangeType.FIELD_ADDED,\n description: `Field ${oldType}.${newField.name} was added.`,\n });\n }\n\n for (const [oldField, newField] of fieldsDiff.persisted) {\n schemaChanges.push(...findArgChanges(oldField, newField));\n\n const isSafe = isChangeSafeForObjectOrInterfaceField(\n oldField.type,\n newField.type,\n );\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description: `Field ${newField} changed type from ${oldField.type} to ${newField.type}.`,\n });\n } else if (oldField.type.toString() !== newField.type.toString()) {\n schemaChanges.push({\n type: SafeChangeType.FIELD_CHANGED_KIND_SAFE,\n description:\n `Field ${oldType}.${oldField.name} changed type from ` +\n `${String(oldField.type)} to ${String(newField.type)}.`,\n });\n }\n\n if (oldField.description !== newField.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of field ${oldType}.${oldField.name} has changed to \"${newField.description}\".`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findArgChanges(\n oldField: GraphQLField<unknown, unknown>,\n newField: GraphQLField<unknown, unknown>,\n): Array<SchemaChange> {\n const schemaChanges = [];\n const argsDiff = diff(oldField.args, newField.args);\n\n for (const oldArg of argsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_REMOVED,\n description: `Argument ${oldArg} was removed.`,\n });\n }\n\n for (const [oldArg, newArg] of argsDiff.persisted) {\n const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n oldArg.type,\n newArg.type,\n );\n\n const oldDefaultValueStr = getDefaultValue(oldArg);\n const newDefaultValueStr = getDefaultValue(newArg);\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_CHANGED_KIND,\n description: `Argument ${newArg} has changed type from ${oldArg.type} to ${newArg.type}.`,\n });\n } else if (oldDefaultValueStr !== undefined) {\n if (newDefaultValueStr === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `${oldArg} defaultValue was removed.`,\n });\n } else if (oldDefaultValueStr !== newDefaultValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `${oldArg} has changed defaultValue from ${oldDefaultValueStr} to ${newDefaultValueStr}.`,\n });\n }\n } else if (\n newDefaultValueStr !== undefined &&\n oldDefaultValueStr === undefined\n ) {\n schemaChanges.push({\n type: SafeChangeType.ARG_DEFAULT_VALUE_ADDED,\n description: `${oldArg} added a defaultValue ${newDefaultValueStr}.`,\n });\n } else if (oldArg.type.toString() !== newArg.type.toString()) {\n schemaChanges.push({\n type: SafeChangeType.ARG_CHANGED_KIND_SAFE,\n description:\n `Argument ${oldArg} has changed type from ` +\n `${String(oldArg.type)} to ${String(newArg.type)}.`,\n });\n }\n\n if (oldArg.description !== newArg.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of argument ${oldArg} has changed to \"${newArg.description}\".`,\n });\n }\n }\n\n for (const newArg of argsDiff.added) {\n if (isRequiredArgument(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_ARG_ADDED,\n description: `A required argument ${newArg} was added.`,\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_ARG_ADDED,\n description: `An optional argument ${newArg} was added.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction isChangeSafeForObjectOrInterfaceField(\n oldType: GraphQLType,\n newType: GraphQLType,\n): boolean {\n if (isListType(oldType)) {\n return (\n // if they're both lists, make sure the underlying types are compatible\n (isListType(newType) &&\n isChangeSafeForObjectOrInterfaceField(\n oldType.ofType,\n newType.ofType,\n )) ||\n // moving from nullable to non-null of the same underlying type is safe\n (isNonNullType(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n );\n }\n\n if (isNonNullType(oldType)) {\n // if they're both non-null, make sure the underlying types are compatible\n return (\n isNonNullType(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType)\n );\n }\n\n return (\n // if they're both named types, see if their names are equivalent\n (isNamedType(newType) && oldType.name === newType.name) ||\n // moving from nullable to non-null of the same underlying type is safe\n (isNonNullType(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n );\n}\n\nfunction isChangeSafeForInputObjectFieldOrFieldArg(\n oldType: GraphQLType,\n newType: GraphQLType,\n): boolean {\n if (isListType(oldType)) {\n // if they're both lists, make sure the underlying types are compatible\n return (\n isListType(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType)\n );\n }\n\n if (isNonNullType(oldType)) {\n return (\n // if they're both non-null, make sure the underlying types are\n // compatible\n (isNonNullType(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(\n oldType.ofType,\n newType.ofType,\n )) ||\n // moving from non-null to nullable of the same underlying type is safe\n (!isNonNullType(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType))\n );\n }\n\n // if they're both named types, see if their names are equivalent\n return isNamedType(newType) && oldType.name === newType.name;\n}\n\nfunction typeKindName(type: GraphQLNamedType): string {\n if (isScalarType(type)) {\n return 'a Scalar type';\n }\n if (isObjectType(type)) {\n return 'an Object type';\n }\n if (isInterfaceType(type)) {\n return 'an Interface type';\n }\n if (isUnionType(type)) {\n return 'a Union type';\n }\n if (isEnumType(type)) {\n return 'an Enum type';\n }\n if (isInputObjectType(type)) {\n return 'an Input type';\n // c8 control statement technically placed a line early secondary to\n // slight swc source mapping error (at least as compared to ts-node without swc)\n /* c8 ignore next 4 */\n }\n // Not reachable, all possible types have been considered.\n invariant(false, 'Unexpected type: ' + inspect(type));\n}\n\n// Since we looking only for client's observable changes we should\n// compare default values in the same representation as they are\n// represented inside introspection.\nfunction getDefaultValue(\n argOrInputField: GraphQLArgument | GraphQLInputField,\n): string | undefined {\n const ast = getDefaultValueAST(argOrInputField);\n if (ast) {\n return print(sortValueNode(ast));\n }\n}\n\nfunction diff<T extends { name: string }>(\n oldArray: ReadonlyArray<T>,\n newArray: ReadonlyArray<T>,\n): {\n added: ReadonlyArray<T>;\n removed: ReadonlyArray<T>;\n persisted: ReadonlyArray<[T, T]>;\n} {\n const added: Array<T> = [];\n const removed: Array<T> = [];\n const persisted: Array<[T, T]> = [];\n\n const oldMap = keyMap(oldArray, ({ name }) => name);\n const newMap = keyMap(newArray, ({ name }) => name);\n\n for (const oldItem of oldArray) {\n const newItem = newMap[oldItem.name];\n if (newItem === undefined) {\n removed.push(oldItem);\n } else {\n persisted.push([oldItem, newItem]);\n }\n }\n\n for (const newItem of newArray) {\n if (oldMap[newItem.name] === undefined) {\n added.push(newItem);\n }\n }\n\n return { added, persisted, removed };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"findSchemaChanges.js","sourceRoot":"","sources":["../../src/utilities/findSchemaChanges.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport { keyMap } from '../jsutils/keyMap.ts';\n\nimport { print } from '../language/printer.ts';\n\nimport type {\n GraphQLArgument,\n GraphQLEnumType,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLType,\n GraphQLUnionType,\n} from '../type/definition.ts';\nimport {\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNamedType,\n isNonNullType,\n isObjectType,\n isRequiredArgument,\n isRequiredInputField,\n isScalarType,\n isUnionType,\n} from '../type/definition.ts';\nimport { isSpecifiedScalarType } from '../type/scalars.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { getDefaultValueAST } from './getDefaultValueAST.ts';\nimport { sortValueNode } from './sortValueNode.ts';\n\nexport const BreakingChangeType = {\n TYPE_REMOVED: 'TYPE_REMOVED' as const,\n TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND' as const,\n TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION' as const,\n VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM' as const,\n REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED' as const,\n IMPLEMENTED_INTERFACE_REMOVED: 'IMPLEMENTED_INTERFACE_REMOVED' as const,\n FIELD_REMOVED: 'FIELD_REMOVED' as const,\n FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND' as const,\n REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED' as const,\n ARG_REMOVED: 'ARG_REMOVED' as const,\n ARG_CHANGED_KIND: 'ARG_CHANGED_KIND' as const,\n DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED' as const,\n DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED' as const,\n REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED' as const,\n DIRECTIVE_REPEATABLE_REMOVED: 'DIRECTIVE_REPEATABLE_REMOVED' as const,\n DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED' as const,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type BreakingChangeType =\n (typeof BreakingChangeType)[keyof typeof BreakingChangeType];\n\nexport const DangerousChangeType = {\n VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM' as const,\n TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION' as const,\n OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED' as const,\n OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED' as const,\n IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED' as const,\n ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE' as const,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DangerousChangeType =\n (typeof DangerousChangeType)[keyof typeof DangerousChangeType];\n\nexport const SafeChangeType = {\n DESCRIPTION_CHANGED: 'DESCRIPTION_CHANGED' as const,\n TYPE_ADDED: 'TYPE_ADDED' as const,\n OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED' as const,\n OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED' as const,\n DIRECTIVE_ADDED: 'DIRECTIVE_ADDED' as const,\n FIELD_ADDED: 'FIELD_ADDED' as const,\n DIRECTIVE_REPEATABLE_ADDED: 'DIRECTIVE_REPEATABLE_ADDED' as const,\n DIRECTIVE_LOCATION_ADDED: 'DIRECTIVE_LOCATION_ADDED' as const,\n OPTIONAL_DIRECTIVE_ARG_ADDED: 'OPTIONAL_DIRECTIVE_ARG_ADDED' as const,\n FIELD_CHANGED_KIND_SAFE: 'FIELD_CHANGED_KIND_SAFE' as const,\n ARG_CHANGED_KIND_SAFE: 'ARG_CHANGED_KIND_SAFE' as const,\n ARG_DEFAULT_VALUE_ADDED: 'ARG_DEFAULT_VALUE_ADDED' as const,\n} as const;\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type SafeChangeType =\n (typeof SafeChangeType)[keyof typeof SafeChangeType];\n\nexport interface BreakingChange {\n type: BreakingChangeType;\n description: string;\n}\n\nexport interface DangerousChange {\n type: DangerousChangeType;\n description: string;\n}\n\nexport interface SafeChange {\n type: SafeChangeType;\n description: string;\n}\n\nexport type SchemaChange = SafeChange | DangerousChange | BreakingChange;\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of breaking changes covered by the other functions down below.\n *\n * @deprecated Please use `findSchemaChanges` instead. Will be removed in v18.\n */\nexport function findBreakingChanges(\n oldSchema: GraphQLSchema,\n newSchema: GraphQLSchema,\n): Array<BreakingChange> {\n // @ts-expect-error\n return findSchemaChanges(oldSchema, newSchema).filter(\n (change) => change.type in BreakingChangeType,\n );\n}\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of potentially dangerous changes covered by the other functions down below.\n *\n * @deprecated Please use `findSchemaChanges` instead. Will be removed in v18.\n */\nexport function findDangerousChanges(\n oldSchema: GraphQLSchema,\n newSchema: GraphQLSchema,\n): Array<DangerousChange> {\n // @ts-expect-error\n return findSchemaChanges(oldSchema, newSchema).filter(\n (change) => change.type in DangerousChangeType,\n );\n}\n\nexport function findSchemaChanges(\n oldSchema: GraphQLSchema,\n newSchema: GraphQLSchema,\n): Array<SchemaChange> {\n return [\n ...findTypeChanges(oldSchema, newSchema),\n ...findDirectiveChanges(oldSchema, newSchema),\n ];\n}\n\nfunction findDirectiveChanges(\n oldSchema: GraphQLSchema,\n newSchema: GraphQLSchema,\n): Array<SchemaChange> {\n const schemaChanges = [];\n\n const directivesDiff = diff(\n oldSchema.getDirectives(),\n newSchema.getDirectives(),\n );\n\n for (const oldDirective of directivesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REMOVED,\n description: `Directive ${oldDirective} was removed.`,\n });\n }\n\n for (const newDirective of directivesDiff.added) {\n schemaChanges.push({\n type: SafeChangeType.DIRECTIVE_ADDED,\n description: `Directive @${newDirective.name} was added.`,\n });\n }\n\n for (const [oldDirective, newDirective] of directivesDiff.persisted) {\n const argsDiff = diff(oldDirective.args, newDirective.args);\n\n for (const newArg of argsDiff.added) {\n if (isRequiredArgument(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,\n description: `A required argument ${newArg} was added.`,\n });\n } else {\n schemaChanges.push({\n type: SafeChangeType.OPTIONAL_DIRECTIVE_ARG_ADDED,\n description: `An optional argument @${oldDirective.name}(${newArg.name}:) was added.`,\n });\n }\n }\n\n for (const oldArg of argsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,\n description: `Argument ${oldArg} was removed.`,\n });\n }\n\n for (const [oldArg, newArg] of argsDiff.persisted) {\n const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n oldArg.type,\n newArg.type,\n );\n\n const oldDefaultValueStr = getDefaultValue(oldArg);\n const newDefaultValueStr = getDefaultValue(newArg);\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_CHANGED_KIND,\n description:\n `Argument @${oldDirective.name}(${oldArg.name}:) has changed type from ` +\n `${String(oldArg.type)} to ${String(newArg.type)}.`,\n });\n } else if (oldDefaultValueStr !== undefined) {\n if (newDefaultValueStr === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `@${oldDirective.name}(${oldArg.name}:) defaultValue was removed.`,\n });\n } else if (oldDefaultValueStr !== newDefaultValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `@${oldDirective.name}(${oldArg.name}:) has changed defaultValue from ${oldDefaultValueStr} to ${newDefaultValueStr}.`,\n });\n }\n } else if (\n newDefaultValueStr !== undefined &&\n oldDefaultValueStr === undefined\n ) {\n schemaChanges.push({\n type: SafeChangeType.ARG_DEFAULT_VALUE_ADDED,\n description: `@${oldDirective.name}(${oldArg.name}:) added a defaultValue ${newDefaultValueStr}.`,\n });\n } else if (oldArg.type.toString() !== newArg.type.toString()) {\n schemaChanges.push({\n type: SafeChangeType.ARG_CHANGED_KIND_SAFE,\n description:\n `Argument @${oldDirective.name}(${oldArg.name}:) has changed type from ` +\n `${String(oldArg.type)} to ${String(newArg.type)}.`,\n });\n }\n\n if (oldArg.description !== newArg.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of @${oldDirective.name}(${oldDirective.name}) has changed to \"${newArg.description}\".`,\n });\n }\n }\n\n if (oldDirective.isRepeatable && !newDirective.isRepeatable) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,\n description: `Repeatable flag was removed from ${oldDirective}.`,\n });\n } else if (newDirective.isRepeatable && !oldDirective.isRepeatable) {\n schemaChanges.push({\n type: SafeChangeType.DIRECTIVE_REPEATABLE_ADDED,\n description: `Repeatable flag was added to @${oldDirective.name}.`,\n });\n }\n\n if (oldDirective.description !== newDirective.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of @${oldDirective.name} has changed to \"${newDirective.description}\".`,\n });\n }\n\n for (const location of oldDirective.locations) {\n if (!newDirective.locations.includes(location)) {\n schemaChanges.push({\n type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,\n description: `${location} was removed from ${oldDirective}.`,\n });\n }\n }\n\n for (const location of newDirective.locations) {\n if (!oldDirective.locations.includes(location)) {\n schemaChanges.push({\n type: SafeChangeType.DIRECTIVE_LOCATION_ADDED,\n description: `${location} was added to @${oldDirective.name}.`,\n });\n }\n }\n }\n\n return schemaChanges;\n}\n\nfunction findTypeChanges(\n oldSchema: GraphQLSchema,\n newSchema: GraphQLSchema,\n): Array<SchemaChange> {\n const schemaChanges = [];\n\n const typesDiff = diff(\n Object.values(oldSchema.getTypeMap()),\n Object.values(newSchema.getTypeMap()),\n );\n\n for (const oldType of typesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED,\n description: isSpecifiedScalarType(oldType)\n ? `Standard scalar ${oldType} was removed because it is not referenced anymore.`\n : `${oldType} was removed.`,\n });\n }\n\n for (const newType of typesDiff.added) {\n schemaChanges.push({\n type: SafeChangeType.TYPE_ADDED,\n description: `${newType} was added.`,\n });\n }\n\n for (const [oldType, newType] of typesDiff.persisted) {\n if (oldType.description !== newType.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of ${oldType.name} has changed to \"${newType.description}\".`,\n });\n }\n\n if (isEnumType(oldType) && isEnumType(newType)) {\n schemaChanges.push(...findEnumTypeChanges(oldType, newType));\n } else if (isUnionType(oldType) && isUnionType(newType)) {\n schemaChanges.push(...findUnionTypeChanges(oldType, newType));\n } else if (isInputObjectType(oldType) && isInputObjectType(newType)) {\n schemaChanges.push(...findInputObjectTypeChanges(oldType, newType));\n } else if (isObjectType(oldType) && isObjectType(newType)) {\n schemaChanges.push(\n ...findFieldChanges(oldType, newType),\n ...findImplementedInterfacesChanges(oldType, newType),\n );\n } else if (isInterfaceType(oldType) && isInterfaceType(newType)) {\n schemaChanges.push(\n ...findFieldChanges(oldType, newType),\n ...findImplementedInterfacesChanges(oldType, newType),\n );\n } else if (oldType.constructor !== newType.constructor) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_CHANGED_KIND,\n description: `${oldType} changed from ${typeKindName(\n oldType,\n )} to ${typeKindName(newType)}.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findInputObjectTypeChanges(\n oldType: GraphQLInputObjectType,\n newType: GraphQLInputObjectType,\n): Array<SchemaChange> {\n const schemaChanges = [];\n const fieldsDiff = diff(\n Object.values(oldType.getFields()),\n Object.values(newType.getFields()),\n );\n\n for (const newField of fieldsDiff.added) {\n if (isRequiredInputField(newField)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,\n description: `A required field ${newField} was added.`,\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,\n description: `An optional field ${newField} was added.`,\n });\n }\n }\n\n for (const oldField of fieldsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: `Field ${oldField} was removed.`,\n });\n }\n\n for (const [oldField, newField] of fieldsDiff.persisted) {\n const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n oldField.type,\n newField.type,\n );\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description: `Field ${newField} changed type from ${oldField.type} to ${newField.type}.`,\n });\n } else if (oldField.type.toString() !== newField.type.toString()) {\n schemaChanges.push({\n type: SafeChangeType.FIELD_CHANGED_KIND_SAFE,\n description:\n `Field ${oldType}.${oldField.name} changed type from ` +\n `${String(oldField.type)} to ${String(newField.type)}.`,\n });\n }\n\n if (oldField.description !== newField.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of input-field ${newType}.${newField.name} has changed to \"${newField.description}\".`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findUnionTypeChanges(\n oldType: GraphQLUnionType,\n newType: GraphQLUnionType,\n): Array<BreakingChange | DangerousChange> {\n const schemaChanges = [];\n const possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());\n\n for (const newPossibleType of possibleTypesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.TYPE_ADDED_TO_UNION,\n description: `${newPossibleType} was added to union type ${oldType}.`,\n });\n }\n\n for (const oldPossibleType of possibleTypesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,\n description: `${oldPossibleType} was removed from union type ${oldType}.`,\n });\n }\n\n return schemaChanges;\n}\n\nfunction findEnumTypeChanges(\n oldType: GraphQLEnumType,\n newType: GraphQLEnumType,\n): Array<SchemaChange> {\n const schemaChanges = [];\n const valuesDiff = diff(oldType.getValues(), newType.getValues());\n\n for (const newValue of valuesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.VALUE_ADDED_TO_ENUM,\n description: `Enum value ${newValue} was added.`,\n });\n }\n\n for (const oldValue of valuesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,\n description: `Enum value ${oldValue} was removed.`,\n });\n }\n\n for (const [oldValue, newValue] of valuesDiff.persisted) {\n if (oldValue.description !== newValue.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of enum value ${oldType}.${oldValue.name} has changed to \"${newValue.description}\".`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findImplementedInterfacesChanges(\n oldType: GraphQLObjectType | GraphQLInterfaceType,\n newType: GraphQLObjectType | GraphQLInterfaceType,\n): Array<BreakingChange | DangerousChange> {\n const schemaChanges = [];\n const interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());\n\n for (const newInterface of interfacesDiff.added) {\n schemaChanges.push({\n type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,\n description: `${newInterface} added to interfaces implemented by ${oldType}.`,\n });\n }\n\n for (const oldInterface of interfacesDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,\n description: `${oldType} no longer implements interface ${oldInterface}.`,\n });\n }\n\n return schemaChanges;\n}\n\nfunction findFieldChanges(\n oldType: GraphQLObjectType | GraphQLInterfaceType,\n newType: GraphQLObjectType | GraphQLInterfaceType,\n): Array<SchemaChange> {\n const schemaChanges = [];\n const fieldsDiff = diff(\n Object.values(oldType.getFields()),\n Object.values(newType.getFields()),\n );\n\n for (const oldField of fieldsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_REMOVED,\n description: `Field ${oldField} was removed.`,\n });\n }\n\n for (const newField of fieldsDiff.added) {\n schemaChanges.push({\n type: SafeChangeType.FIELD_ADDED,\n description: `Field ${oldType}.${newField.name} was added.`,\n });\n }\n\n for (const [oldField, newField] of fieldsDiff.persisted) {\n schemaChanges.push(...findArgChanges(oldField, newField));\n\n const isSafe = isChangeSafeForObjectOrInterfaceField(\n oldField.type,\n newField.type,\n );\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.FIELD_CHANGED_KIND,\n description: `Field ${newField} changed type from ${oldField.type} to ${newField.type}.`,\n });\n } else if (oldField.type.toString() !== newField.type.toString()) {\n schemaChanges.push({\n type: SafeChangeType.FIELD_CHANGED_KIND_SAFE,\n description:\n `Field ${oldType}.${oldField.name} changed type from ` +\n `${String(oldField.type)} to ${String(newField.type)}.`,\n });\n }\n\n if (oldField.description !== newField.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of field ${oldType}.${oldField.name} has changed to \"${newField.description}\".`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction findArgChanges(\n oldField: GraphQLField<unknown, unknown>,\n newField: GraphQLField<unknown, unknown>,\n): Array<SchemaChange> {\n const schemaChanges = [];\n const argsDiff = diff(oldField.args, newField.args);\n\n for (const oldArg of argsDiff.removed) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_REMOVED,\n description: `Argument ${oldArg} was removed.`,\n });\n }\n\n for (const [oldArg, newArg] of argsDiff.persisted) {\n const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n oldArg.type,\n newArg.type,\n );\n\n const oldDefaultValueStr = getDefaultValue(oldArg);\n const newDefaultValueStr = getDefaultValue(newArg);\n if (!isSafe) {\n schemaChanges.push({\n type: BreakingChangeType.ARG_CHANGED_KIND,\n description: `Argument ${newArg} has changed type from ${oldArg.type} to ${newArg.type}.`,\n });\n } else if (oldDefaultValueStr !== undefined) {\n if (newDefaultValueStr === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `${oldArg} defaultValue was removed.`,\n });\n } else if (oldDefaultValueStr !== newDefaultValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n description: `${oldArg} has changed defaultValue from ${oldDefaultValueStr} to ${newDefaultValueStr}.`,\n });\n }\n } else if (\n newDefaultValueStr !== undefined &&\n oldDefaultValueStr === undefined\n ) {\n schemaChanges.push({\n type: SafeChangeType.ARG_DEFAULT_VALUE_ADDED,\n description: `${oldArg} added a defaultValue ${newDefaultValueStr}.`,\n });\n } else if (oldArg.type.toString() !== newArg.type.toString()) {\n schemaChanges.push({\n type: SafeChangeType.ARG_CHANGED_KIND_SAFE,\n description:\n `Argument ${oldArg} has changed type from ` +\n `${String(oldArg.type)} to ${String(newArg.type)}.`,\n });\n }\n\n if (oldArg.description !== newArg.description) {\n schemaChanges.push({\n type: SafeChangeType.DESCRIPTION_CHANGED,\n description: `Description of argument ${oldArg} has changed to \"${newArg.description}\".`,\n });\n }\n }\n\n for (const newArg of argsDiff.added) {\n if (isRequiredArgument(newArg)) {\n schemaChanges.push({\n type: BreakingChangeType.REQUIRED_ARG_ADDED,\n description: `A required argument ${newArg} was added.`,\n });\n } else {\n schemaChanges.push({\n type: DangerousChangeType.OPTIONAL_ARG_ADDED,\n description: `An optional argument ${newArg} was added.`,\n });\n }\n }\n\n return schemaChanges;\n}\n\nfunction isChangeSafeForObjectOrInterfaceField(\n oldType: GraphQLType,\n newType: GraphQLType,\n): boolean {\n if (isListType(oldType)) {\n return (\n // if they're both lists, make sure the underlying types are compatible\n (isListType(newType) &&\n isChangeSafeForObjectOrInterfaceField(\n oldType.ofType,\n newType.ofType,\n )) ||\n // moving from nullable to non-null of the same underlying type is safe\n (isNonNullType(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n );\n }\n\n if (isNonNullType(oldType)) {\n // if they're both non-null, make sure the underlying types are compatible\n return (\n isNonNullType(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType)\n );\n }\n\n return (\n // if they're both named types, see if their names are equivalent\n (isNamedType(newType) && oldType.name === newType.name) ||\n // moving from nullable to non-null of the same underlying type is safe\n (isNonNullType(newType) &&\n isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n );\n}\n\nfunction isChangeSafeForInputObjectFieldOrFieldArg(\n oldType: GraphQLType,\n newType: GraphQLType,\n): boolean {\n if (isListType(oldType)) {\n // if they're both lists, make sure the underlying types are compatible\n return (\n isListType(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType)\n );\n }\n\n if (isNonNullType(oldType)) {\n return (\n // if they're both non-null, make sure the underlying types are\n // compatible\n (isNonNullType(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(\n oldType.ofType,\n newType.ofType,\n )) ||\n // moving from non-null to nullable of the same underlying type is safe\n (!isNonNullType(newType) &&\n isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType))\n );\n }\n\n // if they're both named types, see if their names are equivalent\n return isNamedType(newType) && oldType.name === newType.name;\n}\n\nfunction typeKindName(type: GraphQLNamedType): string {\n if (isScalarType(type)) {\n return 'a Scalar type';\n }\n if (isObjectType(type)) {\n return 'an Object type';\n }\n if (isInterfaceType(type)) {\n return 'an Interface type';\n }\n if (isUnionType(type)) {\n return 'a Union type';\n }\n if (isEnumType(type)) {\n return 'an Enum type';\n }\n if (isInputObjectType(type)) {\n return 'an Input 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\n// Since we looking only for client's observable changes we should\n// compare default values in the same representation as they are\n// represented inside introspection.\nfunction getDefaultValue(\n argOrInputField: GraphQLArgument | GraphQLInputField,\n): string | undefined {\n const ast = getDefaultValueAST(argOrInputField);\n if (ast) {\n return print(sortValueNode(ast));\n }\n}\n\nfunction diff<T extends { name: string }>(\n oldArray: ReadonlyArray<T>,\n newArray: ReadonlyArray<T>,\n): {\n added: ReadonlyArray<T>;\n removed: ReadonlyArray<T>;\n persisted: ReadonlyArray<[T, T]>;\n} {\n const added: Array<T> = [];\n const removed: Array<T> = [];\n const persisted: Array<[T, T]> = [];\n\n const oldMap = keyMap(oldArray, ({ name }) => name);\n const newMap = keyMap(newArray, ({ name }) => name);\n\n for (const oldItem of oldArray) {\n const newItem = newMap[oldItem.name];\n if (newItem === undefined) {\n removed.push(oldItem);\n } else {\n persisted.push([oldItem, newItem]);\n }\n }\n\n for (const newItem of newArray) {\n if (oldMap[newItem.name] === undefined) {\n added.push(newItem);\n }\n }\n\n return { added, persisted, removed };\n}\n"]}
|
|
@@ -515,9 +515,7 @@ function typeKindName(type) {
|
|
|
515
515
|
}
|
|
516
516
|
if (isInputObjectType(type)) {
|
|
517
517
|
return 'an Input type';
|
|
518
|
-
|
|
519
|
-
// slight swc source mapping error (at least as compared to ts-node without swc)
|
|
520
|
-
/* c8 ignore next 4 */
|
|
518
|
+
/* node:coverage ignore next 4 */
|
|
521
519
|
}
|
|
522
520
|
// Not reachable, all possible types have been considered.
|
|
523
521
|
invariant(false, 'Unexpected type: ' + inspect(type));
|