UNPKG

5.06 kBJavaScriptView Raw
1import { GraphQLEnumType, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLObjectType, GraphQLScalarType, GraphQLUnionType, isEnumType, isInterfaceType, isInputObjectType, isObjectType, isScalarType, isUnionType, } from 'graphql';
2export function renameType(type, newTypeName) {
3 if (isObjectType(type)) {
4 return new GraphQLObjectType({
5 ...type.toConfig(),
6 name: newTypeName,
7 astNode: type.astNode == null
8 ? type.astNode
9 : {
10 ...type.astNode,
11 name: {
12 ...type.astNode.name,
13 value: newTypeName,
14 },
15 },
16 extensionASTNodes: type.extensionASTNodes == null
17 ? type.extensionASTNodes
18 : type.extensionASTNodes.map(node => ({
19 ...node,
20 name: {
21 ...node.name,
22 value: newTypeName,
23 },
24 })),
25 });
26 }
27 else if (isInterfaceType(type)) {
28 return new GraphQLInterfaceType({
29 ...type.toConfig(),
30 name: newTypeName,
31 astNode: type.astNode == null
32 ? type.astNode
33 : {
34 ...type.astNode,
35 name: {
36 ...type.astNode.name,
37 value: newTypeName,
38 },
39 },
40 extensionASTNodes: type.extensionASTNodes == null
41 ? type.extensionASTNodes
42 : type.extensionASTNodes.map(node => ({
43 ...node,
44 name: {
45 ...node.name,
46 value: newTypeName,
47 },
48 })),
49 });
50 }
51 else if (isUnionType(type)) {
52 return new GraphQLUnionType({
53 ...type.toConfig(),
54 name: newTypeName,
55 astNode: type.astNode == null
56 ? type.astNode
57 : {
58 ...type.astNode,
59 name: {
60 ...type.astNode.name,
61 value: newTypeName,
62 },
63 },
64 extensionASTNodes: type.extensionASTNodes == null
65 ? type.extensionASTNodes
66 : type.extensionASTNodes.map(node => ({
67 ...node,
68 name: {
69 ...node.name,
70 value: newTypeName,
71 },
72 })),
73 });
74 }
75 else if (isInputObjectType(type)) {
76 return new GraphQLInputObjectType({
77 ...type.toConfig(),
78 name: newTypeName,
79 astNode: type.astNode == null
80 ? type.astNode
81 : {
82 ...type.astNode,
83 name: {
84 ...type.astNode.name,
85 value: newTypeName,
86 },
87 },
88 extensionASTNodes: type.extensionASTNodes == null
89 ? type.extensionASTNodes
90 : type.extensionASTNodes.map(node => ({
91 ...node,
92 name: {
93 ...node.name,
94 value: newTypeName,
95 },
96 })),
97 });
98 }
99 else if (isEnumType(type)) {
100 return new GraphQLEnumType({
101 ...type.toConfig(),
102 name: newTypeName,
103 astNode: type.astNode == null
104 ? type.astNode
105 : {
106 ...type.astNode,
107 name: {
108 ...type.astNode.name,
109 value: newTypeName,
110 },
111 },
112 extensionASTNodes: type.extensionASTNodes == null
113 ? type.extensionASTNodes
114 : type.extensionASTNodes.map(node => ({
115 ...node,
116 name: {
117 ...node.name,
118 value: newTypeName,
119 },
120 })),
121 });
122 }
123 else if (isScalarType(type)) {
124 return new GraphQLScalarType({
125 ...type.toConfig(),
126 name: newTypeName,
127 astNode: type.astNode == null
128 ? type.astNode
129 : {
130 ...type.astNode,
131 name: {
132 ...type.astNode.name,
133 value: newTypeName,
134 },
135 },
136 extensionASTNodes: type.extensionASTNodes == null
137 ? type.extensionASTNodes
138 : type.extensionASTNodes.map(node => ({
139 ...node,
140 name: {
141 ...node.name,
142 value: newTypeName,
143 },
144 })),
145 });
146 }
147 throw new Error(`Unknown type ${type}.`);
148}