@graphql-codegen/graphql-modules-preset 2.3.1-alpha-df8969b0a.0 → 2.3.2-alpha-94c0a1415.0

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/builder.d.ts CHANGED
@@ -1,6 +1,17 @@
1
1
  import { DocumentNode, GraphQLSchema } from 'graphql';
2
2
  import { ModulesConfig } from './config';
3
3
  import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';
4
+ declare type RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';
5
+ declare type Registry = Record<RegistryKeys, string[]>;
6
+ export declare function extractDeclared({ doc, rootTypes }: {
7
+ doc: DocumentNode;
8
+ rootTypes: string[];
9
+ }): {
10
+ picks: Record<RegistryKeys, Record<string, string[]>>;
11
+ defined: Registry;
12
+ extended: Registry;
13
+ usedTypes: string[];
14
+ };
4
15
  export declare function buildModule(name: string, doc: DocumentNode, { importNamespace, importPath, encapsulate, shouldDeclare, rootTypes, schema, baseVisitor, useGraphQLModules, }: {
5
16
  importNamespace: string;
6
17
  importPath: string;
@@ -11,3 +22,4 @@ export declare function buildModule(name: string, doc: DocumentNode, { importNam
11
22
  schema?: GraphQLSchema;
12
23
  useGraphQLModules: boolean;
13
24
  }): string;
25
+ export {};
package/config.d.ts CHANGED
@@ -3,7 +3,7 @@ export declare type ModulesConfig = {
3
3
  * @name baseTypesPath
4
4
  * @type string
5
5
  * @description Required, should point to the base schema types file.
6
- * The key of the output is used a the base path for this file.
6
+ * The key of the output is used a base path for this file.
7
7
  *
8
8
  * @example
9
9
  * ```yml
@@ -20,7 +20,7 @@ export declare type ModulesConfig = {
20
20
  /**
21
21
  * @name importBaseTypesFrom
22
22
  * @type string
23
- * @description Overrides the package import for the base types. Use this if you are within a monorepo and you wish
23
+ * @description Overrides the package import for the base types. Use this if you are within a monorepo, and you wish
24
24
  * to import the base types directly from a different package, and not from a relative path.
25
25
  *
26
26
  */
@@ -86,7 +86,7 @@ export declare type ModulesConfig = {
86
86
  * @name useGraphQLModules
87
87
  * @type boolean
88
88
  * @default true
89
- * @description By default, the generated types will be generate some code specific to `graphql-modules` library.
89
+ * @description By default, the generated types will generate some code specific to `graphql-modules` library.
90
90
  *
91
91
  * If you are not using GraphQL-Modules, you can disable this feature by setting this to `false`.
92
92
  */
package/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Types } from '@graphql-codegen/plugin-helpers';
2
2
  import { ModulesConfig } from './config';
3
+ export { extractDeclared } from './builder';
3
4
  export declare const preset: Types.OutputPreset<ModulesConfig>;
4
5
  export default preset;
package/index.js CHANGED
@@ -183,12 +183,101 @@ function createObject(keys, valueFn) {
183
183
 
184
184
  const registryKeys = ['objects', 'inputs', 'interfaces', 'scalars', 'unions', 'enums'];
185
185
  const resolverKeys = ['scalars', 'objects', 'enums'];
186
- function buildModule(name, doc, { importNamespace, importPath, encapsulate, shouldDeclare, rootTypes, schema, baseVisitor, useGraphQLModules, }) {
186
+ function extractDeclared({ doc, rootTypes }) {
187
187
  const picks = createObject(registryKeys, () => ({}));
188
188
  const defined = createObject(registryKeys, () => []);
189
189
  const extended = createObject(registryKeys, () => []);
190
- // List of types used in objects, fields, arguments etc
191
190
  const usedTypes = collectUsedTypes(doc);
191
+ function collectFields(node, picksObj) {
192
+ const name = node.name.value;
193
+ if (node.fields) {
194
+ if (!picksObj[name]) {
195
+ picksObj[name] = [];
196
+ }
197
+ node.fields.forEach(field => {
198
+ picksObj[name].push(field.name.value);
199
+ });
200
+ }
201
+ }
202
+ function collectValuesFromEnum(node) {
203
+ const name = node.name.value;
204
+ if (node.values) {
205
+ if (!picks.enums[name]) {
206
+ picks.enums[name] = [];
207
+ }
208
+ node.values.forEach(field => {
209
+ picks.enums[name].push(field.name.value);
210
+ });
211
+ }
212
+ }
213
+ function collectTypeDefinition(node) {
214
+ const name = node.name.value;
215
+ switch (node.kind) {
216
+ case graphql.Kind.OBJECT_TYPE_DEFINITION: {
217
+ defined.objects.push(name);
218
+ collectFields(node, picks.objects);
219
+ break;
220
+ }
221
+ case graphql.Kind.ENUM_TYPE_DEFINITION: {
222
+ defined.enums.push(name);
223
+ collectValuesFromEnum(node);
224
+ break;
225
+ }
226
+ case graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION: {
227
+ defined.inputs.push(name);
228
+ collectFields(node, picks.inputs);
229
+ break;
230
+ }
231
+ case graphql.Kind.SCALAR_TYPE_DEFINITION: {
232
+ defined.scalars.push(name);
233
+ break;
234
+ }
235
+ case graphql.Kind.INTERFACE_TYPE_DEFINITION: {
236
+ defined.interfaces.push(name);
237
+ collectFields(node, picks.interfaces);
238
+ break;
239
+ }
240
+ case graphql.Kind.UNION_TYPE_DEFINITION: {
241
+ defined.unions.push(name);
242
+ break;
243
+ }
244
+ }
245
+ }
246
+ function collectTypeExtension(node) {
247
+ const name = node.name.value;
248
+ switch (node.kind) {
249
+ case graphql.Kind.OBJECT_TYPE_EXTENSION: {
250
+ collectFields(node, picks.objects);
251
+ // Do not include root types as extensions
252
+ // so we can use them in DefinedFields
253
+ if (rootTypes.includes(name)) {
254
+ pushUnique(defined.objects, name);
255
+ return;
256
+ }
257
+ pushUnique(extended.objects, name);
258
+ break;
259
+ }
260
+ case graphql.Kind.ENUM_TYPE_EXTENSION: {
261
+ collectValuesFromEnum(node);
262
+ pushUnique(extended.enums, name);
263
+ break;
264
+ }
265
+ case graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION: {
266
+ collectFields(node, picks.inputs);
267
+ pushUnique(extended.inputs, name);
268
+ break;
269
+ }
270
+ case graphql.Kind.INTERFACE_TYPE_EXTENSION: {
271
+ collectFields(node, picks.interfaces);
272
+ pushUnique(extended.interfaces, name);
273
+ break;
274
+ }
275
+ case graphql.Kind.UNION_TYPE_EXTENSION: {
276
+ pushUnique(extended.unions, name);
277
+ break;
278
+ }
279
+ }
280
+ }
192
281
  graphql.visit(doc, {
193
282
  ObjectTypeDefinition(node) {
194
283
  collectTypeDefinition(node);
@@ -224,6 +313,10 @@ function buildModule(name, doc, { importNamespace, importPath, encapsulate, shou
224
313
  collectTypeExtension(node);
225
314
  },
226
315
  });
316
+ return { picks, defined, extended, usedTypes };
317
+ }
318
+ function buildModule(name, doc, { importNamespace, importPath, encapsulate, shouldDeclare, rootTypes, schema, baseVisitor, useGraphQLModules, }) {
319
+ const { picks, defined, extended, usedTypes } = extractDeclared({ doc, rootTypes });
227
320
  // Defined and Extended types
228
321
  const visited = createObject(registryKeys, key => concatByKey(defined, extended, key));
229
322
  // Types that are not defined or extended in a module, they come from other modules
@@ -420,103 +513,6 @@ function buildModule(name, doc, { importNamespace, importPath, encapsulate, shou
420
513
  function printExportType(typeName) {
421
514
  return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;
422
515
  }
423
- //
424
- //
425
- //
426
- // Utils
427
- //
428
- //
429
- //
430
- function collectFields(node, picksObj) {
431
- const name = node.name.value;
432
- if (node.fields) {
433
- if (!picksObj[name]) {
434
- picksObj[name] = [];
435
- }
436
- node.fields.forEach(field => {
437
- picksObj[name].push(field.name.value);
438
- });
439
- }
440
- }
441
- function collectValuesFromEnum(node) {
442
- const name = node.name.value;
443
- if (node.values) {
444
- if (!picks.enums[name]) {
445
- picks.enums[name] = [];
446
- }
447
- node.values.forEach(field => {
448
- picks.enums[name].push(field.name.value);
449
- });
450
- }
451
- }
452
- function collectTypeDefinition(node) {
453
- const name = node.name.value;
454
- switch (node.kind) {
455
- case graphql.Kind.OBJECT_TYPE_DEFINITION: {
456
- defined.objects.push(name);
457
- collectFields(node, picks.objects);
458
- break;
459
- }
460
- case graphql.Kind.ENUM_TYPE_DEFINITION: {
461
- defined.enums.push(name);
462
- collectValuesFromEnum(node);
463
- break;
464
- }
465
- case graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION: {
466
- defined.inputs.push(name);
467
- collectFields(node, picks.inputs);
468
- break;
469
- }
470
- case graphql.Kind.SCALAR_TYPE_DEFINITION: {
471
- defined.scalars.push(name);
472
- break;
473
- }
474
- case graphql.Kind.INTERFACE_TYPE_DEFINITION: {
475
- defined.interfaces.push(name);
476
- collectFields(node, picks.interfaces);
477
- break;
478
- }
479
- case graphql.Kind.UNION_TYPE_DEFINITION: {
480
- defined.unions.push(name);
481
- break;
482
- }
483
- }
484
- }
485
- function collectTypeExtension(node) {
486
- const name = node.name.value;
487
- switch (node.kind) {
488
- case graphql.Kind.OBJECT_TYPE_EXTENSION: {
489
- collectFields(node, picks.objects);
490
- // Do not include root types as extensions
491
- // so we can use them in DefinedFields
492
- if (rootTypes.includes(name)) {
493
- pushUnique(defined.objects, name);
494
- return;
495
- }
496
- pushUnique(extended.objects, name);
497
- break;
498
- }
499
- case graphql.Kind.ENUM_TYPE_EXTENSION: {
500
- collectValuesFromEnum(node);
501
- pushUnique(extended.enums, name);
502
- break;
503
- }
504
- case graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION: {
505
- collectFields(node, picks.inputs);
506
- pushUnique(extended.inputs, name);
507
- break;
508
- }
509
- case graphql.Kind.INTERFACE_TYPE_EXTENSION: {
510
- collectFields(node, picks.interfaces);
511
- pushUnique(extended.interfaces, name);
512
- break;
513
- }
514
- case graphql.Kind.UNION_TYPE_EXTENSION: {
515
- pushUnique(extended.unions, name);
516
- break;
517
- }
518
- }
519
- }
520
516
  }
521
517
 
522
518
  const preset = {
@@ -623,4 +619,5 @@ const preset = {
623
619
  };
624
620
 
625
621
  exports.default = preset;
622
+ exports.extractDeclared = extractDeclared;
626
623
  exports.preset = preset;
package/index.mjs CHANGED
@@ -177,12 +177,101 @@ function createObject(keys, valueFn) {
177
177
 
178
178
  const registryKeys = ['objects', 'inputs', 'interfaces', 'scalars', 'unions', 'enums'];
179
179
  const resolverKeys = ['scalars', 'objects', 'enums'];
180
- function buildModule(name, doc, { importNamespace, importPath, encapsulate, shouldDeclare, rootTypes, schema, baseVisitor, useGraphQLModules, }) {
180
+ function extractDeclared({ doc, rootTypes }) {
181
181
  const picks = createObject(registryKeys, () => ({}));
182
182
  const defined = createObject(registryKeys, () => []);
183
183
  const extended = createObject(registryKeys, () => []);
184
- // List of types used in objects, fields, arguments etc
185
184
  const usedTypes = collectUsedTypes(doc);
185
+ function collectFields(node, picksObj) {
186
+ const name = node.name.value;
187
+ if (node.fields) {
188
+ if (!picksObj[name]) {
189
+ picksObj[name] = [];
190
+ }
191
+ node.fields.forEach(field => {
192
+ picksObj[name].push(field.name.value);
193
+ });
194
+ }
195
+ }
196
+ function collectValuesFromEnum(node) {
197
+ const name = node.name.value;
198
+ if (node.values) {
199
+ if (!picks.enums[name]) {
200
+ picks.enums[name] = [];
201
+ }
202
+ node.values.forEach(field => {
203
+ picks.enums[name].push(field.name.value);
204
+ });
205
+ }
206
+ }
207
+ function collectTypeDefinition(node) {
208
+ const name = node.name.value;
209
+ switch (node.kind) {
210
+ case Kind.OBJECT_TYPE_DEFINITION: {
211
+ defined.objects.push(name);
212
+ collectFields(node, picks.objects);
213
+ break;
214
+ }
215
+ case Kind.ENUM_TYPE_DEFINITION: {
216
+ defined.enums.push(name);
217
+ collectValuesFromEnum(node);
218
+ break;
219
+ }
220
+ case Kind.INPUT_OBJECT_TYPE_DEFINITION: {
221
+ defined.inputs.push(name);
222
+ collectFields(node, picks.inputs);
223
+ break;
224
+ }
225
+ case Kind.SCALAR_TYPE_DEFINITION: {
226
+ defined.scalars.push(name);
227
+ break;
228
+ }
229
+ case Kind.INTERFACE_TYPE_DEFINITION: {
230
+ defined.interfaces.push(name);
231
+ collectFields(node, picks.interfaces);
232
+ break;
233
+ }
234
+ case Kind.UNION_TYPE_DEFINITION: {
235
+ defined.unions.push(name);
236
+ break;
237
+ }
238
+ }
239
+ }
240
+ function collectTypeExtension(node) {
241
+ const name = node.name.value;
242
+ switch (node.kind) {
243
+ case Kind.OBJECT_TYPE_EXTENSION: {
244
+ collectFields(node, picks.objects);
245
+ // Do not include root types as extensions
246
+ // so we can use them in DefinedFields
247
+ if (rootTypes.includes(name)) {
248
+ pushUnique(defined.objects, name);
249
+ return;
250
+ }
251
+ pushUnique(extended.objects, name);
252
+ break;
253
+ }
254
+ case Kind.ENUM_TYPE_EXTENSION: {
255
+ collectValuesFromEnum(node);
256
+ pushUnique(extended.enums, name);
257
+ break;
258
+ }
259
+ case Kind.INPUT_OBJECT_TYPE_EXTENSION: {
260
+ collectFields(node, picks.inputs);
261
+ pushUnique(extended.inputs, name);
262
+ break;
263
+ }
264
+ case Kind.INTERFACE_TYPE_EXTENSION: {
265
+ collectFields(node, picks.interfaces);
266
+ pushUnique(extended.interfaces, name);
267
+ break;
268
+ }
269
+ case Kind.UNION_TYPE_EXTENSION: {
270
+ pushUnique(extended.unions, name);
271
+ break;
272
+ }
273
+ }
274
+ }
186
275
  visit(doc, {
187
276
  ObjectTypeDefinition(node) {
188
277
  collectTypeDefinition(node);
@@ -218,6 +307,10 @@ function buildModule(name, doc, { importNamespace, importPath, encapsulate, shou
218
307
  collectTypeExtension(node);
219
308
  },
220
309
  });
310
+ return { picks, defined, extended, usedTypes };
311
+ }
312
+ function buildModule(name, doc, { importNamespace, importPath, encapsulate, shouldDeclare, rootTypes, schema, baseVisitor, useGraphQLModules, }) {
313
+ const { picks, defined, extended, usedTypes } = extractDeclared({ doc, rootTypes });
221
314
  // Defined and Extended types
222
315
  const visited = createObject(registryKeys, key => concatByKey(defined, extended, key));
223
316
  // Types that are not defined or extended in a module, they come from other modules
@@ -414,103 +507,6 @@ function buildModule(name, doc, { importNamespace, importPath, encapsulate, shou
414
507
  function printExportType(typeName) {
415
508
  return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;
416
509
  }
417
- //
418
- //
419
- //
420
- // Utils
421
- //
422
- //
423
- //
424
- function collectFields(node, picksObj) {
425
- const name = node.name.value;
426
- if (node.fields) {
427
- if (!picksObj[name]) {
428
- picksObj[name] = [];
429
- }
430
- node.fields.forEach(field => {
431
- picksObj[name].push(field.name.value);
432
- });
433
- }
434
- }
435
- function collectValuesFromEnum(node) {
436
- const name = node.name.value;
437
- if (node.values) {
438
- if (!picks.enums[name]) {
439
- picks.enums[name] = [];
440
- }
441
- node.values.forEach(field => {
442
- picks.enums[name].push(field.name.value);
443
- });
444
- }
445
- }
446
- function collectTypeDefinition(node) {
447
- const name = node.name.value;
448
- switch (node.kind) {
449
- case Kind.OBJECT_TYPE_DEFINITION: {
450
- defined.objects.push(name);
451
- collectFields(node, picks.objects);
452
- break;
453
- }
454
- case Kind.ENUM_TYPE_DEFINITION: {
455
- defined.enums.push(name);
456
- collectValuesFromEnum(node);
457
- break;
458
- }
459
- case Kind.INPUT_OBJECT_TYPE_DEFINITION: {
460
- defined.inputs.push(name);
461
- collectFields(node, picks.inputs);
462
- break;
463
- }
464
- case Kind.SCALAR_TYPE_DEFINITION: {
465
- defined.scalars.push(name);
466
- break;
467
- }
468
- case Kind.INTERFACE_TYPE_DEFINITION: {
469
- defined.interfaces.push(name);
470
- collectFields(node, picks.interfaces);
471
- break;
472
- }
473
- case Kind.UNION_TYPE_DEFINITION: {
474
- defined.unions.push(name);
475
- break;
476
- }
477
- }
478
- }
479
- function collectTypeExtension(node) {
480
- const name = node.name.value;
481
- switch (node.kind) {
482
- case Kind.OBJECT_TYPE_EXTENSION: {
483
- collectFields(node, picks.objects);
484
- // Do not include root types as extensions
485
- // so we can use them in DefinedFields
486
- if (rootTypes.includes(name)) {
487
- pushUnique(defined.objects, name);
488
- return;
489
- }
490
- pushUnique(extended.objects, name);
491
- break;
492
- }
493
- case Kind.ENUM_TYPE_EXTENSION: {
494
- collectValuesFromEnum(node);
495
- pushUnique(extended.enums, name);
496
- break;
497
- }
498
- case Kind.INPUT_OBJECT_TYPE_EXTENSION: {
499
- collectFields(node, picks.inputs);
500
- pushUnique(extended.inputs, name);
501
- break;
502
- }
503
- case Kind.INTERFACE_TYPE_EXTENSION: {
504
- collectFields(node, picks.interfaces);
505
- pushUnique(extended.interfaces, name);
506
- break;
507
- }
508
- case Kind.UNION_TYPE_EXTENSION: {
509
- pushUnique(extended.unions, name);
510
- break;
511
- }
512
- }
513
- }
514
510
  }
515
511
 
516
512
  const preset = {
@@ -617,4 +613,4 @@ const preset = {
617
613
  };
618
614
 
619
615
  export default preset;
620
- export { preset };
616
+ export { extractDeclared, preset };
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@graphql-codegen/graphql-modules-preset",
3
- "version": "2.3.1-alpha-df8969b0a.0",
3
+ "version": "2.3.2-alpha-94c0a1415.0",
4
4
  "description": "GraphQL Code Generator preset for modularized schema",
5
5
  "peerDependencies": {
6
6
  "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
7
7
  },
8
8
  "dependencies": {
9
9
  "@graphql-codegen/plugin-helpers": "^2.3.0",
10
- "@graphql-codegen/visitor-plugin-common": "2.5.1-alpha-df8969b0a.0",
10
+ "@graphql-codegen/visitor-plugin-common": "2.5.1",
11
11
  "@graphql-tools/utils": "8.5.3",
12
12
  "change-case-all": "1.0.14",
13
13
  "parse-filepath": "^1.0.2",