@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 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('🕸️ Mesh');
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('🕸️ Mesh');`,
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}.push(
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.push({
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.push(
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.push(${importName}(${JSON.stringify(pluginConfig)}))`);
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.push(${importName}({
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.push(${importName}(${JSON.stringify(pluginConfig)}])`);
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 { resolveAdditionalResolvers } from '@graphql-mesh/utils';`);
513
- codes.push(`const additionalResolversRawConfig = [];`);
514
- for (const additionalResolverDefinitionIndex in config.additionalResolvers) {
515
- const additionalResolverDefinition = config.additionalResolvers[additionalResolverDefinitionIndex];
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
- importCodes.push(`import * as additionalResolvers$${additionalResolverDefinitionIndex} from '${crossHelpers.path
518
- .join('..', additionalResolverDefinition)
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
- codes.push(`additionalResolversRawConfig.push(${JSON.stringify(additionalResolverDefinition)});`);
450
+ return `resolveAdditionalResolversWithoutImport(
451
+ ${JSON.stringify(additionalResolverDefinition, null, 2)}
452
+ )`;
525
453
  }
526
- }
527
- codes.push(`const additionalResolvers = await resolveAdditionalResolvers(
528
- baseDir,
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
- importCodes.push(`import importedAdditionalEnvelopPlugins from '${crossHelpers.path
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 { visit, Kind, print, parse, concatAST } from 'graphql';
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('🕸️ Mesh');
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('🕸️ Mesh');`,
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}.push(
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.push({
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.push(
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.push(${importName}(${JSON.stringify(pluginConfig)}))`);
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.push(${importName}({
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.push(${importName}(${JSON.stringify(pluginConfig)}])`);
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 { resolveAdditionalResolvers } from '@graphql-mesh/utils';`);
509
- codes.push(`const additionalResolversRawConfig = [];`);
510
- for (const additionalResolverDefinitionIndex in config.additionalResolvers) {
511
- const additionalResolverDefinition = config.additionalResolvers[additionalResolverDefinitionIndex];
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
- importCodes.push(`import * as additionalResolvers$${additionalResolverDefinitionIndex} from '${path
514
- .join('..', additionalResolverDefinition)
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
- codes.push(`additionalResolversRawConfig.push(${JSON.stringify(additionalResolverDefinition)});`);
446
+ return `resolveAdditionalResolversWithoutImport(
447
+ ${JSON.stringify(additionalResolverDefinition, null, 2)}
448
+ )`;
521
449
  }
522
- }
523
- codes.push(`const additionalResolvers = await resolveAdditionalResolvers(
524
- baseDir,
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
- importCodes.push(`import importedAdditionalEnvelopPlugins from '${path
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": "0.38.0-alpha-27bc4843f.0",
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.2",
10
- "@graphql-mesh/cache-localforage": "0.6.7",
11
- "@graphql-mesh/cross-helpers": "0.1.5",
12
- "@graphql-mesh/merger-bare": "0.13.49",
13
- "@graphql-mesh/merger-stitching": "0.15.51",
14
- "@graphql-mesh/runtime": "0.35.1",
15
- "@graphql-mesh/store": "0.8.10",
16
- "@graphql-mesh/types": "0.73.1",
17
- "@graphql-mesh/utils": "0.35.1",
18
- "@graphql-tools/code-file-loader": "7.2.17",
19
- "@graphql-tools/graphql-file-loader": "7.3.14",
20
- "@graphql-tools/load": "7.5.13",
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.3.1"
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<any>[];
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)[];