graphql 17.0.1 → 17.0.2
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/package.json +1 -1
- package/utilities/findSchemaChanges.d.mts +2 -0
- package/utilities/findSchemaChanges.d.ts +2 -0
- package/utilities/findSchemaChanges.js +25 -0
- package/utilities/findSchemaChanges.js.map +1 -1
- package/utilities/findSchemaChanges.mjs +25 -0
- package/utilities/findSchemaChanges.mjs.map +1 -1
- package/utilities/mapSchemaConfig.js +1 -1
- package/utilities/mapSchemaConfig.js.map +1 -1
- package/utilities/mapSchemaConfig.mjs +1 -1
- package/utilities/mapSchemaConfig.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
package/package.json
CHANGED
|
@@ -29,6 +29,7 @@ export declare const DangerousChangeType: {
|
|
|
29
29
|
readonly OPTIONAL_ARG_ADDED: "OPTIONAL_ARG_ADDED";
|
|
30
30
|
readonly IMPLEMENTED_INTERFACE_ADDED: "IMPLEMENTED_INTERFACE_ADDED";
|
|
31
31
|
readonly ARG_DEFAULT_VALUE_CHANGE: "ARG_DEFAULT_VALUE_CHANGE";
|
|
32
|
+
readonly INPUT_FIELD_DEFAULT_VALUE_CHANGE: "INPUT_FIELD_DEFAULT_VALUE_CHANGE";
|
|
32
33
|
};
|
|
33
34
|
/** Categories of schema changes that may be dangerous for existing operations. */
|
|
34
35
|
export type DangerousChangeType = (typeof DangerousChangeType)[keyof typeof DangerousChangeType];
|
|
@@ -46,6 +47,7 @@ export declare const SafeChangeType: {
|
|
|
46
47
|
readonly FIELD_CHANGED_KIND_SAFE: "FIELD_CHANGED_KIND_SAFE";
|
|
47
48
|
readonly ARG_CHANGED_KIND_SAFE: "ARG_CHANGED_KIND_SAFE";
|
|
48
49
|
readonly ARG_DEFAULT_VALUE_ADDED: "ARG_DEFAULT_VALUE_ADDED";
|
|
50
|
+
readonly INPUT_FIELD_DEFAULT_VALUE_ADDED: "INPUT_FIELD_DEFAULT_VALUE_ADDED";
|
|
49
51
|
};
|
|
50
52
|
/** Categories of schema changes that are considered safe for existing operations. */
|
|
51
53
|
export type SafeChangeType = (typeof SafeChangeType)[keyof typeof SafeChangeType];
|
|
@@ -29,6 +29,7 @@ export declare const DangerousChangeType: {
|
|
|
29
29
|
readonly OPTIONAL_ARG_ADDED: "OPTIONAL_ARG_ADDED";
|
|
30
30
|
readonly IMPLEMENTED_INTERFACE_ADDED: "IMPLEMENTED_INTERFACE_ADDED";
|
|
31
31
|
readonly ARG_DEFAULT_VALUE_CHANGE: "ARG_DEFAULT_VALUE_CHANGE";
|
|
32
|
+
readonly INPUT_FIELD_DEFAULT_VALUE_CHANGE: "INPUT_FIELD_DEFAULT_VALUE_CHANGE";
|
|
32
33
|
};
|
|
33
34
|
/** Categories of schema changes that may be dangerous for existing operations. */
|
|
34
35
|
export type DangerousChangeType = (typeof DangerousChangeType)[keyof typeof DangerousChangeType];
|
|
@@ -46,6 +47,7 @@ export declare const SafeChangeType: {
|
|
|
46
47
|
readonly FIELD_CHANGED_KIND_SAFE: "FIELD_CHANGED_KIND_SAFE";
|
|
47
48
|
readonly ARG_CHANGED_KIND_SAFE: "ARG_CHANGED_KIND_SAFE";
|
|
48
49
|
readonly ARG_DEFAULT_VALUE_ADDED: "ARG_DEFAULT_VALUE_ADDED";
|
|
50
|
+
readonly INPUT_FIELD_DEFAULT_VALUE_ADDED: "INPUT_FIELD_DEFAULT_VALUE_ADDED";
|
|
49
51
|
};
|
|
50
52
|
/** Categories of schema changes that are considered safe for existing operations. */
|
|
51
53
|
export type SafeChangeType = (typeof SafeChangeType)[keyof typeof SafeChangeType];
|
|
@@ -37,6 +37,7 @@ exports.DangerousChangeType = {
|
|
|
37
37
|
OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED',
|
|
38
38
|
IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED',
|
|
39
39
|
ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE',
|
|
40
|
+
INPUT_FIELD_DEFAULT_VALUE_CHANGE: 'INPUT_FIELD_DEFAULT_VALUE_CHANGE',
|
|
40
41
|
};
|
|
41
42
|
exports.SafeChangeType = {
|
|
42
43
|
DESCRIPTION_CHANGED: 'DESCRIPTION_CHANGED',
|
|
@@ -51,6 +52,7 @@ exports.SafeChangeType = {
|
|
|
51
52
|
FIELD_CHANGED_KIND_SAFE: 'FIELD_CHANGED_KIND_SAFE',
|
|
52
53
|
ARG_CHANGED_KIND_SAFE: 'ARG_CHANGED_KIND_SAFE',
|
|
53
54
|
ARG_DEFAULT_VALUE_ADDED: 'ARG_DEFAULT_VALUE_ADDED',
|
|
55
|
+
INPUT_FIELD_DEFAULT_VALUE_ADDED: 'INPUT_FIELD_DEFAULT_VALUE_ADDED',
|
|
54
56
|
};
|
|
55
57
|
function findBreakingChanges(oldSchema, newSchema) {
|
|
56
58
|
return findSchemaChanges(oldSchema, newSchema).filter((change) => change.type in exports.BreakingChangeType);
|
|
@@ -257,12 +259,35 @@ function findInputObjectTypeChanges(oldType, newType) {
|
|
|
257
259
|
}
|
|
258
260
|
for (const [oldField, newField] of fieldsDiff.persisted) {
|
|
259
261
|
const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(oldField.type, newField.type);
|
|
262
|
+
const oldDefaultValueStr = getDefaultValue(oldField);
|
|
263
|
+
const newDefaultValueStr = getDefaultValue(newField);
|
|
260
264
|
if (!isSafe) {
|
|
261
265
|
schemaChanges.push({
|
|
262
266
|
type: exports.BreakingChangeType.FIELD_CHANGED_KIND,
|
|
263
267
|
description: `Field ${newField} changed type from ${oldField.type} to ${newField.type}.`,
|
|
264
268
|
});
|
|
265
269
|
}
|
|
270
|
+
else if (oldDefaultValueStr !== undefined) {
|
|
271
|
+
if (newDefaultValueStr === undefined) {
|
|
272
|
+
schemaChanges.push({
|
|
273
|
+
type: exports.DangerousChangeType.INPUT_FIELD_DEFAULT_VALUE_CHANGE,
|
|
274
|
+
description: `${oldField} defaultValue was removed.`,
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
else if (oldDefaultValueStr !== newDefaultValueStr) {
|
|
278
|
+
schemaChanges.push({
|
|
279
|
+
type: exports.DangerousChangeType.INPUT_FIELD_DEFAULT_VALUE_CHANGE,
|
|
280
|
+
description: `${oldField} has changed defaultValue from ${oldDefaultValueStr} to ${newDefaultValueStr}.`,
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
else if (newDefaultValueStr !== undefined &&
|
|
285
|
+
oldDefaultValueStr === undefined) {
|
|
286
|
+
schemaChanges.push({
|
|
287
|
+
type: exports.SafeChangeType.INPUT_FIELD_DEFAULT_VALUE_ADDED,
|
|
288
|
+
description: `${oldField} added a defaultValue ${newDefaultValueStr}.`,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
266
291
|
else if (oldField.type.toString() !== newField.type.toString()) {
|
|
267
292
|
schemaChanges.push({
|
|
268
293
|
type: exports.SafeChangeType.FIELD_CHANGED_KIND_SAFE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findSchemaChanges.js","sourceRoot":"","sources":["../../src/utilities/findSchemaChanges.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Changes */\n\nimport { 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\n/** Categories of schema changes that may break existing operations. */\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\n/** Categories of schema changes that may break existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type BreakingChangeType =\n (typeof BreakingChangeType)[keyof typeof BreakingChangeType];\n\n/** Categories of schema changes that may be dangerous for existing operations. */\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\n/** Categories of schema changes that may be dangerous for existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DangerousChangeType =\n (typeof DangerousChangeType)[keyof typeof DangerousChangeType];\n\n/** Categories of schema changes that are considered safe for existing operations. */\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\n/** Categories of schema changes that are considered safe for existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type SafeChangeType =\n (typeof SafeChangeType)[keyof typeof SafeChangeType];\n\n/** Description of a schema change that may break existing operations. */\nexport interface BreakingChange {\n /** Specific kind of breaking schema change. */\n type: BreakingChangeType;\n /** Human-readable description of the breaking schema change. */\n description: string;\n}\n\n/** Description of a schema change that may be dangerous for existing operations. */\nexport interface DangerousChange {\n /** Specific kind of dangerous schema change. */\n type: DangerousChangeType;\n /** Human-readable description of the dangerous schema change. */\n description: string;\n}\n\n/** Description of a schema change that is considered safe for existing operations. */\nexport interface SafeChange {\n /** Specific kind of safe schema change. */\n type: SafeChangeType;\n /** Human-readable description of the safe schema change. */\n description: string;\n}\n\n/** Any schema change detected between two schemas. */\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. This\n * deprecated wrapper will be removed in v18; use `findSchemaChanges()` instead\n * and filter for breaking changes.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Breaking changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findBreakingChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const newSchema = buildSchema(`\n * type Query {\n * hello: String\n * }\n * `);\n *\n * const changes = findBreakingChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['FIELD_REMOVED']\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 * This deprecated wrapper will be removed in v18; use `findSchemaChanges()`\n * instead and filter for dangerous changes.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Dangerous changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findDangerousChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n * const newSchema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * EMPIRE\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n *\n * const changes = findDangerousChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['VALUE_ADDED_TO_ENUM']\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\n/**\n * Finds all schema changes between two schemas.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Safe, dangerous, and breaking changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findSchemaChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const newSchema = buildSchema(`\n * type Query {\n * greeting(name: String): String\n * farewell: String\n * }\n * `);\n *\n * const changes = findSchemaChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['OPTIONAL_ARG_ADDED', 'FIELD_ADDED']\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"]}
|
|
1
|
+
{"version":3,"file":"findSchemaChanges.js","sourceRoot":"","sources":["../../src/utilities/findSchemaChanges.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Changes */\n\nimport { 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\n/** Categories of schema changes that may break existing operations. */\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\n/** Categories of schema changes that may break existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type BreakingChangeType =\n (typeof BreakingChangeType)[keyof typeof BreakingChangeType];\n\n/** Categories of schema changes that may be dangerous for existing operations. */\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 INPUT_FIELD_DEFAULT_VALUE_CHANGE: 'INPUT_FIELD_DEFAULT_VALUE_CHANGE' as const,\n} as const;\n\n/** Categories of schema changes that may be dangerous for existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DangerousChangeType =\n (typeof DangerousChangeType)[keyof typeof DangerousChangeType];\n\n/** Categories of schema changes that are considered safe for existing operations. */\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 INPUT_FIELD_DEFAULT_VALUE_ADDED: 'INPUT_FIELD_DEFAULT_VALUE_ADDED' as const,\n} as const;\n\n/** Categories of schema changes that are considered safe for existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type SafeChangeType =\n (typeof SafeChangeType)[keyof typeof SafeChangeType];\n\n/** Description of a schema change that may break existing operations. */\nexport interface BreakingChange {\n /** Specific kind of breaking schema change. */\n type: BreakingChangeType;\n /** Human-readable description of the breaking schema change. */\n description: string;\n}\n\n/** Description of a schema change that may be dangerous for existing operations. */\nexport interface DangerousChange {\n /** Specific kind of dangerous schema change. */\n type: DangerousChangeType;\n /** Human-readable description of the dangerous schema change. */\n description: string;\n}\n\n/** Description of a schema change that is considered safe for existing operations. */\nexport interface SafeChange {\n /** Specific kind of safe schema change. */\n type: SafeChangeType;\n /** Human-readable description of the safe schema change. */\n description: string;\n}\n\n/** Any schema change detected between two schemas. */\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. This\n * deprecated wrapper will be removed in v18; use `findSchemaChanges()` instead\n * and filter for breaking changes.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Breaking changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findBreakingChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const newSchema = buildSchema(`\n * type Query {\n * hello: String\n * }\n * `);\n *\n * const changes = findBreakingChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['FIELD_REMOVED']\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 * This deprecated wrapper will be removed in v18; use `findSchemaChanges()`\n * instead and filter for dangerous changes.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Dangerous changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findDangerousChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n * const newSchema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * EMPIRE\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n *\n * const changes = findDangerousChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['VALUE_ADDED_TO_ENUM']\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\n/**\n * Finds all schema changes between two schemas.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Safe, dangerous, and breaking changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findSchemaChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const newSchema = buildSchema(`\n * type Query {\n * greeting(name: String): String\n * farewell: String\n * }\n * `);\n *\n * const changes = findSchemaChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['OPTIONAL_ARG_ADDED', 'FIELD_ADDED']\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\n const oldDefaultValueStr = getDefaultValue(oldField);\n const newDefaultValueStr = getDefaultValue(newField);\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 (oldDefaultValueStr !== undefined) {\n if (newDefaultValueStr === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.INPUT_FIELD_DEFAULT_VALUE_CHANGE,\n description: `${oldField} defaultValue was removed.`,\n });\n } else if (oldDefaultValueStr !== newDefaultValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.INPUT_FIELD_DEFAULT_VALUE_CHANGE,\n description: `${oldField} 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.INPUT_FIELD_DEFAULT_VALUE_ADDED,\n description: `${oldField} added a defaultValue ${newDefaultValueStr}.`,\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"]}
|
|
@@ -31,6 +31,7 @@ export const DangerousChangeType = {
|
|
|
31
31
|
OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED',
|
|
32
32
|
IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED',
|
|
33
33
|
ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE',
|
|
34
|
+
INPUT_FIELD_DEFAULT_VALUE_CHANGE: 'INPUT_FIELD_DEFAULT_VALUE_CHANGE',
|
|
34
35
|
};
|
|
35
36
|
export const SafeChangeType = {
|
|
36
37
|
DESCRIPTION_CHANGED: 'DESCRIPTION_CHANGED',
|
|
@@ -45,6 +46,7 @@ export const SafeChangeType = {
|
|
|
45
46
|
FIELD_CHANGED_KIND_SAFE: 'FIELD_CHANGED_KIND_SAFE',
|
|
46
47
|
ARG_CHANGED_KIND_SAFE: 'ARG_CHANGED_KIND_SAFE',
|
|
47
48
|
ARG_DEFAULT_VALUE_ADDED: 'ARG_DEFAULT_VALUE_ADDED',
|
|
49
|
+
INPUT_FIELD_DEFAULT_VALUE_ADDED: 'INPUT_FIELD_DEFAULT_VALUE_ADDED',
|
|
48
50
|
};
|
|
49
51
|
export function findBreakingChanges(oldSchema, newSchema) {
|
|
50
52
|
return findSchemaChanges(oldSchema, newSchema).filter((change) => change.type in BreakingChangeType);
|
|
@@ -251,12 +253,35 @@ function findInputObjectTypeChanges(oldType, newType) {
|
|
|
251
253
|
}
|
|
252
254
|
for (const [oldField, newField] of fieldsDiff.persisted) {
|
|
253
255
|
const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(oldField.type, newField.type);
|
|
256
|
+
const oldDefaultValueStr = getDefaultValue(oldField);
|
|
257
|
+
const newDefaultValueStr = getDefaultValue(newField);
|
|
254
258
|
if (!isSafe) {
|
|
255
259
|
schemaChanges.push({
|
|
256
260
|
type: BreakingChangeType.FIELD_CHANGED_KIND,
|
|
257
261
|
description: `Field ${newField} changed type from ${oldField.type} to ${newField.type}.`,
|
|
258
262
|
});
|
|
259
263
|
}
|
|
264
|
+
else if (oldDefaultValueStr !== undefined) {
|
|
265
|
+
if (newDefaultValueStr === undefined) {
|
|
266
|
+
schemaChanges.push({
|
|
267
|
+
type: DangerousChangeType.INPUT_FIELD_DEFAULT_VALUE_CHANGE,
|
|
268
|
+
description: `${oldField} defaultValue was removed.`,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
else if (oldDefaultValueStr !== newDefaultValueStr) {
|
|
272
|
+
schemaChanges.push({
|
|
273
|
+
type: DangerousChangeType.INPUT_FIELD_DEFAULT_VALUE_CHANGE,
|
|
274
|
+
description: `${oldField} has changed defaultValue from ${oldDefaultValueStr} to ${newDefaultValueStr}.`,
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
else if (newDefaultValueStr !== undefined &&
|
|
279
|
+
oldDefaultValueStr === undefined) {
|
|
280
|
+
schemaChanges.push({
|
|
281
|
+
type: SafeChangeType.INPUT_FIELD_DEFAULT_VALUE_ADDED,
|
|
282
|
+
description: `${oldField} added a defaultValue ${newDefaultValueStr}.`,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
260
285
|
else if (oldField.type.toString() !== newField.type.toString()) {
|
|
261
286
|
schemaChanges.push({
|
|
262
287
|
type: SafeChangeType.FIELD_CHANGED_KIND_SAFE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findSchemaChanges.js","sourceRoot":"","sources":["../../src/utilities/findSchemaChanges.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Schema Changes */\n\nimport { 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\n/** Categories of schema changes that may break existing operations. */\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\n/** Categories of schema changes that may break existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type BreakingChangeType =\n (typeof BreakingChangeType)[keyof typeof BreakingChangeType];\n\n/** Categories of schema changes that may be dangerous for existing operations. */\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\n/** Categories of schema changes that may be dangerous for existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DangerousChangeType =\n (typeof DangerousChangeType)[keyof typeof DangerousChangeType];\n\n/** Categories of schema changes that are considered safe for existing operations. */\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\n/** Categories of schema changes that are considered safe for existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type SafeChangeType =\n (typeof SafeChangeType)[keyof typeof SafeChangeType];\n\n/** Description of a schema change that may break existing operations. */\nexport interface BreakingChange {\n /** Specific kind of breaking schema change. */\n type: BreakingChangeType;\n /** Human-readable description of the breaking schema change. */\n description: string;\n}\n\n/** Description of a schema change that may be dangerous for existing operations. */\nexport interface DangerousChange {\n /** Specific kind of dangerous schema change. */\n type: DangerousChangeType;\n /** Human-readable description of the dangerous schema change. */\n description: string;\n}\n\n/** Description of a schema change that is considered safe for existing operations. */\nexport interface SafeChange {\n /** Specific kind of safe schema change. */\n type: SafeChangeType;\n /** Human-readable description of the safe schema change. */\n description: string;\n}\n\n/** Any schema change detected between two schemas. */\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. This\n * deprecated wrapper will be removed in v18; use `findSchemaChanges()` instead\n * and filter for breaking changes.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Breaking changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findBreakingChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const newSchema = buildSchema(`\n * type Query {\n * hello: String\n * }\n * `);\n *\n * const changes = findBreakingChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['FIELD_REMOVED']\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 * This deprecated wrapper will be removed in v18; use `findSchemaChanges()`\n * instead and filter for dangerous changes.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Dangerous changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findDangerousChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n * const newSchema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * EMPIRE\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n *\n * const changes = findDangerousChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['VALUE_ADDED_TO_ENUM']\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\n/**\n * Finds all schema changes between two schemas.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Safe, dangerous, and breaking changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findSchemaChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const newSchema = buildSchema(`\n * type Query {\n * greeting(name: String): String\n * farewell: String\n * }\n * `);\n *\n * const changes = findSchemaChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['OPTIONAL_ARG_ADDED', 'FIELD_ADDED']\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"]}
|
|
1
|
+
{"version":3,"file":"findSchemaChanges.js","sourceRoot":"","sources":["../../src/utilities/findSchemaChanges.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,+BAA8B;AAChD,OAAO,EAAE,SAAS,EAAE,iCAAgC;AACpD,OAAO,EAAE,MAAM,EAAE,8BAA6B;AAE9C,OAAO,EAAE,KAAK,EAAE,gCAA+B;AAc/C,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,WAAW,GACZ,+BAA8B;AAC/B,OAAO,EAAE,qBAAqB,EAAE,4BAA2B;AAG3D,OAAO,EAAE,kBAAkB,EAAE,iCAAgC;AAC7D,OAAO,EAAE,aAAa,EAAE,4BAA2B;AAGnD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,YAAY,EAAE,cAAuB;IACrC,iBAAiB,EAAE,mBAA4B;IAC/C,uBAAuB,EAAE,yBAAkC;IAC3D,uBAAuB,EAAE,yBAAkC;IAC3D,0BAA0B,EAAE,4BAAqC;IACjE,6BAA6B,EAAE,+BAAwC;IACvE,aAAa,EAAE,eAAwB;IACvC,kBAAkB,EAAE,oBAA6B;IACjD,kBAAkB,EAAE,oBAA6B;IACjD,WAAW,EAAE,aAAsB;IACnC,gBAAgB,EAAE,kBAA2B;IAC7C,iBAAiB,EAAE,mBAA4B;IAC/C,qBAAqB,EAAE,uBAAgC;IACvD,4BAA4B,EAAE,8BAAuC;IACrE,4BAA4B,EAAE,8BAAuC;IACrE,0BAA0B,EAAE,4BAAqC;CACzD,CAAC;AAQX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,mBAAmB,EAAE,qBAA8B;IACnD,mBAAmB,EAAE,qBAA8B;IACnD,0BAA0B,EAAE,4BAAqC;IACjE,kBAAkB,EAAE,oBAA6B;IACjD,2BAA2B,EAAE,6BAAsC;IACnE,wBAAwB,EAAE,0BAAmC;IAC7D,gCAAgC,EAAE,kCAA2C;CACrE,CAAC;AAQX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,mBAAmB,EAAE,qBAA8B;IACnD,UAAU,EAAE,YAAqB;IACjC,0BAA0B,EAAE,4BAAqC;IACjE,kBAAkB,EAAE,oBAA6B;IACjD,eAAe,EAAE,iBAA0B;IAC3C,WAAW,EAAE,aAAsB;IACnC,0BAA0B,EAAE,4BAAqC;IACjE,wBAAwB,EAAE,0BAAmC;IAC7D,4BAA4B,EAAE,8BAAuC;IACrE,uBAAuB,EAAE,yBAAkC;IAC3D,qBAAqB,EAAE,uBAAgC;IACvD,uBAAuB,EAAE,yBAAkC;IAC3D,+BAA+B,EAAE,iCAA0C;CACnE,CAAC;AA+DX,MAAM,UAAU,mBAAmB,CACjC,SAAwB,EACxB,SAAwB;IAGxB,OAAO,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,MAAM,CACnD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,kBAAkB,CAC9C,CAAC;AACJ,CAAC;AAwCD,MAAM,UAAU,oBAAoB,CAClC,SAAwB,EACxB,SAAwB;IAGxB,OAAO,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,MAAM,CACnD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,mBAAmB,CAC/C,CAAC;AACJ,CAAC;AA4BD,MAAM,UAAU,iBAAiB,CAC/B,SAAwB,EACxB,SAAwB;IAExB,OAAO;QACL,GAAG,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC;QACxC,GAAG,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAAwB,EACxB,SAAwB;IAExB,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,MAAM,cAAc,GAAG,IAAI,CACzB,SAAS,CAAC,aAAa,EAAE,EACzB,SAAS,CAAC,aAAa,EAAE,CAC1B,CAAC;IAEF,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;QAClD,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,kBAAkB,CAAC,iBAAiB;YAC1C,WAAW,EAAE,aAAa,YAAY,eAAe;SACtD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;QAChD,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,cAAc,CAAC,eAAe;YACpC,WAAW,EAAE,cAAc,YAAY,CAAC,IAAI,aAAa;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAE5D,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,kBAAkB,CAAC,4BAA4B;oBACrD,WAAW,EAAE,uBAAuB,MAAM,aAAa;iBACxD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,cAAc,CAAC,4BAA4B;oBACjD,WAAW,EAAE,yBAAyB,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,eAAe;iBACtF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,kBAAkB,CAAC,qBAAqB;gBAC9C,WAAW,EAAE,YAAY,MAAM,eAAe;aAC/C,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,yCAAyC,CACtD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,CACZ,CAAC;YAEF,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACnD,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,kBAAkB,CAAC,gBAAgB;oBACzC,WAAW,EACT,aAAa,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,2BAA2B;wBACxE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;iBACtD,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBAC5C,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;oBACrC,aAAa,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,mBAAmB,CAAC,wBAAwB;wBAClD,WAAW,EAAE,IAAI,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,8BAA8B;qBAChF,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,kBAAkB,KAAK,kBAAkB,EAAE,CAAC;oBACrD,aAAa,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,mBAAmB,CAAC,wBAAwB;wBAClD,WAAW,EAAE,IAAI,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,oCAAoC,kBAAkB,OAAO,kBAAkB,GAAG;qBACpI,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,IACL,kBAAkB,KAAK,SAAS;gBAChC,kBAAkB,KAAK,SAAS,EAChC,CAAC;gBACD,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,cAAc,CAAC,uBAAuB;oBAC5C,WAAW,EAAE,IAAI,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,2BAA2B,kBAAkB,GAAG;iBAClG,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC7D,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,cAAc,CAAC,qBAAqB;oBAC1C,WAAW,EACT,aAAa,YAAY,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,2BAA2B;wBACxE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;iBACtD,CAAC,CAAC;YACL,CAAC;YAED,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC9C,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,cAAc,CAAC,mBAAmB;oBACxC,WAAW,EAAE,mBAAmB,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,qBAAqB,MAAM,CAAC,WAAW,IAAI;iBAClH,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YAC5D,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,kBAAkB,CAAC,4BAA4B;gBACrD,WAAW,EAAE,oCAAoC,YAAY,GAAG;aACjE,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,YAAY,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YACnE,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,0BAA0B;gBAC/C,WAAW,EAAE,iCAAiC,YAAY,CAAC,IAAI,GAAG;aACnE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,YAAY,CAAC,WAAW,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;YAC1D,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,mBAAmB;gBACxC,WAAW,EAAE,mBAAmB,YAAY,CAAC,IAAI,oBAAoB,YAAY,CAAC,WAAW,IAAI;aAClG,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/C,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,kBAAkB,CAAC,0BAA0B;oBACnD,WAAW,EAAE,GAAG,QAAQ,qBAAqB,YAAY,GAAG;iBAC7D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/C,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,cAAc,CAAC,wBAAwB;oBAC7C,WAAW,EAAE,GAAG,QAAQ,kBAAkB,YAAY,CAAC,IAAI,GAAG;iBAC/D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,eAAe,CACtB,SAAwB,EACxB,SAAwB;IAExB,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,MAAM,SAAS,GAAG,IAAI,CACpB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EACrC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CACtC,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACxC,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,kBAAkB,CAAC,YAAY;YACrC,WAAW,EAAE,qBAAqB,CAAC,OAAO,CAAC;gBACzC,CAAC,CAAC,mBAAmB,OAAO,oDAAoD;gBAChF,CAAC,CAAC,GAAG,OAAO,eAAe;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACtC,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,cAAc,CAAC,UAAU;YAC/B,WAAW,EAAE,GAAG,OAAO,aAAa;SACrC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;YAChD,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,mBAAmB;gBACxC,WAAW,EAAE,kBAAkB,OAAO,CAAC,IAAI,oBAAoB,OAAO,CAAC,WAAW,IAAI;aACvF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,aAAa,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,aAAa,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,CAAC;aAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,aAAa,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,aAAa,CAAC,IAAI,CAChB,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EACrC,GAAG,gCAAgC,CAAC,OAAO,EAAE,OAAO,CAAC,CACtD,CAAC;QACJ,CAAC;aAAM,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,aAAa,CAAC,IAAI,CAChB,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EACrC,GAAG,gCAAgC,CAAC,OAAO,EAAE,OAAO,CAAC,CACtD,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;YACvD,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,kBAAkB,CAAC,iBAAiB;gBAC1C,WAAW,EAAE,GAAG,OAAO,iBAAiB,YAAY,CAClD,OAAO,CACR,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG;aACjC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,0BAA0B,CACjC,OAA+B,EAC/B,OAA+B;IAE/B,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,IAAI,CACrB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CACnC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,kBAAkB,CAAC,0BAA0B;gBACnD,WAAW,EAAE,oBAAoB,QAAQ,aAAa;aACvD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,mBAAmB,CAAC,0BAA0B;gBACpD,WAAW,EAAE,qBAAqB,QAAQ,aAAa;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1C,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,kBAAkB,CAAC,aAAa;YACtC,WAAW,EAAE,SAAS,QAAQ,eAAe;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,yCAAyC,CACtD,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,IAAI,CACd,CAAC;QAEF,MAAM,kBAAkB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,kBAAkB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,kBAAkB,CAAC,kBAAkB;gBAC3C,WAAW,EAAE,SAAS,QAAQ,sBAAsB,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,IAAI,GAAG;aACzF,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC5C,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,mBAAmB,CAAC,gCAAgC;oBAC1D,WAAW,EAAE,GAAG,QAAQ,4BAA4B;iBACrD,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,kBAAkB,KAAK,kBAAkB,EAAE,CAAC;gBACrD,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,mBAAmB,CAAC,gCAAgC;oBAC1D,WAAW,EAAE,GAAG,QAAQ,kCAAkC,kBAAkB,OAAO,kBAAkB,GAAG;iBACzG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IACL,kBAAkB,KAAK,SAAS;YAChC,kBAAkB,KAAK,SAAS,EAChC,CAAC;YACD,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,+BAA+B;gBACpD,WAAW,EAAE,GAAG,QAAQ,yBAAyB,kBAAkB,GAAG;aACvE,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACjE,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,uBAAuB;gBAC5C,WAAW,EACT,SAAS,OAAO,IAAI,QAAQ,CAAC,IAAI,qBAAqB;oBACtD,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;aAC1D,CAAC,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;YAClD,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,mBAAmB;gBACxC,WAAW,EAAE,8BAA8B,OAAO,IAAI,QAAQ,CAAC,IAAI,oBAAoB,QAAQ,CAAC,WAAW,IAAI;aAChH,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAyB,EACzB,OAAyB;IAEzB,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEvE,KAAK,MAAM,eAAe,IAAI,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACtD,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,mBAAmB,CAAC,mBAAmB;YAC7C,WAAW,EAAE,GAAG,eAAe,4BAA4B,OAAO,GAAG;SACtE,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,eAAe,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACxD,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,kBAAkB,CAAC,uBAAuB;YAChD,WAAW,EAAE,GAAG,eAAe,gCAAgC,OAAO,GAAG;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAwB,EACxB,OAAwB;IAExB,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAElE,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACxC,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,mBAAmB,CAAC,mBAAmB;YAC7C,WAAW,EAAE,cAAc,QAAQ,aAAa;SACjD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1C,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,kBAAkB,CAAC,uBAAuB;YAChD,WAAW,EAAE,cAAc,QAAQ,eAAe;SACnD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACxD,IAAI,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;YAClD,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,mBAAmB;gBACxC,WAAW,EAAE,6BAA6B,OAAO,IAAI,QAAQ,CAAC,IAAI,oBAAoB,QAAQ,CAAC,WAAW,IAAI;aAC/G,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,gCAAgC,CACvC,OAAiD,EACjD,OAAiD;IAEjD,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAE9E,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;QAChD,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,mBAAmB,CAAC,2BAA2B;YACrD,WAAW,EAAE,GAAG,YAAY,uCAAuC,OAAO,GAAG;SAC9E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;QAClD,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,kBAAkB,CAAC,6BAA6B;YACtD,WAAW,EAAE,GAAG,OAAO,mCAAmC,YAAY,GAAG;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAiD,EACjD,OAAiD;IAEjD,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,IAAI,CACrB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CACnC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1C,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,kBAAkB,CAAC,aAAa;YACtC,WAAW,EAAE,SAAS,QAAQ,eAAe;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACxC,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,cAAc,CAAC,WAAW;YAChC,WAAW,EAAE,SAAS,OAAO,IAAI,QAAQ,CAAC,IAAI,aAAa;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACxD,aAAa,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,qCAAqC,CAClD,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,IAAI,CACd,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,kBAAkB,CAAC,kBAAkB;gBAC3C,WAAW,EAAE,SAAS,QAAQ,sBAAsB,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,IAAI,GAAG;aACzF,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACjE,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,uBAAuB;gBAC5C,WAAW,EACT,SAAS,OAAO,IAAI,QAAQ,CAAC,IAAI,qBAAqB;oBACtD,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;aAC1D,CAAC,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;YAClD,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,mBAAmB;gBACxC,WAAW,EAAE,wBAAwB,OAAO,IAAI,QAAQ,CAAC,IAAI,oBAAoB,QAAQ,CAAC,WAAW,IAAI;aAC1G,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CACrB,QAAwC,EACxC,QAAwC;IAExC,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEpD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtC,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,kBAAkB,CAAC,WAAW;YACpC,WAAW,EAAE,YAAY,MAAM,eAAe;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,yCAAyC,CACtD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,CACZ,CAAC;QAEF,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,kBAAkB,CAAC,gBAAgB;gBACzC,WAAW,EAAE,YAAY,MAAM,0BAA0B,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,GAAG;aAC1F,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC5C,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,mBAAmB,CAAC,wBAAwB;oBAClD,WAAW,EAAE,GAAG,MAAM,4BAA4B;iBACnD,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,kBAAkB,KAAK,kBAAkB,EAAE,CAAC;gBACrD,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,mBAAmB,CAAC,wBAAwB;oBAClD,WAAW,EAAE,GAAG,MAAM,kCAAkC,kBAAkB,OAAO,kBAAkB,GAAG;iBACvG,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IACL,kBAAkB,KAAK,SAAS;YAChC,kBAAkB,KAAK,SAAS,EAChC,CAAC;YACD,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,uBAAuB;gBAC5C,WAAW,EAAE,GAAG,MAAM,yBAAyB,kBAAkB,GAAG;aACrE,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC7D,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,qBAAqB;gBAC1C,WAAW,EACT,YAAY,MAAM,yBAAyB;oBAC3C,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;aACtD,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;YAC9C,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,cAAc,CAAC,mBAAmB;gBACxC,WAAW,EAAE,2BAA2B,MAAM,oBAAoB,MAAM,CAAC,WAAW,IAAI;aACzF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,kBAAkB,CAAC,kBAAkB;gBAC3C,WAAW,EAAE,uBAAuB,MAAM,aAAa;aACxD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,mBAAmB,CAAC,kBAAkB;gBAC5C,WAAW,EAAE,wBAAwB,MAAM,aAAa;aACzD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,qCAAqC,CAC5C,OAAoB,EACpB,OAAoB;IAEpB,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,CAEL,CAAC,UAAU,CAAC,OAAO,CAAC;YAClB,qCAAqC,CACnC,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,MAAM,CACf,CAAC;YAEJ,CAAC,aAAa,CAAC,OAAO,CAAC;gBACrB,qCAAqC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAE3B,OAAO,CACL,aAAa,CAAC,OAAO,CAAC;YACtB,qCAAqC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CACtE,CAAC;IACJ,CAAC;IAED,OAAO,CAEL,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;QAEvD,CAAC,aAAa,CAAC,OAAO,CAAC;YACrB,qCAAqC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAClE,CAAC;AACJ,CAAC;AAED,SAAS,yCAAyC,CAChD,OAAoB,EACpB,OAAoB;IAEpB,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAExB,OAAO,CACL,UAAU,CAAC,OAAO,CAAC;YACnB,yCAAyC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,CAGL,CAAC,aAAa,CAAC,OAAO,CAAC;YACrB,yCAAyC,CACvC,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,MAAM,CACf,CAAC;YAEJ,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;gBACtB,yCAAyC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CACtE,CAAC;IACJ,CAAC;IAGD,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;AAC/D,CAAC;AAED,SAAS,YAAY,CAAC,IAAsB;IAC1C,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,eAAe,CAAC;IAEzB,CAAC;IAED,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,CAAC;AAKD,SAAS,eAAe,CACtB,eAAoD;IAEpD,MAAM,GAAG,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAChD,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CACX,QAA0B,EAC1B,QAA0B;IAM1B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAkB,EAAE,CAAC;IAEpC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAEpD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC","sourcesContent":["/** @category Schema Changes */\n\nimport { 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\n/** Categories of schema changes that may break existing operations. */\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\n/** Categories of schema changes that may break existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type BreakingChangeType =\n (typeof BreakingChangeType)[keyof typeof BreakingChangeType];\n\n/** Categories of schema changes that may be dangerous for existing operations. */\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 INPUT_FIELD_DEFAULT_VALUE_CHANGE: 'INPUT_FIELD_DEFAULT_VALUE_CHANGE' as const,\n} as const;\n\n/** Categories of schema changes that may be dangerous for existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type DangerousChangeType =\n (typeof DangerousChangeType)[keyof typeof DangerousChangeType];\n\n/** Categories of schema changes that are considered safe for existing operations. */\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 INPUT_FIELD_DEFAULT_VALUE_ADDED: 'INPUT_FIELD_DEFAULT_VALUE_ADDED' as const,\n} as const;\n\n/** Categories of schema changes that are considered safe for existing operations. */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type SafeChangeType =\n (typeof SafeChangeType)[keyof typeof SafeChangeType];\n\n/** Description of a schema change that may break existing operations. */\nexport interface BreakingChange {\n /** Specific kind of breaking schema change. */\n type: BreakingChangeType;\n /** Human-readable description of the breaking schema change. */\n description: string;\n}\n\n/** Description of a schema change that may be dangerous for existing operations. */\nexport interface DangerousChange {\n /** Specific kind of dangerous schema change. */\n type: DangerousChangeType;\n /** Human-readable description of the dangerous schema change. */\n description: string;\n}\n\n/** Description of a schema change that is considered safe for existing operations. */\nexport interface SafeChange {\n /** Specific kind of safe schema change. */\n type: SafeChangeType;\n /** Human-readable description of the safe schema change. */\n description: string;\n}\n\n/** Any schema change detected between two schemas. */\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. This\n * deprecated wrapper will be removed in v18; use `findSchemaChanges()` instead\n * and filter for breaking changes.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Breaking changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findBreakingChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const newSchema = buildSchema(`\n * type Query {\n * hello: String\n * }\n * `);\n *\n * const changes = findBreakingChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['FIELD_REMOVED']\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 * This deprecated wrapper will be removed in v18; use `findSchemaChanges()`\n * instead and filter for dangerous changes.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Dangerous changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findDangerousChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n * const newSchema = buildSchema(`\n * enum Episode {\n * NEW_HOPE\n * EMPIRE\n * }\n *\n * type Query {\n * episode: Episode\n * }\n * `);\n *\n * const changes = findDangerousChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['VALUE_ADDED_TO_ENUM']\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\n/**\n * Finds all schema changes between two schemas.\n * @param oldSchema - Schema before the change.\n * @param newSchema - Schema after the change.\n * @returns Safe, dangerous, and breaking changes between the two schemas.\n * @example\n * ```ts\n * import { buildSchema, findSchemaChanges } from 'graphql/utilities';\n *\n * const oldSchema = buildSchema(`\n * type Query {\n * greeting: String\n * }\n * `);\n * const newSchema = buildSchema(`\n * type Query {\n * greeting(name: String): String\n * farewell: String\n * }\n * `);\n *\n * const changes = findSchemaChanges(oldSchema, newSchema);\n *\n * changes.map((change) => change.type); // => ['OPTIONAL_ARG_ADDED', 'FIELD_ADDED']\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\n const oldDefaultValueStr = getDefaultValue(oldField);\n const newDefaultValueStr = getDefaultValue(newField);\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 (oldDefaultValueStr !== undefined) {\n if (newDefaultValueStr === undefined) {\n schemaChanges.push({\n type: DangerousChangeType.INPUT_FIELD_DEFAULT_VALUE_CHANGE,\n description: `${oldField} defaultValue was removed.`,\n });\n } else if (oldDefaultValueStr !== newDefaultValueStr) {\n schemaChanges.push({\n type: DangerousChangeType.INPUT_FIELD_DEFAULT_VALUE_CHANGE,\n description: `${oldField} 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.INPUT_FIELD_DEFAULT_VALUE_ADDED,\n description: `${oldField} added a defaultValue ${newDefaultValueStr}.`,\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"]}
|
|
@@ -130,7 +130,7 @@ function mapSchemaConfig(schemaConfig, configMapperMapFn) {
|
|
|
130
130
|
let mappedField = {
|
|
131
131
|
...field,
|
|
132
132
|
type: getType(field.type),
|
|
133
|
-
args: mapArgs(field.args,
|
|
133
|
+
args: mapArgs(field.args, fieldName, parentTypeName),
|
|
134
134
|
};
|
|
135
135
|
const mapper = configMapperMap[exports.SchemaElementKind.FIELD];
|
|
136
136
|
if (mapper) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapSchemaConfig.js","sourceRoot":"","sources":["../../src/utilities/mapSchemaConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport type {\n GraphQLArgumentNormalizedConfig,\n GraphQLEnumTypeNormalizedConfig,\n GraphQLEnumValueConfig,\n GraphQLFieldNormalizedConfig,\n GraphQLFieldNormalizedConfigArgumentMap,\n GraphQLFieldNormalizedConfigMap,\n GraphQLInputFieldConfig,\n GraphQLInputObjectTypeNormalizedConfig,\n GraphQLInterfaceTypeNormalizedConfig,\n GraphQLNamedType,\n GraphQLObjectTypeNormalizedConfig,\n GraphQLScalarTypeNormalizedConfig,\n GraphQLType,\n GraphQLUnionTypeNormalizedConfig,\n} from '../type/definition.ts';\nimport {\n GraphQLEnumType,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../type/definition.ts';\nimport type { GraphQLDirectiveNormalizedConfig } from '../type/directives.ts';\nimport { GraphQLDirective, isSpecifiedDirective } from '../type/directives.ts';\nimport {\n introspectionTypes,\n isIntrospectionType,\n} from '../type/introspection.ts';\nimport {\n isSpecifiedScalarType,\n specifiedScalarTypes,\n} from '../type/scalars.ts';\nimport type { GraphQLSchemaNormalizedConfig } from '../type/schema.ts';\n\n/**\n * The set of GraphQL Schema Elements.\n *\n * @internal\n */\nexport const SchemaElementKind = {\n SCHEMA: 'SCHEMA' as const,\n SCALAR: 'SCALAR' as const,\n OBJECT: 'OBJECT' as const,\n FIELD: 'FIELD' as const,\n ARGUMENT: 'ARGUMENT' as const,\n INTERFACE: 'INTERFACE' as const,\n UNION: 'UNION' as const,\n ENUM: 'ENUM' as const,\n ENUM_VALUE: 'ENUM_VALUE' as const,\n INPUT_OBJECT: 'INPUT_OBJECT' as const,\n INPUT_FIELD: 'INPUT_FIELD' as const,\n DIRECTIVE: 'DIRECTIVE' as const,\n} as const;\n\n/** @internal */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\ntype SchemaElementKind =\n (typeof SchemaElementKind)[keyof typeof SchemaElementKind];\n\n/** @internal */\nexport interface MappedSchemaContext {\n getNamedType: (typeName: string) => GraphQLNamedType;\n setNamedType: (type: GraphQLNamedType) => void;\n getNamedTypes: () => ReadonlyArray<GraphQLNamedType>;\n}\n\ntype GraphQLScalarTypeMappedConfig = GraphQLScalarTypeNormalizedConfig<\n any,\n any\n>;\n\ntype EnsureThunks<T, ThunkFields extends keyof T> = {\n [K in keyof T]: K extends ThunkFields ? () => T[K] : T[K];\n};\n\ntype GraphQLObjectTypeMappedConfig = EnsureThunks<\n GraphQLObjectTypeNormalizedConfig<any, any>,\n 'interfaces' | 'fields'\n>;\ntype GraphQLInterfaceTypeMappedConfig = EnsureThunks<\n GraphQLInterfaceTypeNormalizedConfig<any, any>,\n 'interfaces' | 'fields'\n>;\ntype GraphQLUnionTypeMappedConfig = EnsureThunks<\n GraphQLUnionTypeNormalizedConfig<any, any>,\n 'types'\n>;\ntype GraphQLEnumTypeMappedConfig = EnsureThunks<\n GraphQLEnumTypeNormalizedConfig,\n 'values'\n>;\ntype GraphQLInputObjectTypeMappedConfig = EnsureThunks<\n GraphQLInputObjectTypeNormalizedConfig,\n 'fields'\n>;\n\ntype ScalarTypeConfigMapper = (\n scalarConfig: GraphQLScalarTypeMappedConfig,\n) => GraphQLScalarTypeMappedConfig;\n\ntype ObjectTypeConfigMapper = (\n objectConfig: GraphQLObjectTypeMappedConfig,\n) => GraphQLObjectTypeMappedConfig;\n\ntype FieldConfigMapper = (\n fieldConfig: GraphQLFieldNormalizedConfig<any, any>,\n parentTypeName: string,\n) => GraphQLFieldNormalizedConfig<any, any>;\n\ntype ArgumentConfigMapper = (\n argConfig: GraphQLArgumentNormalizedConfig,\n fieldOrDirectiveName: string,\n parentTypeName?: string,\n) => GraphQLArgumentNormalizedConfig;\n\ntype InterfaceTypeConfigMapper = (\n interfaceConfig: GraphQLInterfaceTypeMappedConfig,\n) => GraphQLInterfaceTypeMappedConfig;\n\ntype UnionTypeConfigMapper = (\n unionConfig: GraphQLUnionTypeMappedConfig,\n) => GraphQLUnionTypeMappedConfig;\n\ntype EnumTypeConfigMapper = (\n enumConfig: GraphQLEnumTypeMappedConfig,\n) => GraphQLEnumTypeMappedConfig;\n\ntype EnumValueConfigMapper = (\n enumValueConfig: GraphQLEnumValueConfig,\n valueName: string,\n enumName: string,\n) => GraphQLEnumValueConfig;\n\ntype InputObjectTypeConfigMapper = (\n inputObjectConfig: GraphQLInputObjectTypeMappedConfig,\n) => GraphQLInputObjectTypeMappedConfig;\n\ntype InputFieldConfigMapper = (\n inputFieldConfig: GraphQLInputFieldConfig,\n inputFieldName: string,\n inputObjectTypeName: string,\n) => GraphQLInputFieldConfig;\n\ntype DirectiveConfigMapper = (\n directiveConfig: GraphQLDirectiveNormalizedConfig,\n) => GraphQLDirectiveNormalizedConfig;\n\ntype SchemaConfigMapper = (\n originalSchemaConfig: GraphQLSchemaNormalizedConfig,\n) => GraphQLSchemaNormalizedConfig;\n\n/** @internal */\nexport interface ConfigMapperMap {\n [SchemaElementKind.SCALAR]?: ScalarTypeConfigMapper;\n [SchemaElementKind.OBJECT]?: ObjectTypeConfigMapper;\n [SchemaElementKind.FIELD]?: FieldConfigMapper;\n [SchemaElementKind.ARGUMENT]?: ArgumentConfigMapper;\n [SchemaElementKind.INTERFACE]?: InterfaceTypeConfigMapper;\n [SchemaElementKind.UNION]?: UnionTypeConfigMapper;\n [SchemaElementKind.ENUM]?: EnumTypeConfigMapper;\n [SchemaElementKind.ENUM_VALUE]?: EnumValueConfigMapper;\n [SchemaElementKind.INPUT_OBJECT]?: InputObjectTypeConfigMapper;\n [SchemaElementKind.INPUT_FIELD]?: InputFieldConfigMapper;\n [SchemaElementKind.DIRECTIVE]?: DirectiveConfigMapper;\n [SchemaElementKind.SCHEMA]?: SchemaConfigMapper;\n}\n\n/** @internal */\nexport function mapSchemaConfig(\n schemaConfig: GraphQLSchemaNormalizedConfig,\n configMapperMapFn: (context: MappedSchemaContext) => ConfigMapperMap,\n): GraphQLSchemaNormalizedConfig {\n const configMapperMap = configMapperMapFn({\n getNamedType,\n setNamedType,\n getNamedTypes,\n });\n\n const mappedTypeMap = new Map<string, GraphQLNamedType>();\n for (const type of schemaConfig.types) {\n const typeName = type.name;\n const mappedNamedType = mapNamedType(type);\n if (mappedNamedType) {\n mappedTypeMap.set(typeName, mappedNamedType);\n }\n }\n\n const mappedDirectives: Array<GraphQLDirective> = [];\n for (const directive of schemaConfig.directives) {\n if (isSpecifiedDirective(directive)) {\n // Builtin directives cannot be mapped.\n mappedDirectives.push(directive);\n continue;\n }\n\n const mappedDirectiveConfig = mapDirective(directive.toConfig());\n if (mappedDirectiveConfig) {\n mappedDirectives.push(new GraphQLDirective(mappedDirectiveConfig));\n }\n }\n\n const mappedSchemaConfig = {\n ...schemaConfig,\n query:\n schemaConfig.query &&\n (getNamedType(schemaConfig.query.name) as GraphQLObjectType),\n mutation:\n schemaConfig.mutation &&\n (getNamedType(schemaConfig.mutation.name) as GraphQLObjectType),\n subscription:\n schemaConfig.subscription &&\n (getNamedType(schemaConfig.subscription.name) as GraphQLObjectType),\n types: Array.from(mappedTypeMap.values()),\n directives: mappedDirectives,\n };\n\n const schemaMapper = configMapperMap[SchemaElementKind.SCHEMA];\n\n return schemaMapper == null\n ? mappedSchemaConfig\n : schemaMapper(mappedSchemaConfig);\n\n function getType<T extends GraphQLType>(type: T): T {\n if (isListType(type)) {\n return new GraphQLList(getType(type.ofType)) as T;\n }\n if (isNonNullType(type)) {\n return new GraphQLNonNull(getType(type.ofType)) as T;\n }\n\n return getNamedType(type.name) as T;\n }\n\n function getNamedType(typeName: string): GraphQLNamedType {\n const type = stdTypeMap.get(typeName) ?? mappedTypeMap.get(typeName);\n invariant(type !== undefined, `Unknown type: \"${typeName}\".`);\n return type;\n }\n\n function setNamedType(type: GraphQLNamedType): void {\n mappedTypeMap.set(type.name, type);\n }\n\n function getNamedTypes(): ReadonlyArray<GraphQLNamedType> {\n return Array.from(mappedTypeMap.values());\n }\n\n function mapNamedType(type: GraphQLNamedType): Maybe<GraphQLNamedType> {\n if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {\n // Builtin types cannot be mapped.\n return type;\n }\n\n if (isScalarType(type)) {\n return mapScalarType(type);\n }\n if (isObjectType(type)) {\n return mapObjectType(type);\n }\n if (isInterfaceType(type)) {\n return mapInterfaceType(type);\n }\n if (isUnionType(type)) {\n return mapUnionType(type);\n }\n if (isEnumType(type)) {\n return mapEnumType(type);\n }\n if (isInputObjectType(type)) {\n return mapInputObjectType(type);\n /* node:coverage ignore next 4 */\n }\n // Not reachable, all possible type definition nodes have been considered.\n invariant(false, 'Unexpected type: ' + inspect(type));\n }\n\n function mapScalarType(type: GraphQLScalarType): GraphQLScalarType {\n let mappedConfig: Maybe<GraphQLScalarTypeMappedConfig> = type.toConfig();\n const mapper = configMapperMap[SchemaElementKind.SCALAR];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLScalarType(mappedConfig);\n }\n\n function mapObjectType(type: GraphQLObjectType): GraphQLObjectType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLObjectTypeMappedConfig> = {\n ...config,\n interfaces: () =>\n config.interfaces.map(\n (iface) => getNamedType(iface.name) as GraphQLInterfaceType,\n ),\n fields: () => mapFields(config.fields, type.name),\n };\n const mapper = configMapperMap[SchemaElementKind.OBJECT];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLObjectType(mappedConfig);\n }\n\n function mapFields(\n fieldMap: GraphQLFieldNormalizedConfigMap<any, any>,\n parentTypeName: string,\n ): GraphQLFieldNormalizedConfigMap<any, any> {\n const newFieldMap = Object.create(null);\n for (const [fieldName, field] of Object.entries(fieldMap)) {\n let mappedField = {\n ...field,\n type: getType(field.type),\n args: mapArgs(field.args, parentTypeName, fieldName),\n };\n const mapper = configMapperMap[SchemaElementKind.FIELD];\n if (mapper) {\n mappedField = mapper(mappedField, parentTypeName);\n }\n newFieldMap[fieldName] = mappedField;\n }\n return newFieldMap;\n }\n\n function mapArgs(\n argumentMap: GraphQLFieldNormalizedConfigArgumentMap,\n fieldOrDirectiveName: string,\n parentTypeName?: string,\n ): GraphQLFieldNormalizedConfigArgumentMap {\n const newArgumentMap = Object.create(null);\n\n for (const [argName, arg] of Object.entries(argumentMap)) {\n let mappedArg = {\n ...arg,\n type: getType(arg.type),\n };\n const mapper = configMapperMap[SchemaElementKind.ARGUMENT];\n if (mapper) {\n mappedArg = mapper(mappedArg, fieldOrDirectiveName, parentTypeName);\n }\n newArgumentMap[argName] = mappedArg;\n }\n\n return newArgumentMap;\n }\n\n function mapInterfaceType(type: GraphQLInterfaceType): GraphQLInterfaceType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLInterfaceTypeMappedConfig> = {\n ...config,\n interfaces: () =>\n config.interfaces.map(\n (iface) => getNamedType(iface.name) as GraphQLInterfaceType,\n ),\n fields: () => mapFields(config.fields, type.name),\n };\n const mapper = configMapperMap[SchemaElementKind.INTERFACE];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLInterfaceType(mappedConfig);\n }\n\n function mapUnionType(type: GraphQLUnionType): GraphQLUnionType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLUnionTypeMappedConfig> = {\n ...config,\n types: () =>\n config.types.map(\n (memberType) => getNamedType(memberType.name) as GraphQLObjectType,\n ),\n };\n const mapper = configMapperMap[SchemaElementKind.UNION];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLUnionType(mappedConfig);\n }\n\n function mapEnumType(type: GraphQLEnumType): GraphQLEnumType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLEnumTypeMappedConfig> = {\n ...config,\n values: () => {\n const newEnumValues = Object.create(null);\n for (const [valueName, value] of Object.entries(config.values)) {\n const mappedValue = mapEnumValue(value, valueName, type.name);\n newEnumValues[valueName] = mappedValue;\n }\n return newEnumValues;\n },\n };\n const mapper = configMapperMap[SchemaElementKind.ENUM];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLEnumType(mappedConfig);\n }\n\n function mapEnumValue(\n valueConfig: GraphQLEnumValueConfig,\n valueName: string,\n enumName: string,\n ): GraphQLEnumValueConfig {\n const mappedConfig = { ...valueConfig };\n const mapper = configMapperMap[SchemaElementKind.ENUM_VALUE];\n return mapper == null\n ? mappedConfig\n : mapper(mappedConfig, valueName, enumName);\n }\n\n function mapInputObjectType(\n type: GraphQLInputObjectType,\n ): GraphQLInputObjectType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLInputObjectTypeMappedConfig> = {\n ...config,\n fields: () => {\n const newInputFieldMap = Object.create(null);\n for (const [fieldName, field] of Object.entries(config.fields)) {\n const mappedField = mapInputField(field, fieldName, type.name);\n newInputFieldMap[fieldName] = mappedField;\n }\n return newInputFieldMap;\n },\n };\n const mapper = configMapperMap[SchemaElementKind.INPUT_OBJECT];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLInputObjectType(mappedConfig);\n }\n\n function mapInputField(\n inputFieldConfig: GraphQLInputFieldConfig,\n inputFieldName: string,\n inputObjectTypeName: string,\n ): GraphQLInputFieldConfig {\n const mappedConfig = {\n ...inputFieldConfig,\n type: getType(inputFieldConfig.type),\n };\n const mapper = configMapperMap[SchemaElementKind.INPUT_FIELD];\n return mapper == null\n ? mappedConfig\n : mapper(mappedConfig, inputFieldName, inputObjectTypeName);\n }\n\n function mapDirective(\n config: GraphQLDirectiveNormalizedConfig,\n ): Maybe<GraphQLDirectiveNormalizedConfig> {\n const mappedConfig = {\n ...config,\n args: mapArgs(config.args, config.name, undefined),\n };\n const mapper = configMapperMap[SchemaElementKind.DIRECTIVE];\n return mapper == null ? mappedConfig : mapper(mappedConfig);\n }\n}\n\nconst stdTypeMap = new Map(\n [...specifiedScalarTypes, ...introspectionTypes].map((type) => [\n type.name,\n type,\n ]),\n);\n"]}
|
|
1
|
+
{"version":3,"file":"mapSchemaConfig.js","sourceRoot":"","sources":["../../src/utilities/mapSchemaConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport type {\n GraphQLArgumentNormalizedConfig,\n GraphQLEnumTypeNormalizedConfig,\n GraphQLEnumValueConfig,\n GraphQLFieldNormalizedConfig,\n GraphQLFieldNormalizedConfigArgumentMap,\n GraphQLFieldNormalizedConfigMap,\n GraphQLInputFieldConfig,\n GraphQLInputObjectTypeNormalizedConfig,\n GraphQLInterfaceTypeNormalizedConfig,\n GraphQLNamedType,\n GraphQLObjectTypeNormalizedConfig,\n GraphQLScalarTypeNormalizedConfig,\n GraphQLType,\n GraphQLUnionTypeNormalizedConfig,\n} from '../type/definition.ts';\nimport {\n GraphQLEnumType,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../type/definition.ts';\nimport type { GraphQLDirectiveNormalizedConfig } from '../type/directives.ts';\nimport { GraphQLDirective, isSpecifiedDirective } from '../type/directives.ts';\nimport {\n introspectionTypes,\n isIntrospectionType,\n} from '../type/introspection.ts';\nimport {\n isSpecifiedScalarType,\n specifiedScalarTypes,\n} from '../type/scalars.ts';\nimport type { GraphQLSchemaNormalizedConfig } from '../type/schema.ts';\n\n/**\n * The set of GraphQL Schema Elements.\n *\n * @internal\n */\nexport const SchemaElementKind = {\n SCHEMA: 'SCHEMA' as const,\n SCALAR: 'SCALAR' as const,\n OBJECT: 'OBJECT' as const,\n FIELD: 'FIELD' as const,\n ARGUMENT: 'ARGUMENT' as const,\n INTERFACE: 'INTERFACE' as const,\n UNION: 'UNION' as const,\n ENUM: 'ENUM' as const,\n ENUM_VALUE: 'ENUM_VALUE' as const,\n INPUT_OBJECT: 'INPUT_OBJECT' as const,\n INPUT_FIELD: 'INPUT_FIELD' as const,\n DIRECTIVE: 'DIRECTIVE' as const,\n} as const;\n\n/** @internal */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\ntype SchemaElementKind =\n (typeof SchemaElementKind)[keyof typeof SchemaElementKind];\n\n/** @internal */\nexport interface MappedSchemaContext {\n getNamedType: (typeName: string) => GraphQLNamedType;\n setNamedType: (type: GraphQLNamedType) => void;\n getNamedTypes: () => ReadonlyArray<GraphQLNamedType>;\n}\n\ntype GraphQLScalarTypeMappedConfig = GraphQLScalarTypeNormalizedConfig<\n any,\n any\n>;\n\ntype EnsureThunks<T, ThunkFields extends keyof T> = {\n [K in keyof T]: K extends ThunkFields ? () => T[K] : T[K];\n};\n\ntype GraphQLObjectTypeMappedConfig = EnsureThunks<\n GraphQLObjectTypeNormalizedConfig<any, any>,\n 'interfaces' | 'fields'\n>;\ntype GraphQLInterfaceTypeMappedConfig = EnsureThunks<\n GraphQLInterfaceTypeNormalizedConfig<any, any>,\n 'interfaces' | 'fields'\n>;\ntype GraphQLUnionTypeMappedConfig = EnsureThunks<\n GraphQLUnionTypeNormalizedConfig<any, any>,\n 'types'\n>;\ntype GraphQLEnumTypeMappedConfig = EnsureThunks<\n GraphQLEnumTypeNormalizedConfig,\n 'values'\n>;\ntype GraphQLInputObjectTypeMappedConfig = EnsureThunks<\n GraphQLInputObjectTypeNormalizedConfig,\n 'fields'\n>;\n\ntype ScalarTypeConfigMapper = (\n scalarConfig: GraphQLScalarTypeMappedConfig,\n) => GraphQLScalarTypeMappedConfig;\n\ntype ObjectTypeConfigMapper = (\n objectConfig: GraphQLObjectTypeMappedConfig,\n) => GraphQLObjectTypeMappedConfig;\n\ntype FieldConfigMapper = (\n fieldConfig: GraphQLFieldNormalizedConfig<any, any>,\n parentTypeName: string,\n) => GraphQLFieldNormalizedConfig<any, any>;\n\ntype ArgumentConfigMapper = (\n argConfig: GraphQLArgumentNormalizedConfig,\n fieldOrDirectiveName: string,\n parentTypeName?: string,\n) => GraphQLArgumentNormalizedConfig;\n\ntype InterfaceTypeConfigMapper = (\n interfaceConfig: GraphQLInterfaceTypeMappedConfig,\n) => GraphQLInterfaceTypeMappedConfig;\n\ntype UnionTypeConfigMapper = (\n unionConfig: GraphQLUnionTypeMappedConfig,\n) => GraphQLUnionTypeMappedConfig;\n\ntype EnumTypeConfigMapper = (\n enumConfig: GraphQLEnumTypeMappedConfig,\n) => GraphQLEnumTypeMappedConfig;\n\ntype EnumValueConfigMapper = (\n enumValueConfig: GraphQLEnumValueConfig,\n valueName: string,\n enumName: string,\n) => GraphQLEnumValueConfig;\n\ntype InputObjectTypeConfigMapper = (\n inputObjectConfig: GraphQLInputObjectTypeMappedConfig,\n) => GraphQLInputObjectTypeMappedConfig;\n\ntype InputFieldConfigMapper = (\n inputFieldConfig: GraphQLInputFieldConfig,\n inputFieldName: string,\n inputObjectTypeName: string,\n) => GraphQLInputFieldConfig;\n\ntype DirectiveConfigMapper = (\n directiveConfig: GraphQLDirectiveNormalizedConfig,\n) => GraphQLDirectiveNormalizedConfig;\n\ntype SchemaConfigMapper = (\n originalSchemaConfig: GraphQLSchemaNormalizedConfig,\n) => GraphQLSchemaNormalizedConfig;\n\n/** @internal */\nexport interface ConfigMapperMap {\n [SchemaElementKind.SCALAR]?: ScalarTypeConfigMapper;\n [SchemaElementKind.OBJECT]?: ObjectTypeConfigMapper;\n [SchemaElementKind.FIELD]?: FieldConfigMapper;\n [SchemaElementKind.ARGUMENT]?: ArgumentConfigMapper;\n [SchemaElementKind.INTERFACE]?: InterfaceTypeConfigMapper;\n [SchemaElementKind.UNION]?: UnionTypeConfigMapper;\n [SchemaElementKind.ENUM]?: EnumTypeConfigMapper;\n [SchemaElementKind.ENUM_VALUE]?: EnumValueConfigMapper;\n [SchemaElementKind.INPUT_OBJECT]?: InputObjectTypeConfigMapper;\n [SchemaElementKind.INPUT_FIELD]?: InputFieldConfigMapper;\n [SchemaElementKind.DIRECTIVE]?: DirectiveConfigMapper;\n [SchemaElementKind.SCHEMA]?: SchemaConfigMapper;\n}\n\n/** @internal */\nexport function mapSchemaConfig(\n schemaConfig: GraphQLSchemaNormalizedConfig,\n configMapperMapFn: (context: MappedSchemaContext) => ConfigMapperMap,\n): GraphQLSchemaNormalizedConfig {\n const configMapperMap = configMapperMapFn({\n getNamedType,\n setNamedType,\n getNamedTypes,\n });\n\n const mappedTypeMap = new Map<string, GraphQLNamedType>();\n for (const type of schemaConfig.types) {\n const typeName = type.name;\n const mappedNamedType = mapNamedType(type);\n if (mappedNamedType) {\n mappedTypeMap.set(typeName, mappedNamedType);\n }\n }\n\n const mappedDirectives: Array<GraphQLDirective> = [];\n for (const directive of schemaConfig.directives) {\n if (isSpecifiedDirective(directive)) {\n // Builtin directives cannot be mapped.\n mappedDirectives.push(directive);\n continue;\n }\n\n const mappedDirectiveConfig = mapDirective(directive.toConfig());\n if (mappedDirectiveConfig) {\n mappedDirectives.push(new GraphQLDirective(mappedDirectiveConfig));\n }\n }\n\n const mappedSchemaConfig = {\n ...schemaConfig,\n query:\n schemaConfig.query &&\n (getNamedType(schemaConfig.query.name) as GraphQLObjectType),\n mutation:\n schemaConfig.mutation &&\n (getNamedType(schemaConfig.mutation.name) as GraphQLObjectType),\n subscription:\n schemaConfig.subscription &&\n (getNamedType(schemaConfig.subscription.name) as GraphQLObjectType),\n types: Array.from(mappedTypeMap.values()),\n directives: mappedDirectives,\n };\n\n const schemaMapper = configMapperMap[SchemaElementKind.SCHEMA];\n\n return schemaMapper == null\n ? mappedSchemaConfig\n : schemaMapper(mappedSchemaConfig);\n\n function getType<T extends GraphQLType>(type: T): T {\n if (isListType(type)) {\n return new GraphQLList(getType(type.ofType)) as T;\n }\n if (isNonNullType(type)) {\n return new GraphQLNonNull(getType(type.ofType)) as T;\n }\n\n return getNamedType(type.name) as T;\n }\n\n function getNamedType(typeName: string): GraphQLNamedType {\n const type = stdTypeMap.get(typeName) ?? mappedTypeMap.get(typeName);\n invariant(type !== undefined, `Unknown type: \"${typeName}\".`);\n return type;\n }\n\n function setNamedType(type: GraphQLNamedType): void {\n mappedTypeMap.set(type.name, type);\n }\n\n function getNamedTypes(): ReadonlyArray<GraphQLNamedType> {\n return Array.from(mappedTypeMap.values());\n }\n\n function mapNamedType(type: GraphQLNamedType): Maybe<GraphQLNamedType> {\n if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {\n // Builtin types cannot be mapped.\n return type;\n }\n\n if (isScalarType(type)) {\n return mapScalarType(type);\n }\n if (isObjectType(type)) {\n return mapObjectType(type);\n }\n if (isInterfaceType(type)) {\n return mapInterfaceType(type);\n }\n if (isUnionType(type)) {\n return mapUnionType(type);\n }\n if (isEnumType(type)) {\n return mapEnumType(type);\n }\n if (isInputObjectType(type)) {\n return mapInputObjectType(type);\n /* node:coverage ignore next 4 */\n }\n // Not reachable, all possible type definition nodes have been considered.\n invariant(false, 'Unexpected type: ' + inspect(type));\n }\n\n function mapScalarType(type: GraphQLScalarType): GraphQLScalarType {\n let mappedConfig: Maybe<GraphQLScalarTypeMappedConfig> = type.toConfig();\n const mapper = configMapperMap[SchemaElementKind.SCALAR];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLScalarType(mappedConfig);\n }\n\n function mapObjectType(type: GraphQLObjectType): GraphQLObjectType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLObjectTypeMappedConfig> = {\n ...config,\n interfaces: () =>\n config.interfaces.map(\n (iface) => getNamedType(iface.name) as GraphQLInterfaceType,\n ),\n fields: () => mapFields(config.fields, type.name),\n };\n const mapper = configMapperMap[SchemaElementKind.OBJECT];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLObjectType(mappedConfig);\n }\n\n function mapFields(\n fieldMap: GraphQLFieldNormalizedConfigMap<any, any>,\n parentTypeName: string,\n ): GraphQLFieldNormalizedConfigMap<any, any> {\n const newFieldMap = Object.create(null);\n for (const [fieldName, field] of Object.entries(fieldMap)) {\n let mappedField = {\n ...field,\n type: getType(field.type),\n args: mapArgs(field.args, fieldName, parentTypeName),\n };\n const mapper = configMapperMap[SchemaElementKind.FIELD];\n if (mapper) {\n mappedField = mapper(mappedField, parentTypeName);\n }\n newFieldMap[fieldName] = mappedField;\n }\n return newFieldMap;\n }\n\n function mapArgs(\n argumentMap: GraphQLFieldNormalizedConfigArgumentMap,\n fieldOrDirectiveName: string,\n parentTypeName?: string,\n ): GraphQLFieldNormalizedConfigArgumentMap {\n const newArgumentMap = Object.create(null);\n\n for (const [argName, arg] of Object.entries(argumentMap)) {\n let mappedArg = {\n ...arg,\n type: getType(arg.type),\n };\n const mapper = configMapperMap[SchemaElementKind.ARGUMENT];\n if (mapper) {\n mappedArg = mapper(mappedArg, fieldOrDirectiveName, parentTypeName);\n }\n newArgumentMap[argName] = mappedArg;\n }\n\n return newArgumentMap;\n }\n\n function mapInterfaceType(type: GraphQLInterfaceType): GraphQLInterfaceType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLInterfaceTypeMappedConfig> = {\n ...config,\n interfaces: () =>\n config.interfaces.map(\n (iface) => getNamedType(iface.name) as GraphQLInterfaceType,\n ),\n fields: () => mapFields(config.fields, type.name),\n };\n const mapper = configMapperMap[SchemaElementKind.INTERFACE];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLInterfaceType(mappedConfig);\n }\n\n function mapUnionType(type: GraphQLUnionType): GraphQLUnionType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLUnionTypeMappedConfig> = {\n ...config,\n types: () =>\n config.types.map(\n (memberType) => getNamedType(memberType.name) as GraphQLObjectType,\n ),\n };\n const mapper = configMapperMap[SchemaElementKind.UNION];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLUnionType(mappedConfig);\n }\n\n function mapEnumType(type: GraphQLEnumType): GraphQLEnumType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLEnumTypeMappedConfig> = {\n ...config,\n values: () => {\n const newEnumValues = Object.create(null);\n for (const [valueName, value] of Object.entries(config.values)) {\n const mappedValue = mapEnumValue(value, valueName, type.name);\n newEnumValues[valueName] = mappedValue;\n }\n return newEnumValues;\n },\n };\n const mapper = configMapperMap[SchemaElementKind.ENUM];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLEnumType(mappedConfig);\n }\n\n function mapEnumValue(\n valueConfig: GraphQLEnumValueConfig,\n valueName: string,\n enumName: string,\n ): GraphQLEnumValueConfig {\n const mappedConfig = { ...valueConfig };\n const mapper = configMapperMap[SchemaElementKind.ENUM_VALUE];\n return mapper == null\n ? mappedConfig\n : mapper(mappedConfig, valueName, enumName);\n }\n\n function mapInputObjectType(\n type: GraphQLInputObjectType,\n ): GraphQLInputObjectType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLInputObjectTypeMappedConfig> = {\n ...config,\n fields: () => {\n const newInputFieldMap = Object.create(null);\n for (const [fieldName, field] of Object.entries(config.fields)) {\n const mappedField = mapInputField(field, fieldName, type.name);\n newInputFieldMap[fieldName] = mappedField;\n }\n return newInputFieldMap;\n },\n };\n const mapper = configMapperMap[SchemaElementKind.INPUT_OBJECT];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLInputObjectType(mappedConfig);\n }\n\n function mapInputField(\n inputFieldConfig: GraphQLInputFieldConfig,\n inputFieldName: string,\n inputObjectTypeName: string,\n ): GraphQLInputFieldConfig {\n const mappedConfig = {\n ...inputFieldConfig,\n type: getType(inputFieldConfig.type),\n };\n const mapper = configMapperMap[SchemaElementKind.INPUT_FIELD];\n return mapper == null\n ? mappedConfig\n : mapper(mappedConfig, inputFieldName, inputObjectTypeName);\n }\n\n function mapDirective(\n config: GraphQLDirectiveNormalizedConfig,\n ): Maybe<GraphQLDirectiveNormalizedConfig> {\n const mappedConfig = {\n ...config,\n args: mapArgs(config.args, config.name, undefined),\n };\n const mapper = configMapperMap[SchemaElementKind.DIRECTIVE];\n return mapper == null ? mappedConfig : mapper(mappedConfig);\n }\n}\n\nconst stdTypeMap = new Map(\n [...specifiedScalarTypes, ...introspectionTypes].map((type) => [\n type.name,\n type,\n ]),\n);\n"]}
|
|
@@ -126,7 +126,7 @@ export function mapSchemaConfig(schemaConfig, configMapperMapFn) {
|
|
|
126
126
|
let mappedField = {
|
|
127
127
|
...field,
|
|
128
128
|
type: getType(field.type),
|
|
129
|
-
args: mapArgs(field.args,
|
|
129
|
+
args: mapArgs(field.args, fieldName, parentTypeName),
|
|
130
130
|
};
|
|
131
131
|
const mapper = configMapperMap[SchemaElementKind.FIELD];
|
|
132
132
|
if (mapper) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapSchemaConfig.js","sourceRoot":"","sources":["../../src/utilities/mapSchemaConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport type {\n GraphQLArgumentNormalizedConfig,\n GraphQLEnumTypeNormalizedConfig,\n GraphQLEnumValueConfig,\n GraphQLFieldNormalizedConfig,\n GraphQLFieldNormalizedConfigArgumentMap,\n GraphQLFieldNormalizedConfigMap,\n GraphQLInputFieldConfig,\n GraphQLInputObjectTypeNormalizedConfig,\n GraphQLInterfaceTypeNormalizedConfig,\n GraphQLNamedType,\n GraphQLObjectTypeNormalizedConfig,\n GraphQLScalarTypeNormalizedConfig,\n GraphQLType,\n GraphQLUnionTypeNormalizedConfig,\n} from '../type/definition.ts';\nimport {\n GraphQLEnumType,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../type/definition.ts';\nimport type { GraphQLDirectiveNormalizedConfig } from '../type/directives.ts';\nimport { GraphQLDirective, isSpecifiedDirective } from '../type/directives.ts';\nimport {\n introspectionTypes,\n isIntrospectionType,\n} from '../type/introspection.ts';\nimport {\n isSpecifiedScalarType,\n specifiedScalarTypes,\n} from '../type/scalars.ts';\nimport type { GraphQLSchemaNormalizedConfig } from '../type/schema.ts';\n\n/**\n * The set of GraphQL Schema Elements.\n *\n * @internal\n */\nexport const SchemaElementKind = {\n SCHEMA: 'SCHEMA' as const,\n SCALAR: 'SCALAR' as const,\n OBJECT: 'OBJECT' as const,\n FIELD: 'FIELD' as const,\n ARGUMENT: 'ARGUMENT' as const,\n INTERFACE: 'INTERFACE' as const,\n UNION: 'UNION' as const,\n ENUM: 'ENUM' as const,\n ENUM_VALUE: 'ENUM_VALUE' as const,\n INPUT_OBJECT: 'INPUT_OBJECT' as const,\n INPUT_FIELD: 'INPUT_FIELD' as const,\n DIRECTIVE: 'DIRECTIVE' as const,\n} as const;\n\n/** @internal */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\ntype SchemaElementKind =\n (typeof SchemaElementKind)[keyof typeof SchemaElementKind];\n\n/** @internal */\nexport interface MappedSchemaContext {\n getNamedType: (typeName: string) => GraphQLNamedType;\n setNamedType: (type: GraphQLNamedType) => void;\n getNamedTypes: () => ReadonlyArray<GraphQLNamedType>;\n}\n\ntype GraphQLScalarTypeMappedConfig = GraphQLScalarTypeNormalizedConfig<\n any,\n any\n>;\n\ntype EnsureThunks<T, ThunkFields extends keyof T> = {\n [K in keyof T]: K extends ThunkFields ? () => T[K] : T[K];\n};\n\ntype GraphQLObjectTypeMappedConfig = EnsureThunks<\n GraphQLObjectTypeNormalizedConfig<any, any>,\n 'interfaces' | 'fields'\n>;\ntype GraphQLInterfaceTypeMappedConfig = EnsureThunks<\n GraphQLInterfaceTypeNormalizedConfig<any, any>,\n 'interfaces' | 'fields'\n>;\ntype GraphQLUnionTypeMappedConfig = EnsureThunks<\n GraphQLUnionTypeNormalizedConfig<any, any>,\n 'types'\n>;\ntype GraphQLEnumTypeMappedConfig = EnsureThunks<\n GraphQLEnumTypeNormalizedConfig,\n 'values'\n>;\ntype GraphQLInputObjectTypeMappedConfig = EnsureThunks<\n GraphQLInputObjectTypeNormalizedConfig,\n 'fields'\n>;\n\ntype ScalarTypeConfigMapper = (\n scalarConfig: GraphQLScalarTypeMappedConfig,\n) => GraphQLScalarTypeMappedConfig;\n\ntype ObjectTypeConfigMapper = (\n objectConfig: GraphQLObjectTypeMappedConfig,\n) => GraphQLObjectTypeMappedConfig;\n\ntype FieldConfigMapper = (\n fieldConfig: GraphQLFieldNormalizedConfig<any, any>,\n parentTypeName: string,\n) => GraphQLFieldNormalizedConfig<any, any>;\n\ntype ArgumentConfigMapper = (\n argConfig: GraphQLArgumentNormalizedConfig,\n fieldOrDirectiveName: string,\n parentTypeName?: string,\n) => GraphQLArgumentNormalizedConfig;\n\ntype InterfaceTypeConfigMapper = (\n interfaceConfig: GraphQLInterfaceTypeMappedConfig,\n) => GraphQLInterfaceTypeMappedConfig;\n\ntype UnionTypeConfigMapper = (\n unionConfig: GraphQLUnionTypeMappedConfig,\n) => GraphQLUnionTypeMappedConfig;\n\ntype EnumTypeConfigMapper = (\n enumConfig: GraphQLEnumTypeMappedConfig,\n) => GraphQLEnumTypeMappedConfig;\n\ntype EnumValueConfigMapper = (\n enumValueConfig: GraphQLEnumValueConfig,\n valueName: string,\n enumName: string,\n) => GraphQLEnumValueConfig;\n\ntype InputObjectTypeConfigMapper = (\n inputObjectConfig: GraphQLInputObjectTypeMappedConfig,\n) => GraphQLInputObjectTypeMappedConfig;\n\ntype InputFieldConfigMapper = (\n inputFieldConfig: GraphQLInputFieldConfig,\n inputFieldName: string,\n inputObjectTypeName: string,\n) => GraphQLInputFieldConfig;\n\ntype DirectiveConfigMapper = (\n directiveConfig: GraphQLDirectiveNormalizedConfig,\n) => GraphQLDirectiveNormalizedConfig;\n\ntype SchemaConfigMapper = (\n originalSchemaConfig: GraphQLSchemaNormalizedConfig,\n) => GraphQLSchemaNormalizedConfig;\n\n/** @internal */\nexport interface ConfigMapperMap {\n [SchemaElementKind.SCALAR]?: ScalarTypeConfigMapper;\n [SchemaElementKind.OBJECT]?: ObjectTypeConfigMapper;\n [SchemaElementKind.FIELD]?: FieldConfigMapper;\n [SchemaElementKind.ARGUMENT]?: ArgumentConfigMapper;\n [SchemaElementKind.INTERFACE]?: InterfaceTypeConfigMapper;\n [SchemaElementKind.UNION]?: UnionTypeConfigMapper;\n [SchemaElementKind.ENUM]?: EnumTypeConfigMapper;\n [SchemaElementKind.ENUM_VALUE]?: EnumValueConfigMapper;\n [SchemaElementKind.INPUT_OBJECT]?: InputObjectTypeConfigMapper;\n [SchemaElementKind.INPUT_FIELD]?: InputFieldConfigMapper;\n [SchemaElementKind.DIRECTIVE]?: DirectiveConfigMapper;\n [SchemaElementKind.SCHEMA]?: SchemaConfigMapper;\n}\n\n/** @internal */\nexport function mapSchemaConfig(\n schemaConfig: GraphQLSchemaNormalizedConfig,\n configMapperMapFn: (context: MappedSchemaContext) => ConfigMapperMap,\n): GraphQLSchemaNormalizedConfig {\n const configMapperMap = configMapperMapFn({\n getNamedType,\n setNamedType,\n getNamedTypes,\n });\n\n const mappedTypeMap = new Map<string, GraphQLNamedType>();\n for (const type of schemaConfig.types) {\n const typeName = type.name;\n const mappedNamedType = mapNamedType(type);\n if (mappedNamedType) {\n mappedTypeMap.set(typeName, mappedNamedType);\n }\n }\n\n const mappedDirectives: Array<GraphQLDirective> = [];\n for (const directive of schemaConfig.directives) {\n if (isSpecifiedDirective(directive)) {\n // Builtin directives cannot be mapped.\n mappedDirectives.push(directive);\n continue;\n }\n\n const mappedDirectiveConfig = mapDirective(directive.toConfig());\n if (mappedDirectiveConfig) {\n mappedDirectives.push(new GraphQLDirective(mappedDirectiveConfig));\n }\n }\n\n const mappedSchemaConfig = {\n ...schemaConfig,\n query:\n schemaConfig.query &&\n (getNamedType(schemaConfig.query.name) as GraphQLObjectType),\n mutation:\n schemaConfig.mutation &&\n (getNamedType(schemaConfig.mutation.name) as GraphQLObjectType),\n subscription:\n schemaConfig.subscription &&\n (getNamedType(schemaConfig.subscription.name) as GraphQLObjectType),\n types: Array.from(mappedTypeMap.values()),\n directives: mappedDirectives,\n };\n\n const schemaMapper = configMapperMap[SchemaElementKind.SCHEMA];\n\n return schemaMapper == null\n ? mappedSchemaConfig\n : schemaMapper(mappedSchemaConfig);\n\n function getType<T extends GraphQLType>(type: T): T {\n if (isListType(type)) {\n return new GraphQLList(getType(type.ofType)) as T;\n }\n if (isNonNullType(type)) {\n return new GraphQLNonNull(getType(type.ofType)) as T;\n }\n\n return getNamedType(type.name) as T;\n }\n\n function getNamedType(typeName: string): GraphQLNamedType {\n const type = stdTypeMap.get(typeName) ?? mappedTypeMap.get(typeName);\n invariant(type !== undefined, `Unknown type: \"${typeName}\".`);\n return type;\n }\n\n function setNamedType(type: GraphQLNamedType): void {\n mappedTypeMap.set(type.name, type);\n }\n\n function getNamedTypes(): ReadonlyArray<GraphQLNamedType> {\n return Array.from(mappedTypeMap.values());\n }\n\n function mapNamedType(type: GraphQLNamedType): Maybe<GraphQLNamedType> {\n if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {\n // Builtin types cannot be mapped.\n return type;\n }\n\n if (isScalarType(type)) {\n return mapScalarType(type);\n }\n if (isObjectType(type)) {\n return mapObjectType(type);\n }\n if (isInterfaceType(type)) {\n return mapInterfaceType(type);\n }\n if (isUnionType(type)) {\n return mapUnionType(type);\n }\n if (isEnumType(type)) {\n return mapEnumType(type);\n }\n if (isInputObjectType(type)) {\n return mapInputObjectType(type);\n /* node:coverage ignore next 4 */\n }\n // Not reachable, all possible type definition nodes have been considered.\n invariant(false, 'Unexpected type: ' + inspect(type));\n }\n\n function mapScalarType(type: GraphQLScalarType): GraphQLScalarType {\n let mappedConfig: Maybe<GraphQLScalarTypeMappedConfig> = type.toConfig();\n const mapper = configMapperMap[SchemaElementKind.SCALAR];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLScalarType(mappedConfig);\n }\n\n function mapObjectType(type: GraphQLObjectType): GraphQLObjectType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLObjectTypeMappedConfig> = {\n ...config,\n interfaces: () =>\n config.interfaces.map(\n (iface) => getNamedType(iface.name) as GraphQLInterfaceType,\n ),\n fields: () => mapFields(config.fields, type.name),\n };\n const mapper = configMapperMap[SchemaElementKind.OBJECT];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLObjectType(mappedConfig);\n }\n\n function mapFields(\n fieldMap: GraphQLFieldNormalizedConfigMap<any, any>,\n parentTypeName: string,\n ): GraphQLFieldNormalizedConfigMap<any, any> {\n const newFieldMap = Object.create(null);\n for (const [fieldName, field] of Object.entries(fieldMap)) {\n let mappedField = {\n ...field,\n type: getType(field.type),\n args: mapArgs(field.args, parentTypeName, fieldName),\n };\n const mapper = configMapperMap[SchemaElementKind.FIELD];\n if (mapper) {\n mappedField = mapper(mappedField, parentTypeName);\n }\n newFieldMap[fieldName] = mappedField;\n }\n return newFieldMap;\n }\n\n function mapArgs(\n argumentMap: GraphQLFieldNormalizedConfigArgumentMap,\n fieldOrDirectiveName: string,\n parentTypeName?: string,\n ): GraphQLFieldNormalizedConfigArgumentMap {\n const newArgumentMap = Object.create(null);\n\n for (const [argName, arg] of Object.entries(argumentMap)) {\n let mappedArg = {\n ...arg,\n type: getType(arg.type),\n };\n const mapper = configMapperMap[SchemaElementKind.ARGUMENT];\n if (mapper) {\n mappedArg = mapper(mappedArg, fieldOrDirectiveName, parentTypeName);\n }\n newArgumentMap[argName] = mappedArg;\n }\n\n return newArgumentMap;\n }\n\n function mapInterfaceType(type: GraphQLInterfaceType): GraphQLInterfaceType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLInterfaceTypeMappedConfig> = {\n ...config,\n interfaces: () =>\n config.interfaces.map(\n (iface) => getNamedType(iface.name) as GraphQLInterfaceType,\n ),\n fields: () => mapFields(config.fields, type.name),\n };\n const mapper = configMapperMap[SchemaElementKind.INTERFACE];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLInterfaceType(mappedConfig);\n }\n\n function mapUnionType(type: GraphQLUnionType): GraphQLUnionType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLUnionTypeMappedConfig> = {\n ...config,\n types: () =>\n config.types.map(\n (memberType) => getNamedType(memberType.name) as GraphQLObjectType,\n ),\n };\n const mapper = configMapperMap[SchemaElementKind.UNION];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLUnionType(mappedConfig);\n }\n\n function mapEnumType(type: GraphQLEnumType): GraphQLEnumType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLEnumTypeMappedConfig> = {\n ...config,\n values: () => {\n const newEnumValues = Object.create(null);\n for (const [valueName, value] of Object.entries(config.values)) {\n const mappedValue = mapEnumValue(value, valueName, type.name);\n newEnumValues[valueName] = mappedValue;\n }\n return newEnumValues;\n },\n };\n const mapper = configMapperMap[SchemaElementKind.ENUM];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLEnumType(mappedConfig);\n }\n\n function mapEnumValue(\n valueConfig: GraphQLEnumValueConfig,\n valueName: string,\n enumName: string,\n ): GraphQLEnumValueConfig {\n const mappedConfig = { ...valueConfig };\n const mapper = configMapperMap[SchemaElementKind.ENUM_VALUE];\n return mapper == null\n ? mappedConfig\n : mapper(mappedConfig, valueName, enumName);\n }\n\n function mapInputObjectType(\n type: GraphQLInputObjectType,\n ): GraphQLInputObjectType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLInputObjectTypeMappedConfig> = {\n ...config,\n fields: () => {\n const newInputFieldMap = Object.create(null);\n for (const [fieldName, field] of Object.entries(config.fields)) {\n const mappedField = mapInputField(field, fieldName, type.name);\n newInputFieldMap[fieldName] = mappedField;\n }\n return newInputFieldMap;\n },\n };\n const mapper = configMapperMap[SchemaElementKind.INPUT_OBJECT];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLInputObjectType(mappedConfig);\n }\n\n function mapInputField(\n inputFieldConfig: GraphQLInputFieldConfig,\n inputFieldName: string,\n inputObjectTypeName: string,\n ): GraphQLInputFieldConfig {\n const mappedConfig = {\n ...inputFieldConfig,\n type: getType(inputFieldConfig.type),\n };\n const mapper = configMapperMap[SchemaElementKind.INPUT_FIELD];\n return mapper == null\n ? mappedConfig\n : mapper(mappedConfig, inputFieldName, inputObjectTypeName);\n }\n\n function mapDirective(\n config: GraphQLDirectiveNormalizedConfig,\n ): Maybe<GraphQLDirectiveNormalizedConfig> {\n const mappedConfig = {\n ...config,\n args: mapArgs(config.args, config.name, undefined),\n };\n const mapper = configMapperMap[SchemaElementKind.DIRECTIVE];\n return mapper == null ? mappedConfig : mapper(mappedConfig);\n }\n}\n\nconst stdTypeMap = new Map(\n [...specifiedScalarTypes, ...introspectionTypes].map((type) => [\n type.name,\n type,\n ]),\n);\n"]}
|
|
1
|
+
{"version":3,"file":"mapSchemaConfig.js","sourceRoot":"","sources":["../../src/utilities/mapSchemaConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport type {\n GraphQLArgumentNormalizedConfig,\n GraphQLEnumTypeNormalizedConfig,\n GraphQLEnumValueConfig,\n GraphQLFieldNormalizedConfig,\n GraphQLFieldNormalizedConfigArgumentMap,\n GraphQLFieldNormalizedConfigMap,\n GraphQLInputFieldConfig,\n GraphQLInputObjectTypeNormalizedConfig,\n GraphQLInterfaceTypeNormalizedConfig,\n GraphQLNamedType,\n GraphQLObjectTypeNormalizedConfig,\n GraphQLScalarTypeNormalizedConfig,\n GraphQLType,\n GraphQLUnionTypeNormalizedConfig,\n} from '../type/definition.ts';\nimport {\n GraphQLEnumType,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLUnionType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../type/definition.ts';\nimport type { GraphQLDirectiveNormalizedConfig } from '../type/directives.ts';\nimport { GraphQLDirective, isSpecifiedDirective } from '../type/directives.ts';\nimport {\n introspectionTypes,\n isIntrospectionType,\n} from '../type/introspection.ts';\nimport {\n isSpecifiedScalarType,\n specifiedScalarTypes,\n} from '../type/scalars.ts';\nimport type { GraphQLSchemaNormalizedConfig } from '../type/schema.ts';\n\n/**\n * The set of GraphQL Schema Elements.\n *\n * @internal\n */\nexport const SchemaElementKind = {\n SCHEMA: 'SCHEMA' as const,\n SCALAR: 'SCALAR' as const,\n OBJECT: 'OBJECT' as const,\n FIELD: 'FIELD' as const,\n ARGUMENT: 'ARGUMENT' as const,\n INTERFACE: 'INTERFACE' as const,\n UNION: 'UNION' as const,\n ENUM: 'ENUM' as const,\n ENUM_VALUE: 'ENUM_VALUE' as const,\n INPUT_OBJECT: 'INPUT_OBJECT' as const,\n INPUT_FIELD: 'INPUT_FIELD' as const,\n DIRECTIVE: 'DIRECTIVE' as const,\n} as const;\n\n/** @internal */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\ntype SchemaElementKind =\n (typeof SchemaElementKind)[keyof typeof SchemaElementKind];\n\n/** @internal */\nexport interface MappedSchemaContext {\n getNamedType: (typeName: string) => GraphQLNamedType;\n setNamedType: (type: GraphQLNamedType) => void;\n getNamedTypes: () => ReadonlyArray<GraphQLNamedType>;\n}\n\ntype GraphQLScalarTypeMappedConfig = GraphQLScalarTypeNormalizedConfig<\n any,\n any\n>;\n\ntype EnsureThunks<T, ThunkFields extends keyof T> = {\n [K in keyof T]: K extends ThunkFields ? () => T[K] : T[K];\n};\n\ntype GraphQLObjectTypeMappedConfig = EnsureThunks<\n GraphQLObjectTypeNormalizedConfig<any, any>,\n 'interfaces' | 'fields'\n>;\ntype GraphQLInterfaceTypeMappedConfig = EnsureThunks<\n GraphQLInterfaceTypeNormalizedConfig<any, any>,\n 'interfaces' | 'fields'\n>;\ntype GraphQLUnionTypeMappedConfig = EnsureThunks<\n GraphQLUnionTypeNormalizedConfig<any, any>,\n 'types'\n>;\ntype GraphQLEnumTypeMappedConfig = EnsureThunks<\n GraphQLEnumTypeNormalizedConfig,\n 'values'\n>;\ntype GraphQLInputObjectTypeMappedConfig = EnsureThunks<\n GraphQLInputObjectTypeNormalizedConfig,\n 'fields'\n>;\n\ntype ScalarTypeConfigMapper = (\n scalarConfig: GraphQLScalarTypeMappedConfig,\n) => GraphQLScalarTypeMappedConfig;\n\ntype ObjectTypeConfigMapper = (\n objectConfig: GraphQLObjectTypeMappedConfig,\n) => GraphQLObjectTypeMappedConfig;\n\ntype FieldConfigMapper = (\n fieldConfig: GraphQLFieldNormalizedConfig<any, any>,\n parentTypeName: string,\n) => GraphQLFieldNormalizedConfig<any, any>;\n\ntype ArgumentConfigMapper = (\n argConfig: GraphQLArgumentNormalizedConfig,\n fieldOrDirectiveName: string,\n parentTypeName?: string,\n) => GraphQLArgumentNormalizedConfig;\n\ntype InterfaceTypeConfigMapper = (\n interfaceConfig: GraphQLInterfaceTypeMappedConfig,\n) => GraphQLInterfaceTypeMappedConfig;\n\ntype UnionTypeConfigMapper = (\n unionConfig: GraphQLUnionTypeMappedConfig,\n) => GraphQLUnionTypeMappedConfig;\n\ntype EnumTypeConfigMapper = (\n enumConfig: GraphQLEnumTypeMappedConfig,\n) => GraphQLEnumTypeMappedConfig;\n\ntype EnumValueConfigMapper = (\n enumValueConfig: GraphQLEnumValueConfig,\n valueName: string,\n enumName: string,\n) => GraphQLEnumValueConfig;\n\ntype InputObjectTypeConfigMapper = (\n inputObjectConfig: GraphQLInputObjectTypeMappedConfig,\n) => GraphQLInputObjectTypeMappedConfig;\n\ntype InputFieldConfigMapper = (\n inputFieldConfig: GraphQLInputFieldConfig,\n inputFieldName: string,\n inputObjectTypeName: string,\n) => GraphQLInputFieldConfig;\n\ntype DirectiveConfigMapper = (\n directiveConfig: GraphQLDirectiveNormalizedConfig,\n) => GraphQLDirectiveNormalizedConfig;\n\ntype SchemaConfigMapper = (\n originalSchemaConfig: GraphQLSchemaNormalizedConfig,\n) => GraphQLSchemaNormalizedConfig;\n\n/** @internal */\nexport interface ConfigMapperMap {\n [SchemaElementKind.SCALAR]?: ScalarTypeConfigMapper;\n [SchemaElementKind.OBJECT]?: ObjectTypeConfigMapper;\n [SchemaElementKind.FIELD]?: FieldConfigMapper;\n [SchemaElementKind.ARGUMENT]?: ArgumentConfigMapper;\n [SchemaElementKind.INTERFACE]?: InterfaceTypeConfigMapper;\n [SchemaElementKind.UNION]?: UnionTypeConfigMapper;\n [SchemaElementKind.ENUM]?: EnumTypeConfigMapper;\n [SchemaElementKind.ENUM_VALUE]?: EnumValueConfigMapper;\n [SchemaElementKind.INPUT_OBJECT]?: InputObjectTypeConfigMapper;\n [SchemaElementKind.INPUT_FIELD]?: InputFieldConfigMapper;\n [SchemaElementKind.DIRECTIVE]?: DirectiveConfigMapper;\n [SchemaElementKind.SCHEMA]?: SchemaConfigMapper;\n}\n\n/** @internal */\nexport function mapSchemaConfig(\n schemaConfig: GraphQLSchemaNormalizedConfig,\n configMapperMapFn: (context: MappedSchemaContext) => ConfigMapperMap,\n): GraphQLSchemaNormalizedConfig {\n const configMapperMap = configMapperMapFn({\n getNamedType,\n setNamedType,\n getNamedTypes,\n });\n\n const mappedTypeMap = new Map<string, GraphQLNamedType>();\n for (const type of schemaConfig.types) {\n const typeName = type.name;\n const mappedNamedType = mapNamedType(type);\n if (mappedNamedType) {\n mappedTypeMap.set(typeName, mappedNamedType);\n }\n }\n\n const mappedDirectives: Array<GraphQLDirective> = [];\n for (const directive of schemaConfig.directives) {\n if (isSpecifiedDirective(directive)) {\n // Builtin directives cannot be mapped.\n mappedDirectives.push(directive);\n continue;\n }\n\n const mappedDirectiveConfig = mapDirective(directive.toConfig());\n if (mappedDirectiveConfig) {\n mappedDirectives.push(new GraphQLDirective(mappedDirectiveConfig));\n }\n }\n\n const mappedSchemaConfig = {\n ...schemaConfig,\n query:\n schemaConfig.query &&\n (getNamedType(schemaConfig.query.name) as GraphQLObjectType),\n mutation:\n schemaConfig.mutation &&\n (getNamedType(schemaConfig.mutation.name) as GraphQLObjectType),\n subscription:\n schemaConfig.subscription &&\n (getNamedType(schemaConfig.subscription.name) as GraphQLObjectType),\n types: Array.from(mappedTypeMap.values()),\n directives: mappedDirectives,\n };\n\n const schemaMapper = configMapperMap[SchemaElementKind.SCHEMA];\n\n return schemaMapper == null\n ? mappedSchemaConfig\n : schemaMapper(mappedSchemaConfig);\n\n function getType<T extends GraphQLType>(type: T): T {\n if (isListType(type)) {\n return new GraphQLList(getType(type.ofType)) as T;\n }\n if (isNonNullType(type)) {\n return new GraphQLNonNull(getType(type.ofType)) as T;\n }\n\n return getNamedType(type.name) as T;\n }\n\n function getNamedType(typeName: string): GraphQLNamedType {\n const type = stdTypeMap.get(typeName) ?? mappedTypeMap.get(typeName);\n invariant(type !== undefined, `Unknown type: \"${typeName}\".`);\n return type;\n }\n\n function setNamedType(type: GraphQLNamedType): void {\n mappedTypeMap.set(type.name, type);\n }\n\n function getNamedTypes(): ReadonlyArray<GraphQLNamedType> {\n return Array.from(mappedTypeMap.values());\n }\n\n function mapNamedType(type: GraphQLNamedType): Maybe<GraphQLNamedType> {\n if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {\n // Builtin types cannot be mapped.\n return type;\n }\n\n if (isScalarType(type)) {\n return mapScalarType(type);\n }\n if (isObjectType(type)) {\n return mapObjectType(type);\n }\n if (isInterfaceType(type)) {\n return mapInterfaceType(type);\n }\n if (isUnionType(type)) {\n return mapUnionType(type);\n }\n if (isEnumType(type)) {\n return mapEnumType(type);\n }\n if (isInputObjectType(type)) {\n return mapInputObjectType(type);\n /* node:coverage ignore next 4 */\n }\n // Not reachable, all possible type definition nodes have been considered.\n invariant(false, 'Unexpected type: ' + inspect(type));\n }\n\n function mapScalarType(type: GraphQLScalarType): GraphQLScalarType {\n let mappedConfig: Maybe<GraphQLScalarTypeMappedConfig> = type.toConfig();\n const mapper = configMapperMap[SchemaElementKind.SCALAR];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLScalarType(mappedConfig);\n }\n\n function mapObjectType(type: GraphQLObjectType): GraphQLObjectType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLObjectTypeMappedConfig> = {\n ...config,\n interfaces: () =>\n config.interfaces.map(\n (iface) => getNamedType(iface.name) as GraphQLInterfaceType,\n ),\n fields: () => mapFields(config.fields, type.name),\n };\n const mapper = configMapperMap[SchemaElementKind.OBJECT];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLObjectType(mappedConfig);\n }\n\n function mapFields(\n fieldMap: GraphQLFieldNormalizedConfigMap<any, any>,\n parentTypeName: string,\n ): GraphQLFieldNormalizedConfigMap<any, any> {\n const newFieldMap = Object.create(null);\n for (const [fieldName, field] of Object.entries(fieldMap)) {\n let mappedField = {\n ...field,\n type: getType(field.type),\n args: mapArgs(field.args, fieldName, parentTypeName),\n };\n const mapper = configMapperMap[SchemaElementKind.FIELD];\n if (mapper) {\n mappedField = mapper(mappedField, parentTypeName);\n }\n newFieldMap[fieldName] = mappedField;\n }\n return newFieldMap;\n }\n\n function mapArgs(\n argumentMap: GraphQLFieldNormalizedConfigArgumentMap,\n fieldOrDirectiveName: string,\n parentTypeName?: string,\n ): GraphQLFieldNormalizedConfigArgumentMap {\n const newArgumentMap = Object.create(null);\n\n for (const [argName, arg] of Object.entries(argumentMap)) {\n let mappedArg = {\n ...arg,\n type: getType(arg.type),\n };\n const mapper = configMapperMap[SchemaElementKind.ARGUMENT];\n if (mapper) {\n mappedArg = mapper(mappedArg, fieldOrDirectiveName, parentTypeName);\n }\n newArgumentMap[argName] = mappedArg;\n }\n\n return newArgumentMap;\n }\n\n function mapInterfaceType(type: GraphQLInterfaceType): GraphQLInterfaceType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLInterfaceTypeMappedConfig> = {\n ...config,\n interfaces: () =>\n config.interfaces.map(\n (iface) => getNamedType(iface.name) as GraphQLInterfaceType,\n ),\n fields: () => mapFields(config.fields, type.name),\n };\n const mapper = configMapperMap[SchemaElementKind.INTERFACE];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLInterfaceType(mappedConfig);\n }\n\n function mapUnionType(type: GraphQLUnionType): GraphQLUnionType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLUnionTypeMappedConfig> = {\n ...config,\n types: () =>\n config.types.map(\n (memberType) => getNamedType(memberType.name) as GraphQLObjectType,\n ),\n };\n const mapper = configMapperMap[SchemaElementKind.UNION];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLUnionType(mappedConfig);\n }\n\n function mapEnumType(type: GraphQLEnumType): GraphQLEnumType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLEnumTypeMappedConfig> = {\n ...config,\n values: () => {\n const newEnumValues = Object.create(null);\n for (const [valueName, value] of Object.entries(config.values)) {\n const mappedValue = mapEnumValue(value, valueName, type.name);\n newEnumValues[valueName] = mappedValue;\n }\n return newEnumValues;\n },\n };\n const mapper = configMapperMap[SchemaElementKind.ENUM];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLEnumType(mappedConfig);\n }\n\n function mapEnumValue(\n valueConfig: GraphQLEnumValueConfig,\n valueName: string,\n enumName: string,\n ): GraphQLEnumValueConfig {\n const mappedConfig = { ...valueConfig };\n const mapper = configMapperMap[SchemaElementKind.ENUM_VALUE];\n return mapper == null\n ? mappedConfig\n : mapper(mappedConfig, valueName, enumName);\n }\n\n function mapInputObjectType(\n type: GraphQLInputObjectType,\n ): GraphQLInputObjectType {\n const config = type.toConfig();\n let mappedConfig: Maybe<GraphQLInputObjectTypeMappedConfig> = {\n ...config,\n fields: () => {\n const newInputFieldMap = Object.create(null);\n for (const [fieldName, field] of Object.entries(config.fields)) {\n const mappedField = mapInputField(field, fieldName, type.name);\n newInputFieldMap[fieldName] = mappedField;\n }\n return newInputFieldMap;\n },\n };\n const mapper = configMapperMap[SchemaElementKind.INPUT_OBJECT];\n mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n return new GraphQLInputObjectType(mappedConfig);\n }\n\n function mapInputField(\n inputFieldConfig: GraphQLInputFieldConfig,\n inputFieldName: string,\n inputObjectTypeName: string,\n ): GraphQLInputFieldConfig {\n const mappedConfig = {\n ...inputFieldConfig,\n type: getType(inputFieldConfig.type),\n };\n const mapper = configMapperMap[SchemaElementKind.INPUT_FIELD];\n return mapper == null\n ? mappedConfig\n : mapper(mappedConfig, inputFieldName, inputObjectTypeName);\n }\n\n function mapDirective(\n config: GraphQLDirectiveNormalizedConfig,\n ): Maybe<GraphQLDirectiveNormalizedConfig> {\n const mappedConfig = {\n ...config,\n args: mapArgs(config.args, config.name, undefined),\n };\n const mapper = configMapperMap[SchemaElementKind.DIRECTIVE];\n return mapper == null ? mappedConfig : mapper(mappedConfig);\n }\n}\n\nconst stdTypeMap = new Map(\n [...specifiedScalarTypes, ...introspectionTypes].map((type) => [\n type.name,\n type,\n ]),\n);\n"]}
|
package/version.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.versionInfo = exports.version = void 0;
|
|
4
|
-
exports.version = '17.0.
|
|
4
|
+
exports.version = '17.0.2';
|
|
5
5
|
exports.versionInfo = Object.freeze({
|
|
6
6
|
major: 17,
|
|
7
7
|
minor: 0,
|
|
8
|
-
patch:
|
|
8
|
+
patch: 2,
|
|
9
9
|
preReleaseTag: null,
|
|
10
10
|
});
|
|
11
11
|
//# sourceMappingURL=version.js.map
|
package/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAMa,QAAA,OAAO,GAAG,QAAkB,CAAC;AAG7B,QAAA,WAAW,GAKnB,MAAM,CAAC,MAAM,CAAC;IACjB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC","sourcesContent":["/** @category Version */\n\n// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/** A string containing the version of the GraphQL.js library */\nexport const version = '17.0.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAMa,QAAA,OAAO,GAAG,QAAkB,CAAC;AAG7B,QAAA,WAAW,GAKnB,MAAM,CAAC,MAAM,CAAC;IACjB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC","sourcesContent":["/** @category Version */\n\n// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/** A string containing the version of the GraphQL.js library */\nexport const version = '17.0.2' as string;\n\n/** An object containing the components of the GraphQL.js version string */\nexport const versionInfo: Readonly<{\n major: number;\n minor: number;\n patch: number;\n preReleaseTag: string | null;\n}> = Object.freeze({\n major: 17,\n minor: 0,\n patch: 2,\n preReleaseTag: null,\n});\n"]}
|
package/version.mjs
CHANGED
package/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAkB,CAAC;AAG1C,MAAM,CAAC,MAAM,WAAW,GAKnB,MAAM,CAAC,MAAM,CAAC;IACjB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC","sourcesContent":["/** @category Version */\n\n// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/** A string containing the version of the GraphQL.js library */\nexport const version = '17.0.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAkB,CAAC;AAG1C,MAAM,CAAC,MAAM,WAAW,GAKnB,MAAM,CAAC,MAAM,CAAC;IACjB,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC","sourcesContent":["/** @category Version */\n\n// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/** A string containing the version of the GraphQL.js library */\nexport const version = '17.0.2' as string;\n\n/** An object containing the components of the GraphQL.js version string */\nexport const versionInfo: Readonly<{\n major: number;\n minor: number;\n patch: number;\n preReleaseTag: string | null;\n}> = Object.freeze({\n major: 17,\n minor: 0,\n patch: 2,\n preReleaseTag: null,\n});\n"]}
|