@graphql-tools/wrap 8.4.21 → 8.5.0-alpha-6c480b2d.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/cjs/generateProxyingResolvers.js +74 -0
  2. package/cjs/index.js +12 -0
  3. package/cjs/introspect.js +30 -0
  4. package/cjs/package.json +1 -0
  5. package/cjs/transforms/ExtractField.js +51 -0
  6. package/cjs/transforms/FilterInputObjectFields.js +16 -0
  7. package/cjs/transforms/FilterInterfaceFields.js +13 -0
  8. package/cjs/transforms/FilterObjectFieldDirectives.js +33 -0
  9. package/cjs/transforms/FilterObjectFields.js +13 -0
  10. package/cjs/transforms/FilterRootFields.js +18 -0
  11. package/cjs/transforms/FilterTypes.js +19 -0
  12. package/cjs/transforms/HoistField.js +176 -0
  13. package/cjs/transforms/MapFields.js +61 -0
  14. package/cjs/transforms/MapLeafValues.js +111 -0
  15. package/cjs/transforms/PruneSchema.js +12 -0
  16. package/cjs/transforms/RemoveObjectFieldDeprecations.js +25 -0
  17. package/cjs/transforms/RemoveObjectFieldDirectives.js +16 -0
  18. package/cjs/transforms/RemoveObjectFieldsWithDeprecation.js +19 -0
  19. package/cjs/transforms/RemoveObjectFieldsWithDirective.js +19 -0
  20. package/cjs/transforms/RenameInputObjectFields.js +57 -0
  21. package/cjs/transforms/RenameInterfaceFields.js +19 -0
  22. package/cjs/transforms/RenameObjectFieldArguments.js +72 -0
  23. package/cjs/transforms/RenameObjectFields.js +19 -0
  24. package/cjs/transforms/RenameRootFields.js +16 -0
  25. package/cjs/transforms/RenameRootTypes.js +57 -0
  26. package/cjs/transforms/RenameTypes.js +69 -0
  27. package/cjs/transforms/TransformCompositeFields.js +143 -0
  28. package/cjs/transforms/TransformEnumValues.js +55 -0
  29. package/cjs/transforms/TransformInputObjectFields.js +160 -0
  30. package/cjs/transforms/TransformInterfaceFields.js +35 -0
  31. package/cjs/transforms/TransformObjectFields.js +35 -0
  32. package/cjs/transforms/TransformQuery.js +89 -0
  33. package/cjs/transforms/TransformRootFields.js +41 -0
  34. package/cjs/transforms/WrapFields.js +220 -0
  35. package/cjs/transforms/WrapQuery.js +62 -0
  36. package/cjs/transforms/WrapType.js +19 -0
  37. package/cjs/transforms/index.js +71 -0
  38. package/cjs/types.js +2 -0
  39. package/cjs/wrapSchema.js +58 -0
  40. package/esm/generateProxyingResolvers.js +69 -0
  41. package/esm/index.js +5 -0
  42. package/esm/introspect.js +26 -0
  43. package/esm/transforms/ExtractField.js +48 -0
  44. package/esm/transforms/FilterInputObjectFields.js +12 -0
  45. package/esm/transforms/FilterInterfaceFields.js +9 -0
  46. package/esm/transforms/FilterObjectFieldDirectives.js +29 -0
  47. package/esm/transforms/FilterObjectFields.js +9 -0
  48. package/esm/transforms/FilterRootFields.js +14 -0
  49. package/esm/transforms/FilterTypes.js +16 -0
  50. package/esm/transforms/HoistField.js +168 -0
  51. package/esm/transforms/MapFields.js +57 -0
  52. package/esm/transforms/MapLeafValues.js +108 -0
  53. package/esm/transforms/PruneSchema.js +9 -0
  54. package/esm/transforms/RemoveObjectFieldDeprecations.js +21 -0
  55. package/esm/transforms/RemoveObjectFieldDirectives.js +12 -0
  56. package/esm/transforms/RemoveObjectFieldsWithDeprecation.js +15 -0
  57. package/esm/transforms/RemoveObjectFieldsWithDirective.js +15 -0
  58. package/esm/transforms/RenameInputObjectFields.js +53 -0
  59. package/esm/transforms/RenameInterfaceFields.js +15 -0
  60. package/esm/transforms/RenameObjectFieldArguments.js +68 -0
  61. package/esm/transforms/RenameObjectFields.js +15 -0
  62. package/esm/transforms/RenameRootFields.js +12 -0
  63. package/esm/transforms/RenameRootTypes.js +54 -0
  64. package/esm/transforms/RenameTypes.js +66 -0
  65. package/esm/transforms/TransformCompositeFields.js +140 -0
  66. package/esm/transforms/TransformEnumValues.js +51 -0
  67. package/esm/transforms/TransformInputObjectFields.js +157 -0
  68. package/esm/transforms/TransformInterfaceFields.js +31 -0
  69. package/esm/transforms/TransformObjectFields.js +31 -0
  70. package/esm/transforms/TransformQuery.js +86 -0
  71. package/esm/transforms/TransformRootFields.js +37 -0
  72. package/esm/transforms/WrapFields.js +214 -0
  73. package/esm/transforms/WrapQuery.js +59 -0
  74. package/esm/transforms/WrapType.js +15 -0
  75. package/esm/transforms/index.js +33 -0
  76. package/esm/types.js +1 -0
  77. package/esm/wrapSchema.js +54 -0
  78. package/package.json +34 -13
  79. package/{generateProxyingResolvers.d.ts → typings/generateProxyingResolvers.d.ts} +0 -0
  80. package/typings/index.d.ts +5 -0
  81. package/{introspect.d.ts → typings/introspect.d.ts} +0 -0
  82. package/{transforms → typings/transforms}/ExtractField.d.ts +0 -0
  83. package/{transforms → typings/transforms}/FilterInputObjectFields.d.ts +1 -1
  84. package/{transforms → typings/transforms}/FilterInterfaceFields.d.ts +0 -0
  85. package/{transforms → typings/transforms}/FilterObjectFieldDirectives.d.ts +0 -0
  86. package/{transforms → typings/transforms}/FilterObjectFields.d.ts +0 -0
  87. package/{transforms → typings/transforms}/FilterRootFields.d.ts +0 -0
  88. package/{transforms → typings/transforms}/FilterTypes.d.ts +0 -0
  89. package/{transforms → typings/transforms}/HoistField.d.ts +0 -0
  90. package/{transforms → typings/transforms}/MapFields.d.ts +1 -1
  91. package/{transforms → typings/transforms}/MapLeafValues.d.ts +1 -1
  92. package/{transforms → typings/transforms}/PruneSchema.d.ts +0 -0
  93. package/{transforms → typings/transforms}/RemoveObjectFieldDeprecations.d.ts +0 -0
  94. package/{transforms → typings/transforms}/RemoveObjectFieldDirectives.d.ts +0 -0
  95. package/{transforms → typings/transforms}/RemoveObjectFieldsWithDeprecation.d.ts +0 -0
  96. package/{transforms → typings/transforms}/RemoveObjectFieldsWithDirective.d.ts +0 -0
  97. package/{transforms → typings/transforms}/RenameInputObjectFields.d.ts +0 -0
  98. package/{transforms → typings/transforms}/RenameInterfaceFields.d.ts +0 -0
  99. package/{transforms → typings/transforms}/RenameObjectFieldArguments.d.ts +0 -0
  100. package/{transforms → typings/transforms}/RenameObjectFields.d.ts +0 -0
  101. package/{transforms → typings/transforms}/RenameRootFields.d.ts +0 -0
  102. package/{transforms → typings/transforms}/RenameRootTypes.d.ts +0 -0
  103. package/{transforms → typings/transforms}/RenameTypes.d.ts +0 -0
  104. package/{transforms → typings/transforms}/TransformCompositeFields.d.ts +1 -1
  105. package/{transforms → typings/transforms}/TransformEnumValues.d.ts +2 -2
  106. package/{transforms → typings/transforms}/TransformInputObjectFields.d.ts +1 -1
  107. package/{transforms → typings/transforms}/TransformInterfaceFields.d.ts +1 -1
  108. package/{transforms → typings/transforms}/TransformObjectFields.d.ts +1 -1
  109. package/{transforms → typings/transforms}/TransformQuery.d.ts +0 -0
  110. package/{transforms → typings/transforms}/TransformRootFields.d.ts +1 -1
  111. package/{transforms → typings/transforms}/WrapFields.d.ts +0 -0
  112. package/{transforms → typings/transforms}/WrapQuery.d.ts +0 -0
  113. package/{transforms → typings/transforms}/WrapType.d.ts +0 -0
  114. package/typings/transforms/index.d.ts +32 -0
  115. package/{types.d.ts → typings/types.d.ts} +0 -0
  116. package/{wrapSchema.d.ts → typings/wrapSchema.d.ts} +0 -0
  117. package/index.d.ts +0 -5
  118. package/index.js +0 -1806
  119. package/index.mjs +0 -1767
  120. package/transforms/index.d.ts +0 -32
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ const FilterObjectFieldDirectives_js_1 = tslib_1.__importDefault(require("./FilterObjectFieldDirectives.js"));
6
+ const TransformObjectFields_js_1 = tslib_1.__importDefault(require("./TransformObjectFields.js"));
7
+ class RemoveObjectFieldDeprecations {
8
+ constructor(reason) {
9
+ const args = { reason };
10
+ this.removeDirectives = new FilterObjectFieldDirectives_js_1.default((dirName, dirValue) => {
11
+ return !(dirName === 'deprecated' && (0, utils_1.valueMatchesCriteria)(dirValue, args));
12
+ });
13
+ this.removeDeprecations = new TransformObjectFields_js_1.default((_typeName, _fieldName, fieldConfig) => {
14
+ if (fieldConfig.deprecationReason && (0, utils_1.valueMatchesCriteria)(fieldConfig.deprecationReason, reason)) {
15
+ fieldConfig = { ...fieldConfig };
16
+ delete fieldConfig.deprecationReason;
17
+ }
18
+ return fieldConfig;
19
+ });
20
+ }
21
+ transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema) {
22
+ return this.removeDeprecations.transformSchema(this.removeDirectives.transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema), subschemaConfig, transformedSchema);
23
+ }
24
+ }
25
+ exports.default = RemoveObjectFieldDeprecations;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ const FilterObjectFieldDirectives_js_1 = tslib_1.__importDefault(require("./FilterObjectFieldDirectives.js"));
6
+ class RemoveObjectFieldDirectives {
7
+ constructor(directiveName, args = {}) {
8
+ this.transformer = new FilterObjectFieldDirectives_js_1.default((dirName, dirValue) => {
9
+ return !((0, utils_1.valueMatchesCriteria)(dirName, directiveName) && (0, utils_1.valueMatchesCriteria)(dirValue, args));
10
+ });
11
+ }
12
+ transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema) {
13
+ return this.transformer.transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema);
14
+ }
15
+ }
16
+ exports.default = RemoveObjectFieldDirectives;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ const FilterObjectFields_js_1 = tslib_1.__importDefault(require("./FilterObjectFields.js"));
6
+ class RemoveObjectFieldsWithDeprecation {
7
+ constructor(reason) {
8
+ this.transformer = new FilterObjectFields_js_1.default((_typeName, _fieldName, fieldConfig) => {
9
+ if (fieldConfig.deprecationReason) {
10
+ return !(0, utils_1.valueMatchesCriteria)(fieldConfig.deprecationReason, reason);
11
+ }
12
+ return true;
13
+ });
14
+ }
15
+ transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema) {
16
+ return this.transformer.transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema);
17
+ }
18
+ }
19
+ exports.default = RemoveObjectFieldsWithDeprecation;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ const FilterObjectFields_js_1 = tslib_1.__importDefault(require("./FilterObjectFields.js"));
6
+ class RemoveObjectFieldsWithDirective {
7
+ constructor(directiveName, args = {}) {
8
+ this.directiveName = directiveName;
9
+ this.args = args;
10
+ }
11
+ transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema) {
12
+ const transformer = new FilterObjectFields_js_1.default((_typeName, _fieldName, fieldConfig) => {
13
+ const directives = (0, utils_1.getDirectives)(originalWrappingSchema, fieldConfig);
14
+ return !directives.some(directive => (0, utils_1.valueMatchesCriteria)(directive.name, this.directiveName) && (0, utils_1.valueMatchesCriteria)(directive.args, this.args));
15
+ });
16
+ return transformer.transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema);
17
+ }
18
+ }
19
+ exports.default = RemoveObjectFieldsWithDirective;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ const TransformInputObjectFields_js_1 = tslib_1.__importDefault(require("./TransformInputObjectFields.js"));
6
+ class RenameInputObjectFields {
7
+ constructor(renamer) {
8
+ this.renamer = renamer;
9
+ this.transformer = new TransformInputObjectFields_js_1.default((typeName, inputFieldName, inputFieldConfig) => {
10
+ const newName = renamer(typeName, inputFieldName, inputFieldConfig);
11
+ if (newName !== undefined && newName !== inputFieldName) {
12
+ const value = renamer(typeName, inputFieldName, inputFieldConfig);
13
+ if (value != null) {
14
+ return [value, inputFieldConfig];
15
+ }
16
+ }
17
+ }, (typeName, inputFieldName, inputFieldNode) => {
18
+ if (!(typeName in this.reverseMap)) {
19
+ return inputFieldNode;
20
+ }
21
+ const inputFieldNameMap = this.reverseMap[typeName];
22
+ if (!(inputFieldName in inputFieldNameMap)) {
23
+ return inputFieldNode;
24
+ }
25
+ return {
26
+ ...inputFieldNode,
27
+ name: {
28
+ ...inputFieldNode.name,
29
+ value: inputFieldNameMap[inputFieldName],
30
+ },
31
+ };
32
+ });
33
+ this.reverseMap = Object.create(null);
34
+ }
35
+ transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema) {
36
+ (0, utils_1.mapSchema)(originalWrappingSchema, {
37
+ [utils_1.MapperKind.INPUT_OBJECT_FIELD]: (inputFieldConfig, fieldName, typeName) => {
38
+ const newName = this.renamer(typeName, fieldName, inputFieldConfig);
39
+ if (newName !== undefined && newName !== fieldName) {
40
+ if (this.reverseMap[typeName] == null) {
41
+ this.reverseMap[typeName] = Object.create(null);
42
+ }
43
+ this.reverseMap[typeName][newName] = fieldName;
44
+ }
45
+ return undefined;
46
+ },
47
+ [utils_1.MapperKind.ROOT_OBJECT]() {
48
+ return undefined;
49
+ },
50
+ });
51
+ return this.transformer.transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema);
52
+ }
53
+ transformRequest(originalRequest, delegationContext, transformationContext) {
54
+ return this.transformer.transformRequest(originalRequest, delegationContext, transformationContext);
55
+ }
56
+ }
57
+ exports.default = RenameInputObjectFields;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const TransformInterfaceFields_js_1 = tslib_1.__importDefault(require("./TransformInterfaceFields.js"));
5
+ class RenameInterfaceFields {
6
+ constructor(renamer) {
7
+ this.transformer = new TransformInterfaceFields_js_1.default((typeName, fieldName, fieldConfig) => [
8
+ renamer(typeName, fieldName, fieldConfig),
9
+ fieldConfig,
10
+ ]);
11
+ }
12
+ transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema) {
13
+ return this.transformer.transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema);
14
+ }
15
+ transformRequest(originalRequest, delegationContext, transformationContext) {
16
+ return this.transformer.transformRequest(originalRequest, delegationContext, transformationContext);
17
+ }
18
+ }
19
+ exports.default = RenameInterfaceFields;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ const TransformObjectFields_js_1 = tslib_1.__importDefault(require("./TransformObjectFields.js"));
6
+ class RenameObjectFieldArguments {
7
+ constructor(renamer) {
8
+ this.renamer = renamer;
9
+ this.transformer = new TransformObjectFields_js_1.default((typeName, fieldName, fieldConfig) => {
10
+ const argsConfig = Object.fromEntries(Object.entries(fieldConfig.args || []).map(([argName, conf]) => {
11
+ const newName = renamer(typeName, fieldName, argName);
12
+ if (newName !== undefined && newName !== argName) {
13
+ if (newName != null) {
14
+ return [newName, conf];
15
+ }
16
+ }
17
+ return [argName, conf];
18
+ }));
19
+ return [fieldName, { ...fieldConfig, args: argsConfig }];
20
+ }, (typeName, fieldName, inputFieldNode) => {
21
+ if (!(typeName in this.reverseMap)) {
22
+ return inputFieldNode;
23
+ }
24
+ if (!(fieldName in this.reverseMap[typeName])) {
25
+ return inputFieldNode;
26
+ }
27
+ const fieldNameMap = this.reverseMap[typeName][fieldName];
28
+ return {
29
+ ...inputFieldNode,
30
+ arguments: (inputFieldNode.arguments || []).map(argNode => {
31
+ return argNode.name.value in fieldNameMap
32
+ ? {
33
+ ...argNode,
34
+ name: {
35
+ ...argNode.name,
36
+ value: fieldNameMap[argNode.name.value],
37
+ },
38
+ }
39
+ : argNode;
40
+ }),
41
+ };
42
+ });
43
+ this.reverseMap = Object.create(null);
44
+ }
45
+ transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema) {
46
+ (0, utils_1.mapSchema)(originalWrappingSchema, {
47
+ [utils_1.MapperKind.OBJECT_FIELD]: (fieldConfig, fieldName, typeName) => {
48
+ Object.entries(fieldConfig.args || {}).forEach(([argName]) => {
49
+ const newName = this.renamer(typeName, fieldName, argName);
50
+ if (newName !== undefined && newName !== fieldName) {
51
+ if (this.reverseMap[typeName] == null) {
52
+ this.reverseMap[typeName] = Object.create(null);
53
+ }
54
+ if (this.reverseMap[typeName][fieldName] == null) {
55
+ this.reverseMap[typeName][fieldName] = Object.create(null);
56
+ }
57
+ this.reverseMap[typeName][fieldName][newName] = argName;
58
+ }
59
+ });
60
+ return undefined;
61
+ },
62
+ [utils_1.MapperKind.ROOT_OBJECT]() {
63
+ return undefined;
64
+ },
65
+ });
66
+ return this.transformer.transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema);
67
+ }
68
+ transformRequest(originalRequest, delegationContext, transformationContext) {
69
+ return this.transformer.transformRequest(originalRequest, delegationContext, transformationContext);
70
+ }
71
+ }
72
+ exports.default = RenameObjectFieldArguments;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const TransformObjectFields_js_1 = tslib_1.__importDefault(require("./TransformObjectFields.js"));
5
+ class RenameObjectFields {
6
+ constructor(renamer) {
7
+ this.transformer = new TransformObjectFields_js_1.default((typeName, fieldName, fieldConfig) => [
8
+ renamer(typeName, fieldName, fieldConfig),
9
+ fieldConfig,
10
+ ]);
11
+ }
12
+ transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema) {
13
+ return this.transformer.transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema);
14
+ }
15
+ transformRequest(originalRequest, delegationContext, transformationContext) {
16
+ return this.transformer.transformRequest(originalRequest, delegationContext, transformationContext);
17
+ }
18
+ }
19
+ exports.default = RenameObjectFields;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const TransformRootFields_js_1 = tslib_1.__importDefault(require("./TransformRootFields.js"));
5
+ class RenameRootFields {
6
+ constructor(renamer) {
7
+ this.transformer = new TransformRootFields_js_1.default((operation, fieldName, fieldConfig) => [renamer(operation, fieldName, fieldConfig), fieldConfig]);
8
+ }
9
+ transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema) {
10
+ return this.transformer.transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema);
11
+ }
12
+ transformRequest(originalRequest, delegationContext, transformationContext) {
13
+ return this.transformer.transformRequest(originalRequest, delegationContext, transformationContext);
14
+ }
15
+ }
16
+ exports.default = RenameRootFields;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const graphql_1 = require("graphql");
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ class RenameRootTypes {
6
+ constructor(renamer) {
7
+ this.renamer = renamer;
8
+ this.map = Object.create(null);
9
+ this.reverseMap = Object.create(null);
10
+ }
11
+ transformSchema(originalWrappingSchema, _subschemaConfig, _transformedSchema) {
12
+ return (0, utils_1.mapSchema)(originalWrappingSchema, {
13
+ [utils_1.MapperKind.ROOT_OBJECT]: type => {
14
+ const oldName = type.name;
15
+ const newName = this.renamer(oldName);
16
+ if (newName !== undefined && newName !== oldName) {
17
+ this.map[oldName] = newName;
18
+ this.reverseMap[newName] = oldName;
19
+ return (0, utils_1.renameType)(type, newName);
20
+ }
21
+ },
22
+ });
23
+ }
24
+ transformRequest(originalRequest, _delegationContext, _transformationContext) {
25
+ const document = (0, graphql_1.visit)(originalRequest.document, {
26
+ [graphql_1.Kind.NAMED_TYPE]: (node) => {
27
+ const name = node.name.value;
28
+ if (name in this.reverseMap) {
29
+ return {
30
+ ...node,
31
+ name: {
32
+ kind: graphql_1.Kind.NAME,
33
+ value: this.reverseMap[name],
34
+ },
35
+ };
36
+ }
37
+ },
38
+ });
39
+ return {
40
+ ...originalRequest,
41
+ document,
42
+ };
43
+ }
44
+ transformResult(originalResult, _delegationContext, _transformationContext) {
45
+ return {
46
+ ...originalResult,
47
+ data: (0, utils_1.visitData)(originalResult.data, object => {
48
+ const typeName = object === null || object === void 0 ? void 0 : object.__typename;
49
+ if (typeName != null && typeName in this.map) {
50
+ object.__typename = this.map[typeName];
51
+ }
52
+ return object;
53
+ }),
54
+ };
55
+ }
56
+ }
57
+ exports.default = RenameRootTypes;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const graphql_1 = require("graphql");
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ class RenameTypes {
6
+ constructor(renamer, options) {
7
+ this.renamer = renamer;
8
+ this.map = Object.create(null);
9
+ this.reverseMap = Object.create(null);
10
+ const { renameBuiltins = false, renameScalars = true } = options != null ? options : {};
11
+ this.renameBuiltins = renameBuiltins;
12
+ this.renameScalars = renameScalars;
13
+ }
14
+ transformSchema(originalWrappingSchema, _subschemaConfig, _transformedSchema) {
15
+ return (0, utils_1.mapSchema)(originalWrappingSchema, {
16
+ [utils_1.MapperKind.TYPE]: (type) => {
17
+ if ((0, graphql_1.isSpecifiedScalarType)(type) && !this.renameBuiltins) {
18
+ return undefined;
19
+ }
20
+ if ((0, graphql_1.isScalarType)(type) && !this.renameScalars) {
21
+ return undefined;
22
+ }
23
+ const oldName = type.name;
24
+ const newName = this.renamer(oldName);
25
+ if (newName !== undefined && newName !== oldName) {
26
+ this.map[oldName] = newName;
27
+ this.reverseMap[newName] = oldName;
28
+ return (0, utils_1.renameType)(type, newName);
29
+ }
30
+ },
31
+ [utils_1.MapperKind.ROOT_OBJECT]() {
32
+ return undefined;
33
+ },
34
+ });
35
+ }
36
+ transformRequest(originalRequest, _delegationContext, _transformationContext) {
37
+ const document = (0, graphql_1.visit)(originalRequest.document, {
38
+ [graphql_1.Kind.NAMED_TYPE]: (node) => {
39
+ const name = node.name.value;
40
+ if (name in this.reverseMap) {
41
+ return {
42
+ ...node,
43
+ name: {
44
+ kind: graphql_1.Kind.NAME,
45
+ value: this.reverseMap[name],
46
+ },
47
+ };
48
+ }
49
+ },
50
+ });
51
+ return {
52
+ ...originalRequest,
53
+ document,
54
+ };
55
+ }
56
+ transformResult(originalResult, _delegationContext, _transformationContext) {
57
+ return {
58
+ ...originalResult,
59
+ data: (0, utils_1.visitData)(originalResult.data, object => {
60
+ const typeName = object === null || object === void 0 ? void 0 : object.__typename;
61
+ if (typeName != null && typeName in this.map) {
62
+ object.__typename = this.map[typeName];
63
+ }
64
+ return object;
65
+ }),
66
+ };
67
+ }
68
+ }
69
+ exports.default = RenameTypes;
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const graphql_1 = require("graphql");
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ class TransformCompositeFields {
6
+ constructor(fieldTransformer, fieldNodeTransformer, dataTransformer, errorsTransformer) {
7
+ this.fieldTransformer = fieldTransformer;
8
+ this.fieldNodeTransformer = fieldNodeTransformer;
9
+ this.dataTransformer = dataTransformer;
10
+ this.errorsTransformer = errorsTransformer;
11
+ this.mapping = {};
12
+ }
13
+ _getTypeInfo() {
14
+ const typeInfo = this.typeInfo;
15
+ if (typeInfo === undefined) {
16
+ throw new Error(`The TransformCompositeFields transform's "transformRequest" and "transformResult" methods cannot be used without first calling "transformSchema".`);
17
+ }
18
+ return typeInfo;
19
+ }
20
+ transformSchema(originalWrappingSchema, _subschemaConfig, _transformedSchema) {
21
+ var _a;
22
+ this.transformedSchema = (0, utils_1.mapSchema)(originalWrappingSchema, {
23
+ [utils_1.MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => {
24
+ const transformedField = this.fieldTransformer(typeName, fieldName, fieldConfig);
25
+ if (Array.isArray(transformedField)) {
26
+ const newFieldName = transformedField[0];
27
+ if (newFieldName !== fieldName) {
28
+ if (!(typeName in this.mapping)) {
29
+ this.mapping[typeName] = {};
30
+ }
31
+ this.mapping[typeName][newFieldName] = fieldName;
32
+ }
33
+ }
34
+ return transformedField;
35
+ },
36
+ });
37
+ this.typeInfo = new graphql_1.TypeInfo(this.transformedSchema);
38
+ this.subscriptionTypeName = (_a = originalWrappingSchema.getSubscriptionType()) === null || _a === void 0 ? void 0 : _a.name;
39
+ return this.transformedSchema;
40
+ }
41
+ transformRequest(originalRequest, _delegationContext, transformationContext) {
42
+ const document = originalRequest.document;
43
+ return {
44
+ ...originalRequest,
45
+ document: this.transformDocument(document, transformationContext),
46
+ };
47
+ }
48
+ transformResult(result, _delegationContext, transformationContext) {
49
+ const dataTransformer = this.dataTransformer;
50
+ if (dataTransformer != null) {
51
+ result.data = (0, utils_1.visitData)(result.data, value => dataTransformer(value, transformationContext));
52
+ }
53
+ if (this.errorsTransformer != null && Array.isArray(result.errors)) {
54
+ result.errors = this.errorsTransformer(result.errors, transformationContext);
55
+ }
56
+ return result;
57
+ }
58
+ transformDocument(document, transformationContext) {
59
+ const fragments = Object.create(null);
60
+ for (const def of document.definitions) {
61
+ if (def.kind === graphql_1.Kind.FRAGMENT_DEFINITION) {
62
+ fragments[def.name.value] = def;
63
+ }
64
+ }
65
+ return (0, graphql_1.visit)(document, (0, graphql_1.visitWithTypeInfo)(this._getTypeInfo(), {
66
+ [graphql_1.Kind.SELECTION_SET]: {
67
+ leave: node => this.transformSelectionSet(node, this._getTypeInfo(), fragments, transformationContext),
68
+ },
69
+ }));
70
+ }
71
+ transformSelectionSet(node, typeInfo, fragments, transformationContext) {
72
+ var _a, _b;
73
+ const parentType = typeInfo.getParentType();
74
+ if (parentType == null) {
75
+ return undefined;
76
+ }
77
+ const parentTypeName = parentType.name;
78
+ let newSelections = [];
79
+ for (const selection of node.selections) {
80
+ if (selection.kind !== graphql_1.Kind.FIELD) {
81
+ newSelections.push(selection);
82
+ continue;
83
+ }
84
+ const newName = selection.name.value;
85
+ // See https://github.com/ardatan/graphql-tools/issues/2282
86
+ if ((this.dataTransformer != null || this.errorsTransformer != null) &&
87
+ (this.subscriptionTypeName == null || parentTypeName !== this.subscriptionTypeName)) {
88
+ newSelections.push({
89
+ kind: graphql_1.Kind.FIELD,
90
+ name: {
91
+ kind: graphql_1.Kind.NAME,
92
+ value: '__typename',
93
+ },
94
+ });
95
+ }
96
+ let transformedSelection;
97
+ if (this.fieldNodeTransformer == null) {
98
+ transformedSelection = selection;
99
+ }
100
+ else {
101
+ transformedSelection = this.fieldNodeTransformer(parentTypeName, newName, selection, fragments, transformationContext);
102
+ transformedSelection = transformedSelection === undefined ? selection : transformedSelection;
103
+ }
104
+ if (transformedSelection == null) {
105
+ continue;
106
+ }
107
+ else if (Array.isArray(transformedSelection)) {
108
+ newSelections = newSelections.concat(transformedSelection);
109
+ continue;
110
+ }
111
+ else if (transformedSelection.kind !== graphql_1.Kind.FIELD) {
112
+ newSelections.push(transformedSelection);
113
+ continue;
114
+ }
115
+ const typeMapping = this.mapping[parentTypeName];
116
+ if (typeMapping == null) {
117
+ newSelections.push(transformedSelection);
118
+ continue;
119
+ }
120
+ const oldName = this.mapping[parentTypeName][newName];
121
+ if (oldName == null) {
122
+ newSelections.push(transformedSelection);
123
+ continue;
124
+ }
125
+ newSelections.push({
126
+ ...transformedSelection,
127
+ name: {
128
+ kind: graphql_1.Kind.NAME,
129
+ value: oldName,
130
+ },
131
+ alias: {
132
+ kind: graphql_1.Kind.NAME,
133
+ value: (_b = (_a = transformedSelection.alias) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : newName,
134
+ },
135
+ });
136
+ }
137
+ return {
138
+ ...node,
139
+ selections: newSelections,
140
+ };
141
+ }
142
+ }
143
+ exports.default = TransformCompositeFields;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const utils_1 = require("@graphql-tools/utils");
5
+ const MapLeafValues_js_1 = tslib_1.__importDefault(require("./MapLeafValues.js"));
6
+ class TransformEnumValues {
7
+ constructor(enumValueTransformer, inputValueTransformer, outputValueTransformer) {
8
+ this.enumValueTransformer = enumValueTransformer;
9
+ this.mapping = Object.create(null);
10
+ this.reverseMapping = Object.create(null);
11
+ this.transformer = new MapLeafValues_js_1.default(generateValueTransformer(inputValueTransformer, this.reverseMapping), generateValueTransformer(outputValueTransformer, this.mapping));
12
+ }
13
+ transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema) {
14
+ const mappingSchema = this.transformer.transformSchema(originalWrappingSchema, subschemaConfig, transformedSchema);
15
+ this.transformedSchema = (0, utils_1.mapSchema)(mappingSchema, {
16
+ [utils_1.MapperKind.ENUM_VALUE]: (valueConfig, typeName, _schema, externalValue) => this.transformEnumValue(typeName, externalValue, valueConfig),
17
+ });
18
+ return this.transformedSchema;
19
+ }
20
+ transformRequest(originalRequest, delegationContext, transformationContext) {
21
+ return this.transformer.transformRequest(originalRequest, delegationContext, transformationContext);
22
+ }
23
+ transformResult(originalResult, delegationContext, transformationContext) {
24
+ return this.transformer.transformResult(originalResult, delegationContext, transformationContext);
25
+ }
26
+ transformEnumValue(typeName, externalValue, enumValueConfig) {
27
+ const transformedEnumValue = this.enumValueTransformer(typeName, externalValue, enumValueConfig);
28
+ if (Array.isArray(transformedEnumValue)) {
29
+ const newExternalValue = transformedEnumValue[0];
30
+ if (newExternalValue !== externalValue) {
31
+ if (!(typeName in this.mapping)) {
32
+ this.mapping[typeName] = Object.create(null);
33
+ this.reverseMapping[typeName] = Object.create(null);
34
+ }
35
+ this.mapping[typeName][externalValue] = newExternalValue;
36
+ this.reverseMapping[typeName][newExternalValue] = externalValue;
37
+ }
38
+ }
39
+ return transformedEnumValue;
40
+ }
41
+ }
42
+ exports.default = TransformEnumValues;
43
+ function mapEnumValues(typeName, value, mapping) {
44
+ var _a;
45
+ const newExternalValue = (_a = mapping[typeName]) === null || _a === void 0 ? void 0 : _a[value];
46
+ return newExternalValue != null ? newExternalValue : value;
47
+ }
48
+ function generateValueTransformer(valueTransformer, mapping) {
49
+ if (valueTransformer == null) {
50
+ return (typeName, value) => mapEnumValues(typeName, value, mapping);
51
+ }
52
+ else {
53
+ return (typeName, value) => mapEnumValues(typeName, valueTransformer(typeName, value), mapping);
54
+ }
55
+ }