type-graphql 2.0.0-rc.2 → 2.0.0-rc.4

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.
Files changed (59) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +19 -13
  3. package/build/cjs/decorators/Arg.js +1 -2
  4. package/build/cjs/decorators/Args.js +1 -2
  5. package/build/cjs/decorators/ArgsType.js +1 -2
  6. package/build/cjs/decorators/Authorized.js +1 -2
  7. package/build/cjs/decorators/Ctx.js +1 -2
  8. package/build/cjs/decorators/Directive.js +1 -2
  9. package/build/cjs/decorators/Extensions.js +1 -2
  10. package/build/cjs/decorators/Field.js +1 -2
  11. package/build/cjs/decorators/FieldResolver.js +1 -2
  12. package/build/cjs/decorators/Info.js +1 -2
  13. package/build/cjs/decorators/InputType.js +1 -2
  14. package/build/cjs/decorators/InterfaceType.js +1 -2
  15. package/build/cjs/decorators/Mutation.js +1 -2
  16. package/build/cjs/decorators/ObjectType.js +1 -2
  17. package/build/cjs/decorators/Query.js +1 -2
  18. package/build/cjs/decorators/Resolver.js +1 -2
  19. package/build/cjs/decorators/Root.js +1 -2
  20. package/build/cjs/decorators/Subscription.js +1 -2
  21. package/build/cjs/decorators/UseMiddleware.js +1 -2
  22. package/build/cjs/decorators/createMethodMiddlewareDecorator.js +1 -2
  23. package/build/cjs/decorators/createParameterDecorator.js +1 -2
  24. package/build/cjs/decorators/createResolverClassMiddlewareDecorator.js +1 -2
  25. package/build/cjs/decorators/enums.js +1 -2
  26. package/build/cjs/decorators/unions.js +1 -2
  27. package/build/cjs/helpers/auth-middleware.js +1 -2
  28. package/build/cjs/helpers/decorators.js +3 -4
  29. package/build/cjs/helpers/filesystem.js +2 -3
  30. package/build/cjs/helpers/findType.js +1 -2
  31. package/build/cjs/helpers/isThrowing.js +1 -2
  32. package/build/cjs/helpers/params.js +1 -2
  33. package/build/cjs/helpers/resolver-metadata.js +1 -2
  34. package/build/cjs/helpers/types.js +11 -6
  35. package/build/cjs/metadata/getMetadataStorage.js +1 -2
  36. package/build/cjs/metadata/metadata-storage.js +192 -28
  37. package/build/cjs/metadata/utils.js +4 -5
  38. package/build/cjs/resolvers/convert-args.js +2 -3
  39. package/build/cjs/resolvers/create.js +4 -5
  40. package/build/cjs/resolvers/helpers.js +3 -4
  41. package/build/cjs/resolvers/validate-arg.js +1 -2
  42. package/build/cjs/schema/definition-node.js +6 -7
  43. package/build/cjs/schema/schema-generator.js +51 -41
  44. package/build/cjs/schema/utils.js +2 -3
  45. package/build/cjs/shim.js +3 -3
  46. package/build/cjs/utils/buildSchema.js +2 -3
  47. package/build/cjs/utils/buildTypeDefsAndResolvers.js +2 -3
  48. package/build/cjs/utils/createResolversMap.js +1 -2
  49. package/build/cjs/utils/emitSchemaDefinitionFile.js +3 -3
  50. package/build/cjs/utils/graphql-version.js +3 -3
  51. package/build/cjs/utils/isPromiseLike.js +1 -2
  52. package/build/esm/helpers/types.js +7 -1
  53. package/build/esm/metadata/metadata-storage.js +192 -28
  54. package/build/esm/schema/schema-generator.js +51 -41
  55. package/build/esm/utils/graphql-version.js +1 -1
  56. package/build/typings/metadata/metadata-storage.d.ts +14 -0
  57. package/build/typings/schema/schema-generator.d.ts +5 -5
  58. package/build/typings/utils/graphql-version.d.ts +1 -1
  59. package/package.json +65 -65
@@ -6,7 +6,6 @@ const graphql_1 = require("graphql");
6
6
  const errors_1 = require("../errors");
7
7
  const types_1 = require("../helpers/types");
8
8
  const getMetadataStorage_1 = require("../metadata/getMetadataStorage");
9
- const metadata_storage_1 = require("../metadata/metadata-storage");
10
9
  const create_1 = require("../resolvers/create");
11
10
  const graphql_version_1 = require("../utils/graphql-version");
12
11
  const build_context_1 = require("./build-context");
@@ -14,7 +13,7 @@ const definition_node_1 = require("./definition-node");
14
13
  const utils_1 = require("./utils");
15
14
  class SchemaGenerator {
16
15
  static generateFromMetadata(options) {
17
- this.metadataStorage = Object.assign(new metadata_storage_1.MetadataStorage(), (0, getMetadataStorage_1.getMetadataStorage)());
16
+ this.metadataStorage = (0, getMetadataStorage_1.getMetadataStorage)().clone();
18
17
  this.metadataStorage.build(options);
19
18
  this.checkForErrors(options);
20
19
  build_context_1.BuildContext.create(options);
@@ -32,6 +31,11 @@ class SchemaGenerator {
32
31
  });
33
32
  build_context_1.BuildContext.reset();
34
33
  this.usedInterfaceTypes = new Set();
34
+ this.objectTypesInfoMap = new Map();
35
+ this.inputTypesInfoMap = new Map();
36
+ this.interfaceTypesInfoMap = new Map();
37
+ this.enumTypesInfoMap = new Map();
38
+ this.unionTypesInfoMap = new Map();
35
39
  if (!options.skipCheck) {
36
40
  const { errors } = (0, graphql_1.graphqlSync)({ schema: finalSchema, source: (0, graphql_1.getIntrospectionQuery)() });
37
41
  if (errors) {
@@ -62,15 +66,15 @@ class SchemaGenerator {
62
66
  : defaultValueFromInitializer;
63
67
  }
64
68
  static buildTypesInfo(resolvers) {
65
- this.unionTypesInfo = this.metadataStorage.unions.map(unionMetadata => {
69
+ this.unionTypesInfoMap = new Map(this.metadataStorage.unions.map(unionMetadata => {
66
70
  const unionObjectTypesInfo = [];
67
71
  const typesThunk = () => {
68
72
  unionObjectTypesInfo.push(...unionMetadata
69
73
  .getClassTypes()
70
- .map(objectTypeCls => this.objectTypesInfo.find(type => type.target === objectTypeCls)));
74
+ .map(objectTypeCls => this.objectTypesInfoMap.get(objectTypeCls)));
71
75
  return unionObjectTypesInfo.map(it => it.type);
72
76
  };
73
- return {
77
+ const unionTypeInfo = {
74
78
  unionSymbol: unionMetadata.symbol,
75
79
  type: new graphql_1.GraphQLUnionType({
76
80
  name: unionMetadata.name,
@@ -90,10 +94,11 @@ class SchemaGenerator {
90
94
  },
91
95
  }),
92
96
  };
93
- });
94
- this.enumTypesInfo = this.metadataStorage.enums.map(enumMetadata => {
97
+ return [unionMetadata.symbol, unionTypeInfo];
98
+ }));
99
+ this.enumTypesInfoMap = new Map(this.metadataStorage.enums.map(enumMetadata => {
95
100
  const enumMap = (0, types_1.getEnumValuesMap)(enumMetadata.enumObj);
96
- return {
101
+ const enumTypeInfo = {
97
102
  enumObj: enumMetadata.enumObj,
98
103
  type: new graphql_1.GraphQLEnumType({
99
104
  name: enumMetadata.name,
@@ -109,17 +114,18 @@ class SchemaGenerator {
109
114
  }, {}),
110
115
  }),
111
116
  };
112
- });
113
- this.objectTypesInfo = this.metadataStorage.objectTypes.map(objectType => {
117
+ return [enumMetadata.enumObj, enumTypeInfo];
118
+ }));
119
+ this.objectTypesInfoMap = new Map(this.metadataStorage.objectTypes.map(objectType => {
114
120
  const objectSuperClass = Object.getPrototypeOf(objectType.target);
115
121
  const hasExtended = objectSuperClass.prototype !== undefined;
116
122
  const getSuperClassType = () => {
117
- const superClassTypeInfo = this.objectTypesInfo.find(type => type.target === objectSuperClass) ??
118
- this.interfaceTypesInfo.find(type => type.target === objectSuperClass);
123
+ const superClassTypeInfo = this.objectTypesInfoMap.get(objectSuperClass) ??
124
+ this.interfaceTypesInfoMap.get(objectSuperClass);
119
125
  return superClassTypeInfo ? superClassTypeInfo.type : undefined;
120
126
  };
121
127
  const interfaceClasses = objectType.interfaceClasses || [];
122
- return {
128
+ const objectTypeInfo = {
123
129
  metadata: objectType,
124
130
  target: objectType.target,
125
131
  type: new graphql_1.GraphQLObjectType({
@@ -129,7 +135,7 @@ class SchemaGenerator {
129
135
  extensions: objectType.extensions,
130
136
  interfaces: () => {
131
137
  let interfaces = interfaceClasses.map(interfaceClass => {
132
- const interfaceTypeInfo = this.interfaceTypesInfo.find(info => info.target === interfaceClass);
138
+ const interfaceTypeInfo = this.interfaceTypesInfoMap.get(interfaceClass);
133
139
  if (!interfaceTypeInfo) {
134
140
  throw new Error(`Cannot find interface type metadata for class '${interfaceClass.name}' ` +
135
141
  `provided in 'implements' option for '${objectType.target.name}' object type class. ` +
@@ -195,28 +201,30 @@ class SchemaGenerator {
195
201
  },
196
202
  }),
197
203
  };
198
- });
199
- this.interfaceTypesInfo = this.metadataStorage.interfaceTypes.map(interfaceType => {
204
+ return [objectType.target, objectTypeInfo];
205
+ }));
206
+ this.interfaceTypesInfoMap = new Map(this.metadataStorage.interfaceTypes.map(interfaceType => {
200
207
  const interfaceSuperClass = Object.getPrototypeOf(interfaceType.target);
201
208
  const hasExtended = interfaceSuperClass.prototype !== undefined;
202
209
  const getSuperClassType = () => {
203
- const superClassTypeInfo = this.interfaceTypesInfo.find(type => type.target === interfaceSuperClass);
210
+ const superClassTypeInfo = this.interfaceTypesInfoMap.get(interfaceSuperClass);
204
211
  return superClassTypeInfo ? superClassTypeInfo.type : undefined;
205
212
  };
206
213
  const implementingObjectTypesTargets = this.metadataStorage.objectTypes
207
214
  .filter(objectType => objectType.interfaceClasses &&
208
215
  objectType.interfaceClasses.includes(interfaceType.target))
209
216
  .map(objectType => objectType.target);
210
- const implementingObjectTypesInfo = this.objectTypesInfo.filter(objectTypesInfo => implementingObjectTypesTargets.includes(objectTypesInfo.target));
211
- return {
217
+ const implementingObjectTypesInfo = [...this.objectTypesInfoMap.values()].filter(objectTypesInfo => implementingObjectTypesTargets.includes(objectTypesInfo.target));
218
+ const interfaceTypeInfo = {
212
219
  metadata: interfaceType,
213
220
  target: interfaceType.target,
214
221
  type: new graphql_1.GraphQLInterfaceType({
215
222
  name: interfaceType.name,
216
223
  description: interfaceType.description,
217
224
  astNode: (0, definition_node_1.getInterfaceTypeDefinitionNode)(interfaceType.name, interfaceType.directives),
225
+ extensions: interfaceType.extensions,
218
226
  interfaces: () => {
219
- let interfaces = (interfaceType.interfaceClasses || []).map(interfaceClass => this.interfaceTypesInfo.find(info => info.target === interfaceClass).type);
227
+ let interfaces = (interfaceType.interfaceClasses || []).map(interfaceClass => this.interfaceTypesInfoMap.get(interfaceClass).type);
220
228
  if (hasExtended) {
221
229
  const superClass = getSuperClassType();
222
230
  if (superClass) {
@@ -276,15 +284,16 @@ class SchemaGenerator {
276
284
  },
277
285
  }),
278
286
  };
279
- });
280
- this.inputTypesInfo = this.metadataStorage.inputTypes.map(inputType => {
287
+ return [interfaceType.target, interfaceTypeInfo];
288
+ }));
289
+ this.inputTypesInfoMap = new Map(this.metadataStorage.inputTypes.map(inputType => {
281
290
  const objectSuperClass = Object.getPrototypeOf(inputType.target);
282
291
  const getSuperClassType = () => {
283
- const superClassTypeInfo = this.inputTypesInfo.find(type => type.target === objectSuperClass);
292
+ const superClassTypeInfo = this.inputTypesInfoMap.get(objectSuperClass);
284
293
  return superClassTypeInfo ? superClassTypeInfo.type : undefined;
285
294
  };
286
295
  const inputInstance = new inputType.target();
287
- return {
296
+ const inputTypeInfo = {
288
297
  target: inputType.target,
289
298
  type: new graphql_1.GraphQLInputObjectType({
290
299
  name: inputType.name,
@@ -319,7 +328,8 @@ class SchemaGenerator {
319
328
  astNode: (0, definition_node_1.getInputObjectTypeDefinitionNode)(inputType.name, inputType.directives),
320
329
  }),
321
330
  };
322
- });
331
+ return [inputType.target, inputTypeInfo];
332
+ }));
323
333
  }
324
334
  static buildRootQueryType(resolvers) {
325
335
  const queriesHandlers = this.filterHandlersByResolvers(this.metadataStorage.queries, resolvers);
@@ -349,8 +359,8 @@ class SchemaGenerator {
349
359
  });
350
360
  }
351
361
  static buildOtherTypes(orphanedTypes) {
352
- const autoRegisteredObjectTypesInfo = this.objectTypesInfo.filter(typeInfo => typeInfo.metadata.interfaceClasses?.some(interfaceClass => {
353
- const implementedInterfaceInfo = this.interfaceTypesInfo.find(it => it.target === interfaceClass);
362
+ const autoRegisteredObjectTypesInfo = [...this.objectTypesInfoMap.values()].filter(typeInfo => typeInfo.metadata.interfaceClasses?.some(interfaceClass => {
363
+ const implementedInterfaceInfo = this.interfaceTypesInfoMap.get(interfaceClass);
354
364
  if (!implementedInterfaceInfo) {
355
365
  return false;
356
366
  }
@@ -363,9 +373,9 @@ class SchemaGenerator {
363
373
  return true;
364
374
  }));
365
375
  return [
366
- ...this.filterTypesInfoByOrphanedTypesAndExtractType(this.objectTypesInfo, orphanedTypes),
367
- ...this.filterTypesInfoByOrphanedTypesAndExtractType(this.interfaceTypesInfo, orphanedTypes),
368
- ...this.filterTypesInfoByOrphanedTypesAndExtractType(this.inputTypesInfo, orphanedTypes),
376
+ ...this.filterTypesInfoByOrphanedTypesAndExtractType([...this.objectTypesInfoMap.values()], orphanedTypes),
377
+ ...this.filterTypesInfoByOrphanedTypesAndExtractType([...this.interfaceTypesInfoMap.values()], orphanedTypes),
378
+ ...this.filterTypesInfoByOrphanedTypesAndExtractType([...this.inputTypesInfoMap.values()], orphanedTypes),
369
379
  ...autoRegisteredObjectTypesInfo.map(typeInfo => typeInfo.type),
370
380
  ];
371
381
  }
@@ -501,26 +511,26 @@ class SchemaGenerator {
501
511
  let gqlType;
502
512
  gqlType = (0, types_1.convertTypeIfScalar)(type);
503
513
  if (!gqlType) {
504
- const objectType = this.objectTypesInfo.find(it => it.target === type);
514
+ const objectType = this.objectTypesInfoMap.get(type);
505
515
  if (objectType) {
506
516
  gqlType = objectType.type;
507
517
  }
508
518
  }
509
519
  if (!gqlType) {
510
- const interfaceType = this.interfaceTypesInfo.find(it => it.target === type);
520
+ const interfaceType = this.interfaceTypesInfoMap.get(type);
511
521
  if (interfaceType) {
512
522
  this.usedInterfaceTypes.add(interfaceType.target);
513
523
  gqlType = interfaceType.type;
514
524
  }
515
525
  }
516
526
  if (!gqlType) {
517
- const enumType = this.enumTypesInfo.find(it => it.enumObj === type);
527
+ const enumType = this.enumTypesInfoMap.get(type);
518
528
  if (enumType) {
519
529
  gqlType = enumType.type;
520
530
  }
521
531
  }
522
532
  if (!gqlType) {
523
- const unionType = this.unionTypesInfo.find(it => it.unionSymbol === type);
533
+ const unionType = this.unionTypesInfoMap.get(type);
524
534
  if (unionType) {
525
535
  gqlType = unionType.type;
526
536
  }
@@ -535,13 +545,13 @@ class SchemaGenerator {
535
545
  let gqlType;
536
546
  gqlType = (0, types_1.convertTypeIfScalar)(type);
537
547
  if (!gqlType) {
538
- const inputType = this.inputTypesInfo.find(it => it.target === type);
548
+ const inputType = this.inputTypesInfoMap.get(type);
539
549
  if (inputType) {
540
550
  gqlType = inputType.type;
541
551
  }
542
552
  }
543
553
  if (!gqlType) {
544
- const enumType = this.enumTypesInfo.find(it => it.enumObj === type);
554
+ const enumType = this.enumTypesInfoMap.get(type);
545
555
  if (enumType) {
546
556
  gqlType = enumType.type;
547
557
  }
@@ -570,9 +580,9 @@ class SchemaGenerator {
570
580
  }
571
581
  }
572
582
  exports.SchemaGenerator = SchemaGenerator;
573
- SchemaGenerator.objectTypesInfo = [];
574
- SchemaGenerator.inputTypesInfo = [];
575
- SchemaGenerator.interfaceTypesInfo = [];
576
- SchemaGenerator.enumTypesInfo = [];
577
- SchemaGenerator.unionTypesInfo = [];
583
+ SchemaGenerator.objectTypesInfoMap = new Map();
584
+ SchemaGenerator.inputTypesInfoMap = new Map();
585
+ SchemaGenerator.interfaceTypesInfoMap = new Map();
586
+ SchemaGenerator.enumTypesInfoMap = new Map();
587
+ SchemaGenerator.unionTypesInfoMap = new Map();
578
588
  SchemaGenerator.usedInterfaceTypes = new Set();
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFieldMetadataFromObjectType = exports.getFieldMetadataFromInputType = void 0;
3
+ exports.getFieldMetadataFromInputType = getFieldMetadataFromInputType;
4
+ exports.getFieldMetadataFromObjectType = getFieldMetadataFromObjectType;
4
5
  function getFieldMetadataFromInputType(type) {
5
6
  const fieldInfo = type.getFields();
6
7
  const typeFields = Object.keys(fieldInfo).reduce((fieldsMap, fieldName) => {
@@ -15,7 +16,6 @@ function getFieldMetadataFromInputType(type) {
15
16
  }, {});
16
17
  return typeFields;
17
18
  }
18
- exports.getFieldMetadataFromInputType = getFieldMetadataFromInputType;
19
19
  function getFieldMetadataFromObjectType(type) {
20
20
  const fieldInfo = type.getFields();
21
21
  const typeFields = Object.keys(fieldInfo).reduce((fieldsMap, fieldName) => {
@@ -36,4 +36,3 @@ function getFieldMetadataFromObjectType(type) {
36
36
  }, {});
37
37
  return typeFields;
38
38
  }
39
- exports.getFieldMetadataFromObjectType = getFieldMetadataFromObjectType;
package/build/cjs/shim.js CHANGED
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GraphQLTimestamp = exports.GraphQLISODateTime = exports.ID = exports.Float = exports.Int = exports.UseMiddleware = exports.createUnionType = exports.Subscription = exports.Root = exports.Resolver = exports.Query = exports.ObjectType = exports.Mutation = exports.InterfaceType = exports.InputType = exports.Info = exports.FieldResolver = exports.Field = exports.registerEnumType = exports.Extensions = exports.Directive = exports.Ctx = exports.createResolverClassMiddlewareDecorator = exports.createMethodMiddlewareDecorator = exports.createParameterDecorator = exports.Authorized = exports.ArgsType = exports.Args = exports.Arg = exports.dummyDecorator = exports.dummyFn = exports.dummyValue = void 0;
3
+ exports.GraphQLTimestamp = exports.GraphQLISODateTime = exports.ID = exports.Float = exports.Int = exports.UseMiddleware = exports.createUnionType = exports.Subscription = exports.Root = exports.Resolver = exports.Query = exports.ObjectType = exports.Mutation = exports.InterfaceType = exports.InputType = exports.Info = exports.FieldResolver = exports.Field = exports.registerEnumType = exports.Extensions = exports.Directive = exports.Ctx = exports.createResolverClassMiddlewareDecorator = exports.createMethodMiddlewareDecorator = exports.createParameterDecorator = exports.Authorized = exports.ArgsType = exports.Args = exports.Arg = exports.dummyValue = void 0;
4
+ exports.dummyFn = dummyFn;
5
+ exports.dummyDecorator = dummyDecorator;
4
6
  exports.dummyValue = "";
5
7
  function dummyFn() { }
6
- exports.dummyFn = dummyFn;
7
8
  function dummyDecorator() {
8
9
  return dummyFn;
9
10
  }
10
- exports.dummyDecorator = dummyDecorator;
11
11
  exports.Arg = dummyDecorator;
12
12
  exports.Args = dummyDecorator;
13
13
  exports.ArgsType = dummyDecorator;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildSchemaSync = exports.buildSchema = void 0;
3
+ exports.buildSchema = buildSchema;
4
+ exports.buildSchemaSync = buildSchemaSync;
4
5
  const tslib_1 = require("tslib");
5
6
  const node_path_1 = tslib_1.__importDefault(require("node:path"));
6
7
  const schema_generator_1 = require("../schema/schema-generator");
@@ -33,7 +34,6 @@ async function buildSchema(options) {
33
34
  }
34
35
  return schema;
35
36
  }
36
- exports.buildSchema = buildSchema;
37
37
  function buildSchemaSync(options) {
38
38
  const resolvers = loadResolvers(options);
39
39
  const schema = schema_generator_1.SchemaGenerator.generateFromMetadata({ ...options, resolvers });
@@ -43,4 +43,3 @@ function buildSchemaSync(options) {
43
43
  }
44
44
  return schema;
45
45
  }
46
- exports.buildSchemaSync = buildSchemaSync;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildTypeDefsAndResolversSync = exports.buildTypeDefsAndResolvers = void 0;
3
+ exports.buildTypeDefsAndResolvers = buildTypeDefsAndResolvers;
4
+ exports.buildTypeDefsAndResolversSync = buildTypeDefsAndResolversSync;
4
5
  const graphql_1 = require("graphql");
5
6
  const buildSchema_1 = require("./buildSchema");
6
7
  const createResolversMap_1 = require("./createResolversMap");
@@ -13,9 +14,7 @@ async function buildTypeDefsAndResolvers(options) {
13
14
  const schema = await (0, buildSchema_1.buildSchema)(options);
14
15
  return createTypeDefsAndResolversMap(schema);
15
16
  }
16
- exports.buildTypeDefsAndResolvers = buildTypeDefsAndResolvers;
17
17
  function buildTypeDefsAndResolversSync(options) {
18
18
  const schema = (0, buildSchema_1.buildSchemaSync)(options);
19
19
  return createTypeDefsAndResolversMap(schema);
20
20
  }
21
- exports.buildTypeDefsAndResolversSync = buildTypeDefsAndResolversSync;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createResolversMap = void 0;
3
+ exports.createResolversMap = createResolversMap;
4
4
  const graphql_1 = require("graphql");
5
5
  function generateTypeResolver(abstractType, schema) {
6
6
  if (abstractType.resolveType) {
@@ -69,4 +69,3 @@ function createResolversMap(schema) {
69
69
  return resolversMap;
70
70
  }, {});
71
71
  }
72
- exports.createResolversMap = createResolversMap;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitSchemaDefinitionFile = exports.emitSchemaDefinitionFileSync = exports.defaultPrintSchemaOptions = void 0;
3
+ exports.defaultPrintSchemaOptions = void 0;
4
+ exports.emitSchemaDefinitionFileSync = emitSchemaDefinitionFileSync;
5
+ exports.emitSchemaDefinitionFile = emitSchemaDefinitionFile;
4
6
  const graphql_1 = require("graphql");
5
7
  const filesystem_1 = require("../helpers/filesystem");
6
8
  exports.defaultPrintSchemaOptions = {
@@ -21,9 +23,7 @@ function emitSchemaDefinitionFileSync(schemaFilePath, schema, options = exports.
21
23
  const schemaFileContent = getSchemaFileContent(schema, options);
22
24
  (0, filesystem_1.outputFileSync)(schemaFilePath, schemaFileContent);
23
25
  }
24
- exports.emitSchemaDefinitionFileSync = emitSchemaDefinitionFileSync;
25
26
  async function emitSchemaDefinitionFile(schemaFilePath, schema, options = exports.defaultPrintSchemaOptions) {
26
27
  const schemaFileContent = getSchemaFileContent(schema, options);
27
28
  await (0, filesystem_1.outputFile)(schemaFilePath, schemaFileContent);
28
29
  }
29
- exports.emitSchemaDefinitionFile = emitSchemaDefinitionFile;
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ensureInstalledCorrectGraphQLPackage = exports.graphQLPeerDependencyVersion = void 0;
3
+ exports.graphQLPeerDependencyVersion = void 0;
4
+ exports.ensureInstalledCorrectGraphQLPackage = ensureInstalledCorrectGraphQLPackage;
4
5
  const tslib_1 = require("tslib");
5
6
  const graphql = tslib_1.__importStar(require("graphql"));
6
7
  const semver_1 = tslib_1.__importDefault(require("semver"));
7
8
  const errors_1 = require("../errors");
8
- exports.graphQLPeerDependencyVersion = "^16.8.1";
9
+ exports.graphQLPeerDependencyVersion = "^16.12.0";
9
10
  function ensureInstalledCorrectGraphQLPackage() {
10
11
  if (!semver_1.default.satisfies(graphql.version, exports.graphQLPeerDependencyVersion)) {
11
12
  throw new errors_1.UnmetGraphQLPeerDependencyError(graphql.version, exports.graphQLPeerDependencyVersion);
12
13
  }
13
14
  }
14
- exports.ensureInstalledCorrectGraphQLPackage = ensureInstalledCorrectGraphQLPackage;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isPromiseLike = void 0;
3
+ exports.isPromiseLike = isPromiseLike;
4
4
  function isPromiseLike(value) {
5
5
  return value != null && typeof value.then === "function";
6
6
  }
7
- exports.isPromiseLike = isPromiseLike;
@@ -66,7 +66,13 @@ export function convertToType(Target, data) {
66
66
  if (Array.isArray(data)) {
67
67
  return data.map(item => convertToType(Target, item));
68
68
  }
69
- return Object.assign(new Target(), data);
69
+ const instance = new Target();
70
+ for (const key of Object.keys(instance)) {
71
+ if (instance[key] === undefined && !(key in data)) {
72
+ delete instance[key];
73
+ }
74
+ }
75
+ return Object.assign(instance, data);
70
76
  }
71
77
  export function getEnumValuesMap(enumObject) {
72
78
  const enumKeys = Object.keys(enumObject).filter(key => Number.isNaN(parseInt(key, 10)));