UNPKG

4.99 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.modifyObjectFields = exports.selectObjectFields = exports.removeObjectFields = exports.appendObjectFields = void 0;
4const graphql_1 = require("graphql");
5const Interfaces_js_1 = require("./Interfaces.js");
6const mapSchema_js_1 = require("./mapSchema.js");
7const addTypes_js_1 = require("./addTypes.js");
8function appendObjectFields(schema, typeName, additionalFields) {
9 if (schema.getType(typeName) == null) {
10 return (0, addTypes_js_1.addTypes)(schema, [
11 new graphql_1.GraphQLObjectType({
12 name: typeName,
13 fields: additionalFields,
14 }),
15 ]);
16 }
17 return (0, mapSchema_js_1.mapSchema)(schema, {
18 [Interfaces_js_1.MapperKind.OBJECT_TYPE]: type => {
19 if (type.name === typeName) {
20 const config = type.toConfig();
21 const originalFieldConfigMap = config.fields;
22 const newFieldConfigMap = {};
23 for (const fieldName in originalFieldConfigMap) {
24 newFieldConfigMap[fieldName] = originalFieldConfigMap[fieldName];
25 }
26 for (const fieldName in additionalFields) {
27 newFieldConfigMap[fieldName] = additionalFields[fieldName];
28 }
29 return (0, mapSchema_js_1.correctASTNodes)(new graphql_1.GraphQLObjectType({
30 ...config,
31 fields: newFieldConfigMap,
32 }));
33 }
34 },
35 });
36}
37exports.appendObjectFields = appendObjectFields;
38function removeObjectFields(schema, typeName, testFn) {
39 const removedFields = {};
40 const newSchema = (0, mapSchema_js_1.mapSchema)(schema, {
41 [Interfaces_js_1.MapperKind.OBJECT_TYPE]: type => {
42 if (type.name === typeName) {
43 const config = type.toConfig();
44 const originalFieldConfigMap = config.fields;
45 const newFieldConfigMap = {};
46 for (const fieldName in originalFieldConfigMap) {
47 const originalFieldConfig = originalFieldConfigMap[fieldName];
48 if (testFn(fieldName, originalFieldConfig)) {
49 removedFields[fieldName] = originalFieldConfig;
50 }
51 else {
52 newFieldConfigMap[fieldName] = originalFieldConfig;
53 }
54 }
55 return (0, mapSchema_js_1.correctASTNodes)(new graphql_1.GraphQLObjectType({
56 ...config,
57 fields: newFieldConfigMap,
58 }));
59 }
60 },
61 });
62 return [newSchema, removedFields];
63}
64exports.removeObjectFields = removeObjectFields;
65function selectObjectFields(schema, typeName, testFn) {
66 const selectedFields = {};
67 (0, mapSchema_js_1.mapSchema)(schema, {
68 [Interfaces_js_1.MapperKind.OBJECT_TYPE]: type => {
69 if (type.name === typeName) {
70 const config = type.toConfig();
71 const originalFieldConfigMap = config.fields;
72 for (const fieldName in originalFieldConfigMap) {
73 const originalFieldConfig = originalFieldConfigMap[fieldName];
74 if (testFn(fieldName, originalFieldConfig)) {
75 selectedFields[fieldName] = originalFieldConfig;
76 }
77 }
78 }
79 return undefined;
80 },
81 });
82 return selectedFields;
83}
84exports.selectObjectFields = selectObjectFields;
85function modifyObjectFields(schema, typeName, testFn, newFields) {
86 const removedFields = {};
87 const newSchema = (0, mapSchema_js_1.mapSchema)(schema, {
88 [Interfaces_js_1.MapperKind.OBJECT_TYPE]: type => {
89 if (type.name === typeName) {
90 const config = type.toConfig();
91 const originalFieldConfigMap = config.fields;
92 const newFieldConfigMap = {};
93 for (const fieldName in originalFieldConfigMap) {
94 const originalFieldConfig = originalFieldConfigMap[fieldName];
95 if (testFn(fieldName, originalFieldConfig)) {
96 removedFields[fieldName] = originalFieldConfig;
97 }
98 else {
99 newFieldConfigMap[fieldName] = originalFieldConfig;
100 }
101 }
102 for (const fieldName in newFields) {
103 const fieldConfig = newFields[fieldName];
104 newFieldConfigMap[fieldName] = fieldConfig;
105 }
106 return (0, mapSchema_js_1.correctASTNodes)(new graphql_1.GraphQLObjectType({
107 ...config,
108 fields: newFieldConfigMap,
109 }));
110 }
111 },
112 });
113 return [newSchema, removedFields];
114}
115exports.modifyObjectFields = modifyObjectFields;