1 | var __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 | };
|
12 | Object.defineProperty(exports, "__esModule", { value: true });
|
13 | var graphql_1 = require("graphql");
|
14 | var isSpecifiedScalarType_1 = require("../isSpecifiedScalarType");
|
15 | var visitSchema_1 = require("../transforms/visitSchema");
|
16 | var RenameTypes = (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 |
|
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 | }());
|
102 | exports.default = RenameTypes;
|
103 |
|
\ | No newline at end of file |