@graphql-mesh/config 0.38.0-alpha-27bc4843f.0 → 1.0.1
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/index.js +30 -141
- package/index.mjs +30 -141
- package/package.json +15 -17
- package/process.d.ts +4 -4
- package/utils.d.ts +1 -1
- package/getAdditionalResolversFromTypeDefs.d.ts +0 -2
package/index.js
CHANGED
|
@@ -142,7 +142,7 @@ async function resolveDocuments(documentsConfig, cwd) {
|
|
|
142
142
|
cwd,
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
|
-
async function resolveLogger(loggerConfig, importFn, cwd, additionalPackagePrefixes) {
|
|
145
|
+
async function resolveLogger(loggerConfig, importFn, cwd, additionalPackagePrefixes, initialLoggerPrefix = '🕸️ Mesh') {
|
|
146
146
|
if (typeof loggerConfig === 'string') {
|
|
147
147
|
const { moduleName, resolved: logger } = await getPackage({
|
|
148
148
|
name: loggerConfig,
|
|
@@ -157,81 +157,14 @@ async function resolveLogger(loggerConfig, importFn, cwd, additionalPackagePrefi
|
|
|
157
157
|
code: '',
|
|
158
158
|
};
|
|
159
159
|
}
|
|
160
|
-
const logger = new utils$1.DefaultLogger(
|
|
160
|
+
const logger = new utils$1.DefaultLogger(initialLoggerPrefix);
|
|
161
161
|
return {
|
|
162
162
|
logger,
|
|
163
163
|
importCode: `import { DefaultLogger } from '@graphql-mesh/utils';`,
|
|
164
|
-
code: `const logger = new DefaultLogger(
|
|
164
|
+
code: `const logger = new DefaultLogger(${JSON.stringify(initialLoggerPrefix)});`,
|
|
165
165
|
};
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
function parseObject(ast) {
|
|
169
|
-
const value = Object.create(null);
|
|
170
|
-
ast.fields.forEach(field => {
|
|
171
|
-
// eslint-disable-next-line no-use-before-define
|
|
172
|
-
value[field.name.value] = parseLiteral(field.value);
|
|
173
|
-
});
|
|
174
|
-
return value;
|
|
175
|
-
}
|
|
176
|
-
function parseLiteral(ast) {
|
|
177
|
-
switch (ast.kind) {
|
|
178
|
-
case graphql.Kind.STRING:
|
|
179
|
-
case graphql.Kind.BOOLEAN:
|
|
180
|
-
return ast.value;
|
|
181
|
-
case graphql.Kind.INT:
|
|
182
|
-
case graphql.Kind.FLOAT:
|
|
183
|
-
return parseFloat(ast.value);
|
|
184
|
-
case graphql.Kind.OBJECT:
|
|
185
|
-
return parseObject(ast);
|
|
186
|
-
case graphql.Kind.LIST:
|
|
187
|
-
return ast.values.map(n => parseLiteral(n));
|
|
188
|
-
case graphql.Kind.NULL:
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
function getAdditionalResolversFromTypeDefs(additionalTypeDefs) {
|
|
193
|
-
const additionalResolversFromTypeDefs = [];
|
|
194
|
-
function handleFieldNode(targetTypeName, fieldNode) {
|
|
195
|
-
var _a;
|
|
196
|
-
if ((_a = fieldNode.directives) === null || _a === void 0 ? void 0 : _a.length) {
|
|
197
|
-
const resolveToDef = fieldNode.directives.find(d => d.name.value === 'resolveTo');
|
|
198
|
-
if (resolveToDef != null) {
|
|
199
|
-
const resolveToArgumentMap = {};
|
|
200
|
-
for (const resolveToArg of resolveToDef.arguments) {
|
|
201
|
-
const resolveToArgName = resolveToArg.name.value;
|
|
202
|
-
resolveToArgumentMap[resolveToArgName] = parseLiteral(resolveToArg.value);
|
|
203
|
-
}
|
|
204
|
-
additionalResolversFromTypeDefs.push({
|
|
205
|
-
targetTypeName,
|
|
206
|
-
targetFieldName: fieldNode.name.value,
|
|
207
|
-
...resolveToArgumentMap,
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
additionalTypeDefs === null || additionalTypeDefs === void 0 ? void 0 : additionalTypeDefs.forEach(typeDefs => {
|
|
213
|
-
graphql.visit(typeDefs, {
|
|
214
|
-
ObjectTypeDefinition(objectNode) {
|
|
215
|
-
var _a;
|
|
216
|
-
(_a = objectNode.fields) === null || _a === void 0 ? void 0 : _a.forEach(fieldNode => handleFieldNode(objectNode.name.value, fieldNode));
|
|
217
|
-
},
|
|
218
|
-
ObjectTypeExtension(objectNode) {
|
|
219
|
-
var _a;
|
|
220
|
-
(_a = objectNode.fields) === null || _a === void 0 ? void 0 : _a.forEach(fieldNode => handleFieldNode(objectNode.name.value, fieldNode));
|
|
221
|
-
},
|
|
222
|
-
InterfaceTypeDefinition(interfaceNode) {
|
|
223
|
-
var _a;
|
|
224
|
-
(_a = interfaceNode.fields) === null || _a === void 0 ? void 0 : _a.forEach(fieldNode => handleFieldNode(interfaceNode.name.value, fieldNode));
|
|
225
|
-
},
|
|
226
|
-
InterfaceTypeExtension(interfaceNode) {
|
|
227
|
-
var _a;
|
|
228
|
-
(_a = interfaceNode.fields) === null || _a === void 0 ? void 0 : _a.forEach(fieldNode => handleFieldNode(interfaceNode.name.value, fieldNode));
|
|
229
|
-
},
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
return additionalResolversFromTypeDefs;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
168
|
const ENVELOP_CORE_PLUGINS_MAP = {
|
|
236
169
|
maskedErrors: {
|
|
237
170
|
moduleName: '@envelop/core',
|
|
@@ -246,7 +179,7 @@ const ENVELOP_CORE_PLUGINS_MAP = {
|
|
|
246
179
|
};
|
|
247
180
|
function getDefaultMeshStore(dir, importFn, artifactsDir) {
|
|
248
181
|
var _a;
|
|
249
|
-
const isProd = ((_a = process.env.NODE_ENV) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'production';
|
|
182
|
+
const isProd = ((_a = crossHelpers.process.env.NODE_ENV) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'production';
|
|
250
183
|
const storeStorageAdapter = isProd
|
|
251
184
|
? new store.FsStoreStorageAdapter({
|
|
252
185
|
cwd: dir,
|
|
@@ -269,7 +202,7 @@ function getDefaultMeshStore(dir, importFn, artifactsDir) {
|
|
|
269
202
|
async function processConfig(config, options) {
|
|
270
203
|
var _a, _b, _c;
|
|
271
204
|
if (config.skipSSLValidation) {
|
|
272
|
-
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
|
205
|
+
crossHelpers.process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
|
273
206
|
}
|
|
274
207
|
const importCodes = [
|
|
275
208
|
`import type { GetMeshOptions } from '@graphql-mesh/runtime';`,
|
|
@@ -295,7 +228,7 @@ async function processConfig(config, options) {
|
|
|
295
228
|
codes.push(cacheCode);
|
|
296
229
|
const sourcesStore = rootStore.child('sources');
|
|
297
230
|
codes.push(`const sourcesStore = rootStore.child('sources');`);
|
|
298
|
-
const { logger, importCode: loggerImportCode, code: loggerCode, } = await resolveLogger(config.logger, importFn, dir, additionalPackagePrefixes);
|
|
231
|
+
const { logger, importCode: loggerImportCode, code: loggerCode, } = await resolveLogger(config.logger, importFn, dir, additionalPackagePrefixes, options === null || options === void 0 ? void 0 : options.initialLoggerPrefix);
|
|
299
232
|
importCodes.push(loggerImportCode);
|
|
300
233
|
codes.push(loggerCode);
|
|
301
234
|
codes.push(`const sources = [];`);
|
|
@@ -355,16 +288,14 @@ async function processConfig(config, options) {
|
|
|
355
288
|
if (options.generateCode) {
|
|
356
289
|
const transformImportName = pascalCase.pascalCase(transformName + '_Transform');
|
|
357
290
|
importCodes.push(`import ${transformImportName} from ${JSON.stringify(moduleName)};`);
|
|
358
|
-
codes.push(`${transformsVariableName}
|
|
359
|
-
new ${transformImportName}({
|
|
291
|
+
codes.push(`${transformsVariableName}[${transformIndex}] = new ${transformImportName}({
|
|
360
292
|
apiName: ${JSON.stringify(source.name)},
|
|
361
293
|
config: ${JSON.stringify(transformConfig)},
|
|
362
294
|
baseDir,
|
|
363
295
|
cache,
|
|
364
296
|
pubsub,
|
|
365
297
|
importFn
|
|
366
|
-
})
|
|
367
|
-
);`);
|
|
298
|
+
});`);
|
|
368
299
|
}
|
|
369
300
|
return new TransformCtor({
|
|
370
301
|
apiName: source.name,
|
|
@@ -377,11 +308,11 @@ async function processConfig(config, options) {
|
|
|
377
308
|
})),
|
|
378
309
|
]);
|
|
379
310
|
if (options.generateCode) {
|
|
380
|
-
codes.push(`sources
|
|
311
|
+
codes.push(`sources[${sourceIndex}] = {
|
|
381
312
|
name: '${source.name}',
|
|
382
313
|
handler: ${handlerVariableName},
|
|
383
314
|
transforms: ${transformsVariableName}
|
|
384
|
-
}
|
|
315
|
+
}`);
|
|
385
316
|
}
|
|
386
317
|
return {
|
|
387
318
|
name: source.name,
|
|
@@ -402,16 +333,14 @@ async function processConfig(config, options) {
|
|
|
402
333
|
if (options.generateCode) {
|
|
403
334
|
const transformImportName = pascalCase.pascalCase(transformName + '_Transform');
|
|
404
335
|
importCodes.push(`import ${transformImportName} from ${JSON.stringify(moduleName)};`);
|
|
405
|
-
codes.push(`transforms
|
|
406
|
-
new (${transformImportName} as any)({
|
|
336
|
+
codes.push(`transforms[${transformIndex}] = new (${transformImportName} as any)({
|
|
407
337
|
apiName: '',
|
|
408
338
|
config: ${JSON.stringify(transformConfig)},
|
|
409
339
|
baseDir,
|
|
410
340
|
cache,
|
|
411
341
|
pubsub,
|
|
412
342
|
importFn
|
|
413
|
-
})
|
|
414
|
-
)`);
|
|
343
|
+
})`);
|
|
415
344
|
}
|
|
416
345
|
return new TransformLibrary({
|
|
417
346
|
apiName: '',
|
|
@@ -429,7 +358,7 @@ async function processConfig(config, options) {
|
|
|
429
358
|
const { importName, moduleName, pluginFactory } = ENVELOP_CORE_PLUGINS_MAP[pluginName];
|
|
430
359
|
if (options.generateCode) {
|
|
431
360
|
importCodes.push(`import { ${importName} } from ${JSON.stringify(moduleName)};`);
|
|
432
|
-
codes.push(`additionalEnvelopPlugins
|
|
361
|
+
codes.push(`additionalEnvelopPlugins[${pluginIndex}] = ${importName}(${JSON.stringify(pluginConfig, null, 2)}))`);
|
|
433
362
|
}
|
|
434
363
|
return pluginFactory(pluginConfig);
|
|
435
364
|
}
|
|
@@ -447,10 +376,10 @@ async function processConfig(config, options) {
|
|
|
447
376
|
if (options.generateCode) {
|
|
448
377
|
importName = pascalCase.pascalCase('use_' + pluginName);
|
|
449
378
|
importCodes.push(`import ${importName} from ${JSON.stringify(moduleName)};`);
|
|
450
|
-
codes.push(`additionalEnvelopPlugins
|
|
451
|
-
...(${JSON.stringify(pluginConfig)}),
|
|
379
|
+
codes.push(`additionalEnvelopPlugins[${pluginIndex}] = ${importName}({
|
|
380
|
+
...(${JSON.stringify(pluginConfig, null, 2)}),
|
|
452
381
|
logger: logger.child(${JSON.stringify(pluginName)}),
|
|
453
|
-
})
|
|
382
|
+
})`);
|
|
454
383
|
}
|
|
455
384
|
}
|
|
456
385
|
else {
|
|
@@ -459,7 +388,7 @@ async function processConfig(config, options) {
|
|
|
459
388
|
pluginFactory = possiblePluginFactory[key];
|
|
460
389
|
if (options.generateCode) {
|
|
461
390
|
importCodes.push(`import { ${importName} } from ${JSON.stringify(moduleName)};`);
|
|
462
|
-
codes.push(`additionalEnvelopPlugins
|
|
391
|
+
codes.push(`additionalEnvelopPlugins[${pluginIndex}] = ${importName}(${JSON.stringify(pluginConfig, null, 2)}]`);
|
|
463
392
|
}
|
|
464
393
|
}
|
|
465
394
|
});
|
|
@@ -509,69 +438,29 @@ async function processConfig(config, options) {
|
|
|
509
438
|
]);
|
|
510
439
|
if (options.generateCode) {
|
|
511
440
|
if ((_c = config.additionalResolvers) === null || _c === void 0 ? void 0 : _c.length) {
|
|
512
|
-
importCodes.push(`import {
|
|
513
|
-
codes.push(`const
|
|
514
|
-
|
|
515
|
-
|
|
441
|
+
importCodes.push(`import { resolveAdditionalResolversWithoutImport } from '@graphql-mesh/utils';`);
|
|
442
|
+
codes.push(`const additionalResolvers = await Promise.all([
|
|
443
|
+
${config.additionalResolvers
|
|
444
|
+
.map(additionalResolverDefinition => {
|
|
516
445
|
if (typeof additionalResolverDefinition === 'string') {
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
.split('\\')
|
|
520
|
-
.join('/')}';`);
|
|
521
|
-
codes.push(`additionalResolversRawConfig.push(additionalResolvers$${additionalResolverDefinitionIndex}.resolvers || additionalResolvers$${additionalResolverDefinitionIndex}.default || additionalResolvers$${additionalResolverDefinitionIndex})`);
|
|
446
|
+
return `import(${JSON.stringify(crossHelpers.path.join('..', additionalResolverDefinition).split('\\').join('/'))})
|
|
447
|
+
.then(m => m.resolvers || m.default || m)`;
|
|
522
448
|
}
|
|
523
449
|
else {
|
|
524
|
-
|
|
450
|
+
return `resolveAdditionalResolversWithoutImport(
|
|
451
|
+
${JSON.stringify(additionalResolverDefinition, null, 2)}
|
|
452
|
+
)`;
|
|
525
453
|
}
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
additionalResolversRawConfig,
|
|
530
|
-
importFn,
|
|
531
|
-
pubsub
|
|
532
|
-
)`);
|
|
454
|
+
})
|
|
455
|
+
.join(',\n')}
|
|
456
|
+
]);`);
|
|
533
457
|
}
|
|
534
458
|
else {
|
|
535
459
|
codes.push(`const additionalResolvers = [] as any[]`);
|
|
536
460
|
}
|
|
537
461
|
}
|
|
538
|
-
if (additionalTypeDefs === null || additionalTypeDefs === void 0 ? void 0 : additionalTypeDefs.length) {
|
|
539
|
-
const additionalResolversConfigFromTypeDefs = getAdditionalResolversFromTypeDefs(additionalTypeDefs);
|
|
540
|
-
if (additionalResolversConfigFromTypeDefs === null || additionalResolversConfigFromTypeDefs === void 0 ? void 0 : additionalResolversConfigFromTypeDefs.length) {
|
|
541
|
-
const resolveToDirectiveDefinition = /* GraphQL */ `
|
|
542
|
-
scalar ResolveToSourceArgs
|
|
543
|
-
directive @resolveTo(
|
|
544
|
-
requiredSelectionSet: String
|
|
545
|
-
sourceName: String!
|
|
546
|
-
sourceTypeName: String!
|
|
547
|
-
sourceFieldName: String!
|
|
548
|
-
sourceSelectionSet: String
|
|
549
|
-
sourceArgs: ResolveToSourceArgs
|
|
550
|
-
result: String
|
|
551
|
-
resultType: String
|
|
552
|
-
) on FIELD_DEFINITION
|
|
553
|
-
`;
|
|
554
|
-
const resolvedAdditionalResolvers = await utils$1.resolveAdditionalResolvers(dir, additionalResolversConfigFromTypeDefs, importFn, pubsub);
|
|
555
|
-
additionalTypeDefs.unshift(graphql.parse(resolveToDirectiveDefinition));
|
|
556
|
-
additionalResolvers.push(...resolvedAdditionalResolvers);
|
|
557
|
-
if (options.generateCode && resolvedAdditionalResolvers.length) {
|
|
558
|
-
importCodes.push(`import { resolveAdditionalResolvers } from '@graphql-mesh/utils';`);
|
|
559
|
-
codes.push(`additionalTypeDefs.unshift(parse(/* GraphQL */\`${resolveToDirectiveDefinition}\`))`);
|
|
560
|
-
codes.push(`const additionalResolversFromTypeDefs = await resolveAdditionalResolvers(
|
|
561
|
-
baseDir,
|
|
562
|
-
${JSON.stringify(additionalResolversConfigFromTypeDefs)},
|
|
563
|
-
importFn,
|
|
564
|
-
pubsub
|
|
565
|
-
);`);
|
|
566
|
-
codes.push(`additionalResolvers.push(additionalResolversFromTypeDefs)`);
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
462
|
if (config.additionalEnvelopPlugins) {
|
|
571
|
-
|
|
572
|
-
.join('..', config.additionalEnvelopPlugins)
|
|
573
|
-
.split('\\')
|
|
574
|
-
.join('/')}';`);
|
|
463
|
+
codes.push(`const importedAdditionalEnvelopPlugins = await import(${JSON.stringify(crossHelpers.path.join('..', config.additionalEnvelopPlugins).split('\\').join('/'))}).then(m => m.default || m);`);
|
|
575
464
|
const importedAdditionalEnvelopPlugins = await importFn(crossHelpers.path.isAbsolute(config.additionalEnvelopPlugins)
|
|
576
465
|
? config.additionalEnvelopPlugins
|
|
577
466
|
: crossHelpers.path.join(dir, config.additionalEnvelopPlugins));
|
package/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { path } from '@graphql-mesh/cross-helpers';
|
|
2
|
-
import {
|
|
1
|
+
import { path, process } from '@graphql-mesh/cross-helpers';
|
|
2
|
+
import { print, concatAST, visit } from 'graphql';
|
|
3
3
|
import { printSchemaWithDirectives } from '@graphql-tools/utils';
|
|
4
4
|
import { paramCase } from 'param-case';
|
|
5
5
|
import { loadTypedefs, loadDocuments } from '@graphql-tools/load';
|
|
@@ -138,7 +138,7 @@ async function resolveDocuments(documentsConfig, cwd) {
|
|
|
138
138
|
cwd,
|
|
139
139
|
});
|
|
140
140
|
}
|
|
141
|
-
async function resolveLogger(loggerConfig, importFn, cwd, additionalPackagePrefixes) {
|
|
141
|
+
async function resolveLogger(loggerConfig, importFn, cwd, additionalPackagePrefixes, initialLoggerPrefix = '🕸️ Mesh') {
|
|
142
142
|
if (typeof loggerConfig === 'string') {
|
|
143
143
|
const { moduleName, resolved: logger } = await getPackage({
|
|
144
144
|
name: loggerConfig,
|
|
@@ -153,81 +153,14 @@ async function resolveLogger(loggerConfig, importFn, cwd, additionalPackagePrefi
|
|
|
153
153
|
code: '',
|
|
154
154
|
};
|
|
155
155
|
}
|
|
156
|
-
const logger = new DefaultLogger(
|
|
156
|
+
const logger = new DefaultLogger(initialLoggerPrefix);
|
|
157
157
|
return {
|
|
158
158
|
logger,
|
|
159
159
|
importCode: `import { DefaultLogger } from '@graphql-mesh/utils';`,
|
|
160
|
-
code: `const logger = new DefaultLogger(
|
|
160
|
+
code: `const logger = new DefaultLogger(${JSON.stringify(initialLoggerPrefix)});`,
|
|
161
161
|
};
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
function parseObject(ast) {
|
|
165
|
-
const value = Object.create(null);
|
|
166
|
-
ast.fields.forEach(field => {
|
|
167
|
-
// eslint-disable-next-line no-use-before-define
|
|
168
|
-
value[field.name.value] = parseLiteral(field.value);
|
|
169
|
-
});
|
|
170
|
-
return value;
|
|
171
|
-
}
|
|
172
|
-
function parseLiteral(ast) {
|
|
173
|
-
switch (ast.kind) {
|
|
174
|
-
case Kind.STRING:
|
|
175
|
-
case Kind.BOOLEAN:
|
|
176
|
-
return ast.value;
|
|
177
|
-
case Kind.INT:
|
|
178
|
-
case Kind.FLOAT:
|
|
179
|
-
return parseFloat(ast.value);
|
|
180
|
-
case Kind.OBJECT:
|
|
181
|
-
return parseObject(ast);
|
|
182
|
-
case Kind.LIST:
|
|
183
|
-
return ast.values.map(n => parseLiteral(n));
|
|
184
|
-
case Kind.NULL:
|
|
185
|
-
return null;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
function getAdditionalResolversFromTypeDefs(additionalTypeDefs) {
|
|
189
|
-
const additionalResolversFromTypeDefs = [];
|
|
190
|
-
function handleFieldNode(targetTypeName, fieldNode) {
|
|
191
|
-
var _a;
|
|
192
|
-
if ((_a = fieldNode.directives) === null || _a === void 0 ? void 0 : _a.length) {
|
|
193
|
-
const resolveToDef = fieldNode.directives.find(d => d.name.value === 'resolveTo');
|
|
194
|
-
if (resolveToDef != null) {
|
|
195
|
-
const resolveToArgumentMap = {};
|
|
196
|
-
for (const resolveToArg of resolveToDef.arguments) {
|
|
197
|
-
const resolveToArgName = resolveToArg.name.value;
|
|
198
|
-
resolveToArgumentMap[resolveToArgName] = parseLiteral(resolveToArg.value);
|
|
199
|
-
}
|
|
200
|
-
additionalResolversFromTypeDefs.push({
|
|
201
|
-
targetTypeName,
|
|
202
|
-
targetFieldName: fieldNode.name.value,
|
|
203
|
-
...resolveToArgumentMap,
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
additionalTypeDefs === null || additionalTypeDefs === void 0 ? void 0 : additionalTypeDefs.forEach(typeDefs => {
|
|
209
|
-
visit(typeDefs, {
|
|
210
|
-
ObjectTypeDefinition(objectNode) {
|
|
211
|
-
var _a;
|
|
212
|
-
(_a = objectNode.fields) === null || _a === void 0 ? void 0 : _a.forEach(fieldNode => handleFieldNode(objectNode.name.value, fieldNode));
|
|
213
|
-
},
|
|
214
|
-
ObjectTypeExtension(objectNode) {
|
|
215
|
-
var _a;
|
|
216
|
-
(_a = objectNode.fields) === null || _a === void 0 ? void 0 : _a.forEach(fieldNode => handleFieldNode(objectNode.name.value, fieldNode));
|
|
217
|
-
},
|
|
218
|
-
InterfaceTypeDefinition(interfaceNode) {
|
|
219
|
-
var _a;
|
|
220
|
-
(_a = interfaceNode.fields) === null || _a === void 0 ? void 0 : _a.forEach(fieldNode => handleFieldNode(interfaceNode.name.value, fieldNode));
|
|
221
|
-
},
|
|
222
|
-
InterfaceTypeExtension(interfaceNode) {
|
|
223
|
-
var _a;
|
|
224
|
-
(_a = interfaceNode.fields) === null || _a === void 0 ? void 0 : _a.forEach(fieldNode => handleFieldNode(interfaceNode.name.value, fieldNode));
|
|
225
|
-
},
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
return additionalResolversFromTypeDefs;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
164
|
const ENVELOP_CORE_PLUGINS_MAP = {
|
|
232
165
|
maskedErrors: {
|
|
233
166
|
moduleName: '@envelop/core',
|
|
@@ -291,7 +224,7 @@ async function processConfig(config, options) {
|
|
|
291
224
|
codes.push(cacheCode);
|
|
292
225
|
const sourcesStore = rootStore.child('sources');
|
|
293
226
|
codes.push(`const sourcesStore = rootStore.child('sources');`);
|
|
294
|
-
const { logger, importCode: loggerImportCode, code: loggerCode, } = await resolveLogger(config.logger, importFn, dir, additionalPackagePrefixes);
|
|
227
|
+
const { logger, importCode: loggerImportCode, code: loggerCode, } = await resolveLogger(config.logger, importFn, dir, additionalPackagePrefixes, options === null || options === void 0 ? void 0 : options.initialLoggerPrefix);
|
|
295
228
|
importCodes.push(loggerImportCode);
|
|
296
229
|
codes.push(loggerCode);
|
|
297
230
|
codes.push(`const sources = [];`);
|
|
@@ -351,16 +284,14 @@ async function processConfig(config, options) {
|
|
|
351
284
|
if (options.generateCode) {
|
|
352
285
|
const transformImportName = pascalCase(transformName + '_Transform');
|
|
353
286
|
importCodes.push(`import ${transformImportName} from ${JSON.stringify(moduleName)};`);
|
|
354
|
-
codes.push(`${transformsVariableName}
|
|
355
|
-
new ${transformImportName}({
|
|
287
|
+
codes.push(`${transformsVariableName}[${transformIndex}] = new ${transformImportName}({
|
|
356
288
|
apiName: ${JSON.stringify(source.name)},
|
|
357
289
|
config: ${JSON.stringify(transformConfig)},
|
|
358
290
|
baseDir,
|
|
359
291
|
cache,
|
|
360
292
|
pubsub,
|
|
361
293
|
importFn
|
|
362
|
-
})
|
|
363
|
-
);`);
|
|
294
|
+
});`);
|
|
364
295
|
}
|
|
365
296
|
return new TransformCtor({
|
|
366
297
|
apiName: source.name,
|
|
@@ -373,11 +304,11 @@ async function processConfig(config, options) {
|
|
|
373
304
|
})),
|
|
374
305
|
]);
|
|
375
306
|
if (options.generateCode) {
|
|
376
|
-
codes.push(`sources
|
|
307
|
+
codes.push(`sources[${sourceIndex}] = {
|
|
377
308
|
name: '${source.name}',
|
|
378
309
|
handler: ${handlerVariableName},
|
|
379
310
|
transforms: ${transformsVariableName}
|
|
380
|
-
}
|
|
311
|
+
}`);
|
|
381
312
|
}
|
|
382
313
|
return {
|
|
383
314
|
name: source.name,
|
|
@@ -398,16 +329,14 @@ async function processConfig(config, options) {
|
|
|
398
329
|
if (options.generateCode) {
|
|
399
330
|
const transformImportName = pascalCase(transformName + '_Transform');
|
|
400
331
|
importCodes.push(`import ${transformImportName} from ${JSON.stringify(moduleName)};`);
|
|
401
|
-
codes.push(`transforms
|
|
402
|
-
new (${transformImportName} as any)({
|
|
332
|
+
codes.push(`transforms[${transformIndex}] = new (${transformImportName} as any)({
|
|
403
333
|
apiName: '',
|
|
404
334
|
config: ${JSON.stringify(transformConfig)},
|
|
405
335
|
baseDir,
|
|
406
336
|
cache,
|
|
407
337
|
pubsub,
|
|
408
338
|
importFn
|
|
409
|
-
})
|
|
410
|
-
)`);
|
|
339
|
+
})`);
|
|
411
340
|
}
|
|
412
341
|
return new TransformLibrary({
|
|
413
342
|
apiName: '',
|
|
@@ -425,7 +354,7 @@ async function processConfig(config, options) {
|
|
|
425
354
|
const { importName, moduleName, pluginFactory } = ENVELOP_CORE_PLUGINS_MAP[pluginName];
|
|
426
355
|
if (options.generateCode) {
|
|
427
356
|
importCodes.push(`import { ${importName} } from ${JSON.stringify(moduleName)};`);
|
|
428
|
-
codes.push(`additionalEnvelopPlugins
|
|
357
|
+
codes.push(`additionalEnvelopPlugins[${pluginIndex}] = ${importName}(${JSON.stringify(pluginConfig, null, 2)}))`);
|
|
429
358
|
}
|
|
430
359
|
return pluginFactory(pluginConfig);
|
|
431
360
|
}
|
|
@@ -443,10 +372,10 @@ async function processConfig(config, options) {
|
|
|
443
372
|
if (options.generateCode) {
|
|
444
373
|
importName = pascalCase('use_' + pluginName);
|
|
445
374
|
importCodes.push(`import ${importName} from ${JSON.stringify(moduleName)};`);
|
|
446
|
-
codes.push(`additionalEnvelopPlugins
|
|
447
|
-
...(${JSON.stringify(pluginConfig)}),
|
|
375
|
+
codes.push(`additionalEnvelopPlugins[${pluginIndex}] = ${importName}({
|
|
376
|
+
...(${JSON.stringify(pluginConfig, null, 2)}),
|
|
448
377
|
logger: logger.child(${JSON.stringify(pluginName)}),
|
|
449
|
-
})
|
|
378
|
+
})`);
|
|
450
379
|
}
|
|
451
380
|
}
|
|
452
381
|
else {
|
|
@@ -455,7 +384,7 @@ async function processConfig(config, options) {
|
|
|
455
384
|
pluginFactory = possiblePluginFactory[key];
|
|
456
385
|
if (options.generateCode) {
|
|
457
386
|
importCodes.push(`import { ${importName} } from ${JSON.stringify(moduleName)};`);
|
|
458
|
-
codes.push(`additionalEnvelopPlugins
|
|
387
|
+
codes.push(`additionalEnvelopPlugins[${pluginIndex}] = ${importName}(${JSON.stringify(pluginConfig, null, 2)}]`);
|
|
459
388
|
}
|
|
460
389
|
}
|
|
461
390
|
});
|
|
@@ -505,69 +434,29 @@ async function processConfig(config, options) {
|
|
|
505
434
|
]);
|
|
506
435
|
if (options.generateCode) {
|
|
507
436
|
if ((_c = config.additionalResolvers) === null || _c === void 0 ? void 0 : _c.length) {
|
|
508
|
-
importCodes.push(`import {
|
|
509
|
-
codes.push(`const
|
|
510
|
-
|
|
511
|
-
|
|
437
|
+
importCodes.push(`import { resolveAdditionalResolversWithoutImport } from '@graphql-mesh/utils';`);
|
|
438
|
+
codes.push(`const additionalResolvers = await Promise.all([
|
|
439
|
+
${config.additionalResolvers
|
|
440
|
+
.map(additionalResolverDefinition => {
|
|
512
441
|
if (typeof additionalResolverDefinition === 'string') {
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
.split('\\')
|
|
516
|
-
.join('/')}';`);
|
|
517
|
-
codes.push(`additionalResolversRawConfig.push(additionalResolvers$${additionalResolverDefinitionIndex}.resolvers || additionalResolvers$${additionalResolverDefinitionIndex}.default || additionalResolvers$${additionalResolverDefinitionIndex})`);
|
|
442
|
+
return `import(${JSON.stringify(path.join('..', additionalResolverDefinition).split('\\').join('/'))})
|
|
443
|
+
.then(m => m.resolvers || m.default || m)`;
|
|
518
444
|
}
|
|
519
445
|
else {
|
|
520
|
-
|
|
446
|
+
return `resolveAdditionalResolversWithoutImport(
|
|
447
|
+
${JSON.stringify(additionalResolverDefinition, null, 2)}
|
|
448
|
+
)`;
|
|
521
449
|
}
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
additionalResolversRawConfig,
|
|
526
|
-
importFn,
|
|
527
|
-
pubsub
|
|
528
|
-
)`);
|
|
450
|
+
})
|
|
451
|
+
.join(',\n')}
|
|
452
|
+
]);`);
|
|
529
453
|
}
|
|
530
454
|
else {
|
|
531
455
|
codes.push(`const additionalResolvers = [] as any[]`);
|
|
532
456
|
}
|
|
533
457
|
}
|
|
534
|
-
if (additionalTypeDefs === null || additionalTypeDefs === void 0 ? void 0 : additionalTypeDefs.length) {
|
|
535
|
-
const additionalResolversConfigFromTypeDefs = getAdditionalResolversFromTypeDefs(additionalTypeDefs);
|
|
536
|
-
if (additionalResolversConfigFromTypeDefs === null || additionalResolversConfigFromTypeDefs === void 0 ? void 0 : additionalResolversConfigFromTypeDefs.length) {
|
|
537
|
-
const resolveToDirectiveDefinition = /* GraphQL */ `
|
|
538
|
-
scalar ResolveToSourceArgs
|
|
539
|
-
directive @resolveTo(
|
|
540
|
-
requiredSelectionSet: String
|
|
541
|
-
sourceName: String!
|
|
542
|
-
sourceTypeName: String!
|
|
543
|
-
sourceFieldName: String!
|
|
544
|
-
sourceSelectionSet: String
|
|
545
|
-
sourceArgs: ResolveToSourceArgs
|
|
546
|
-
result: String
|
|
547
|
-
resultType: String
|
|
548
|
-
) on FIELD_DEFINITION
|
|
549
|
-
`;
|
|
550
|
-
const resolvedAdditionalResolvers = await resolveAdditionalResolvers(dir, additionalResolversConfigFromTypeDefs, importFn, pubsub);
|
|
551
|
-
additionalTypeDefs.unshift(parse(resolveToDirectiveDefinition));
|
|
552
|
-
additionalResolvers.push(...resolvedAdditionalResolvers);
|
|
553
|
-
if (options.generateCode && resolvedAdditionalResolvers.length) {
|
|
554
|
-
importCodes.push(`import { resolveAdditionalResolvers } from '@graphql-mesh/utils';`);
|
|
555
|
-
codes.push(`additionalTypeDefs.unshift(parse(/* GraphQL */\`${resolveToDirectiveDefinition}\`))`);
|
|
556
|
-
codes.push(`const additionalResolversFromTypeDefs = await resolveAdditionalResolvers(
|
|
557
|
-
baseDir,
|
|
558
|
-
${JSON.stringify(additionalResolversConfigFromTypeDefs)},
|
|
559
|
-
importFn,
|
|
560
|
-
pubsub
|
|
561
|
-
);`);
|
|
562
|
-
codes.push(`additionalResolvers.push(additionalResolversFromTypeDefs)`);
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
458
|
if (config.additionalEnvelopPlugins) {
|
|
567
|
-
|
|
568
|
-
.join('..', config.additionalEnvelopPlugins)
|
|
569
|
-
.split('\\')
|
|
570
|
-
.join('/')}';`);
|
|
459
|
+
codes.push(`const importedAdditionalEnvelopPlugins = await import(${JSON.stringify(path.join('..', config.additionalEnvelopPlugins).split('\\').join('/'))}).then(m => m.default || m);`);
|
|
571
460
|
const importedAdditionalEnvelopPlugins = await importFn(path.isAbsolute(config.additionalEnvelopPlugins)
|
|
572
461
|
? config.additionalEnvelopPlugins
|
|
573
462
|
: path.join(dir, config.additionalEnvelopPlugins));
|
package/package.json
CHANGED
|
@@ -1,30 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphql-mesh/config",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"peerDependencies": {
|
|
6
|
+
"@graphql-mesh/runtime": "^0.37.1",
|
|
6
7
|
"graphql": "*"
|
|
7
8
|
},
|
|
8
9
|
"dependencies": {
|
|
9
|
-
"@envelop/core": "2.3.
|
|
10
|
-
"@graphql-mesh/cache-localforage": "0.6.
|
|
11
|
-
"@graphql-mesh/cross-helpers": "0.1.
|
|
12
|
-
"@graphql-mesh/merger-bare": "0.13.
|
|
13
|
-
"@graphql-mesh/merger-stitching": "0.15.
|
|
14
|
-
"@graphql-mesh/
|
|
15
|
-
"@graphql-mesh/
|
|
16
|
-
"@graphql-mesh/
|
|
17
|
-
"@graphql-
|
|
18
|
-
"@graphql-tools/
|
|
19
|
-
"@graphql-tools/
|
|
20
|
-
"@graphql-tools/
|
|
21
|
-
"@graphql-tools/merge": "8.2.13",
|
|
22
|
-
"@graphql-tools/utils": "8.6.12",
|
|
10
|
+
"@envelop/core": "2.3.3",
|
|
11
|
+
"@graphql-mesh/cache-localforage": "0.6.12",
|
|
12
|
+
"@graphql-mesh/cross-helpers": "0.1.6",
|
|
13
|
+
"@graphql-mesh/merger-bare": "0.13.54",
|
|
14
|
+
"@graphql-mesh/merger-stitching": "0.15.56",
|
|
15
|
+
"@graphql-mesh/store": "0.8.15",
|
|
16
|
+
"@graphql-mesh/types": "0.74.2",
|
|
17
|
+
"@graphql-mesh/utils": "0.35.6",
|
|
18
|
+
"@graphql-tools/code-file-loader": "7.2.18",
|
|
19
|
+
"@graphql-tools/graphql-file-loader": "7.3.15",
|
|
20
|
+
"@graphql-tools/load": "7.5.14",
|
|
21
|
+
"@graphql-tools/utils": "8.6.13",
|
|
23
22
|
"camel-case": "4.1.2",
|
|
24
|
-
"fetchache": "0.1.2",
|
|
25
23
|
"param-case": "3.0.4",
|
|
26
24
|
"pascal-case": "3.1.2",
|
|
27
|
-
"tslib": "^2.
|
|
25
|
+
"tslib": "^2.4.0"
|
|
28
26
|
},
|
|
29
27
|
"repository": {
|
|
30
28
|
"type": "git",
|
package/process.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { MeshResolvedSource } from '@graphql-mesh/runtime';
|
|
2
|
-
import { ImportFn, Logger, MeshMerger, MeshPubSub, MeshTransform, YamlConfig } from '@graphql-mesh/types';
|
|
1
|
+
import type { MeshResolvedSource } from '@graphql-mesh/runtime';
|
|
2
|
+
import { ImportFn, Logger, MeshMerger, MeshPubSub, MeshTransform, YamlConfig, KeyValueCache } from '@graphql-mesh/types';
|
|
3
3
|
import { IResolvers, Source } from '@graphql-tools/utils';
|
|
4
|
-
import { KeyValueCache } from 'fetchache';
|
|
5
4
|
import { DocumentNode } from 'graphql';
|
|
6
5
|
import { MeshStore } from '@graphql-mesh/store';
|
|
7
6
|
import { envelop } from '@envelop/core';
|
|
@@ -14,10 +13,11 @@ export declare type ConfigProcessOptions = {
|
|
|
14
13
|
artifactsDir?: string;
|
|
15
14
|
additionalPackagePrefixes?: string[];
|
|
16
15
|
generateCode?: boolean;
|
|
16
|
+
initialLoggerPrefix?: string;
|
|
17
17
|
};
|
|
18
18
|
declare type EnvelopPlugins = Parameters<typeof envelop>[0]['plugins'];
|
|
19
19
|
export declare type ProcessedConfig = {
|
|
20
|
-
sources: MeshResolvedSource
|
|
20
|
+
sources: MeshResolvedSource[];
|
|
21
21
|
transforms: MeshTransform[];
|
|
22
22
|
additionalTypeDefs: DocumentNode[];
|
|
23
23
|
additionalResolvers: IResolvers[];
|
package/utils.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export declare function resolvePubSub(pubsubYamlConfig: YamlConfig.Config['pubsu
|
|
|
25
25
|
pubsub: MeshPubSub;
|
|
26
26
|
}>;
|
|
27
27
|
export declare function resolveDocuments(documentsConfig: YamlConfig.Config['documents'], cwd: string): Promise<Source[]>;
|
|
28
|
-
export declare function resolveLogger(loggerConfig: YamlConfig.Config['logger'], importFn: ImportFn, cwd: string, additionalPackagePrefixes: string[]): Promise<{
|
|
28
|
+
export declare function resolveLogger(loggerConfig: YamlConfig.Config['logger'], importFn: ImportFn, cwd: string, additionalPackagePrefixes: string[], initialLoggerPrefix?: string): Promise<{
|
|
29
29
|
importCode: string;
|
|
30
30
|
code: string;
|
|
31
31
|
logger: Logger;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { DocumentNode } from 'graphql';
|
|
2
|
-
export declare function getAdditionalResolversFromTypeDefs(additionalTypeDefs: DocumentNode[]): (string | import("../../types/src/config").AdditionalStitchingResolverObject | import("../../types/src/config").AdditionalStitchingBatchResolverObject | import("../../types/src/config").AdditionalSubscriptionObject)[];
|