@commitspark/graphql-api 0.9.3 → 0.10.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.
Files changed (89) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/container.js +21 -13
  3. package/dist/container.js.map +1 -1
  4. package/dist/graphql/field-resolver/entry-reference-resolver.d.ts +9 -0
  5. package/dist/graphql/field-resolver/entry-reference-resolver.js +15 -0
  6. package/dist/graphql/field-resolver/entry-reference-resolver.js.map +1 -0
  7. package/dist/graphql/field-resolver/field-default-value-resolver.d.ts +14 -0
  8. package/dist/graphql/field-resolver/field-default-value-resolver.js +73 -0
  9. package/dist/graphql/field-resolver/field-default-value-resolver.js.map +1 -0
  10. package/dist/graphql/field-resolver/fieldResolver.d.ts +11 -0
  11. package/dist/graphql/field-resolver/fieldResolver.js +3 -0
  12. package/dist/graphql/field-resolver/fieldResolver.js.map +1 -0
  13. package/dist/graphql/field-resolver/union-value-resolver.d.ts +10 -0
  14. package/dist/graphql/field-resolver/union-value-resolver.js +17 -0
  15. package/dist/graphql/field-resolver/union-value-resolver.js.map +1 -0
  16. package/dist/graphql/input-type-generator.service.d.ts +4 -5
  17. package/dist/graphql/input-type-generator.service.js +23 -13
  18. package/dist/graphql/input-type-generator.service.js.map +1 -1
  19. package/dist/graphql/queries-mutations-generator.service.d.ts +1 -1
  20. package/dist/graphql/resolver-generators/mutation-create-resolver-generator.d.ts +3 -1
  21. package/dist/graphql/resolver-generators/mutation-create-resolver-generator.js +46 -4
  22. package/dist/graphql/resolver-generators/mutation-create-resolver-generator.js.map +1 -1
  23. package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts +3 -1
  24. package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.js +32 -9
  25. package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +1 -1
  26. package/dist/graphql/resolver-generators/{mutation-update.resolver-generator.d.ts → mutation-update-resolver-generator.d.ts} +4 -1
  27. package/dist/graphql/resolver-generators/mutation-update-resolver-generator.js +53 -0
  28. package/dist/graphql/resolver-generators/mutation-update-resolver-generator.js.map +1 -0
  29. package/dist/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts +13 -0
  30. package/dist/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js +58 -0
  31. package/dist/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +1 -0
  32. package/dist/graphql/resolver-generators/query-all-resolver-generator.js +4 -1
  33. package/dist/graphql/resolver-generators/query-all-resolver-generator.js.map +1 -1
  34. package/dist/graphql/resolver-generators/query-by-id-resolver-generator.js +2 -1
  35. package/dist/graphql/resolver-generators/query-by-id-resolver-generator.js.map +1 -1
  36. package/dist/graphql/resolver-generators/union-type-resolver-generator.d.ts +4 -4
  37. package/dist/graphql/resolver-generators/union-type-resolver-generator.js +3 -3
  38. package/dist/graphql/resolver-generators/union-type-resolver-generator.js.map +1 -1
  39. package/dist/graphql/schema-analyzer.service.d.ts +1 -9
  40. package/dist/graphql/schema-analyzer.service.js +6 -17
  41. package/dist/graphql/schema-analyzer.service.js.map +1 -1
  42. package/dist/graphql/schema-generator.service.d.ts +3 -5
  43. package/dist/graphql/schema-generator.service.js +7 -12
  44. package/dist/graphql/schema-generator.service.js.map +1 -1
  45. package/dist/graphql/schema-utils/entry-reference-util.d.ts +12 -5
  46. package/dist/graphql/schema-utils/entry-reference-util.js +108 -25
  47. package/dist/graphql/schema-utils/entry-reference-util.js.map +1 -1
  48. package/dist/graphql/schema-utils/entry-type-util.d.ts +6 -0
  49. package/dist/graphql/schema-utils/entry-type-util.js +34 -0
  50. package/dist/graphql/schema-utils/entry-type-util.js.map +1 -0
  51. package/dist/graphql/schema-utils/union-type-util.d.ts +5 -0
  52. package/dist/graphql/schema-utils/union-type-util.js +21 -0
  53. package/dist/graphql/schema-utils/union-type-util.js.map +1 -0
  54. package/dist/persistence/persistence.service.d.ts +4 -7
  55. package/dist/persistence/persistence.service.js +18 -83
  56. package/dist/persistence/persistence.service.js.map +1 -1
  57. package/dist/tsconfig.build.tsbuildinfo +1 -1
  58. package/package.json +2 -2
  59. package/src/container.ts +29 -15
  60. package/src/graphql/field-resolver/entry-reference-resolver.ts +49 -0
  61. package/src/graphql/field-resolver/field-default-value-resolver.ts +154 -0
  62. package/src/graphql/field-resolver/fieldResolver.ts +19 -0
  63. package/src/graphql/field-resolver/union-value-resolver.ts +46 -0
  64. package/src/graphql/input-type-generator.service.ts +33 -18
  65. package/src/graphql/queries-mutations-generator.service.ts +1 -1
  66. package/src/graphql/resolver-generators/mutation-create-resolver-generator.ts +78 -13
  67. package/src/graphql/resolver-generators/mutation-delete-resolver-generator.ts +69 -21
  68. package/src/graphql/resolver-generators/mutation-update-resolver-generator.ts +131 -0
  69. package/src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts +119 -0
  70. package/src/graphql/resolver-generators/query-all-resolver-generator.ts +5 -1
  71. package/src/graphql/resolver-generators/query-by-id-resolver-generator.ts +3 -1
  72. package/src/graphql/resolver-generators/union-type-resolver-generator.ts +5 -7
  73. package/src/graphql/schema-analyzer.service.ts +10 -24
  74. package/src/graphql/schema-generator.service.ts +11 -20
  75. package/src/graphql/schema-utils/entry-reference-util.ts +177 -35
  76. package/src/graphql/schema-utils/entry-type-util.ts +42 -0
  77. package/src/graphql/schema-utils/union-type-util.ts +23 -0
  78. package/src/persistence/persistence.service.ts +33 -132
  79. package/dist/graphql/resolver-generators/entry-reference-resolver.generator.d.ts +0 -12
  80. package/dist/graphql/resolver-generators/entry-reference-resolver.generator.js +0 -29
  81. package/dist/graphql/resolver-generators/entry-reference-resolver.generator.js.map +0 -1
  82. package/dist/graphql/resolver-generators/mutation-update.resolver-generator.js +0 -29
  83. package/dist/graphql/resolver-generators/mutation-update.resolver-generator.js.map +0 -1
  84. package/dist/graphql/resolver-generators/union-value-resolver-generator.d.ts +0 -13
  85. package/dist/graphql/resolver-generators/union-value-resolver-generator.js +0 -83
  86. package/dist/graphql/resolver-generators/union-value-resolver-generator.js.map +0 -1
  87. package/src/graphql/resolver-generators/entry-reference-resolver.generator.ts +0 -71
  88. package/src/graphql/resolver-generators/mutation-update.resolver-generator.ts +0 -59
  89. package/src/graphql/resolver-generators/union-value-resolver-generator.ts +0 -126
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MutationUpdateResolverGenerator = void 0;
4
+ const graphql_1 = require("graphql");
5
+ class MutationUpdateResolverGenerator {
6
+ constructor(persistence, entryReferenceUtil) {
7
+ this.persistence = persistence;
8
+ this.entryReferenceUtil = entryReferenceUtil;
9
+ }
10
+ createResolver(typeName) {
11
+ return async (source, args, context, info) => {
12
+ var _a, _b, _c;
13
+ if (!(0, graphql_1.isObjectType)(info.returnType)) {
14
+ throw new Error('Expected to update an ObjectType');
15
+ }
16
+ const existingEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
17
+ const existingReferencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, existingEntry.data);
18
+ const mergedData = this.mergeData((_a = existingEntry.data) !== null && _a !== void 0 ? _a : null, args.data);
19
+ const updatedReferencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, mergedData);
20
+ const noLongerReferencedIds = existingReferencedEntryIds.filter((entryId) => !updatedReferencedEntryIds.includes(entryId));
21
+ const newlyReferencedIds = updatedReferencedEntryIds.filter((entryId) => !existingReferencedEntryIds.includes(entryId));
22
+ const referencedEntryUpdates = [];
23
+ for (const noLongerReferencedEntryId of noLongerReferencedIds) {
24
+ const noLongerReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), noLongerReferencedEntryId);
25
+ referencedEntryUpdates.push(Object.assign(Object.assign({}, noLongerReferencedEntry), { metadata: Object.assign(Object.assign({}, noLongerReferencedEntry.metadata), { referencedBy: (_b = noLongerReferencedEntry.metadata.referencedBy) === null || _b === void 0 ? void 0 : _b.filter((entryId) => entryId !== args.id) }), deletion: false }));
26
+ }
27
+ for (const newlyReferencedEntryId of newlyReferencedIds) {
28
+ const newlyReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), newlyReferencedEntryId);
29
+ const updatedReferenceList = (_c = newlyReferencedEntry.metadata.referencedBy) !== null && _c !== void 0 ? _c : [];
30
+ updatedReferenceList.push(args.id);
31
+ updatedReferenceList.sort();
32
+ referencedEntryUpdates.push(Object.assign(Object.assign({}, newlyReferencedEntry), { metadata: Object.assign(Object.assign({}, newlyReferencedEntry.metadata), { referencedBy: updatedReferenceList }), deletion: false }));
33
+ }
34
+ const commit = await context.gitAdapter.createCommit({
35
+ ref: context.branch,
36
+ parentSha: context.getCurrentRef(),
37
+ contentEntries: [
38
+ Object.assign(Object.assign({}, existingEntry), { data: mergedData, deletion: false }),
39
+ ...referencedEntryUpdates,
40
+ ],
41
+ message: args.message,
42
+ });
43
+ context.setCurrentRef(commit.ref);
44
+ const updatedEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
45
+ return Object.assign(Object.assign({}, updatedEntry.data), { id: updatedEntry.id });
46
+ };
47
+ }
48
+ mergeData(existingEntryData, updateData) {
49
+ return Object.assign(Object.assign({}, existingEntryData), updateData);
50
+ }
51
+ }
52
+ exports.MutationUpdateResolverGenerator = MutationUpdateResolverGenerator;
53
+ //# sourceMappingURL=mutation-update-resolver-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-update-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/mutation-update-resolver-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { GraphQLFieldResolver } from 'graphql/type/definition';
2
+ import { ApolloContext } from '../../app/api.service';
3
+ import { Entry } from '../../persistence/persistence.service';
4
+ import { GraphQLSchema } from 'graphql';
5
+ import { ResolvedEntryData } from '../field-resolver/fieldResolver';
6
+ import { FieldDefaultValueResolver } from '../field-resolver/field-default-value-resolver';
7
+ export declare class ObjectTypeFieldDefaultValueResolverGenerator {
8
+ private readonly fieldDefaultValueResolver;
9
+ constructor(fieldDefaultValueResolver: FieldDefaultValueResolver);
10
+ createResolver(schema: GraphQLSchema): Record<string, Record<string, GraphQLFieldResolver<any, ApolloContext, any, Promise<ResolvedEntryData<Entry | Entry[] | null>>>>>;
11
+ private getFieldsForCustomDefaultValueResolver;
12
+ private requiresCustomDefaultValueResolver;
13
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectTypeFieldDefaultValueResolverGenerator = void 0;
4
+ const graphql_1 = require("graphql");
5
+ class ObjectTypeFieldDefaultValueResolverGenerator {
6
+ constructor(fieldDefaultValueResolver) {
7
+ this.fieldDefaultValueResolver = fieldDefaultValueResolver;
8
+ }
9
+ createResolver(schema) {
10
+ const resolvers = {};
11
+ for (const typeName of Object.keys(schema.getTypeMap())) {
12
+ const type = schema.getType(typeName);
13
+ if (!(0, graphql_1.isObjectType)(type) || type.name.startsWith('__')) {
14
+ continue;
15
+ }
16
+ const objectType = type;
17
+ const fieldsForCustomDefaultValueResolver = this.getFieldsForCustomDefaultValueResolver(objectType);
18
+ const fieldResolvers = {};
19
+ for (const field of fieldsForCustomDefaultValueResolver) {
20
+ fieldResolvers[field.name] = (obj, args, context, info) => this.fieldDefaultValueResolver.resolve(field.name in obj ? obj[field.name] : undefined, args, {
21
+ gitAdapter: context.gitAdapter,
22
+ getCurrentRef: context.getCurrentRef,
23
+ }, info);
24
+ }
25
+ if (Object.keys(fieldResolvers).length > 0) {
26
+ resolvers[typeName] = fieldResolvers;
27
+ }
28
+ }
29
+ return resolvers;
30
+ }
31
+ getFieldsForCustomDefaultValueResolver(objectType) {
32
+ const fields = [];
33
+ for (const fieldsKey in objectType.getFields()) {
34
+ const field = objectType.getFields()[fieldsKey];
35
+ if (this.requiresCustomDefaultValueResolver(field.type)) {
36
+ fields.push(field);
37
+ }
38
+ }
39
+ return fields;
40
+ }
41
+ requiresCustomDefaultValueResolver(type) {
42
+ if ((0, graphql_1.isNonNullType)(type)) {
43
+ return this.requiresCustomDefaultValueResolver(type.ofType);
44
+ }
45
+ else if ((0, graphql_1.isListType)(type)) {
46
+ return true;
47
+ }
48
+ else if ((0, graphql_1.isUnionType)(type)) {
49
+ return true;
50
+ }
51
+ else if ((0, graphql_1.isObjectType)(type)) {
52
+ return true;
53
+ }
54
+ return false;
55
+ }
56
+ }
57
+ exports.ObjectTypeFieldDefaultValueResolverGenerator = ObjectTypeFieldDefaultValueResolverGenerator;
58
+ //# sourceMappingURL=object-type-field-default-value-resolver-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-type-field-default-value-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts"],"names":[],"mappings":";;;AAMA,qCAQgB;AAIhB,MAAa,4CAA4C;IACvD,YACmB,yBAAoD;QAApD,8BAAyB,GAAzB,yBAAyB,CAA2B;IACpE,CAAC;IAEG,cAAc,CACnB,MAAqB;QAarB,MAAM,SAAS,GAWX,EAAE,CAAA;QACN,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE;YACvD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YACrC,IAAI,CAAC,IAAA,sBAAY,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACrD,SAAQ;aACT;YACD,MAAM,UAAU,GAAG,IAAyB,CAAA;YAC5C,MAAM,mCAAmC,GACvC,IAAI,CAAC,sCAAsC,CAAC,UAAU,CAAC,CAAA;YAEzD,MAAM,cAAc,GAQhB,EAAE,CAAA;YACN,KAAK,MAAM,KAAK,IAAI,mCAAmC,EAAE;gBACvD,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAC3B,GAAG,EACH,IAAI,EACJ,OAAO,EACP,IAAI,EACgD,EAAE,CACtD,IAAI,CAAC,yBAAyB,CAAC,OAAO,CACpC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAC/C,IAAI,EACJ;oBACE,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;iBACrC,EACD,IAAI,CACL,CAAA;aACJ;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1C,SAAS,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAA;aACrC;SACF;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAEO,sCAAsC,CAC5C,UAA6B;QAE7B,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE;YAC9C,MAAM,KAAK,GAA2B,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAA;YACvE,IAAI,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACvD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACnB;SACF;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,kCAAkC,CAAC,IAAuB;QAChE,IAAI,IAAA,uBAAa,EAAC,IAAI,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAC5D;aAAM,IAAI,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAA;SACZ;aAAM,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAA;SACZ;aAAM,IAAI,IAAA,sBAAY,EAAC,IAAI,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAA;SACZ;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AApGD,oGAoGC"}
@@ -7,7 +7,10 @@ class QueryAllResolverGenerator {
7
7
  }
8
8
  createResolver(typeName) {
9
9
  return async (obj, args, context, info) => {
10
- return this.persistence.findByType(context.gitAdapter, context.getCurrentRef(), typeName);
10
+ const entries = await this.persistence.findByType(context.gitAdapter, context.getCurrentRef(), typeName);
11
+ return entries.map((entry) => {
12
+ return Object.assign(Object.assign({}, entry.data), { id: entry.id });
13
+ });
11
14
  };
12
15
  }
13
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query-all-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/query-all-resolver-generator.ts"],"names":[],"mappings":";;;AAOA,MAAa,yBAAyB;IACpC,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEzD,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EACV,GAAG,EACH,IAAI,EACJ,OAAsB,EACtB,IAAI,EACc,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAChC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,CACT,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF;AAnBD,8DAmBC"}
1
+ {"version":3,"file":"query-all-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/query-all-resolver-generator.ts"],"names":[],"mappings":";;;AAOA,MAAa,yBAAyB;IACpC,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEzD,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EACV,GAAG,EACH,IAAI,EACJ,OAAsB,EACtB,IAAI,EACc,EAAE;YACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAC/C,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,CACT,CAAA;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC3B,uCAAY,KAAK,CAAC,IAAI,KAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAE;YACxC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;IACH,CAAC;CACF;AAvBD,8DAuBC"}
@@ -7,7 +7,8 @@ class QueryByIdResolverGenerator {
7
7
  }
8
8
  createResolver(typeName) {
9
9
  return async (obj, args, context, info) => {
10
- return this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
10
+ const entry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
11
+ return Object.assign(Object.assign({}, entry.data), { id: entry.id });
11
12
  };
12
13
  }
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query-by-id-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/query-by-id-resolver-generator.ts"],"names":[],"mappings":";;;AAOA,MAAa,0BAA0B;IACrC,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEzD,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAkB,EAAE;YACxD,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAClC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,CACR,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF;AAfD,gEAeC"}
1
+ {"version":3,"file":"query-by-id-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/query-by-id-resolver-generator.ts"],"names":[],"mappings":";;;AAOA,MAAa,0BAA0B;IACrC,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEzD,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAkB,EAAE;YACxD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAC/C,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,CACR,CAAA;YAED,uCAAY,KAAK,CAAC,IAAI,KAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAE;QACxC,CAAC,CAAA;IACH,CAAC;CACF;AAjBD,gEAiBC"}
@@ -1,10 +1,10 @@
1
1
  import { ApolloContext } from '../../app/api.service';
2
2
  import { PersistenceService } from '../../persistence/persistence.service';
3
- import { GraphQLTypeResolver } from 'graphql/type/definition';
4
- import { EntryReferenceUtil } from '../schema-utils/entry-reference-util';
3
+ import { GraphQLTypeResolver } from 'graphql';
4
+ import { EntryTypeUtil } from '../schema-utils/entry-type-util';
5
5
  export declare class UnionTypeResolverGenerator {
6
6
  private readonly persistence;
7
- private readonly entryReferenceUtil;
8
- constructor(persistence: PersistenceService, entryReferenceUtil: EntryReferenceUtil);
7
+ private readonly entryTypeUtil;
8
+ constructor(persistence: PersistenceService, entryTypeUtil: EntryTypeUtil);
9
9
  createResolver(): GraphQLTypeResolver<any, ApolloContext>;
10
10
  }
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UnionTypeResolverGenerator = void 0;
4
4
  class UnionTypeResolverGenerator {
5
- constructor(persistence, entryReferenceUtil) {
5
+ constructor(persistence, entryTypeUtil) {
6
6
  this.persistence = persistence;
7
- this.entryReferenceUtil = entryReferenceUtil;
7
+ this.entryTypeUtil = entryTypeUtil;
8
8
  }
9
9
  createResolver() {
10
10
  return async (obj, context, info, abstractType) => {
11
- if (this.entryReferenceUtil.buildsOnTypeWithEntryDirective(abstractType)) {
11
+ if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(abstractType)) {
12
12
  return this.persistence.getTypeById(context.gitAdapter, context.getCurrentRef(), obj.id);
13
13
  }
14
14
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"union-type-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/union-type-resolver-generator.ts"],"names":[],"mappings":";;;AASA,MAAa,0BAA0B;IACrC,YACmB,WAA+B,EAC/B,kBAAsC;QADtC,gBAAW,GAAX,WAAW,CAAoB;QAC/B,uBAAkB,GAAlB,kBAAkB,CAAoB;IACtD,CAAC;IAEG,cAAc;QACnB,OAAO,KAAK,EACV,GAAQ,EACR,OAAsB,EACtB,IAAwB,EACxB,YAAiC,EAChB,EAAE;YACnB,IACE,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,CAAC,YAAY,CAAC,EACpE;gBACA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CACjC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,GAAG,CAAC,EAAE,CACP,CAAA;aACF;iBAAM;gBAGL,OAAO,GAAG,CAAC,UAAU,CAAA;aACtB;QAGH,CAAC,CAAA;IACH,CAAC;CACF;AA9BD,gEA8BC"}
1
+ {"version":3,"file":"union-type-resolver-generator.js","sourceRoot":"","sources":["../../../src/graphql/resolver-generators/union-type-resolver-generator.ts"],"names":[],"mappings":";;;AASA,MAAa,0BAA0B;IACrC,YACmB,WAA+B,EAC/B,aAA4B;QAD5B,gBAAW,GAAX,WAAW,CAAoB;QAC/B,kBAAa,GAAb,aAAa,CAAe;IAC5C,CAAC;IAEG,cAAc;QACnB,OAAO,KAAK,EACV,GAAQ,EACR,OAAsB,EACtB,IAAwB,EACxB,YAAiC,EAChB,EAAE;YACnB,IAAI,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,YAAY,CAAC,EAAE;gBACnE,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CACjC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,GAAG,CAAC,EAAE,CACP,CAAA;aACF;iBAAM;gBAGL,OAAO,GAAG,CAAC,UAAU,CAAA;aACtB;QAGH,CAAC,CAAA;IACH,CAAC;CACF;AA5BD,gEA4BC"}
@@ -1,10 +1,6 @@
1
- import { GraphQLField, GraphQLObjectType, GraphQLSchema } from 'graphql';
1
+ import { GraphQLObjectType, GraphQLSchema } from 'graphql';
2
2
  import { GraphQLInterfaceType, GraphQLUnionType } from 'graphql/type/definition';
3
- import { ApolloContext } from '../app/api.service';
4
- import { EntryReferenceUtil } from './schema-utils/entry-reference-util';
5
3
  export declare class SchemaAnalyzerService {
6
- private readonly entryReferenceUtil;
7
- constructor(entryReferenceUtil: EntryReferenceUtil);
8
4
  analyzeSchema(schema: GraphQLSchema): ISchemaAnalyzerResult;
9
5
  }
10
6
  export interface ISchemaAnalyzerResult {
@@ -12,8 +8,4 @@ export interface ISchemaAnalyzerResult {
12
8
  objectTypes: GraphQLObjectType[];
13
9
  interfaceTypes: GraphQLInterfaceType[];
14
10
  unionTypes: GraphQLUnionType[];
15
- typesWithEntryReferences: {
16
- type: GraphQLObjectType<any, ApolloContext>;
17
- fields: GraphQLField<any, ApolloContext>[];
18
- }[];
19
11
  }
@@ -1,46 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SchemaAnalyzerService = void 0;
4
+ const graphql_1 = require("graphql");
4
5
  const utils_1 = require("@graphql-tools/utils");
5
- const kinds_1 = require("graphql/language/kinds");
6
6
  class SchemaAnalyzerService {
7
- constructor(entryReferenceUtil) {
8
- this.entryReferenceUtil = entryReferenceUtil;
9
- }
10
7
  analyzeSchema(schema) {
11
- var _a, _b, _c, _d;
8
+ var _a;
12
9
  const result = {
13
10
  entryDirectiveTypes: [],
14
11
  objectTypes: [],
15
12
  interfaceTypes: [],
16
13
  unionTypes: [],
17
- typesWithEntryReferences: [],
18
14
  };
19
15
  const typeMap = schema.getTypeMap();
20
16
  for (const [key, type] of Object.entries(typeMap)) {
21
17
  if (key.startsWith('__')) {
22
18
  continue;
23
19
  }
24
- if (((_a = type.astNode) === null || _a === void 0 ? void 0 : _a.kind) === kinds_1.Kind.OBJECT_TYPE_DEFINITION) {
20
+ if ((0, graphql_1.isObjectType)(type)) {
25
21
  const objectType = type;
26
22
  result.objectTypes.push(objectType);
27
- const entityDirective = (_b = (0, utils_1.getDirective)(schema, objectType, 'Entry')) === null || _b === void 0 ? void 0 : _b[0];
23
+ const entityDirective = (_a = (0, utils_1.getDirective)(schema, objectType, 'Entry')) === null || _a === void 0 ? void 0 : _a[0];
28
24
  if (entityDirective) {
29
25
  result.entryDirectiveTypes.push(objectType);
30
26
  }
31
- const fieldsWithEntryReference = this.entryReferenceUtil.getFieldsWithReferenceToTypeWithEntryDirective(objectType);
32
- if (fieldsWithEntryReference.length > 0) {
33
- result.typesWithEntryReferences.push({
34
- type: objectType,
35
- fields: fieldsWithEntryReference,
36
- });
37
- }
38
27
  }
39
- if (((_c = type.astNode) === null || _c === void 0 ? void 0 : _c.kind) === kinds_1.Kind.INTERFACE_TYPE_DEFINITION) {
28
+ if ((0, graphql_1.isInterfaceType)(type)) {
40
29
  const interfaceType = type;
41
30
  result.interfaceTypes.push(interfaceType);
42
31
  }
43
- if (((_d = type.astNode) === null || _d === void 0 ? void 0 : _d.kind) === kinds_1.Kind.UNION_TYPE_DEFINITION) {
32
+ if ((0, graphql_1.isUnionType)(type)) {
44
33
  const unionType = type;
45
34
  result.unionTypes.push(unionType);
46
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema-analyzer.service.js","sourceRoot":"","sources":["../../src/graphql/schema-analyzer.service.ts"],"names":[],"mappings":";;;AACA,gDAAmD;AAEnD,kDAA6C;AAI7C,MAAa,qBAAqB;IAChC,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAAG,CAAC;IAEhE,aAAa,CAAC,MAAqB;;QACxC,MAAM,MAAM,GAA0B;YACpC,mBAAmB,EAAE,EAAE;YACvB,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE;YACd,wBAAwB,EAAE,EAAE;SAC7B,CAAA;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QAEnC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACxB,SAAQ;aACT;YAED,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,MAAK,YAAI,CAAC,sBAAsB,EAAE;gBACtD,MAAM,UAAU,GAAG,IAAyB,CAAA;gBAC5C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnC,MAAM,eAAe,GAAG,MAAA,IAAA,oBAAY,EAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,0CAAG,CAAC,CAAC,CAAA;gBACtE,IAAI,eAAe,EAAE;oBACnB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;iBAC5C;gBACD,MAAM,wBAAwB,GAC5B,IAAI,CAAC,kBAAkB,CAAC,8CAA8C,CACpE,UAAU,CACX,CAAA;gBACH,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC;wBACnC,IAAI,EAAE,UAAU;wBAChB,MAAM,EAAE,wBAAwB;qBACjC,CAAC,CAAA;iBACH;aACF;YAED,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,MAAK,YAAI,CAAC,yBAAyB,EAAE;gBACzD,MAAM,aAAa,GAAG,IAA4B,CAAA;gBAClD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;aAC1C;YAED,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,MAAK,YAAI,CAAC,qBAAqB,EAAE;gBACrD,MAAM,SAAS,GAAG,IAAwB,CAAA;gBAC1C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAClC;SACF;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAnDD,sDAmDC"}
1
+ {"version":3,"file":"schema-analyzer.service.js","sourceRoot":"","sources":["../../src/graphql/schema-analyzer.service.ts"],"names":[],"mappings":";;;AAAA,qCAMgB;AAChB,gDAAmD;AAGnD,MAAa,qBAAqB;IACzB,aAAa,CAAC,MAAqB;;QACxC,MAAM,MAAM,GAA0B;YACpC,mBAAmB,EAAE,EAAE;YACvB,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE;SACf,CAAA;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;QAEnC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACxB,SAAQ;aACT;YAED,IAAI,IAAA,sBAAY,EAAC,IAAI,CAAC,EAAE;gBACtB,MAAM,UAAU,GAAG,IAAyB,CAAA;gBAC5C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnC,MAAM,eAAe,GAAG,MAAA,IAAA,oBAAY,EAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,0CAAG,CAAC,CAAC,CAAA;gBACtE,IAAI,eAAe,EAAE;oBACnB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;iBAC5C;aACF;YAED,IAAI,IAAA,yBAAe,EAAC,IAAI,CAAC,EAAE;gBACzB,MAAM,aAAa,GAAG,IAA4B,CAAA;gBAClD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;aAC1C;YAED,IAAI,IAAA,qBAAW,EAAC,IAAI,CAAC,EAAE;gBACrB,MAAM,SAAS,GAAG,IAAwB,CAAA;gBAC1C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAClC;SACF;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAtCD,sDAsCC"}
@@ -3,20 +3,18 @@ import { IExecutableSchemaDefinition } from '@graphql-tools/schema';
3
3
  import { SchemaAnalyzerService } from './schema-analyzer.service';
4
4
  import { InputTypeGeneratorService } from './input-type-generator.service';
5
5
  import { SchemaRootTypeGeneratorService } from './schema-root-type-generator.service';
6
- import { EntryReferenceResolverGenerator } from './resolver-generators/entry-reference-resolver.generator';
7
6
  import { UnionTypeResolverGenerator } from './resolver-generators/union-type-resolver-generator';
8
7
  import { ApolloContext } from '../app/api.service';
9
8
  import { SchemaValidator } from './schema-validator';
10
- import { UnionValueResolverGenerator } from './resolver-generators/union-value-resolver-generator';
9
+ import { ObjectTypeFieldDefaultValueResolverGenerator } from './resolver-generators/object-type-field-default-value-resolver-generator';
11
10
  export declare class SchemaGeneratorService {
12
11
  private readonly queriesMutationsGenerator;
13
12
  private readonly schemaAnalyzer;
14
13
  private readonly inputTypeGenerator;
15
14
  private readonly schemaRootTypeGenerator;
16
- private readonly entryReferenceResolverGenerator;
17
15
  private readonly unionTypeResolverGenerator;
18
- private readonly unionValueResolverGenerator;
16
+ private readonly objectTypeFieldDefaultValueResolverGenerator;
19
17
  private readonly schemaValidator;
20
- constructor(queriesMutationsGenerator: QueriesMutationsGeneratorService, schemaAnalyzer: SchemaAnalyzerService, inputTypeGenerator: InputTypeGeneratorService, schemaRootTypeGenerator: SchemaRootTypeGeneratorService, entryReferenceResolverGenerator: EntryReferenceResolverGenerator, unionTypeResolverGenerator: UnionTypeResolverGenerator, unionValueResolverGenerator: UnionValueResolverGenerator, schemaValidator: SchemaValidator);
18
+ constructor(queriesMutationsGenerator: QueriesMutationsGeneratorService, schemaAnalyzer: SchemaAnalyzerService, inputTypeGenerator: InputTypeGeneratorService, schemaRootTypeGenerator: SchemaRootTypeGeneratorService, unionTypeResolverGenerator: UnionTypeResolverGenerator, objectTypeFieldDefaultValueResolverGenerator: ObjectTypeFieldDefaultValueResolverGenerator, schemaValidator: SchemaValidator);
21
19
  generateSchema(context: ApolloContext): Promise<IExecutableSchemaDefinition>;
22
20
  }
@@ -4,14 +4,13 @@ exports.SchemaGeneratorService = void 0;
4
4
  const schema_1 = require("@graphql-tools/schema");
5
5
  const utils_1 = require("@graphql-tools/utils");
6
6
  class SchemaGeneratorService {
7
- constructor(queriesMutationsGenerator, schemaAnalyzer, inputTypeGenerator, schemaRootTypeGenerator, entryReferenceResolverGenerator, unionTypeResolverGenerator, unionValueResolverGenerator, schemaValidator) {
7
+ constructor(queriesMutationsGenerator, schemaAnalyzer, inputTypeGenerator, schemaRootTypeGenerator, unionTypeResolverGenerator, objectTypeFieldDefaultValueResolverGenerator, schemaValidator) {
8
8
  this.queriesMutationsGenerator = queriesMutationsGenerator;
9
9
  this.schemaAnalyzer = schemaAnalyzer;
10
10
  this.inputTypeGenerator = inputTypeGenerator;
11
11
  this.schemaRootTypeGenerator = schemaRootTypeGenerator;
12
- this.entryReferenceResolverGenerator = entryReferenceResolverGenerator;
13
12
  this.unionTypeResolverGenerator = unionTypeResolverGenerator;
14
- this.unionValueResolverGenerator = unionValueResolverGenerator;
13
+ this.objectTypeFieldDefaultValueResolverGenerator = objectTypeFieldDefaultValueResolverGenerator;
15
14
  this.schemaValidator = schemaValidator;
16
15
  }
17
16
  async generateSchema(context) {
@@ -30,10 +29,6 @@ class SchemaGeneratorService {
30
29
  const generatedQueriesMutations = this.queriesMutationsGenerator.generateFromAnalyzedSchema(schemaAnalyzerResult.entryDirectiveTypes);
31
30
  const generatedTypeNameQuery = this.queriesMutationsGenerator.generateTypeNameQuery();
32
31
  const generatedEntryReferenceResolvers = {};
33
- for (const type of schemaAnalyzerResult.typesWithEntryReferences) {
34
- generatedEntryReferenceResolvers[type.type.name] =
35
- this.entryReferenceResolverGenerator.createResolver(context, type);
36
- }
37
32
  const generatedObjectInputTypeStrings = this.inputTypeGenerator.generateObjectInputTypeStrings(schemaAnalyzerResult.objectTypes);
38
33
  const generatedUnionInputTypeStrings = this.inputTypeGenerator.generateUnionInputTypeStrings(schemaAnalyzerResult.unionTypes);
39
34
  const generatedSchemaRootTypeStrings = this.schemaRootTypeGenerator.generateSchemaRootTypeStrings(generatedQueriesMutations, generatedTypeNameQuery);
@@ -52,10 +47,10 @@ class SchemaGeneratorService {
52
47
  __resolveType: this.unionTypeResolverGenerator.createResolver(),
53
48
  };
54
49
  }
55
- const generatedUnionValueResolvers = this.unionValueResolverGenerator.createResolver(schema);
50
+ const generatedObjectTypeFieldDefaultValueResolvers = this.objectTypeFieldDefaultValueResolverGenerator.createResolver(schema);
56
51
  const generatedQueryResolvers = {};
57
52
  const generatedMutationResolvers = {};
58
- generatedQueriesMutations.forEach(function (element) {
53
+ for (const element of generatedQueriesMutations) {
59
54
  generatedQueryResolvers[element.queryAll.name] = element.queryAll.resolver;
60
55
  generatedQueryResolvers[element.queryAllMeta.name] =
61
56
  element.queryAllMeta.resolver;
@@ -67,7 +62,7 @@ class SchemaGeneratorService {
67
62
  element.updateMutation.resolver;
68
63
  generatedMutationResolvers[element.deleteMutation.name] =
69
64
  element.deleteMutation.resolver;
70
- });
65
+ }
71
66
  generatedQueryResolvers[generatedTypeNameQuery.name] =
72
67
  generatedTypeNameQuery.resolver;
73
68
  const allGeneratedResolvers = {
@@ -77,8 +72,8 @@ class SchemaGeneratorService {
77
72
  for (const typeName of Object.keys(generatedUnionTypeResolvers)) {
78
73
  allGeneratedResolvers[typeName] = Object.assign(Object.assign({}, ((_a = allGeneratedResolvers[typeName]) !== null && _a !== void 0 ? _a : {})), generatedUnionTypeResolvers[typeName]);
79
74
  }
80
- for (const typeName of Object.keys(generatedUnionValueResolvers)) {
81
- allGeneratedResolvers[typeName] = Object.assign(Object.assign({}, ((_b = allGeneratedResolvers[typeName]) !== null && _b !== void 0 ? _b : {})), generatedUnionValueResolvers[typeName]);
75
+ for (const typeName of Object.keys(generatedObjectTypeFieldDefaultValueResolvers)) {
76
+ allGeneratedResolvers[typeName] = Object.assign(Object.assign({}, ((_b = allGeneratedResolvers[typeName]) !== null && _b !== void 0 ? _b : {})), generatedObjectTypeFieldDefaultValueResolvers[typeName]);
82
77
  }
83
78
  for (const typeName of Object.keys(generatedEntryReferenceResolvers)) {
84
79
  allGeneratedResolvers[typeName] = Object.assign(Object.assign({}, ((_c = allGeneratedResolvers[typeName]) !== null && _c !== void 0 ? _c : {})), generatedEntryReferenceResolvers[typeName]);
@@ -1 +1 @@
1
- {"version":3,"file":"schema-generator.service.js","sourceRoot":"","sources":["../../src/graphql/schema-generator.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-generator.service.js","sourceRoot":"","sources":["../../src/graphql/schema-generator.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,14 @@
1
- import { GraphQLField, GraphQLObjectType } from 'graphql/type';
2
- import { GraphQLNullableType } from 'graphql/type/definition';
1
+ import { GraphQLNullableType, GraphQLObjectType } from 'graphql';
2
+ import { ApolloContext } from '../../app/api.service';
3
+ import { PersistenceService } from '../../persistence/persistence.service';
4
+ import { UnionTypeUtil } from './union-type-util';
5
+ import { EntryTypeUtil } from './entry-type-util';
3
6
  export declare class EntryReferenceUtil {
4
- getFieldsWithReferenceToTypeWithEntryDirective(objectType: GraphQLObjectType): GraphQLField<any, any>[];
5
- buildsOnTypeWithEntryDirective(type: GraphQLNullableType): boolean;
6
- hasEntryDirective(type: GraphQLObjectType): boolean;
7
+ private readonly persistence;
8
+ private readonly entryTypeUtil;
9
+ private readonly unionTypeUtil;
10
+ constructor(persistence: PersistenceService, entryTypeUtil: EntryTypeUtil, unionTypeUtil: UnionTypeUtil);
11
+ getReferencedEntryIds(rootType: GraphQLObjectType, context: ApolloContext, fieldName: string | null, type: GraphQLNullableType, data: any): Promise<string[]>;
12
+ private validateReference;
13
+ private isPermittedReferenceType;
7
14
  }
@@ -1,42 +1,125 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EntryReferenceUtil = void 0;
4
- const type_1 = require("graphql/type");
5
- const definition_1 = require("graphql/type/definition");
4
+ const graphql_1 = require("graphql");
5
+ const GraphQLError_1 = require("graphql/error/GraphQLError");
6
6
  class EntryReferenceUtil {
7
- getFieldsWithReferenceToTypeWithEntryDirective(objectType) {
8
- const fields = [];
9
- for (const fieldsKey in objectType.getFields()) {
10
- const field = objectType.getFields()[fieldsKey];
11
- if (this.buildsOnTypeWithEntryDirective(field.type)) {
12
- fields.push(field);
7
+ constructor(persistence, entryTypeUtil, unionTypeUtil) {
8
+ this.persistence = persistence;
9
+ this.entryTypeUtil = entryTypeUtil;
10
+ this.unionTypeUtil = unionTypeUtil;
11
+ }
12
+ async getReferencedEntryIds(rootType, context, fieldName, type, data) {
13
+ var _a;
14
+ if ((0, graphql_1.isNonNullType)(type)) {
15
+ return this.getReferencedEntryIds(rootType, context, fieldName, type.ofType, data);
16
+ }
17
+ else if ((0, graphql_1.isListType)(type)) {
18
+ let referencedEntryIds = [];
19
+ for (const element of data) {
20
+ referencedEntryIds = [
21
+ ...referencedEntryIds,
22
+ ...(await this.getReferencedEntryIds(rootType, context, fieldName, type.ofType, element)),
23
+ ];
24
+ }
25
+ referencedEntryIds = [...new Set(referencedEntryIds)];
26
+ return referencedEntryIds;
27
+ }
28
+ else if ((0, graphql_1.isUnionType)(type)) {
29
+ if (this.entryTypeUtil.isUnionOfEntryTypes(type)) {
30
+ await this.validateReference(context, '', type, data);
31
+ return [data.id];
32
+ }
33
+ const unionTypeName = this.unionTypeUtil.getUnionTypeNameFromFieldValue(data);
34
+ const unionType = type
35
+ .getTypes()
36
+ .find((type) => type.name === unionTypeName);
37
+ if (!unionType) {
38
+ throw new Error(`Type "${unionTypeName}" found in field data is not a valid type for union type "${type.name}".`);
39
+ }
40
+ const unionValue = this.unionTypeUtil.getUnionValue(data);
41
+ return this.getReferencedEntryIds(rootType, context, fieldName, unionType, unionValue);
42
+ }
43
+ else if ((0, graphql_1.isObjectType)(type)) {
44
+ if (type.name !== rootType.name &&
45
+ this.entryTypeUtil.hasEntryDirective(type)) {
46
+ await this.validateReference(context, fieldName !== null && fieldName !== void 0 ? fieldName : '', type, data);
47
+ return [data.id];
48
+ }
49
+ else {
50
+ let referencedEntryIds = [];
51
+ for (const [fieldsKey, field] of Object.entries(type.getFields())) {
52
+ const fieldValue = (_a = data[fieldsKey]) !== null && _a !== void 0 ? _a : undefined;
53
+ if (fieldValue !== undefined) {
54
+ const nestedResult = await this.getReferencedEntryIds(rootType, context, fieldsKey, field.type, fieldValue);
55
+ referencedEntryIds = [...referencedEntryIds, ...nestedResult];
56
+ }
57
+ }
58
+ referencedEntryIds = [...new Set(referencedEntryIds)];
59
+ return referencedEntryIds;
60
+ }
61
+ }
62
+ return [];
63
+ }
64
+ async validateReference(context, fieldName, fieldType, fieldValue) {
65
+ if ((0, graphql_1.isNonNullType)(fieldType)) {
66
+ await this.validateReference(context, fieldName, fieldType.ofType, fieldValue);
67
+ return;
68
+ }
69
+ else if ((0, graphql_1.isListType)(fieldType)) {
70
+ if (!Array.isArray(fieldValue)) {
71
+ throw new Error(`Expected array value in field "${fieldName}"`);
72
+ }
73
+ for (const fieldListElement of fieldValue) {
74
+ await this.validateReference(context, fieldName, fieldType.ofType, fieldListElement);
75
+ }
76
+ return;
77
+ }
78
+ else if ((0, graphql_1.isUnionType)(fieldType) || (0, graphql_1.isObjectType)(fieldType)) {
79
+ if (!('id' in fieldValue)) {
80
+ throw new Error('Expected key "id"');
81
+ }
82
+ const referencedId = fieldValue.id;
83
+ let referencedTypeName;
84
+ try {
85
+ referencedTypeName = await this.persistence.getTypeById(context.gitAdapter, context.getCurrentRef(), referencedId);
86
+ }
87
+ catch (error) {
88
+ throw new GraphQLError_1.GraphQLError(`Reference with id "${referencedId}" points to non-existing entry`, {
89
+ extensions: {
90
+ code: 'BAD_USER_INPUT',
91
+ fieldName: fieldName,
92
+ },
93
+ });
94
+ }
95
+ if (!this.isPermittedReferenceType(referencedTypeName, fieldType)) {
96
+ throw new GraphQLError_1.GraphQLError(`Reference with id "${referencedId}" points to entry of incompatible type`, {
97
+ extensions: {
98
+ code: 'BAD_USER_INPUT',
99
+ fieldName: fieldName,
100
+ },
101
+ });
13
102
  }
14
103
  }
15
- return fields;
16
104
  }
17
- buildsOnTypeWithEntryDirective(type) {
18
- if (type instanceof type_1.GraphQLNonNull) {
19
- return this.buildsOnTypeWithEntryDirective(type.ofType);
105
+ isPermittedReferenceType(referencedTypeName, fieldType) {
106
+ if ((0, graphql_1.isNonNullType)(fieldType)) {
107
+ return this.isPermittedReferenceType(referencedTypeName, fieldType.ofType);
20
108
  }
21
- else if (type instanceof type_1.GraphQLList) {
22
- return this.buildsOnTypeWithEntryDirective(type.ofType);
109
+ else if ((0, graphql_1.isListType)(fieldType)) {
110
+ return this.isPermittedReferenceType(referencedTypeName, fieldType.ofType);
23
111
  }
24
- else if (type instanceof definition_1.GraphQLUnionType) {
25
- return (type
112
+ else if ((0, graphql_1.isUnionType)(fieldType)) {
113
+ return fieldType
26
114
  .getTypes()
27
- .filter((unionType) => this.buildsOnTypeWithEntryDirective(unionType))
28
- .length > 0);
115
+ .map((concreteType) => concreteType.name)
116
+ .includes(referencedTypeName);
29
117
  }
30
- else if (type instanceof type_1.GraphQLObjectType) {
31
- return this.hasEntryDirective(type);
118
+ else if ((0, graphql_1.isObjectType)(fieldType)) {
119
+ return fieldType.name === referencedTypeName;
32
120
  }
33
121
  return false;
34
122
  }
35
- hasEntryDirective(type) {
36
- var _a;
37
- return (!!type.astNode &&
38
- ((_a = type.astNode.directives) === null || _a === void 0 ? void 0 : _a.find((directive) => directive.name.value === 'Entry')) !== undefined);
39
- }
40
123
  }
41
124
  exports.EntryReferenceUtil = EntryReferenceUtil;
42
125
  //# sourceMappingURL=entry-reference-util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry-reference-util.js","sourceRoot":"","sources":["../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":";;;AAAA,uCAKqB;AACrB,wDAA+E;AAE/E,MAAa,kBAAkB;IACtB,8CAA8C,CACnD,UAA6B;QAE7B,MAAM,MAAM,GAAG,EAAE,CAAA;QACjB,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE;YAC9C,MAAM,KAAK,GAA2B,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,CAAA;YACvE,IAAI,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACnB;SACF;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,8BAA8B,CAAC,IAAyB;QAC7D,IAAI,IAAI,YAAY,qBAAc,EAAE;YAClC,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SACxD;aAAM,IAAI,IAAI,YAAY,kBAAW,EAAE;YACtC,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SACxD;aAAM,IAAI,IAAI,YAAY,6BAAgB,EAAE;YAC3C,OAAO,CACL,IAAI;iBACD,QAAQ,EAAE;iBACV,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;iBACrE,MAAM,GAAG,CAAC,CACd,CAAA;SACF;aAAM,IAAI,IAAI,YAAY,wBAAiB,EAAE;YAC5C,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;SACpC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,iBAAiB,CAAC,IAAuB;;QAC9C,OAAO,CACL,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAA,MAAA,IAAI,CAAC,OAAO,CAAC,UAAU,0CAAE,IAAI,CAC3B,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAChD,MAAK,SAAS,CAChB,CAAA;IACH,CAAC;CACF;AAxCD,gDAwCC"}
1
+ {"version":3,"file":"entry-reference-util.js","sourceRoot":"","sources":["../../../src/graphql/schema-utils/entry-reference-util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { GraphQLNullableType, GraphQLObjectType, GraphQLUnionType } from 'graphql';
2
+ export declare class EntryTypeUtil {
3
+ buildsOnTypeWithEntryDirective(type: GraphQLNullableType): boolean;
4
+ hasEntryDirective(type: GraphQLObjectType): boolean;
5
+ isUnionOfEntryTypes(type: GraphQLUnionType): boolean;
6
+ }