graphql 0.0.1-test.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/LICENSE +21 -0
- package/NotSupportedTSVersion.d.ts +1 -0
- package/README.md +158 -0
- package/error/GraphQLError.d.ts +142 -0
- package/error/GraphQLError.js +267 -0
- package/error/GraphQLError.mjs +253 -0
- package/error/index.d.ts +7 -0
- package/error/index.js +41 -0
- package/error/index.mjs +3 -0
- package/error/locatedError.d.ts +13 -0
- package/error/locatedError.js +40 -0
- package/error/locatedError.mjs +32 -0
- package/error/syntaxError.d.ts +11 -0
- package/error/syntaxError.js +21 -0
- package/error/syntaxError.mjs +11 -0
- package/execution/collectFields.d.ts +45 -0
- package/execution/collectFields.js +229 -0
- package/execution/collectFields.mjs +213 -0
- package/execution/execute.d.ts +185 -0
- package/execution/execute.js +1016 -0
- package/execution/execute.mjs +988 -0
- package/execution/index.d.ts +14 -0
- package/execution/index.js +67 -0
- package/execution/index.mjs +9 -0
- package/execution/mapAsyncIterator.d.ts +9 -0
- package/execution/mapAsyncIterator.js +68 -0
- package/execution/mapAsyncIterator.mjs +61 -0
- package/execution/subscribe.d.ts +68 -0
- package/execution/subscribe.js +261 -0
- package/execution/subscribe.mjs +239 -0
- package/execution/values.d.ts +81 -0
- package/execution/values.js +292 -0
- package/execution/values.mjs +255 -0
- package/graphql.d.ts +67 -0
- package/graphql.js +96 -0
- package/graphql.mjs +122 -0
- package/index.d.ts +411 -0
- package/index.js +1263 -0
- package/index.mjs +254 -0
- package/jsutils/Maybe.d.ts +2 -0
- package/jsutils/Maybe.js +5 -0
- package/jsutils/Maybe.mjs +1 -0
- package/jsutils/ObjMap.d.ts +16 -0
- package/jsutils/ObjMap.js +5 -0
- package/jsutils/ObjMap.mjs +1 -0
- package/jsutils/Path.d.ts +20 -0
- package/jsutils/Path.js +33 -0
- package/jsutils/Path.mjs +25 -0
- package/jsutils/PromiseOrValue.d.ts +1 -0
- package/jsutils/PromiseOrValue.js +5 -0
- package/jsutils/PromiseOrValue.mjs +1 -0
- package/jsutils/devAssert.d.ts +1 -0
- package/jsutils/devAssert.js +14 -0
- package/jsutils/devAssert.mjs +7 -0
- package/jsutils/didYouMean.d.ts +8 -0
- package/jsutils/didYouMean.js +38 -0
- package/jsutils/didYouMean.mjs +32 -0
- package/jsutils/groupBy.d.ts +7 -0
- package/jsutils/groupBy.js +26 -0
- package/jsutils/groupBy.mjs +19 -0
- package/jsutils/identityFunc.d.ts +4 -0
- package/jsutils/identityFunc.js +13 -0
- package/jsutils/identityFunc.mjs +6 -0
- package/jsutils/inspect.d.ts +4 -0
- package/jsutils/inspect.js +121 -0
- package/jsutils/inspect.mjs +115 -0
- package/jsutils/instanceOf.d.ts +16 -0
- package/jsutils/instanceOf.js +60 -0
- package/jsutils/instanceOf.mjs +52 -0
- package/jsutils/invariant.d.ts +4 -0
- package/jsutils/invariant.js +16 -0
- package/jsutils/invariant.mjs +9 -0
- package/jsutils/isAsyncIterable.d.ts +7 -0
- package/jsutils/isAsyncIterable.js +18 -0
- package/jsutils/isAsyncIterable.mjs +11 -0
- package/jsutils/isIterableObject.d.ts +20 -0
- package/jsutils/isIterableObject.js +32 -0
- package/jsutils/isIterableObject.mjs +25 -0
- package/jsutils/isObjectLike.d.ts +7 -0
- package/jsutils/isObjectLike.js +14 -0
- package/jsutils/isObjectLike.mjs +7 -0
- package/jsutils/isPromise.d.ts +5 -0
- package/jsutils/isPromise.js +17 -0
- package/jsutils/isPromise.mjs +10 -0
- package/jsutils/keyMap.d.ts +32 -0
- package/jsutils/keyMap.js +43 -0
- package/jsutils/keyMap.mjs +36 -0
- package/jsutils/keyValMap.d.ts +23 -0
- package/jsutils/keyValMap.js +33 -0
- package/jsutils/keyValMap.mjs +26 -0
- package/jsutils/mapValue.d.ts +9 -0
- package/jsutils/mapValue.js +20 -0
- package/jsutils/mapValue.mjs +13 -0
- package/jsutils/memoize3.d.ts +9 -0
- package/jsutils/memoize3.js +41 -0
- package/jsutils/memoize3.mjs +34 -0
- package/jsutils/naturalCompare.d.ts +8 -0
- package/jsutils/naturalCompare.js +69 -0
- package/jsutils/naturalCompare.mjs +61 -0
- package/jsutils/printPathArray.d.ts +6 -0
- package/jsutils/printPathArray.js +17 -0
- package/jsutils/printPathArray.mjs +10 -0
- package/jsutils/promiseForObject.d.ts +11 -0
- package/jsutils/promiseForObject.js +25 -0
- package/jsutils/promiseForObject.mjs +18 -0
- package/jsutils/promiseReduce.d.ts +13 -0
- package/jsutils/promiseReduce.js +27 -0
- package/jsutils/promiseReduce.mjs +20 -0
- package/jsutils/suggestionList.d.ts +8 -0
- package/jsutils/suggestionList.js +139 -0
- package/jsutils/suggestionList.mjs +130 -0
- package/jsutils/toError.d.ts +4 -0
- package/jsutils/toError.js +25 -0
- package/jsutils/toError.mjs +18 -0
- package/jsutils/toObjMap.d.ts +5 -0
- package/jsutils/toObjMap.js +24 -0
- package/jsutils/toObjMap.mjs +17 -0
- package/language/ast.d.ts +536 -0
- package/language/ast.js +224 -0
- package/language/ast.mjs +206 -0
- package/language/blockString.d.ts +28 -0
- package/language/blockString.js +195 -0
- package/language/blockString.mjs +178 -0
- package/language/characterClasses.d.ts +47 -0
- package/language/characterClasses.js +75 -0
- package/language/characterClasses.mjs +64 -0
- package/language/directiveLocation.d.ts +32 -0
- package/language/directiveLocation.js +40 -0
- package/language/directiveLocation.mjs +31 -0
- package/language/index.d.ts +97 -0
- package/language/index.js +215 -0
- package/language/index.mjs +29 -0
- package/language/kinds.d.ts +65 -0
- package/language/kinds.js +64 -0
- package/language/kinds.mjs +55 -0
- package/language/lexer.d.ts +45 -0
- package/language/lexer.js +1006 -0
- package/language/lexer.mjs +902 -0
- package/language/location.d.ts +16 -0
- package/language/location.js +38 -0
- package/language/location.mjs +30 -0
- package/language/parser.d.ts +554 -0
- package/language/parser.js +1567 -0
- package/language/parser.mjs +1524 -0
- package/language/predicates.d.ts +33 -0
- package/language/predicates.js +109 -0
- package/language/predicates.mjs +81 -0
- package/language/printLocation.d.ts +14 -0
- package/language/printLocation.js +74 -0
- package/language/printLocation.mjs +66 -0
- package/language/printString.d.ts +5 -0
- package/language/printString.js +183 -0
- package/language/printString.mjs +176 -0
- package/language/printer.d.ts +6 -0
- package/language/printer.js +351 -0
- package/language/printer.mjs +339 -0
- package/language/source.d.ts +25 -0
- package/language/source.js +65 -0
- package/language/source.mjs +50 -0
- package/language/tokenKind.d.ts +34 -0
- package/language/tokenKind.js +44 -0
- package/language/tokenKind.mjs +35 -0
- package/language/visitor.d.ts +194 -0
- package/language/visitor.js +377 -0
- package/language/visitor.mjs +361 -0
- package/package.json +40 -0
- package/subscription/index.d.ts +19 -0
- package/subscription/index.js +19 -0
- package/subscription/index.mjs +19 -0
- package/type/assertName.d.ts +10 -0
- package/type/assertName.js +59 -0
- package/type/assertName.mjs +44 -0
- package/type/definition.d.ts +917 -0
- package/type/definition.js +1329 -0
- package/type/definition.mjs +1167 -0
- package/type/directives.d.ts +86 -0
- package/type/directives.js +224 -0
- package/type/directives.mjs +190 -0
- package/type/index.d.ts +150 -0
- package/type/index.js +547 -0
- package/type/index.mjs +103 -0
- package/type/introspection.d.ts +29 -0
- package/type/introspection.js +617 -0
- package/type/introspection.mjs +550 -0
- package/type/scalars.d.ts +19 -0
- package/type/scalars.js +359 -0
- package/type/scalars.mjs +299 -0
- package/type/schema.d.ts +170 -0
- package/type/schema.js +402 -0
- package/type/schema.mjs +381 -0
- package/type/validate.d.ts +17 -0
- package/type/validate.js +672 -0
- package/type/validate.mjs +647 -0
- package/utilities/TypeInfo.d.ts +67 -0
- package/utilities/TypeInfo.js +418 -0
- package/utilities/TypeInfo.mjs +395 -0
- package/utilities/assertValidName.d.ts +13 -0
- package/utilities/assertValidName.js +51 -0
- package/utilities/assertValidName.mjs +40 -0
- package/utilities/astFromValue.d.ts +28 -0
- package/utilities/astFromValue.js +190 -0
- package/utilities/astFromValue.mjs +177 -0
- package/utilities/buildASTSchema.d.ts +35 -0
- package/utilities/buildASTSchema.js +115 -0
- package/utilities/buildASTSchema.mjs +97 -0
- package/utilities/buildClientSchema.d.ts +19 -0
- package/utilities/buildClientSchema.js +386 -0
- package/utilities/buildClientSchema.mjs +363 -0
- package/utilities/coerceInputValue.d.ts +16 -0
- package/utilities/coerceInputValue.js +191 -0
- package/utilities/coerceInputValue.mjs +172 -0
- package/utilities/concatAST.d.ts +9 -0
- package/utilities/concatAST.js +26 -0
- package/utilities/concatAST.mjs +19 -0
- package/utilities/extendSchema.d.ts +40 -0
- package/utilities/extendSchema.js +798 -0
- package/utilities/extendSchema.mjs +789 -0
- package/utilities/findBreakingChanges.d.ts +51 -0
- package/utilities/findBreakingChanges.js +547 -0
- package/utilities/findBreakingChanges.mjs +516 -0
- package/utilities/getIntrospectionQuery.d.ts +182 -0
- package/utilities/getIntrospectionQuery.js +134 -0
- package/utilities/getIntrospectionQuery.mjs +127 -0
- package/utilities/getOperationAST.d.ts +11 -0
- package/utilities/getOperationAST.js +43 -0
- package/utilities/getOperationAST.mjs +36 -0
- package/utilities/getOperationRootType.d.ts +15 -0
- package/utilities/getOperationRootType.js +59 -0
- package/utilities/getOperationRootType.mjs +52 -0
- package/utilities/index.d.ts +61 -0
- package/utilities/index.js +233 -0
- package/utilities/index.mjs +55 -0
- package/utilities/introspectionFromSchema.d.ts +18 -0
- package/utilities/introspectionFromSchema.js +42 -0
- package/utilities/introspectionFromSchema.mjs +30 -0
- package/utilities/lexicographicSortSchema.d.ts +9 -0
- package/utilities/lexicographicSortSchema.js +177 -0
- package/utilities/lexicographicSortSchema.mjs +172 -0
- package/utilities/printSchema.d.ts +5 -0
- package/utilities/printSchema.js +333 -0
- package/utilities/printSchema.mjs +309 -0
- package/utilities/separateOperations.d.ts +11 -0
- package/utilities/separateOperations.js +88 -0
- package/utilities/separateOperations.mjs +80 -0
- package/utilities/sortValueNode.d.ts +9 -0
- package/utilities/sortValueNode.js +47 -0
- package/utilities/sortValueNode.mjs +39 -0
- package/utilities/stripIgnoredCharacters.d.ts +62 -0
- package/utilities/stripIgnoredCharacters.js +121 -0
- package/utilities/stripIgnoredCharacters.mjs +104 -0
- package/utilities/typeComparators.d.ts +32 -0
- package/utilities/typeComparators.js +116 -0
- package/utilities/typeComparators.mjs +106 -0
- package/utilities/typeFromAST.d.ts +32 -0
- package/utilities/typeFromAST.js +27 -0
- package/utilities/typeFromAST.mjs +18 -0
- package/utilities/typedQueryDocumentNode.d.ts +22 -0
- package/utilities/typedQueryDocumentNode.js +5 -0
- package/utilities/typedQueryDocumentNode.mjs +1 -0
- package/utilities/valueFromAST.d.ts +29 -0
- package/utilities/valueFromAST.js +185 -0
- package/utilities/valueFromAST.mjs +172 -0
- package/utilities/valueFromASTUntyped.d.ts +23 -0
- package/utilities/valueFromASTUntyped.js +61 -0
- package/utilities/valueFromASTUntyped.mjs +53 -0
- package/validation/ValidationContext.d.ts +95 -0
- package/validation/ValidationContext.js +232 -0
- package/validation/ValidationContext.mjs +212 -0
- package/validation/index.d.ts +40 -0
- package/validation/index.js +317 -0
- package/validation/index.mjs +68 -0
- package/validation/rules/ExecutableDefinitionsRule.d.ts +13 -0
- package/validation/rules/ExecutableDefinitionsRule.js +44 -0
- package/validation/rules/ExecutableDefinitionsRule.mjs +35 -0
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +13 -0
- package/validation/rules/FieldsOnCorrectTypeRule.js +143 -0
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +125 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +14 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.js +65 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs +49 -0
- package/validation/rules/KnownArgumentNamesRule.d.ts +23 -0
- package/validation/rules/KnownArgumentNamesRule.js +116 -0
- package/validation/rules/KnownArgumentNamesRule.mjs +98 -0
- package/validation/rules/KnownDirectivesRule.d.ts +16 -0
- package/validation/rules/KnownDirectivesRule.js +163 -0
- package/validation/rules/KnownDirectivesRule.mjs +146 -0
- package/validation/rules/KnownFragmentNamesRule.d.ts +13 -0
- package/validation/rules/KnownFragmentNamesRule.js +34 -0
- package/validation/rules/KnownFragmentNamesRule.mjs +24 -0
- package/validation/rules/KnownTypeNamesRule.d.ts +16 -0
- package/validation/rules/KnownTypeNamesRule.js +87 -0
- package/validation/rules/KnownTypeNamesRule.mjs +75 -0
- package/validation/rules/LoneAnonymousOperationRule.d.ts +13 -0
- package/validation/rules/LoneAnonymousOperationRule.js +40 -0
- package/validation/rules/LoneAnonymousOperationRule.mjs +32 -0
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +10 -0
- package/validation/rules/LoneSchemaDefinitionRule.js +63 -0
- package/validation/rules/LoneSchemaDefinitionRule.mjs +53 -0
- package/validation/rules/NoFragmentCyclesRule.d.ts +13 -0
- package/validation/rules/NoFragmentCyclesRule.js +83 -0
- package/validation/rules/NoFragmentCyclesRule.mjs +76 -0
- package/validation/rules/NoUndefinedVariablesRule.d.ts +13 -0
- package/validation/rules/NoUndefinedVariablesRule.js +50 -0
- package/validation/rules/NoUndefinedVariablesRule.mjs +43 -0
- package/validation/rules/NoUnusedFragmentsRule.d.ts +13 -0
- package/validation/rules/NoUnusedFragmentsRule.js +59 -0
- package/validation/rules/NoUnusedFragmentsRule.mjs +52 -0
- package/validation/rules/NoUnusedVariablesRule.d.ts +13 -0
- package/validation/rules/NoUnusedVariablesRule.js +55 -0
- package/validation/rules/NoUnusedVariablesRule.mjs +48 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule-old.js +805 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule-old.mjs +788 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +14 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +805 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +788 -0
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +12 -0
- package/validation/rules/PossibleFragmentSpreadsRule.js +91 -0
- package/validation/rules/PossibleFragmentSpreadsRule.mjs +69 -0
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +10 -0
- package/validation/rules/PossibleTypeExtensionsRule.js +167 -0
- package/validation/rules/PossibleTypeExtensionsRule.mjs +147 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +20 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.js +158 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs +138 -0
- package/validation/rules/ScalarLeafsRule.d.ts +9 -0
- package/validation/rules/ScalarLeafsRule.js +51 -0
- package/validation/rules/ScalarLeafsRule.mjs +42 -0
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +13 -0
- package/validation/rules/SingleFieldSubscriptionsRule.js +82 -0
- package/validation/rules/SingleFieldSubscriptionsRule.mjs +73 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +11 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +90 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +79 -0
- package/validation/rules/UniqueArgumentNamesRule.d.ts +13 -0
- package/validation/rules/UniqueArgumentNamesRule.js +53 -0
- package/validation/rules/UniqueArgumentNamesRule.mjs +42 -0
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +10 -0
- package/validation/rules/UniqueDirectiveNamesRule.js +50 -0
- package/validation/rules/UniqueDirectiveNamesRule.mjs +43 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +16 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.js +93 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +83 -0
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +10 -0
- package/validation/rules/UniqueEnumValueNamesRule.js +71 -0
- package/validation/rules/UniqueEnumValueNamesRule.mjs +60 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +10 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +83 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +75 -0
- package/validation/rules/UniqueFragmentNamesRule.d.ts +12 -0
- package/validation/rules/UniqueFragmentNamesRule.js +39 -0
- package/validation/rules/UniqueFragmentNamesRule.mjs +32 -0
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +13 -0
- package/validation/rules/UniqueInputFieldNamesRule.js +52 -0
- package/validation/rules/UniqueInputFieldNamesRule.mjs +44 -0
- package/validation/rules/UniqueOperationNamesRule.d.ts +12 -0
- package/validation/rules/UniqueOperationNamesRule.js +41 -0
- package/validation/rules/UniqueOperationNamesRule.mjs +34 -0
- package/validation/rules/UniqueOperationTypesRule.d.ts +10 -0
- package/validation/rules/UniqueOperationTypesRule.js +67 -0
- package/validation/rules/UniqueOperationTypesRule.mjs +60 -0
- package/validation/rules/UniqueTypeNamesRule.d.ts +10 -0
- package/validation/rules/UniqueTypeNamesRule.js +53 -0
- package/validation/rules/UniqueTypeNamesRule.mjs +46 -0
- package/validation/rules/UniqueVariableNamesRule.d.ts +10 -0
- package/validation/rules/UniqueVariableNamesRule.js +47 -0
- package/validation/rules/UniqueVariableNamesRule.mjs +39 -0
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +13 -0
- package/validation/rules/ValuesOfCorrectTypeRule.js +183 -0
- package/validation/rules/ValuesOfCorrectTypeRule.mjs +164 -0
- package/validation/rules/VariablesAreInputTypesRule.d.ts +13 -0
- package/validation/rules/VariablesAreInputTypesRule.js +44 -0
- package/validation/rules/VariablesAreInputTypesRule.mjs +31 -0
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +12 -0
- package/validation/rules/VariablesInAllowedPositionRule.js +114 -0
- package/validation/rules/VariablesInAllowedPositionRule.mjs +95 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +15 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js +121 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +107 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +15 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +39 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +30 -0
- package/validation/specifiedRules.d.ts +12 -0
- package/validation/specifiedRules.js +160 -0
- package/validation/specifiedRules.mjs +123 -0
- package/validation/validate.d.ts +61 -0
- package/validation/validate.js +151 -0
- package/validation/validate.mjs +133 -0
- package/version.d.ts +13 -0
- package/version.js +25 -0
- package/version.mjs +17 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { GraphQLSchema } from '../type/schema';
|
|
2
|
+
export declare enum BreakingChangeType {
|
|
3
|
+
TYPE_REMOVED = 'TYPE_REMOVED',
|
|
4
|
+
TYPE_CHANGED_KIND = 'TYPE_CHANGED_KIND',
|
|
5
|
+
TYPE_REMOVED_FROM_UNION = 'TYPE_REMOVED_FROM_UNION',
|
|
6
|
+
VALUE_REMOVED_FROM_ENUM = 'VALUE_REMOVED_FROM_ENUM',
|
|
7
|
+
REQUIRED_INPUT_FIELD_ADDED = 'REQUIRED_INPUT_FIELD_ADDED',
|
|
8
|
+
IMPLEMENTED_INTERFACE_REMOVED = 'IMPLEMENTED_INTERFACE_REMOVED',
|
|
9
|
+
FIELD_REMOVED = 'FIELD_REMOVED',
|
|
10
|
+
FIELD_CHANGED_KIND = 'FIELD_CHANGED_KIND',
|
|
11
|
+
REQUIRED_ARG_ADDED = 'REQUIRED_ARG_ADDED',
|
|
12
|
+
ARG_REMOVED = 'ARG_REMOVED',
|
|
13
|
+
ARG_CHANGED_KIND = 'ARG_CHANGED_KIND',
|
|
14
|
+
DIRECTIVE_REMOVED = 'DIRECTIVE_REMOVED',
|
|
15
|
+
DIRECTIVE_ARG_REMOVED = 'DIRECTIVE_ARG_REMOVED',
|
|
16
|
+
REQUIRED_DIRECTIVE_ARG_ADDED = 'REQUIRED_DIRECTIVE_ARG_ADDED',
|
|
17
|
+
DIRECTIVE_REPEATABLE_REMOVED = 'DIRECTIVE_REPEATABLE_REMOVED',
|
|
18
|
+
DIRECTIVE_LOCATION_REMOVED = 'DIRECTIVE_LOCATION_REMOVED',
|
|
19
|
+
}
|
|
20
|
+
export declare enum DangerousChangeType {
|
|
21
|
+
VALUE_ADDED_TO_ENUM = 'VALUE_ADDED_TO_ENUM',
|
|
22
|
+
TYPE_ADDED_TO_UNION = 'TYPE_ADDED_TO_UNION',
|
|
23
|
+
OPTIONAL_INPUT_FIELD_ADDED = 'OPTIONAL_INPUT_FIELD_ADDED',
|
|
24
|
+
OPTIONAL_ARG_ADDED = 'OPTIONAL_ARG_ADDED',
|
|
25
|
+
IMPLEMENTED_INTERFACE_ADDED = 'IMPLEMENTED_INTERFACE_ADDED',
|
|
26
|
+
ARG_DEFAULT_VALUE_CHANGE = 'ARG_DEFAULT_VALUE_CHANGE',
|
|
27
|
+
}
|
|
28
|
+
export interface BreakingChange {
|
|
29
|
+
type: BreakingChangeType;
|
|
30
|
+
description: string;
|
|
31
|
+
}
|
|
32
|
+
export interface DangerousChange {
|
|
33
|
+
type: DangerousChangeType;
|
|
34
|
+
description: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Given two schemas, returns an Array containing descriptions of all the types
|
|
38
|
+
* of breaking changes covered by the other functions down below.
|
|
39
|
+
*/
|
|
40
|
+
export declare function findBreakingChanges(
|
|
41
|
+
oldSchema: GraphQLSchema,
|
|
42
|
+
newSchema: GraphQLSchema,
|
|
43
|
+
): Array<BreakingChange>;
|
|
44
|
+
/**
|
|
45
|
+
* Given two schemas, returns an Array containing descriptions of all the types
|
|
46
|
+
* of potentially dangerous changes covered by the other functions down below.
|
|
47
|
+
*/
|
|
48
|
+
export declare function findDangerousChanges(
|
|
49
|
+
oldSchema: GraphQLSchema,
|
|
50
|
+
newSchema: GraphQLSchema,
|
|
51
|
+
): Array<DangerousChange>;
|
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.DangerousChangeType = exports.BreakingChangeType = void 0;
|
|
7
|
+
exports.findBreakingChanges = findBreakingChanges;
|
|
8
|
+
exports.findDangerousChanges = findDangerousChanges;
|
|
9
|
+
|
|
10
|
+
var _inspect = require('../jsutils/inspect.js');
|
|
11
|
+
|
|
12
|
+
var _invariant = require('../jsutils/invariant.js');
|
|
13
|
+
|
|
14
|
+
var _keyMap = require('../jsutils/keyMap.js');
|
|
15
|
+
|
|
16
|
+
var _printer = require('../language/printer.js');
|
|
17
|
+
|
|
18
|
+
var _definition = require('../type/definition.js');
|
|
19
|
+
|
|
20
|
+
var _scalars = require('../type/scalars.js');
|
|
21
|
+
|
|
22
|
+
var _astFromValue = require('./astFromValue.js');
|
|
23
|
+
|
|
24
|
+
var _sortValueNode = require('./sortValueNode.js');
|
|
25
|
+
|
|
26
|
+
let BreakingChangeType;
|
|
27
|
+
exports.BreakingChangeType = BreakingChangeType;
|
|
28
|
+
|
|
29
|
+
(function (BreakingChangeType) {
|
|
30
|
+
BreakingChangeType['TYPE_REMOVED'] = 'TYPE_REMOVED';
|
|
31
|
+
BreakingChangeType['TYPE_CHANGED_KIND'] = 'TYPE_CHANGED_KIND';
|
|
32
|
+
BreakingChangeType['TYPE_REMOVED_FROM_UNION'] = 'TYPE_REMOVED_FROM_UNION';
|
|
33
|
+
BreakingChangeType['VALUE_REMOVED_FROM_ENUM'] = 'VALUE_REMOVED_FROM_ENUM';
|
|
34
|
+
BreakingChangeType['REQUIRED_INPUT_FIELD_ADDED'] =
|
|
35
|
+
'REQUIRED_INPUT_FIELD_ADDED';
|
|
36
|
+
BreakingChangeType['IMPLEMENTED_INTERFACE_REMOVED'] =
|
|
37
|
+
'IMPLEMENTED_INTERFACE_REMOVED';
|
|
38
|
+
BreakingChangeType['FIELD_REMOVED'] = 'FIELD_REMOVED';
|
|
39
|
+
BreakingChangeType['FIELD_CHANGED_KIND'] = 'FIELD_CHANGED_KIND';
|
|
40
|
+
BreakingChangeType['REQUIRED_ARG_ADDED'] = 'REQUIRED_ARG_ADDED';
|
|
41
|
+
BreakingChangeType['ARG_REMOVED'] = 'ARG_REMOVED';
|
|
42
|
+
BreakingChangeType['ARG_CHANGED_KIND'] = 'ARG_CHANGED_KIND';
|
|
43
|
+
BreakingChangeType['DIRECTIVE_REMOVED'] = 'DIRECTIVE_REMOVED';
|
|
44
|
+
BreakingChangeType['DIRECTIVE_ARG_REMOVED'] = 'DIRECTIVE_ARG_REMOVED';
|
|
45
|
+
BreakingChangeType['REQUIRED_DIRECTIVE_ARG_ADDED'] =
|
|
46
|
+
'REQUIRED_DIRECTIVE_ARG_ADDED';
|
|
47
|
+
BreakingChangeType['DIRECTIVE_REPEATABLE_REMOVED'] =
|
|
48
|
+
'DIRECTIVE_REPEATABLE_REMOVED';
|
|
49
|
+
BreakingChangeType['DIRECTIVE_LOCATION_REMOVED'] =
|
|
50
|
+
'DIRECTIVE_LOCATION_REMOVED';
|
|
51
|
+
})(
|
|
52
|
+
BreakingChangeType || (exports.BreakingChangeType = BreakingChangeType = {}),
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
let DangerousChangeType;
|
|
56
|
+
exports.DangerousChangeType = DangerousChangeType;
|
|
57
|
+
|
|
58
|
+
(function (DangerousChangeType) {
|
|
59
|
+
DangerousChangeType['VALUE_ADDED_TO_ENUM'] = 'VALUE_ADDED_TO_ENUM';
|
|
60
|
+
DangerousChangeType['TYPE_ADDED_TO_UNION'] = 'TYPE_ADDED_TO_UNION';
|
|
61
|
+
DangerousChangeType['OPTIONAL_INPUT_FIELD_ADDED'] =
|
|
62
|
+
'OPTIONAL_INPUT_FIELD_ADDED';
|
|
63
|
+
DangerousChangeType['OPTIONAL_ARG_ADDED'] = 'OPTIONAL_ARG_ADDED';
|
|
64
|
+
DangerousChangeType['IMPLEMENTED_INTERFACE_ADDED'] =
|
|
65
|
+
'IMPLEMENTED_INTERFACE_ADDED';
|
|
66
|
+
DangerousChangeType['ARG_DEFAULT_VALUE_CHANGE'] = 'ARG_DEFAULT_VALUE_CHANGE';
|
|
67
|
+
})(
|
|
68
|
+
DangerousChangeType ||
|
|
69
|
+
(exports.DangerousChangeType = DangerousChangeType = {}),
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Given two schemas, returns an Array containing descriptions of all the types
|
|
74
|
+
* of breaking changes covered by the other functions down below.
|
|
75
|
+
*/
|
|
76
|
+
function findBreakingChanges(oldSchema, newSchema) {
|
|
77
|
+
// @ts-expect-error
|
|
78
|
+
return findSchemaChanges(oldSchema, newSchema).filter(
|
|
79
|
+
(change) => change.type in BreakingChangeType,
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Given two schemas, returns an Array containing descriptions of all the types
|
|
84
|
+
* of potentially dangerous changes covered by the other functions down below.
|
|
85
|
+
*/
|
|
86
|
+
|
|
87
|
+
function findDangerousChanges(oldSchema, newSchema) {
|
|
88
|
+
// @ts-expect-error
|
|
89
|
+
return findSchemaChanges(oldSchema, newSchema).filter(
|
|
90
|
+
(change) => change.type in DangerousChangeType,
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function findSchemaChanges(oldSchema, newSchema) {
|
|
95
|
+
return [
|
|
96
|
+
...findTypeChanges(oldSchema, newSchema),
|
|
97
|
+
...findDirectiveChanges(oldSchema, newSchema),
|
|
98
|
+
];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function findDirectiveChanges(oldSchema, newSchema) {
|
|
102
|
+
const schemaChanges = [];
|
|
103
|
+
const directivesDiff = diff(
|
|
104
|
+
oldSchema.getDirectives(),
|
|
105
|
+
newSchema.getDirectives(),
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
for (const oldDirective of directivesDiff.removed) {
|
|
109
|
+
schemaChanges.push({
|
|
110
|
+
type: BreakingChangeType.DIRECTIVE_REMOVED,
|
|
111
|
+
description: `${oldDirective.name} was removed.`,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
for (const [oldDirective, newDirective] of directivesDiff.persisted) {
|
|
116
|
+
const argsDiff = diff(oldDirective.args, newDirective.args);
|
|
117
|
+
|
|
118
|
+
for (const newArg of argsDiff.added) {
|
|
119
|
+
if ((0, _definition.isRequiredArgument)(newArg)) {
|
|
120
|
+
schemaChanges.push({
|
|
121
|
+
type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,
|
|
122
|
+
description: `A required arg ${newArg.name} on directive ${oldDirective.name} was added.`,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
for (const oldArg of argsDiff.removed) {
|
|
128
|
+
schemaChanges.push({
|
|
129
|
+
type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,
|
|
130
|
+
description: `${oldArg.name} was removed from ${oldDirective.name}.`,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (oldDirective.isRepeatable && !newDirective.isRepeatable) {
|
|
135
|
+
schemaChanges.push({
|
|
136
|
+
type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,
|
|
137
|
+
description: `Repeatable flag was removed from ${oldDirective.name}.`,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
for (const location of oldDirective.locations) {
|
|
142
|
+
if (!newDirective.locations.includes(location)) {
|
|
143
|
+
schemaChanges.push({
|
|
144
|
+
type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,
|
|
145
|
+
description: `${location} was removed from ${oldDirective.name}.`,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return schemaChanges;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function findTypeChanges(oldSchema, newSchema) {
|
|
155
|
+
const schemaChanges = [];
|
|
156
|
+
const typesDiff = diff(
|
|
157
|
+
Object.values(oldSchema.getTypeMap()),
|
|
158
|
+
Object.values(newSchema.getTypeMap()),
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
for (const oldType of typesDiff.removed) {
|
|
162
|
+
schemaChanges.push({
|
|
163
|
+
type: BreakingChangeType.TYPE_REMOVED,
|
|
164
|
+
description: (0, _scalars.isSpecifiedScalarType)(oldType)
|
|
165
|
+
? `Standard scalar ${oldType.name} was removed because it is not referenced anymore.`
|
|
166
|
+
: `${oldType.name} was removed.`,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
for (const [oldType, newType] of typesDiff.persisted) {
|
|
171
|
+
if (
|
|
172
|
+
(0, _definition.isEnumType)(oldType) &&
|
|
173
|
+
(0, _definition.isEnumType)(newType)
|
|
174
|
+
) {
|
|
175
|
+
schemaChanges.push(...findEnumTypeChanges(oldType, newType));
|
|
176
|
+
} else if (
|
|
177
|
+
(0, _definition.isUnionType)(oldType) &&
|
|
178
|
+
(0, _definition.isUnionType)(newType)
|
|
179
|
+
) {
|
|
180
|
+
schemaChanges.push(...findUnionTypeChanges(oldType, newType));
|
|
181
|
+
} else if (
|
|
182
|
+
(0, _definition.isInputObjectType)(oldType) &&
|
|
183
|
+
(0, _definition.isInputObjectType)(newType)
|
|
184
|
+
) {
|
|
185
|
+
schemaChanges.push(...findInputObjectTypeChanges(oldType, newType));
|
|
186
|
+
} else if (
|
|
187
|
+
(0, _definition.isObjectType)(oldType) &&
|
|
188
|
+
(0, _definition.isObjectType)(newType)
|
|
189
|
+
) {
|
|
190
|
+
schemaChanges.push(
|
|
191
|
+
...findFieldChanges(oldType, newType),
|
|
192
|
+
...findImplementedInterfacesChanges(oldType, newType),
|
|
193
|
+
);
|
|
194
|
+
} else if (
|
|
195
|
+
(0, _definition.isInterfaceType)(oldType) &&
|
|
196
|
+
(0, _definition.isInterfaceType)(newType)
|
|
197
|
+
) {
|
|
198
|
+
schemaChanges.push(
|
|
199
|
+
...findFieldChanges(oldType, newType),
|
|
200
|
+
...findImplementedInterfacesChanges(oldType, newType),
|
|
201
|
+
);
|
|
202
|
+
} else if (oldType.constructor !== newType.constructor) {
|
|
203
|
+
schemaChanges.push({
|
|
204
|
+
type: BreakingChangeType.TYPE_CHANGED_KIND,
|
|
205
|
+
description:
|
|
206
|
+
`${oldType.name} changed from ` +
|
|
207
|
+
`${typeKindName(oldType)} to ${typeKindName(newType)}.`,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return schemaChanges;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function findInputObjectTypeChanges(oldType, newType) {
|
|
216
|
+
const schemaChanges = [];
|
|
217
|
+
const fieldsDiff = diff(
|
|
218
|
+
Object.values(oldType.getFields()),
|
|
219
|
+
Object.values(newType.getFields()),
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
for (const newField of fieldsDiff.added) {
|
|
223
|
+
if ((0, _definition.isRequiredInputField)(newField)) {
|
|
224
|
+
schemaChanges.push({
|
|
225
|
+
type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,
|
|
226
|
+
description: `A required field ${newField.name} on input type ${oldType.name} was added.`,
|
|
227
|
+
});
|
|
228
|
+
} else {
|
|
229
|
+
schemaChanges.push({
|
|
230
|
+
type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,
|
|
231
|
+
description: `An optional field ${newField.name} on input type ${oldType.name} was added.`,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
for (const oldField of fieldsDiff.removed) {
|
|
237
|
+
schemaChanges.push({
|
|
238
|
+
type: BreakingChangeType.FIELD_REMOVED,
|
|
239
|
+
description: `${oldType.name}.${oldField.name} was removed.`,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
for (const [oldField, newField] of fieldsDiff.persisted) {
|
|
244
|
+
const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(
|
|
245
|
+
oldField.type,
|
|
246
|
+
newField.type,
|
|
247
|
+
);
|
|
248
|
+
|
|
249
|
+
if (!isSafe) {
|
|
250
|
+
schemaChanges.push({
|
|
251
|
+
type: BreakingChangeType.FIELD_CHANGED_KIND,
|
|
252
|
+
description:
|
|
253
|
+
`${oldType.name}.${oldField.name} changed type from ` +
|
|
254
|
+
`${String(oldField.type)} to ${String(newField.type)}.`,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
return schemaChanges;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function findUnionTypeChanges(oldType, newType) {
|
|
263
|
+
const schemaChanges = [];
|
|
264
|
+
const possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());
|
|
265
|
+
|
|
266
|
+
for (const newPossibleType of possibleTypesDiff.added) {
|
|
267
|
+
schemaChanges.push({
|
|
268
|
+
type: DangerousChangeType.TYPE_ADDED_TO_UNION,
|
|
269
|
+
description: `${newPossibleType.name} was added to union type ${oldType.name}.`,
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
for (const oldPossibleType of possibleTypesDiff.removed) {
|
|
274
|
+
schemaChanges.push({
|
|
275
|
+
type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,
|
|
276
|
+
description: `${oldPossibleType.name} was removed from union type ${oldType.name}.`,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
return schemaChanges;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
function findEnumTypeChanges(oldType, newType) {
|
|
284
|
+
const schemaChanges = [];
|
|
285
|
+
const valuesDiff = diff(oldType.getValues(), newType.getValues());
|
|
286
|
+
|
|
287
|
+
for (const newValue of valuesDiff.added) {
|
|
288
|
+
schemaChanges.push({
|
|
289
|
+
type: DangerousChangeType.VALUE_ADDED_TO_ENUM,
|
|
290
|
+
description: `${newValue.name} was added to enum type ${oldType.name}.`,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
for (const oldValue of valuesDiff.removed) {
|
|
295
|
+
schemaChanges.push({
|
|
296
|
+
type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,
|
|
297
|
+
description: `${oldValue.name} was removed from enum type ${oldType.name}.`,
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
return schemaChanges;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
function findImplementedInterfacesChanges(oldType, newType) {
|
|
305
|
+
const schemaChanges = [];
|
|
306
|
+
const interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());
|
|
307
|
+
|
|
308
|
+
for (const newInterface of interfacesDiff.added) {
|
|
309
|
+
schemaChanges.push({
|
|
310
|
+
type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,
|
|
311
|
+
description: `${newInterface.name} added to interfaces implemented by ${oldType.name}.`,
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
for (const oldInterface of interfacesDiff.removed) {
|
|
316
|
+
schemaChanges.push({
|
|
317
|
+
type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,
|
|
318
|
+
description: `${oldType.name} no longer implements interface ${oldInterface.name}.`,
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
return schemaChanges;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
function findFieldChanges(oldType, newType) {
|
|
326
|
+
const schemaChanges = [];
|
|
327
|
+
const fieldsDiff = diff(
|
|
328
|
+
Object.values(oldType.getFields()),
|
|
329
|
+
Object.values(newType.getFields()),
|
|
330
|
+
);
|
|
331
|
+
|
|
332
|
+
for (const oldField of fieldsDiff.removed) {
|
|
333
|
+
schemaChanges.push({
|
|
334
|
+
type: BreakingChangeType.FIELD_REMOVED,
|
|
335
|
+
description: `${oldType.name}.${oldField.name} was removed.`,
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
for (const [oldField, newField] of fieldsDiff.persisted) {
|
|
340
|
+
schemaChanges.push(...findArgChanges(oldType, oldField, newField));
|
|
341
|
+
const isSafe = isChangeSafeForObjectOrInterfaceField(
|
|
342
|
+
oldField.type,
|
|
343
|
+
newField.type,
|
|
344
|
+
);
|
|
345
|
+
|
|
346
|
+
if (!isSafe) {
|
|
347
|
+
schemaChanges.push({
|
|
348
|
+
type: BreakingChangeType.FIELD_CHANGED_KIND,
|
|
349
|
+
description:
|
|
350
|
+
`${oldType.name}.${oldField.name} changed type from ` +
|
|
351
|
+
`${String(oldField.type)} to ${String(newField.type)}.`,
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
return schemaChanges;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
function findArgChanges(oldType, oldField, newField) {
|
|
360
|
+
const schemaChanges = [];
|
|
361
|
+
const argsDiff = diff(oldField.args, newField.args);
|
|
362
|
+
|
|
363
|
+
for (const oldArg of argsDiff.removed) {
|
|
364
|
+
schemaChanges.push({
|
|
365
|
+
type: BreakingChangeType.ARG_REMOVED,
|
|
366
|
+
description: `${oldType.name}.${oldField.name} arg ${oldArg.name} was removed.`,
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
for (const [oldArg, newArg] of argsDiff.persisted) {
|
|
371
|
+
const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(
|
|
372
|
+
oldArg.type,
|
|
373
|
+
newArg.type,
|
|
374
|
+
);
|
|
375
|
+
|
|
376
|
+
if (!isSafe) {
|
|
377
|
+
schemaChanges.push({
|
|
378
|
+
type: BreakingChangeType.ARG_CHANGED_KIND,
|
|
379
|
+
description:
|
|
380
|
+
`${oldType.name}.${oldField.name} arg ${oldArg.name} has changed type from ` +
|
|
381
|
+
`${String(oldArg.type)} to ${String(newArg.type)}.`,
|
|
382
|
+
});
|
|
383
|
+
} else if (oldArg.defaultValue !== undefined) {
|
|
384
|
+
if (newArg.defaultValue === undefined) {
|
|
385
|
+
schemaChanges.push({
|
|
386
|
+
type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,
|
|
387
|
+
description: `${oldType.name}.${oldField.name} arg ${oldArg.name} defaultValue was removed.`,
|
|
388
|
+
});
|
|
389
|
+
} else {
|
|
390
|
+
// Since we looking only for client's observable changes we should
|
|
391
|
+
// compare default values in the same representation as they are
|
|
392
|
+
// represented inside introspection.
|
|
393
|
+
const oldValueStr = stringifyValue(oldArg.defaultValue, oldArg.type);
|
|
394
|
+
const newValueStr = stringifyValue(newArg.defaultValue, newArg.type);
|
|
395
|
+
|
|
396
|
+
if (oldValueStr !== newValueStr) {
|
|
397
|
+
schemaChanges.push({
|
|
398
|
+
type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,
|
|
399
|
+
description: `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed defaultValue from ${oldValueStr} to ${newValueStr}.`,
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
for (const newArg of argsDiff.added) {
|
|
407
|
+
if ((0, _definition.isRequiredArgument)(newArg)) {
|
|
408
|
+
schemaChanges.push({
|
|
409
|
+
type: BreakingChangeType.REQUIRED_ARG_ADDED,
|
|
410
|
+
description: `A required arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,
|
|
411
|
+
});
|
|
412
|
+
} else {
|
|
413
|
+
schemaChanges.push({
|
|
414
|
+
type: DangerousChangeType.OPTIONAL_ARG_ADDED,
|
|
415
|
+
description: `An optional arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
return schemaChanges;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
function isChangeSafeForObjectOrInterfaceField(oldType, newType) {
|
|
424
|
+
if ((0, _definition.isListType)(oldType)) {
|
|
425
|
+
return (
|
|
426
|
+
// if they're both lists, make sure the underlying types are compatible
|
|
427
|
+
((0, _definition.isListType)(newType) &&
|
|
428
|
+
isChangeSafeForObjectOrInterfaceField(
|
|
429
|
+
oldType.ofType,
|
|
430
|
+
newType.ofType,
|
|
431
|
+
)) || // moving from nullable to non-null of the same underlying type is safe
|
|
432
|
+
((0, _definition.isNonNullType)(newType) &&
|
|
433
|
+
isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))
|
|
434
|
+
);
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
if ((0, _definition.isNonNullType)(oldType)) {
|
|
438
|
+
// if they're both non-null, make sure the underlying types are compatible
|
|
439
|
+
return (
|
|
440
|
+
(0, _definition.isNonNullType)(newType) &&
|
|
441
|
+
isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType)
|
|
442
|
+
);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
return (
|
|
446
|
+
// if they're both named types, see if their names are equivalent
|
|
447
|
+
((0, _definition.isNamedType)(newType) && oldType.name === newType.name) || // moving from nullable to non-null of the same underlying type is safe
|
|
448
|
+
((0, _definition.isNonNullType)(newType) &&
|
|
449
|
+
isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))
|
|
450
|
+
);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
function isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {
|
|
454
|
+
if ((0, _definition.isListType)(oldType)) {
|
|
455
|
+
// if they're both lists, make sure the underlying types are compatible
|
|
456
|
+
return (
|
|
457
|
+
(0, _definition.isListType)(newType) &&
|
|
458
|
+
isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType)
|
|
459
|
+
);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
if ((0, _definition.isNonNullType)(oldType)) {
|
|
463
|
+
return (
|
|
464
|
+
// if they're both non-null, make sure the underlying types are
|
|
465
|
+
// compatible
|
|
466
|
+
((0, _definition.isNonNullType)(newType) &&
|
|
467
|
+
isChangeSafeForInputObjectFieldOrFieldArg(
|
|
468
|
+
oldType.ofType,
|
|
469
|
+
newType.ofType,
|
|
470
|
+
)) || // moving from non-null to nullable of the same underlying type is safe
|
|
471
|
+
(!(0, _definition.isNonNullType)(newType) &&
|
|
472
|
+
isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType))
|
|
473
|
+
);
|
|
474
|
+
} // if they're both named types, see if their names are equivalent
|
|
475
|
+
|
|
476
|
+
return (0, _definition.isNamedType)(newType) && oldType.name === newType.name;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
function typeKindName(type) {
|
|
480
|
+
if ((0, _definition.isScalarType)(type)) {
|
|
481
|
+
return 'a Scalar type';
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
if ((0, _definition.isObjectType)(type)) {
|
|
485
|
+
return 'an Object type';
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
if ((0, _definition.isInterfaceType)(type)) {
|
|
489
|
+
return 'an Interface type';
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
if ((0, _definition.isUnionType)(type)) {
|
|
493
|
+
return 'a Union type';
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
if ((0, _definition.isEnumType)(type)) {
|
|
497
|
+
return 'an Enum type';
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
if ((0, _definition.isInputObjectType)(type)) {
|
|
501
|
+
return 'an Input type';
|
|
502
|
+
}
|
|
503
|
+
/* c8 ignore next 3 */
|
|
504
|
+
// Not reachable, all possible types have been considered.
|
|
505
|
+
|
|
506
|
+
false ||
|
|
507
|
+
(0, _invariant.invariant)(
|
|
508
|
+
false,
|
|
509
|
+
'Unexpected type: ' + (0, _inspect.inspect)(type),
|
|
510
|
+
);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
function stringifyValue(value, type) {
|
|
514
|
+
const ast = (0, _astFromValue.astFromValue)(value, type);
|
|
515
|
+
ast != null || (0, _invariant.invariant)(false);
|
|
516
|
+
return (0, _printer.print)((0, _sortValueNode.sortValueNode)(ast));
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
function diff(oldArray, newArray) {
|
|
520
|
+
const added = [];
|
|
521
|
+
const removed = [];
|
|
522
|
+
const persisted = [];
|
|
523
|
+
const oldMap = (0, _keyMap.keyMap)(oldArray, ({ name }) => name);
|
|
524
|
+
const newMap = (0, _keyMap.keyMap)(newArray, ({ name }) => name);
|
|
525
|
+
|
|
526
|
+
for (const oldItem of oldArray) {
|
|
527
|
+
const newItem = newMap[oldItem.name];
|
|
528
|
+
|
|
529
|
+
if (newItem === undefined) {
|
|
530
|
+
removed.push(oldItem);
|
|
531
|
+
} else {
|
|
532
|
+
persisted.push([oldItem, newItem]);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
for (const newItem of newArray) {
|
|
537
|
+
if (oldMap[newItem.name] === undefined) {
|
|
538
|
+
added.push(newItem);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
return {
|
|
543
|
+
added,
|
|
544
|
+
persisted,
|
|
545
|
+
removed,
|
|
546
|
+
};
|
|
547
|
+
}
|