@graphql-mesh/fusion-composition 0.7.7 → 0.7.8
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.
- package/cjs/transforms/rename.js +114 -73
- package/esm/transforms/rename.js +114 -73
- package/package.json +1 -1
package/cjs/transforms/rename.js
CHANGED
|
@@ -116,100 +116,141 @@ function createRenameTransform(opts) {
|
|
|
116
116
|
};
|
|
117
117
|
}
|
|
118
118
|
const fieldRenameMap = new Map();
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
119
|
+
schemaMapper[utils_1.MapperKind.FIELD] = (field, fieldName, typeName, schema) => {
|
|
120
|
+
let newFieldName = fieldName;
|
|
121
|
+
if (fieldRenamers.length) {
|
|
122
|
+
const type = schema.getType(typeName);
|
|
123
|
+
for (const renamer of fieldRenamers) {
|
|
124
|
+
newFieldName =
|
|
125
|
+
renamer({
|
|
126
|
+
typeName,
|
|
127
|
+
fieldName: newFieldName,
|
|
128
|
+
type,
|
|
129
|
+
field,
|
|
130
|
+
subgraphConfig,
|
|
131
|
+
}) || newFieldName;
|
|
132
|
+
}
|
|
133
|
+
let typeFieldRenameMap = fieldRenameMap.get(typeName);
|
|
134
|
+
if (!typeFieldRenameMap) {
|
|
135
|
+
typeFieldRenameMap = new Map();
|
|
136
|
+
fieldRenameMap.set(typeName, typeFieldRenameMap);
|
|
137
|
+
}
|
|
138
|
+
typeFieldRenameMap.set(fieldName, newFieldName);
|
|
139
|
+
}
|
|
140
|
+
const fieldDirectives = (0, utils_1.getDirectiveExtensions)(field, schema);
|
|
141
|
+
if (fieldDirectives.resolveTo) {
|
|
142
|
+
fieldDirectives.resolveTo = fieldDirectives.resolveTo.map(resolveTo => ({
|
|
143
|
+
...resolveTo,
|
|
144
|
+
sourceTypeName: (resolveTo.sourceTypeName && typeRenameMap.get(resolveTo.sourceTypeName)) ||
|
|
145
|
+
resolveTo.sourceTypeName,
|
|
146
|
+
sourceFieldName: (resolveTo.sourceFieldName &&
|
|
147
|
+
fieldRenameMap.get(resolveTo.sourceTypeName)?.get(resolveTo.sourceFieldName)) ||
|
|
148
|
+
resolveTo.sourceFieldName,
|
|
149
|
+
}));
|
|
150
|
+
const fieldExtensions = (field.extensions ||= {});
|
|
151
|
+
fieldExtensions.directives = fieldDirectives;
|
|
152
|
+
}
|
|
153
|
+
if (argRenamers.length && 'args' in field && field.args) {
|
|
154
|
+
const newArgs = {};
|
|
155
|
+
for (const argName in field.args) {
|
|
156
|
+
let newArgName = argName;
|
|
157
|
+
for (const renamer of argRenamers) {
|
|
158
|
+
newArgName =
|
|
126
159
|
renamer({
|
|
127
160
|
typeName,
|
|
128
|
-
fieldName
|
|
129
|
-
|
|
130
|
-
field,
|
|
161
|
+
fieldName,
|
|
162
|
+
argName: newArgName,
|
|
131
163
|
subgraphConfig,
|
|
132
|
-
}) ||
|
|
164
|
+
}) || newArgName;
|
|
133
165
|
}
|
|
134
|
-
|
|
135
|
-
if (!typeFieldRenameMap) {
|
|
136
|
-
typeFieldRenameMap = new Map();
|
|
137
|
-
fieldRenameMap.set(typeName, typeFieldRenameMap);
|
|
138
|
-
}
|
|
139
|
-
typeFieldRenameMap.set(fieldName, newFieldName);
|
|
166
|
+
newArgs[newArgName] = field.args[argName];
|
|
140
167
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
subgraphConfig,
|
|
152
|
-
}) || newArgName;
|
|
153
|
-
}
|
|
154
|
-
newArgs[newArgName] = field.args[argName];
|
|
155
|
-
}
|
|
156
|
-
return [
|
|
157
|
-
newFieldName,
|
|
158
|
-
{
|
|
159
|
-
...field,
|
|
160
|
-
args: newArgs,
|
|
161
|
-
},
|
|
162
|
-
];
|
|
163
|
-
}
|
|
164
|
-
const fieldDirectives = (0, utils_1.getDirectiveExtensions)(field, schema);
|
|
165
|
-
if (fieldDirectives.resolveTo) {
|
|
166
|
-
fieldDirectives.resolveTo = fieldDirectives.resolveTo.map(resolveTo => ({
|
|
167
|
-
...resolveTo,
|
|
168
|
-
sourceTypeName: (resolveTo.sourceTypeName && typeRenameMap.get(resolveTo.sourceTypeName)) ||
|
|
169
|
-
resolveTo.sourceTypeName,
|
|
170
|
-
sourceFieldName: (resolveTo.sourceFieldName &&
|
|
171
|
-
fieldRenameMap.get(resolveTo.sourceTypeName)?.get(resolveTo.sourceFieldName)) ||
|
|
172
|
-
resolveTo.sourceFieldName,
|
|
173
|
-
}));
|
|
174
|
-
const fieldExtensions = (field.extensions ||= {});
|
|
175
|
-
fieldExtensions.directives = fieldDirectives;
|
|
176
|
-
}
|
|
177
|
-
return [newFieldName, field];
|
|
178
|
-
};
|
|
179
|
-
}
|
|
168
|
+
return [
|
|
169
|
+
newFieldName,
|
|
170
|
+
{
|
|
171
|
+
...field,
|
|
172
|
+
args: newArgs,
|
|
173
|
+
},
|
|
174
|
+
];
|
|
175
|
+
}
|
|
176
|
+
return [newFieldName, field];
|
|
177
|
+
};
|
|
180
178
|
return (0, utils_1.mapSchema)(schema, schemaMapper);
|
|
181
179
|
};
|
|
182
180
|
}
|
|
183
181
|
function createRenameTypeTransform(renameFn, kind = utils_1.MapperKind.TYPE) {
|
|
184
182
|
return function renameTypeTransform(schema, subgraphConfig) {
|
|
185
183
|
const rootTypes = (0, utils_1.getRootTypes)(schema);
|
|
184
|
+
const renamedTypeMap = new Map();
|
|
186
185
|
return (0, utils_1.mapSchema)(schema, {
|
|
187
|
-
[kind]:
|
|
188
|
-
|
|
189
|
-
|
|
186
|
+
[kind]: type => {
|
|
187
|
+
if ((0, graphql_1.isSpecifiedScalarType)(type) || rootTypes.has(type)) {
|
|
188
|
+
return type;
|
|
189
|
+
}
|
|
190
|
+
const newName = renameFn({
|
|
191
|
+
typeName: type.name,
|
|
192
|
+
type,
|
|
193
|
+
subgraphConfig,
|
|
194
|
+
}) || type.name;
|
|
195
|
+
if (type.name === newName) {
|
|
196
|
+
return type;
|
|
197
|
+
}
|
|
198
|
+
renamedTypeMap.set(type.name, newName);
|
|
199
|
+
return new (Object.getPrototypeOf(type).constructor)({
|
|
190
200
|
...type.toConfig(),
|
|
191
|
-
name:
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
201
|
+
name: newName,
|
|
202
|
+
});
|
|
203
|
+
},
|
|
204
|
+
[utils_1.MapperKind.FIELD](field) {
|
|
205
|
+
const fieldDirectives = (0, utils_1.getDirectiveExtensions)(field, schema);
|
|
206
|
+
if (fieldDirectives?.resolveTo) {
|
|
207
|
+
fieldDirectives.resolveTo = fieldDirectives.resolveTo.map(resolveTo => ({
|
|
208
|
+
...resolveTo,
|
|
209
|
+
sourceTypeName: renamedTypeMap.get(resolveTo.sourceTypeName) || resolveTo.sourceTypeName,
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
const fieldExtensions = (field.extensions ||= {});
|
|
213
|
+
fieldExtensions.directives = fieldDirectives;
|
|
214
|
+
return field;
|
|
215
|
+
},
|
|
197
216
|
});
|
|
198
217
|
};
|
|
199
218
|
}
|
|
200
219
|
function createRenameFieldTransform(renameFn, kind = utils_1.MapperKind.FIELD) {
|
|
201
220
|
return function renameFieldTransform(schema, subgraphConfig) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
221
|
+
const fieldRenameMap = new Map();
|
|
222
|
+
const mapper = {
|
|
223
|
+
[kind]: (field, fieldName, typeName) => {
|
|
224
|
+
const type = schema.getType(typeName);
|
|
225
|
+
const newFieldName = renameFn({
|
|
205
226
|
typeName,
|
|
206
227
|
fieldName,
|
|
207
|
-
type
|
|
228
|
+
type,
|
|
208
229
|
field,
|
|
209
230
|
subgraphConfig,
|
|
210
|
-
}) || fieldName
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
231
|
+
}) || fieldName;
|
|
232
|
+
let typeFieldRenameMap = fieldRenameMap.get(typeName);
|
|
233
|
+
if (!typeFieldRenameMap) {
|
|
234
|
+
typeFieldRenameMap = new Map();
|
|
235
|
+
fieldRenameMap.set(typeName, typeFieldRenameMap);
|
|
236
|
+
}
|
|
237
|
+
typeFieldRenameMap.set(fieldName, newFieldName);
|
|
238
|
+
return [newFieldName, resolveToUpdater(field, schema)];
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
function resolveToUpdater(field, schema) {
|
|
242
|
+
const fieldDirectives = (0, utils_1.getDirectiveExtensions)(field, schema);
|
|
243
|
+
if (fieldDirectives?.resolveTo) {
|
|
244
|
+
fieldDirectives.resolveTo = fieldDirectives.resolveTo.map(resolveTo => ({
|
|
245
|
+
...resolveTo,
|
|
246
|
+
sourceFieldName: fieldRenameMap.get(resolveTo.sourceTypeName)?.get(resolveTo.sourceFieldName) ||
|
|
247
|
+
resolveTo.sourceFieldName,
|
|
248
|
+
}));
|
|
249
|
+
}
|
|
250
|
+
const fieldExtensions = (field.extensions ||= {});
|
|
251
|
+
fieldExtensions.directives = fieldDirectives;
|
|
252
|
+
return field;
|
|
253
|
+
}
|
|
254
|
+
return (0, utils_1.mapSchema)(schema, mapper);
|
|
214
255
|
};
|
|
215
256
|
}
|
package/esm/transforms/rename.js
CHANGED
|
@@ -110,100 +110,141 @@ export function createRenameTransform(opts) {
|
|
|
110
110
|
};
|
|
111
111
|
}
|
|
112
112
|
const fieldRenameMap = new Map();
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
113
|
+
schemaMapper[MapperKind.FIELD] = (field, fieldName, typeName, schema) => {
|
|
114
|
+
let newFieldName = fieldName;
|
|
115
|
+
if (fieldRenamers.length) {
|
|
116
|
+
const type = schema.getType(typeName);
|
|
117
|
+
for (const renamer of fieldRenamers) {
|
|
118
|
+
newFieldName =
|
|
119
|
+
renamer({
|
|
120
|
+
typeName,
|
|
121
|
+
fieldName: newFieldName,
|
|
122
|
+
type,
|
|
123
|
+
field,
|
|
124
|
+
subgraphConfig,
|
|
125
|
+
}) || newFieldName;
|
|
126
|
+
}
|
|
127
|
+
let typeFieldRenameMap = fieldRenameMap.get(typeName);
|
|
128
|
+
if (!typeFieldRenameMap) {
|
|
129
|
+
typeFieldRenameMap = new Map();
|
|
130
|
+
fieldRenameMap.set(typeName, typeFieldRenameMap);
|
|
131
|
+
}
|
|
132
|
+
typeFieldRenameMap.set(fieldName, newFieldName);
|
|
133
|
+
}
|
|
134
|
+
const fieldDirectives = getDirectiveExtensions(field, schema);
|
|
135
|
+
if (fieldDirectives.resolveTo) {
|
|
136
|
+
fieldDirectives.resolveTo = fieldDirectives.resolveTo.map(resolveTo => ({
|
|
137
|
+
...resolveTo,
|
|
138
|
+
sourceTypeName: (resolveTo.sourceTypeName && typeRenameMap.get(resolveTo.sourceTypeName)) ||
|
|
139
|
+
resolveTo.sourceTypeName,
|
|
140
|
+
sourceFieldName: (resolveTo.sourceFieldName &&
|
|
141
|
+
fieldRenameMap.get(resolveTo.sourceTypeName)?.get(resolveTo.sourceFieldName)) ||
|
|
142
|
+
resolveTo.sourceFieldName,
|
|
143
|
+
}));
|
|
144
|
+
const fieldExtensions = (field.extensions ||= {});
|
|
145
|
+
fieldExtensions.directives = fieldDirectives;
|
|
146
|
+
}
|
|
147
|
+
if (argRenamers.length && 'args' in field && field.args) {
|
|
148
|
+
const newArgs = {};
|
|
149
|
+
for (const argName in field.args) {
|
|
150
|
+
let newArgName = argName;
|
|
151
|
+
for (const renamer of argRenamers) {
|
|
152
|
+
newArgName =
|
|
120
153
|
renamer({
|
|
121
154
|
typeName,
|
|
122
|
-
fieldName
|
|
123
|
-
|
|
124
|
-
field,
|
|
155
|
+
fieldName,
|
|
156
|
+
argName: newArgName,
|
|
125
157
|
subgraphConfig,
|
|
126
|
-
}) ||
|
|
158
|
+
}) || newArgName;
|
|
127
159
|
}
|
|
128
|
-
|
|
129
|
-
if (!typeFieldRenameMap) {
|
|
130
|
-
typeFieldRenameMap = new Map();
|
|
131
|
-
fieldRenameMap.set(typeName, typeFieldRenameMap);
|
|
132
|
-
}
|
|
133
|
-
typeFieldRenameMap.set(fieldName, newFieldName);
|
|
160
|
+
newArgs[newArgName] = field.args[argName];
|
|
134
161
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
subgraphConfig,
|
|
146
|
-
}) || newArgName;
|
|
147
|
-
}
|
|
148
|
-
newArgs[newArgName] = field.args[argName];
|
|
149
|
-
}
|
|
150
|
-
return [
|
|
151
|
-
newFieldName,
|
|
152
|
-
{
|
|
153
|
-
...field,
|
|
154
|
-
args: newArgs,
|
|
155
|
-
},
|
|
156
|
-
];
|
|
157
|
-
}
|
|
158
|
-
const fieldDirectives = getDirectiveExtensions(field, schema);
|
|
159
|
-
if (fieldDirectives.resolveTo) {
|
|
160
|
-
fieldDirectives.resolveTo = fieldDirectives.resolveTo.map(resolveTo => ({
|
|
161
|
-
...resolveTo,
|
|
162
|
-
sourceTypeName: (resolveTo.sourceTypeName && typeRenameMap.get(resolveTo.sourceTypeName)) ||
|
|
163
|
-
resolveTo.sourceTypeName,
|
|
164
|
-
sourceFieldName: (resolveTo.sourceFieldName &&
|
|
165
|
-
fieldRenameMap.get(resolveTo.sourceTypeName)?.get(resolveTo.sourceFieldName)) ||
|
|
166
|
-
resolveTo.sourceFieldName,
|
|
167
|
-
}));
|
|
168
|
-
const fieldExtensions = (field.extensions ||= {});
|
|
169
|
-
fieldExtensions.directives = fieldDirectives;
|
|
170
|
-
}
|
|
171
|
-
return [newFieldName, field];
|
|
172
|
-
};
|
|
173
|
-
}
|
|
162
|
+
return [
|
|
163
|
+
newFieldName,
|
|
164
|
+
{
|
|
165
|
+
...field,
|
|
166
|
+
args: newArgs,
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
}
|
|
170
|
+
return [newFieldName, field];
|
|
171
|
+
};
|
|
174
172
|
return mapSchema(schema, schemaMapper);
|
|
175
173
|
};
|
|
176
174
|
}
|
|
177
175
|
export function createRenameTypeTransform(renameFn, kind = MapperKind.TYPE) {
|
|
178
176
|
return function renameTypeTransform(schema, subgraphConfig) {
|
|
179
177
|
const rootTypes = getRootTypes(schema);
|
|
178
|
+
const renamedTypeMap = new Map();
|
|
180
179
|
return mapSchema(schema, {
|
|
181
|
-
[kind]:
|
|
182
|
-
|
|
183
|
-
|
|
180
|
+
[kind]: type => {
|
|
181
|
+
if (isSpecifiedScalarType(type) || rootTypes.has(type)) {
|
|
182
|
+
return type;
|
|
183
|
+
}
|
|
184
|
+
const newName = renameFn({
|
|
185
|
+
typeName: type.name,
|
|
186
|
+
type,
|
|
187
|
+
subgraphConfig,
|
|
188
|
+
}) || type.name;
|
|
189
|
+
if (type.name === newName) {
|
|
190
|
+
return type;
|
|
191
|
+
}
|
|
192
|
+
renamedTypeMap.set(type.name, newName);
|
|
193
|
+
return new (Object.getPrototypeOf(type).constructor)({
|
|
184
194
|
...type.toConfig(),
|
|
185
|
-
name:
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
195
|
+
name: newName,
|
|
196
|
+
});
|
|
197
|
+
},
|
|
198
|
+
[MapperKind.FIELD](field) {
|
|
199
|
+
const fieldDirectives = getDirectiveExtensions(field, schema);
|
|
200
|
+
if (fieldDirectives?.resolveTo) {
|
|
201
|
+
fieldDirectives.resolveTo = fieldDirectives.resolveTo.map(resolveTo => ({
|
|
202
|
+
...resolveTo,
|
|
203
|
+
sourceTypeName: renamedTypeMap.get(resolveTo.sourceTypeName) || resolveTo.sourceTypeName,
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
206
|
+
const fieldExtensions = (field.extensions ||= {});
|
|
207
|
+
fieldExtensions.directives = fieldDirectives;
|
|
208
|
+
return field;
|
|
209
|
+
},
|
|
191
210
|
});
|
|
192
211
|
};
|
|
193
212
|
}
|
|
194
213
|
export function createRenameFieldTransform(renameFn, kind = MapperKind.FIELD) {
|
|
195
214
|
return function renameFieldTransform(schema, subgraphConfig) {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
215
|
+
const fieldRenameMap = new Map();
|
|
216
|
+
const mapper = {
|
|
217
|
+
[kind]: (field, fieldName, typeName) => {
|
|
218
|
+
const type = schema.getType(typeName);
|
|
219
|
+
const newFieldName = renameFn({
|
|
199
220
|
typeName,
|
|
200
221
|
fieldName,
|
|
201
|
-
type
|
|
222
|
+
type,
|
|
202
223
|
field,
|
|
203
224
|
subgraphConfig,
|
|
204
|
-
}) || fieldName
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
225
|
+
}) || fieldName;
|
|
226
|
+
let typeFieldRenameMap = fieldRenameMap.get(typeName);
|
|
227
|
+
if (!typeFieldRenameMap) {
|
|
228
|
+
typeFieldRenameMap = new Map();
|
|
229
|
+
fieldRenameMap.set(typeName, typeFieldRenameMap);
|
|
230
|
+
}
|
|
231
|
+
typeFieldRenameMap.set(fieldName, newFieldName);
|
|
232
|
+
return [newFieldName, resolveToUpdater(field, schema)];
|
|
233
|
+
},
|
|
234
|
+
};
|
|
235
|
+
function resolveToUpdater(field, schema) {
|
|
236
|
+
const fieldDirectives = getDirectiveExtensions(field, schema);
|
|
237
|
+
if (fieldDirectives?.resolveTo) {
|
|
238
|
+
fieldDirectives.resolveTo = fieldDirectives.resolveTo.map(resolveTo => ({
|
|
239
|
+
...resolveTo,
|
|
240
|
+
sourceFieldName: fieldRenameMap.get(resolveTo.sourceTypeName)?.get(resolveTo.sourceFieldName) ||
|
|
241
|
+
resolveTo.sourceFieldName,
|
|
242
|
+
}));
|
|
243
|
+
}
|
|
244
|
+
const fieldExtensions = (field.extensions ||= {});
|
|
245
|
+
fieldExtensions.directives = fieldDirectives;
|
|
246
|
+
return field;
|
|
247
|
+
}
|
|
248
|
+
return mapSchema(schema, mapper);
|
|
208
249
|
};
|
|
209
250
|
}
|