UNPKG

4.11 kBJavaScriptView Raw
1var __assign = (this && this.__assign) || function () {
2 __assign = Object.assign || function(t) {
3 for (var s, i = 1, n = arguments.length; i < n; i++) {
4 s = arguments[i];
5 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6 t[p] = s[p];
7 }
8 return t;
9 };
10 return __assign.apply(this, arguments);
11};
12Object.defineProperty(exports, "__esModule", { value: true });
13var graphql_1 = require("graphql");
14var isSpecifiedScalarType_1 = require("../isSpecifiedScalarType");
15var visitSchema_1 = require("../transforms/visitSchema");
16var RenameTypes = /** @class */ (function () {
17 function RenameTypes(renamer, options) {
18 this.renamer = renamer;
19 this.reverseMap = {};
20 var _a = options || {}, _b = _a.renameBuiltins, renameBuiltins = _b === void 0 ? false : _b, _c = _a.renameScalars, renameScalars = _c === void 0 ? true : _c;
21 this.renameBuiltins = renameBuiltins;
22 this.renameScalars = renameScalars;
23 }
24 RenameTypes.prototype.transformSchema = function (originalSchema) {
25 var _this = this;
26 var _a;
27 return visitSchema_1.visitSchema(originalSchema, (_a = {},
28 _a[visitSchema_1.VisitSchemaKind.TYPE] = function (type) {
29 if (isSpecifiedScalarType_1.default(type) && !_this.renameBuiltins) {
30 return undefined;
31 }
32 if (type instanceof graphql_1.GraphQLScalarType && !_this.renameScalars) {
33 return undefined;
34 }
35 var newName = _this.renamer(type.name);
36 if (newName && newName !== type.name) {
37 _this.reverseMap[newName] = type.name;
38 var newType = Object.assign(Object.create(type), type);
39 newType.name = newName;
40 return newType;
41 }
42 },
43 _a[visitSchema_1.VisitSchemaKind.ROOT_OBJECT] = function (type) {
44 return undefined;
45 },
46 _a));
47 };
48 RenameTypes.prototype.transformRequest = function (originalRequest) {
49 var _this = this;
50 var _a;
51 var newDocument = graphql_1.visit(originalRequest.document, (_a = {},
52 _a[graphql_1.Kind.NAMED_TYPE] = function (node) {
53 var name = node.name.value;
54 if (name in _this.reverseMap) {
55 return __assign({}, node, { name: {
56 kind: graphql_1.Kind.NAME,
57 value: _this.reverseMap[name],
58 } });
59 }
60 },
61 _a));
62 return {
63 document: newDocument,
64 variables: originalRequest.variables,
65 };
66 };
67 RenameTypes.prototype.transformResult = function (result) {
68 if (result.data) {
69 var data = this.renameTypes(result.data, 'data');
70 if (data !== result.data) {
71 return __assign({}, result, { data: data });
72 }
73 }
74 return result;
75 };
76 RenameTypes.prototype.renameTypes = function (value, name) {
77 var _this = this;
78 if (name === '__typename') {
79 return this.renamer(value);
80 }
81 if (value && typeof value === 'object') {
82 var newValue_1 = Array.isArray(value) ? []
83 // Create a new object with the same prototype.
84 : Object.create(Object.getPrototypeOf(value));
85 var returnNewValue_1 = false;
86 Object.keys(value).forEach(function (key) {
87 var oldChild = value[key];
88 var newChild = _this.renameTypes(oldChild, key);
89 newValue_1[key] = newChild;
90 if (newChild !== oldChild) {
91 returnNewValue_1 = true;
92 }
93 });
94 if (returnNewValue_1) {
95 return newValue_1;
96 }
97 }
98 return value;
99 };
100 return RenameTypes;
101}());
102exports.default = RenameTypes;
103//# sourceMappingURL=RenameTypes.js.map
\No newline at end of file