@commitspark/graphql-api 0.80.0 → 0.81.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.
Files changed (222) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/app/api.service.js +74 -0
  3. package/dist/cjs/app/api.service.js.map +1 -0
  4. package/dist/{container.js → cjs/container.js} +13 -12
  5. package/dist/cjs/container.js.map +1 -0
  6. package/dist/cjs/graphql/apollo-config-factory.service.js +31 -0
  7. package/dist/cjs/graphql/apollo-config-factory.service.js.map +1 -0
  8. package/dist/cjs/graphql/field-resolver/entry-reference-resolver.js +26 -0
  9. package/dist/cjs/graphql/field-resolver/entry-reference-resolver.js.map +1 -0
  10. package/dist/cjs/graphql/field-resolver/field-default-value-resolver.js.map +1 -0
  11. package/dist/cjs/graphql/field-resolver/fieldResolver.js.map +1 -0
  12. package/dist/{graphql → cjs/graphql}/field-resolver/union-value-resolver.js +4 -0
  13. package/dist/cjs/graphql/field-resolver/union-value-resolver.js.map +1 -0
  14. package/dist/{graphql → cjs/graphql}/input-type-generator.service.js +5 -3
  15. package/dist/cjs/graphql/input-type-generator.service.js.map +1 -0
  16. package/dist/cjs/graphql/queries-mutations-generator.service.js.map +1 -0
  17. package/dist/{graphql → cjs/graphql}/resolver-generators/mutation-create-resolver-generator.js +21 -11
  18. package/dist/cjs/graphql/resolver-generators/mutation-create-resolver-generator.js.map +1 -0
  19. package/dist/{graphql → cjs/graphql}/resolver-generators/mutation-delete-resolver-generator.js +16 -8
  20. package/dist/cjs/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +1 -0
  21. package/dist/{graphql → cjs/graphql}/resolver-generators/mutation-update-resolver-generator.js +18 -9
  22. package/dist/cjs/graphql/resolver-generators/mutation-update-resolver-generator.js.map +1 -0
  23. package/dist/cjs/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +1 -0
  24. package/dist/cjs/graphql/resolver-generators/query-all-resolver-generator.js +27 -0
  25. package/dist/cjs/graphql/resolver-generators/query-all-resolver-generator.js.map +1 -0
  26. package/dist/cjs/graphql/resolver-generators/query-by-id-resolver-generator.js +25 -0
  27. package/dist/cjs/graphql/resolver-generators/query-by-id-resolver-generator.js.map +1 -0
  28. package/dist/cjs/graphql/resolver-generators/query-count-all-resolver-generator.js +26 -0
  29. package/dist/cjs/graphql/resolver-generators/query-count-all-resolver-generator.js.map +1 -0
  30. package/dist/cjs/graphql/resolver-generators/query-type-by-id-resolver-generator.js +24 -0
  31. package/dist/cjs/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +1 -0
  32. package/dist/cjs/graphql/resolver-generators/union-type-resolver-generator.js +33 -0
  33. package/dist/cjs/graphql/resolver-generators/union-type-resolver-generator.js.map +1 -0
  34. package/dist/cjs/graphql/schema-analyzer.service.js.map +1 -0
  35. package/dist/cjs/graphql/schema-generator.service.js +103 -0
  36. package/dist/cjs/graphql/schema-generator.service.js.map +1 -0
  37. package/dist/cjs/graphql/schema-root-type-generator.service.js.map +1 -0
  38. package/dist/cjs/graphql/schema-utils/entry-reference-util.js +139 -0
  39. package/dist/cjs/graphql/schema-utils/entry-reference-util.js.map +1 -0
  40. package/dist/cjs/graphql/schema-utils/entry-type-util.js.map +1 -0
  41. package/dist/{graphql → cjs/graphql}/schema-utils/union-type-util.js +2 -0
  42. package/dist/cjs/graphql/schema-utils/union-type-util.js.map +1 -0
  43. package/dist/{graphql → cjs/graphql}/schema-validator.js +2 -2
  44. package/dist/cjs/graphql/schema-validator.js.map +1 -0
  45. package/dist/cjs/index.js +22 -0
  46. package/dist/cjs/index.js.map +1 -0
  47. package/dist/cjs/package.json +1 -0
  48. package/dist/cjs/persistence/persistence.service.js +66 -0
  49. package/dist/cjs/persistence/persistence.service.js.map +1 -0
  50. package/dist/{app → esm/app}/api.service.js +7 -7
  51. package/dist/esm/app/api.service.js.map +1 -0
  52. package/dist/esm/container.js +50 -0
  53. package/dist/esm/container.js.map +1 -0
  54. package/dist/esm/graphql/apollo-config-factory.service.js +17 -0
  55. package/dist/esm/graphql/apollo-config-factory.service.js.map +1 -0
  56. package/dist/{graphql → esm/graphql}/field-resolver/entry-reference-resolver.js +4 -6
  57. package/dist/esm/graphql/field-resolver/entry-reference-resolver.js.map +1 -0
  58. package/dist/esm/graphql/field-resolver/field-default-value-resolver.js +73 -0
  59. package/dist/esm/graphql/field-resolver/field-default-value-resolver.js.map +1 -0
  60. package/dist/esm/graphql/field-resolver/fieldResolver.js +2 -0
  61. package/dist/esm/graphql/field-resolver/fieldResolver.js.map +1 -0
  62. package/dist/esm/graphql/field-resolver/union-value-resolver.js +22 -0
  63. package/dist/esm/graphql/field-resolver/union-value-resolver.js.map +1 -0
  64. package/dist/esm/graphql/input-type-generator.service.js +94 -0
  65. package/dist/esm/graphql/input-type-generator.service.js.map +1 -0
  66. package/dist/esm/graphql/queries-mutations-generator.service.js +85 -0
  67. package/dist/esm/graphql/queries-mutations-generator.service.js.map +1 -0
  68. package/dist/esm/graphql/resolver-generators/mutation-create-resolver-generator.js +78 -0
  69. package/dist/esm/graphql/resolver-generators/mutation-create-resolver-generator.js.map +1 -0
  70. package/dist/esm/graphql/resolver-generators/mutation-delete-resolver-generator.js +58 -0
  71. package/dist/esm/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +1 -0
  72. package/dist/esm/graphql/resolver-generators/mutation-update-resolver-generator.js +67 -0
  73. package/dist/esm/graphql/resolver-generators/mutation-update-resolver-generator.js.map +1 -0
  74. package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js +55 -0
  75. package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +1 -0
  76. package/dist/esm/graphql/resolver-generators/query-all-resolver-generator.js +15 -0
  77. package/dist/esm/graphql/resolver-generators/query-all-resolver-generator.js.map +1 -0
  78. package/dist/esm/graphql/resolver-generators/query-by-id-resolver-generator.js +13 -0
  79. package/dist/esm/graphql/resolver-generators/query-by-id-resolver-generator.js.map +1 -0
  80. package/dist/{graphql → esm/graphql}/resolver-generators/query-count-all-resolver-generator.js +2 -5
  81. package/dist/esm/graphql/resolver-generators/query-count-all-resolver-generator.js.map +1 -0
  82. package/dist/esm/graphql/resolver-generators/query-type-by-id-resolver-generator.js +12 -0
  83. package/dist/esm/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +1 -0
  84. package/dist/{graphql → esm/graphql}/resolver-generators/union-type-resolver-generator.js +6 -5
  85. package/dist/esm/graphql/resolver-generators/union-type-resolver-generator.js.map +1 -0
  86. package/dist/esm/graphql/schema-analyzer.service.js +36 -0
  87. package/dist/esm/graphql/schema-analyzer.service.js.map +1 -0
  88. package/dist/{graphql → esm/graphql}/schema-generator.service.js +24 -13
  89. package/dist/esm/graphql/schema-generator.service.js.map +1 -0
  90. package/dist/esm/graphql/schema-root-type-generator.service.js +35 -0
  91. package/dist/esm/graphql/schema-root-type-generator.service.js.map +1 -0
  92. package/dist/{graphql → esm/graphql}/schema-utils/entry-reference-util.js +22 -23
  93. package/dist/esm/graphql/schema-utils/entry-reference-util.js.map +1 -0
  94. package/dist/esm/graphql/schema-utils/entry-type-util.js +29 -0
  95. package/dist/esm/graphql/schema-utils/entry-type-util.js.map +1 -0
  96. package/dist/esm/graphql/schema-utils/union-type-util.js +18 -0
  97. package/dist/esm/graphql/schema-utils/union-type-util.js.map +1 -0
  98. package/dist/esm/graphql/schema-validator.js +25 -0
  99. package/dist/esm/graphql/schema-validator.js.map +1 -0
  100. package/dist/esm/index.js +7 -0
  101. package/dist/esm/index.js.map +1 -0
  102. package/dist/{persistence → esm/persistence}/persistence.service.js +5 -9
  103. package/dist/esm/persistence/persistence.service.js.map +1 -0
  104. package/dist/tsconfig.build.cjs.tsbuildinfo +1 -0
  105. package/dist/tsconfig.build.esm.tsbuildinfo +1 -0
  106. package/dist/tsconfig.build.types.tsbuildinfo +1 -0
  107. package/dist/{app → types/app}/api.service.d.ts +8 -5
  108. package/dist/types/app/api.service.d.ts.map +1 -0
  109. package/dist/{container.d.ts → types/container.d.ts} +1 -0
  110. package/dist/types/container.d.ts.map +1 -0
  111. package/dist/{graphql → types/graphql}/apollo-config-factory.service.d.ts +1 -0
  112. package/dist/types/graphql/apollo-config-factory.service.d.ts.map +1 -0
  113. package/dist/{graphql → types/graphql}/field-resolver/entry-reference-resolver.d.ts +3 -2
  114. package/dist/types/graphql/field-resolver/entry-reference-resolver.d.ts.map +1 -0
  115. package/dist/{graphql → types/graphql}/field-resolver/field-default-value-resolver.d.ts +3 -2
  116. package/dist/types/graphql/field-resolver/field-default-value-resolver.d.ts.map +1 -0
  117. package/dist/{graphql → types/graphql}/field-resolver/fieldResolver.d.ts +2 -2
  118. package/dist/types/graphql/field-resolver/fieldResolver.d.ts.map +1 -0
  119. package/dist/{graphql → types/graphql}/field-resolver/union-value-resolver.d.ts +2 -1
  120. package/dist/types/graphql/field-resolver/union-value-resolver.d.ts.map +1 -0
  121. package/dist/{graphql → types/graphql}/input-type-generator.service.d.ts +1 -0
  122. package/dist/types/graphql/input-type-generator.service.d.ts.map +1 -0
  123. package/dist/{graphql → types/graphql}/queries-mutations-generator.service.d.ts +2 -2
  124. package/dist/types/graphql/queries-mutations-generator.service.d.ts.map +1 -0
  125. package/dist/{graphql → types/graphql}/resolver-generators/mutation-create-resolver-generator.d.ts +2 -1
  126. package/dist/types/graphql/resolver-generators/mutation-create-resolver-generator.d.ts.map +1 -0
  127. package/dist/{graphql → types/graphql}/resolver-generators/mutation-delete-resolver-generator.d.ts +2 -1
  128. package/dist/types/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts.map +1 -0
  129. package/dist/{graphql → types/graphql}/resolver-generators/mutation-update-resolver-generator.d.ts +2 -1
  130. package/dist/types/graphql/resolver-generators/mutation-update-resolver-generator.d.ts.map +1 -0
  131. package/dist/{graphql → types/graphql}/resolver-generators/object-type-field-default-value-resolver-generator.d.ts +2 -2
  132. package/dist/types/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts.map +1 -0
  133. package/dist/{graphql → types/graphql}/resolver-generators/query-all-resolver-generator.d.ts +2 -1
  134. package/dist/types/graphql/resolver-generators/query-all-resolver-generator.d.ts.map +1 -0
  135. package/dist/{graphql → types/graphql}/resolver-generators/query-by-id-resolver-generator.d.ts +2 -1
  136. package/dist/types/graphql/resolver-generators/query-by-id-resolver-generator.d.ts.map +1 -0
  137. package/dist/{graphql → types/graphql}/resolver-generators/query-count-all-resolver-generator.d.ts +2 -1
  138. package/dist/types/graphql/resolver-generators/query-count-all-resolver-generator.d.ts.map +1 -0
  139. package/dist/{graphql → types/graphql}/resolver-generators/query-type-by-id-resolver-generator.d.ts +2 -1
  140. package/dist/types/graphql/resolver-generators/query-type-by-id-resolver-generator.d.ts.map +1 -0
  141. package/dist/{graphql → types/graphql}/resolver-generators/union-type-resolver-generator.d.ts +1 -0
  142. package/dist/types/graphql/resolver-generators/union-type-resolver-generator.d.ts.map +1 -0
  143. package/dist/{graphql → types/graphql}/schema-analyzer.service.d.ts +2 -2
  144. package/dist/types/graphql/schema-analyzer.service.d.ts.map +1 -0
  145. package/dist/{graphql → types/graphql}/schema-generator.service.d.ts +1 -0
  146. package/dist/types/graphql/schema-generator.service.d.ts.map +1 -0
  147. package/dist/{graphql → types/graphql}/schema-root-type-generator.service.d.ts +1 -0
  148. package/dist/types/graphql/schema-root-type-generator.service.d.ts.map +1 -0
  149. package/dist/{graphql → types/graphql}/schema-utils/entry-reference-util.d.ts +1 -0
  150. package/dist/types/graphql/schema-utils/entry-reference-util.d.ts.map +1 -0
  151. package/dist/{graphql → types/graphql}/schema-utils/entry-type-util.d.ts +1 -0
  152. package/dist/types/graphql/schema-utils/entry-type-util.d.ts.map +1 -0
  153. package/dist/{graphql → types/graphql}/schema-utils/union-type-util.d.ts +1 -0
  154. package/dist/types/graphql/schema-utils/union-type-util.d.ts.map +1 -0
  155. package/dist/{graphql → types/graphql}/schema-validator.d.ts +1 -0
  156. package/dist/types/graphql/schema-validator.d.ts.map +1 -0
  157. package/dist/{index.d.ts → types/index.d.ts} +1 -0
  158. package/dist/types/index.d.ts.map +1 -0
  159. package/dist/{persistence → types/persistence}/persistence.service.d.ts +1 -0
  160. package/dist/types/persistence/persistence.service.d.ts.map +1 -0
  161. package/package.json +31 -17
  162. package/src/app/api.service.ts +13 -7
  163. package/src/container.ts +12 -12
  164. package/src/graphql/field-resolver/entry-reference-resolver.ts +2 -2
  165. package/src/graphql/field-resolver/field-default-value-resolver.ts +2 -4
  166. package/src/graphql/field-resolver/fieldResolver.ts +1 -2
  167. package/src/graphql/field-resolver/union-value-resolver.ts +1 -1
  168. package/src/graphql/input-type-generator.service.ts +1 -1
  169. package/src/graphql/queries-mutations-generator.service.ts +1 -2
  170. package/src/graphql/resolver-generators/mutation-create-resolver-generator.ts +4 -4
  171. package/src/graphql/resolver-generators/mutation-delete-resolver-generator.ts +1 -3
  172. package/src/graphql/resolver-generators/mutation-update-resolver-generator.ts +1 -2
  173. package/src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts +4 -6
  174. package/src/graphql/resolver-generators/query-all-resolver-generator.ts +1 -1
  175. package/src/graphql/resolver-generators/query-by-id-resolver-generator.ts +1 -1
  176. package/src/graphql/resolver-generators/query-count-all-resolver-generator.ts +1 -1
  177. package/src/graphql/resolver-generators/query-type-by-id-resolver-generator.ts +1 -1
  178. package/src/graphql/schema-analyzer.service.ts +2 -1
  179. package/src/graphql/schema-generator.service.ts +1 -4
  180. package/src/graphql/schema-utils/entry-reference-util.ts +1 -1
  181. package/src/graphql/schema-validator.ts +1 -3
  182. package/src/persistence/persistence.service.ts +1 -1
  183. package/dist/app/api.service.js.map +0 -1
  184. package/dist/container.js.map +0 -1
  185. package/dist/graphql/apollo-config-factory.service.js +0 -20
  186. package/dist/graphql/apollo-config-factory.service.js.map +0 -1
  187. package/dist/graphql/field-resolver/entry-reference-resolver.js.map +0 -1
  188. package/dist/graphql/field-resolver/field-default-value-resolver.js.map +0 -1
  189. package/dist/graphql/field-resolver/fieldResolver.js.map +0 -1
  190. package/dist/graphql/field-resolver/union-value-resolver.js.map +0 -1
  191. package/dist/graphql/input-type-generator.service.js.map +0 -1
  192. package/dist/graphql/queries-mutations-generator.service.js.map +0 -1
  193. package/dist/graphql/resolver-generators/mutation-create-resolver-generator.js.map +0 -1
  194. package/dist/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +0 -1
  195. package/dist/graphql/resolver-generators/mutation-update-resolver-generator.js.map +0 -1
  196. package/dist/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +0 -1
  197. package/dist/graphql/resolver-generators/query-all-resolver-generator.js +0 -18
  198. package/dist/graphql/resolver-generators/query-all-resolver-generator.js.map +0 -1
  199. package/dist/graphql/resolver-generators/query-by-id-resolver-generator.js +0 -16
  200. package/dist/graphql/resolver-generators/query-by-id-resolver-generator.js.map +0 -1
  201. package/dist/graphql/resolver-generators/query-count-all-resolver-generator.js.map +0 -1
  202. package/dist/graphql/resolver-generators/query-type-by-id-resolver-generator.js +0 -15
  203. package/dist/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +0 -1
  204. package/dist/graphql/resolver-generators/union-type-resolver-generator.js.map +0 -1
  205. package/dist/graphql/schema-analyzer.service.js.map +0 -1
  206. package/dist/graphql/schema-generator.service.js.map +0 -1
  207. package/dist/graphql/schema-root-type-generator.service.js.map +0 -1
  208. package/dist/graphql/schema-utils/entry-reference-util.js.map +0 -1
  209. package/dist/graphql/schema-utils/entry-type-util.js.map +0 -1
  210. package/dist/graphql/schema-utils/union-type-util.js.map +0 -1
  211. package/dist/graphql/schema-validator.js.map +0 -1
  212. package/dist/index.js +0 -11
  213. package/dist/index.js.map +0 -1
  214. package/dist/persistence/persistence.service.js.map +0 -1
  215. package/dist/tsconfig.build.tsbuildinfo +0 -1
  216. /package/dist/{graphql → cjs/graphql}/field-resolver/field-default-value-resolver.js +0 -0
  217. /package/dist/{graphql → cjs/graphql}/field-resolver/fieldResolver.js +0 -0
  218. /package/dist/{graphql → cjs/graphql}/queries-mutations-generator.service.js +0 -0
  219. /package/dist/{graphql → cjs/graphql}/resolver-generators/object-type-field-default-value-resolver-generator.js +0 -0
  220. /package/dist/{graphql → cjs/graphql}/schema-analyzer.service.js +0 -0
  221. /package/dist/{graphql → cjs/graphql}/schema-root-type-generator.service.js +0 -0
  222. /package/dist/{graphql → cjs/graphql}/schema-utils/entry-type-util.js +0 -0
@@ -0,0 +1,17 @@
1
+ import { makeExecutableSchema } from '@graphql-tools/schema';
2
+ import { ApolloServerPluginUsageReportingDisabled } from '@apollo/server/plugin/disabled';
3
+ export class ApolloConfigFactoryService {
4
+ schemaGenerator;
5
+ constructor(schemaGenerator) {
6
+ this.schemaGenerator = schemaGenerator;
7
+ }
8
+ async createGqlOptions(context) {
9
+ const schemaDefinition = await this.schemaGenerator.generateSchema(context);
10
+ const schema = makeExecutableSchema(schemaDefinition);
11
+ return {
12
+ schema: schema,
13
+ plugins: [ApolloServerPluginUsageReportingDisabled()],
14
+ };
15
+ }
16
+ }
17
+ //# sourceMappingURL=apollo-config-factory.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apollo-config-factory.service.js","sourceRoot":"","sources":["../../../src/graphql/apollo-config-factory.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAI5D,OAAO,EAAE,wCAAwC,EAAE,MAAM,gCAAgC,CAAA;AAEzF,MAAM,OAAO,0BAA0B;IACR;IAA7B,YAA6B,eAAuC;QAAvC,oBAAe,GAAf,eAAe,CAAwB;IAAG,CAAC;IAExE,KAAK,CAAC,gBAAgB,CACpB,OAAsB;QAEtB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC3E,MAAM,MAAM,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;QAErD,OAAO;YACL,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,CAAC,wCAAwC,EAAE,CAAC;SAChB,CAAA;IACzC,CAAC;CACF"}
@@ -1,15 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntryReferenceResolver = void 0;
4
- class EntryReferenceResolver {
1
+ export class EntryReferenceResolver {
2
+ persistence;
3
+ resolve;
5
4
  constructor(persistence) {
6
5
  this.persistence = persistence;
7
6
  this.resolve = (fieldValue, args, context, info) => this.resolveFieldValue(fieldValue, args, context, info, info.returnType);
8
7
  }
9
8
  async resolveFieldValue(fieldValue, args, context, info, currentType) {
10
9
  const entry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), fieldValue.id);
11
- return Object.assign(Object.assign({}, entry.data), { id: entry.id });
10
+ return { ...entry.data, id: entry.id };
12
11
  }
13
12
  }
14
- exports.EntryReferenceResolver = EntryReferenceResolver;
15
13
  //# sourceMappingURL=entry-reference-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-reference-resolver.js","sourceRoot":"","sources":["../../../../src/graphql/field-resolver/entry-reference-resolver.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,sBAAsB;IAQJ;IAP7B,OAAO,CAKN;IAED,YAA6B,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;QAC1D,IAAI,CAAC,OAAO,GAAG,CACb,UAAU,EACV,IAAS,EACT,OAA6B,EAC7B,IAAI,EACwD,EAAE,CAC9D,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC5E,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,UAAe,EACf,IAAS,EACT,OAA6B,EAC7B,IAAwB,EACxB,WAA8B;QAE9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC3C,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,UAAU,CAAC,EAAE,CACd,CAAA;QAED,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAA;IACxC,CAAC;CACF"}
@@ -0,0 +1,73 @@
1
+ import { isListType, isNonNullType, isObjectType, isUnionType, } from 'graphql';
2
+ export class FieldDefaultValueResolver {
3
+ entryTypeUtil;
4
+ unionValueResolver;
5
+ entryReferenceResolver;
6
+ resolve;
7
+ constructor(entryTypeUtil, unionValueResolver, entryReferenceResolver) {
8
+ this.entryTypeUtil = entryTypeUtil;
9
+ this.unionValueResolver = unionValueResolver;
10
+ this.entryReferenceResolver = entryReferenceResolver;
11
+ this.resolve = (fieldValue, args, context, info) => this.resolveFieldValue(fieldValue, args, context, info, info.returnType, false);
12
+ }
13
+ resolveFieldValue(fieldValue, args, context, info, currentType, hasNonNullParent) {
14
+ if (isNonNullType(currentType)) {
15
+ return this.resolveFieldValue(fieldValue, args, {
16
+ gitAdapter: context.gitAdapter,
17
+ getCurrentRef: context.getCurrentRef,
18
+ }, info, currentType.ofType, true);
19
+ }
20
+ else if (isListType(currentType)) {
21
+ if (fieldValue === undefined || fieldValue === null) {
22
+ if (hasNonNullParent) {
23
+ return new Promise((resolve) => resolve([]));
24
+ }
25
+ else {
26
+ return new Promise((resolve) => resolve(null));
27
+ }
28
+ }
29
+ if (!Array.isArray(fieldValue)) {
30
+ throw new Error(`Expected array while resolving value for field "${info.fieldName}".`);
31
+ }
32
+ const resultPromises = [];
33
+ for (const item of fieldValue) {
34
+ const resultPromise = this.resolveFieldValue(item, args, {
35
+ gitAdapter: context.gitAdapter,
36
+ getCurrentRef: context.getCurrentRef,
37
+ }, info, currentType.ofType, hasNonNullParent);
38
+ resultPromises.push(resultPromise);
39
+ }
40
+ return Promise.all(resultPromises);
41
+ }
42
+ else if (isUnionType(currentType)) {
43
+ if (fieldValue === undefined || fieldValue === null) {
44
+ if (hasNonNullParent) {
45
+ throw new Error(`Cannot generate a default value for NonNull field "${info.parentType.name}.${info.fieldName}" because it is a union field of type "${info.returnType.ofType.name}".`);
46
+ }
47
+ else {
48
+ return new Promise((resolve) => resolve(null));
49
+ }
50
+ }
51
+ if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(currentType)) {
52
+ return this.entryReferenceResolver.resolve(fieldValue, args, context, info);
53
+ }
54
+ return this.unionValueResolver.resolve(fieldValue, args, context, info);
55
+ }
56
+ else if (isObjectType(currentType)) {
57
+ if (fieldValue === undefined || fieldValue === null) {
58
+ if (hasNonNullParent) {
59
+ throw new Error(`Cannot generate a default value for NonNull field "${info.fieldName}" of type "${info.parentType.name}".`);
60
+ }
61
+ else {
62
+ return new Promise((resolve) => resolve(null));
63
+ }
64
+ }
65
+ if (this.entryTypeUtil.hasEntryDirective(currentType)) {
66
+ return this.entryReferenceResolver.resolve(fieldValue, args, context, info);
67
+ }
68
+ return fieldValue;
69
+ }
70
+ return fieldValue;
71
+ }
72
+ }
73
+ //# sourceMappingURL=field-default-value-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-default-value-resolver.js","sourceRoot":"","sources":["../../../../src/graphql/field-resolver/field-default-value-resolver.ts"],"names":[],"mappings":"AAMA,OAAO,EAML,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAA;AAKhB,MAAM,OAAO,yBAAyB;IASjB;IACA;IACA;IAVnB,OAAO,CAKN;IAED,YACmB,aAA4B,EAC5B,kBAAsC,EACtC,sBAA8C;QAF9C,kBAAa,GAAb,aAAa,CAAe;QAC5B,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,2BAAsB,GAAtB,sBAAsB,CAAwB;QAE/D,IAAI,CAAC,OAAO,GAAG,CACb,UAAU,EACV,IAAI,EACJ,OAAO,EACP,IAAI,EACwD,EAAE,CAC9D,IAAI,CAAC,iBAAiB,CACpB,UAAU,EACV,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,IAAI,CAAC,UAAU,EACf,KAAK,CACN,CAAA;IACL,CAAC;IAEO,iBAAiB,CACvB,UAAe,EACf,IAAS,EACT,OAA6B,EAC7B,IAAwB,EACxB,WAA8B,EAC9B,gBAAyB;QAEzB,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,iBAAiB,CAC3B,UAAU,EACV,IAAI,EACJ;gBACE,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,EACD,IAAI,EACJ,WAAW,CAAC,MAAM,EAClB,IAAI,CACL,CAAA;QACH,CAAC;aAAM,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACpD,IAAI,gBAAgB,EAAE,CAAC;oBACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC9C,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;gBAChD,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,mDAAmD,IAAI,CAAC,SAAS,IAAI,CACtE,CAAA;YACH,CAAC;YAED,MAAM,cAAc,GAAG,EAAE,CAAA;YACzB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAC1C,IAAI,EACJ,IAAI,EACJ;oBACE,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;iBACrC,EACD,IAAI,EACJ,WAAW,CAAC,MAAM,EAClB,gBAAgB,CACjB,CAAA;gBACD,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YACpC,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACpC,CAAC;aAAM,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YACpC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACpD,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CACb,sDACE,IAAI,CAAC,UAAU,CAAC,IAClB,IAAI,IAAI,CAAC,SAAS,0CACf,IAAI,CAAC,UAA+C,CAAC,MAAM,CAAC,IAC/D,IAAI,CACL,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;gBAChD,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnE,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CACxC,UAAU,EACV,IAAI,EACJ,OAAO,EACP,IAAI,CACL,CAAA;YACH,CAAC;YAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACzE,CAAC;aAAM,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACpD,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAI,CAAC,SAAS,cAAc,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAC3G,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;gBAChD,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtD,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CACxC,UAAU,EACV,IAAI,EACJ,OAAO,EACP,IAAI,CACL,CAAA;YACH,CAAC;YAED,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fieldResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldResolver.js","sourceRoot":"","sources":["../../../../src/graphql/field-resolver/fieldResolver.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ export class UnionValueResolver {
2
+ unionTypeUtil;
3
+ resolve;
4
+ constructor(unionTypeUtil) {
5
+ this.unionTypeUtil = unionTypeUtil;
6
+ this.resolve = (fieldValue, args, context, info) => this.resolveFieldValue(fieldValue);
7
+ }
8
+ resolveFieldValue(fieldValue) {
9
+ const typeName = this.unionTypeUtil.getUnionTypeNameFromFieldValue(fieldValue);
10
+ const unionValue = this.unionTypeUtil.getUnionValue(fieldValue);
11
+ // We replace the helper type name field that holds our field's actual data
12
+ // with this actual data and add a `__typename` field, so that our output data
13
+ // corresponds to the output schema provided by the user (i.e. there is
14
+ // no additional nesting level there).
15
+ const res = {
16
+ ...unionValue,
17
+ __typename: typeName,
18
+ };
19
+ return new Promise((resolve) => resolve(res));
20
+ }
21
+ }
22
+ //# sourceMappingURL=union-value-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union-value-resolver.js","sourceRoot":"","sources":["../../../../src/graphql/field-resolver/union-value-resolver.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,kBAAkB;IAQA;IAP7B,OAAO,CAKN;IAED,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QACvD,IAAI,CAAC,OAAO,GAAG,CACb,UAAU,EACV,IAAI,EACJ,OAAO,EACP,IAAI,EACwD,EAAE,CAC9D,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;IAEO,iBAAiB,CACvB,UAAe;QAEf,MAAM,QAAQ,GACZ,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAA;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;QAE/D,2EAA2E;QAC3E,8EAA8E;QAC9E,uEAAuE;QACvE,sCAAsC;QACtC,MAAM,GAAG,GAAc;YACrB,GAAG,UAAU;YACb,UAAU,EAAE,QAAQ;SACrB,CAAA;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/C,CAAC;CACF"}
@@ -0,0 +1,94 @@
1
+ import { isInterfaceType, isListType, isNonNullType, isObjectType, isScalarType, isUnionType, } from 'graphql';
2
+ export class InputTypeGeneratorService {
3
+ entryTypeUtil;
4
+ constructor(entryTypeUtil) {
5
+ this.entryTypeUtil = entryTypeUtil;
6
+ }
7
+ generateFieldInputTypeString(type) {
8
+ if (isListType(type)) {
9
+ return `[${this.generateFieldInputTypeString(type.ofType)}]`;
10
+ }
11
+ else if (isNonNullType(type)) {
12
+ return `${this.generateFieldInputTypeString(type.ofType)}!`;
13
+ }
14
+ else if (isObjectType(type)) {
15
+ if (this.entryTypeUtil.hasEntryDirective(type)) {
16
+ return `${type.name}IdInput`;
17
+ }
18
+ else {
19
+ return `${type.name}Input`;
20
+ }
21
+ }
22
+ else if (isInterfaceType(type)) {
23
+ // TODO
24
+ return '';
25
+ }
26
+ else if (isUnionType(type)) {
27
+ if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(type)) {
28
+ return `${type.name}IdInput`;
29
+ }
30
+ else {
31
+ return `${type.name}Input`;
32
+ }
33
+ }
34
+ else {
35
+ return type.name;
36
+ }
37
+ }
38
+ generateIdInputTypeStrings(schemaAnalyzerResult) {
39
+ let typesWithIdField = [];
40
+ typesWithIdField = typesWithIdField.concat(schemaAnalyzerResult.entryDirectiveTypes);
41
+ typesWithIdField = typesWithIdField.concat(schemaAnalyzerResult.interfaceTypes);
42
+ typesWithIdField = typesWithIdField.concat(schemaAnalyzerResult.unionTypes);
43
+ return typesWithIdField.map((type) => {
44
+ return `input ${type.name}IdInput {\n` + ' id: ID!\n' + '}\n';
45
+ });
46
+ }
47
+ generateObjectInputTypeStrings(objectTypes) {
48
+ return objectTypes.map((objectType) => {
49
+ const name = objectType.name;
50
+ const inputTypeName = `${name}Input`;
51
+ let inputType = `input ${inputTypeName} {\n`;
52
+ let inputTypeFieldStrings = '';
53
+ for (const fieldsKey in objectType.getFields()) {
54
+ const field = objectType.getFields()[fieldsKey];
55
+ if ((isNonNullType(field.type) &&
56
+ isScalarType(field.type.ofType) &&
57
+ field.type.ofType.name === 'ID') ||
58
+ (isScalarType(field.type) && field.type.name === 'ID')) {
59
+ continue;
60
+ }
61
+ const inputTypeString = this.generateFieldInputTypeString(field.type);
62
+ inputTypeFieldStrings += ` ${field.name}: ${inputTypeString}\n`;
63
+ }
64
+ if (inputTypeFieldStrings.length > 0) {
65
+ inputType += `${inputTypeFieldStrings}`;
66
+ }
67
+ else {
68
+ // generate a dummy field as empty input types are not permitted
69
+ inputType += ' _: Boolean\n';
70
+ }
71
+ inputType += '}\n';
72
+ return inputType;
73
+ });
74
+ }
75
+ generateUnionInputTypeStrings(unionTypes) {
76
+ const typeStrings = unionTypes.map((unionType) => {
77
+ if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(unionType)) {
78
+ return '';
79
+ }
80
+ // see https://github.com/graphql/graphql-spec/pull/825
81
+ let unionInputType = `input ${unionType.name}Input @oneOf {\n`;
82
+ for (const innerType of unionType.getTypes()) {
83
+ unionInputType += ` ${innerType.name}: ${innerType.name}Input\n`;
84
+ }
85
+ unionInputType += '}\n';
86
+ return unionInputType;
87
+ });
88
+ if (typeStrings.join('').length > 0) {
89
+ typeStrings.push('directive @oneOf on INPUT_OBJECT\n');
90
+ }
91
+ return typeStrings;
92
+ }
93
+ }
94
+ //# sourceMappingURL=input-type-generator.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-type-generator.service.js","sourceRoot":"","sources":["../../../src/graphql/input-type-generator.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ export class QueriesMutationsGeneratorService {
2
+ queryAllResolverGenerator;
3
+ queryByIdResolverGenerator;
4
+ queryCountAllResolverGenerator;
5
+ queryTypeByIdResolverGenerator;
6
+ mutationCreateResolverGenerator;
7
+ mutationUpdateResolverGenerator;
8
+ mutationDeleteResolverGenerator;
9
+ constructor(queryAllResolverGenerator, queryByIdResolverGenerator, queryCountAllResolverGenerator, queryTypeByIdResolverGenerator, mutationCreateResolverGenerator, mutationUpdateResolverGenerator, mutationDeleteResolverGenerator) {
10
+ this.queryAllResolverGenerator = queryAllResolverGenerator;
11
+ this.queryByIdResolverGenerator = queryByIdResolverGenerator;
12
+ this.queryCountAllResolverGenerator = queryCountAllResolverGenerator;
13
+ this.queryTypeByIdResolverGenerator = queryTypeByIdResolverGenerator;
14
+ this.mutationCreateResolverGenerator = mutationCreateResolverGenerator;
15
+ this.mutationUpdateResolverGenerator = mutationUpdateResolverGenerator;
16
+ this.mutationDeleteResolverGenerator = mutationDeleteResolverGenerator;
17
+ }
18
+ generateFromAnalyzedSchema(entryDirectiveTypes) {
19
+ return entryDirectiveTypes.map((objectType) => {
20
+ const typeName = objectType.name;
21
+ const queryAllName = `all${typeName}s`;
22
+ const queryAllString = `${queryAllName}: [${objectType.name}!]`;
23
+ const queryAllResolver = this.queryAllResolverGenerator.createResolver(typeName);
24
+ const queryAllMetaName = `_${queryAllName}Meta`;
25
+ const queryAllMetaString = `${queryAllMetaName}: ListMetadata`;
26
+ const queryAllMetaResolver = this.queryCountAllResolverGenerator.createResolver(typeName);
27
+ const queryByIdName = typeName;
28
+ const queryByIdString = `${queryByIdName}(id: ID!): ${objectType.name}`;
29
+ const queryByIdResolver = this.queryByIdResolverGenerator.createResolver(typeName);
30
+ const inputTypeName = `${typeName}Input`;
31
+ const createMutationName = `create${typeName}`;
32
+ const createMutationString = `${createMutationName}(id: ID!, data: ${inputTypeName}!, commitMessage: String): ${typeName}`;
33
+ const createMutationResolver = this.mutationCreateResolverGenerator.createResolver(typeName);
34
+ const updateMutationName = `update${typeName}`;
35
+ const updateMutationString = `${updateMutationName}(id: ID!, data: ${inputTypeName}!, commitMessage: String): ${typeName}`;
36
+ const updateMutationResolver = this.mutationUpdateResolverGenerator.createResolver(typeName);
37
+ const deleteMutationName = `delete${typeName}`;
38
+ const deleteMutationString = `${deleteMutationName}(id: ID!, commitMessage: String): ID`;
39
+ const deleteMutationResolver = this.mutationDeleteResolverGenerator.createResolver(typeName);
40
+ return {
41
+ queryAll: {
42
+ name: queryAllName,
43
+ schemaString: queryAllString,
44
+ resolver: queryAllResolver,
45
+ },
46
+ queryAllMeta: {
47
+ name: queryAllMetaName,
48
+ schemaString: queryAllMetaString,
49
+ resolver: queryAllMetaResolver,
50
+ },
51
+ queryById: {
52
+ name: queryByIdName,
53
+ schemaString: queryByIdString,
54
+ resolver: queryByIdResolver,
55
+ },
56
+ createMutation: {
57
+ name: createMutationName,
58
+ schemaString: createMutationString,
59
+ resolver: createMutationResolver,
60
+ },
61
+ updateMutation: {
62
+ name: updateMutationName,
63
+ schemaString: updateMutationString,
64
+ resolver: updateMutationResolver,
65
+ },
66
+ deleteMutation: {
67
+ name: deleteMutationName,
68
+ schemaString: deleteMutationString,
69
+ resolver: deleteMutationResolver,
70
+ },
71
+ };
72
+ });
73
+ }
74
+ generateTypeNameQuery() {
75
+ const entryTypeQueryName = '_typeName';
76
+ const entryTypeQueryString = `${entryTypeQueryName}(id: ID!): String!`;
77
+ const entryTypeQueryResolver = this.queryTypeByIdResolverGenerator.createResolver();
78
+ return {
79
+ name: entryTypeQueryName,
80
+ schemaString: entryTypeQueryString,
81
+ resolver: entryTypeQueryResolver,
82
+ };
83
+ }
84
+ }
85
+ //# sourceMappingURL=queries-mutations-generator.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries-mutations-generator.service.js","sourceRoot":"","sources":["../../../src/graphql/queries-mutations-generator.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { GraphQLError, isObjectType } from 'graphql';
2
+ import { ENTRY_ID_INVALID_CHARACTERS, } from '@commitspark/git-adapter';
3
+ export class MutationCreateResolverGenerator {
4
+ persistence;
5
+ entryReferenceUtil;
6
+ constructor(persistence, entryReferenceUtil) {
7
+ this.persistence = persistence;
8
+ this.entryReferenceUtil = entryReferenceUtil;
9
+ }
10
+ createResolver(typeName) {
11
+ return async (source, args, context, info) => {
12
+ if (!isObjectType(info.returnType)) {
13
+ throw new Error('Expected to create an ObjectType');
14
+ }
15
+ const idValidationResult = args.id.match(ENTRY_ID_INVALID_CHARACTERS);
16
+ if (idValidationResult) {
17
+ throw new GraphQLError(`"id" contains invalid characters "${idValidationResult.join(', ')}"`, {
18
+ extensions: {
19
+ code: 'BAD_USER_INPUT',
20
+ argumentName: 'id',
21
+ },
22
+ });
23
+ }
24
+ let existingEntry;
25
+ try {
26
+ existingEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), args.id);
27
+ }
28
+ catch (_) {
29
+ /* empty */
30
+ }
31
+ if (existingEntry) {
32
+ throw new GraphQLError(`An entry with id "${args.id}" already exists`, {
33
+ extensions: {
34
+ code: 'BAD_USER_INPUT',
35
+ argumentName: 'id',
36
+ },
37
+ });
38
+ }
39
+ const referencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, args.data);
40
+ const referencedEntryUpdates = [];
41
+ for (const referencedEntryId of referencedEntryIds) {
42
+ const referencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), referencedEntryId);
43
+ const newReferencedEntryIds = [
44
+ ...(referencedEntry.metadata.referencedBy ?? []),
45
+ args.id,
46
+ ].sort();
47
+ const newReferencedEntryDraft = {
48
+ ...referencedEntry,
49
+ metadata: {
50
+ ...referencedEntry.metadata,
51
+ referencedBy: newReferencedEntryIds,
52
+ },
53
+ deletion: false,
54
+ };
55
+ referencedEntryUpdates.push(newReferencedEntryDraft);
56
+ }
57
+ const newEntryDraft = {
58
+ id: args.id,
59
+ metadata: {
60
+ type: typeName,
61
+ referencedBy: [],
62
+ },
63
+ data: args.data,
64
+ deletion: false,
65
+ };
66
+ const commit = await context.gitAdapter.createCommit({
67
+ ref: context.branch,
68
+ parentSha: context.getCurrentRef(),
69
+ entries: [newEntryDraft, ...referencedEntryUpdates],
70
+ message: args.commitMessage,
71
+ });
72
+ context.setCurrentRef(commit.ref);
73
+ const newEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
74
+ return { ...newEntry.data, id: newEntry.id };
75
+ };
76
+ }
77
+ }
78
+ //# sourceMappingURL=mutation-create-resolver-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-create-resolver-generator.js","sourceRoot":"","sources":["../../../../src/graphql/resolver-generators/mutation-create-resolver-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { GraphQLError, isObjectType } from 'graphql';
2
+ export class MutationDeleteResolverGenerator {
3
+ persistence;
4
+ entryReferenceUtil;
5
+ constructor(persistence, entryReferenceUtil) {
6
+ this.persistence = persistence;
7
+ this.entryReferenceUtil = entryReferenceUtil;
8
+ }
9
+ createResolver(typeName) {
10
+ return async (source, args, context, info) => {
11
+ const entry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
12
+ if (entry.metadata.referencedBy &&
13
+ entry.metadata.referencedBy.length > 0) {
14
+ const otherIds = entry.metadata.referencedBy
15
+ .map((referenceId) => `"${referenceId}"`)
16
+ .join(', ');
17
+ throw new GraphQLError(`Entry with id "${args.id}" is referenced by other entries: [${otherIds}]`, {
18
+ extensions: {
19
+ code: 'IN_USE',
20
+ argumentName: 'id',
21
+ },
22
+ });
23
+ }
24
+ const entryType = info.schema.getType(typeName);
25
+ if (!isObjectType(entryType)) {
26
+ throw new Error('Expected to delete an ObjectType');
27
+ }
28
+ const referencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(entryType, context, null, entryType, entry.data);
29
+ const referencedEntryUpdates = [];
30
+ for (const referencedEntryId of referencedEntryIds) {
31
+ const noLongerReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), referencedEntryId);
32
+ referencedEntryUpdates.push({
33
+ ...noLongerReferencedEntry,
34
+ metadata: {
35
+ ...noLongerReferencedEntry.metadata,
36
+ referencedBy: noLongerReferencedEntry.metadata.referencedBy?.filter((entryId) => entryId !== args.id),
37
+ },
38
+ deletion: false,
39
+ });
40
+ }
41
+ const commit = await context.gitAdapter.createCommit({
42
+ ref: context.branch,
43
+ parentSha: context.getCurrentRef(),
44
+ entries: [
45
+ {
46
+ ...entry,
47
+ deletion: true,
48
+ },
49
+ ...referencedEntryUpdates,
50
+ ],
51
+ message: args.commitMessage,
52
+ });
53
+ context.setCurrentRef(commit.ref);
54
+ return args.id;
55
+ };
56
+ }
57
+ }
58
+ //# sourceMappingURL=mutation-delete-resolver-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation-delete-resolver-generator.js","sourceRoot":"","sources":["../../../../src/graphql/resolver-generators/mutation-delete-resolver-generator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAwB,YAAY,EAAE,MAAM,SAAS,CAAA;AAE1E,MAAM,OAAO,+BAA+B;IAEvB;IACA;IAFnB,YACmB,WAA+B,EAC/B,kBAAsC;QADtC,gBAAW,GAAX,WAAW,CAAoB;QAC/B,uBAAkB,GAAlB,kBAAkB,CAAoB;IACtD,CAAC;IAEG,cAAc,CACnB,QAAgB;QAEhB,OAAO,KAAK,EACV,MAAM,EACN,IAAI,EACJ,OAAsB,EACtB,IAAI,EACgB,EAAE;YACtB,MAAM,KAAK,GAAU,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CACtD,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,QAAQ,EACR,IAAI,CAAC,EAAE,CACR,CAAA;YAED,IACE,KAAK,CAAC,QAAQ,CAAC,YAAY;gBAC3B,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EACtC,CAAC;gBACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY;qBACzC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,WAAW,GAAG,CAAC;qBACxC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACb,MAAM,IAAI,YAAY,CACpB,kBAAkB,IAAI,CAAC,EAAE,sCAAsC,QAAQ,GAAG,EAC1E;oBACE,UAAU,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,YAAY,EAAE,IAAI;qBACnB;iBACF,CACF,CAAA;YACH,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC/C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;YACrD,CAAC;YAED,MAAM,kBAAkB,GACtB,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CACjD,SAAS,EACT,OAAO,EACP,IAAI,EACJ,SAAS,EACT,KAAK,CAAC,IAAI,CACX,CAAA;YACH,MAAM,sBAAsB,GAAiB,EAAE,CAAA;YAC/C,KAAK,MAAM,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;gBACnD,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC7D,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,aAAa,EAAE,EACvB,iBAAiB,CAClB,CAAA;gBACD,sBAAsB,CAAC,IAAI,CAAC;oBAC1B,GAAG,uBAAuB;oBAC1B,QAAQ,EAAE;wBACR,GAAG,uBAAuB,CAAC,QAAQ;wBACnC,YAAY,EAAE,uBAAuB,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CACjE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CACjC;qBACF;oBACD,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;gBACnD,GAAG,EAAE,OAAO,CAAC,MAAM;gBACnB,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE;gBAClC,OAAO,EAAE;oBACP;wBACE,GAAG,KAAK;wBACR,QAAQ,EAAE,IAAI;qBACf;oBACD,GAAG,sBAAsB;iBAC1B;gBACD,OAAO,EAAE,IAAI,CAAC,aAAa;aAC5B,CAAC,CAAA;YACF,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAEjC,OAAO,IAAI,CAAC,EAAE,CAAA;QAChB,CAAC,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,67 @@
1
+ import { isObjectType } from 'graphql';
2
+ export class MutationUpdateResolverGenerator {
3
+ persistence;
4
+ entryReferenceUtil;
5
+ constructor(persistence, entryReferenceUtil) {
6
+ this.persistence = persistence;
7
+ this.entryReferenceUtil = entryReferenceUtil;
8
+ }
9
+ createResolver(typeName) {
10
+ return async (source, args, context, info) => {
11
+ if (!isObjectType(info.returnType)) {
12
+ throw new Error('Expected to update an ObjectType');
13
+ }
14
+ const existingEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
15
+ const existingReferencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, existingEntry.data);
16
+ const mergedData = this.mergeData(existingEntry.data ?? null, args.data);
17
+ const updatedReferencedEntryIds = await this.entryReferenceUtil.getReferencedEntryIds(info.returnType, context, null, info.returnType, mergedData);
18
+ const noLongerReferencedIds = existingReferencedEntryIds.filter((entryId) => !updatedReferencedEntryIds.includes(entryId));
19
+ const newlyReferencedIds = updatedReferencedEntryIds.filter((entryId) => !existingReferencedEntryIds.includes(entryId));
20
+ const referencedEntryUpdates = [];
21
+ for (const noLongerReferencedEntryId of noLongerReferencedIds) {
22
+ const noLongerReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), noLongerReferencedEntryId);
23
+ referencedEntryUpdates.push({
24
+ ...noLongerReferencedEntry,
25
+ metadata: {
26
+ ...noLongerReferencedEntry.metadata,
27
+ referencedBy: noLongerReferencedEntry.metadata.referencedBy?.filter((entryId) => entryId !== args.id),
28
+ },
29
+ deletion: false,
30
+ });
31
+ }
32
+ for (const newlyReferencedEntryId of newlyReferencedIds) {
33
+ const newlyReferencedEntry = await this.persistence.findById(context.gitAdapter, context.getCurrentRef(), newlyReferencedEntryId);
34
+ const updatedReferenceList = newlyReferencedEntry.metadata.referencedBy ?? [];
35
+ updatedReferenceList.push(args.id);
36
+ updatedReferenceList.sort();
37
+ referencedEntryUpdates.push({
38
+ ...newlyReferencedEntry,
39
+ metadata: {
40
+ ...newlyReferencedEntry.metadata,
41
+ referencedBy: updatedReferenceList,
42
+ },
43
+ deletion: false,
44
+ });
45
+ }
46
+ const commit = await context.gitAdapter.createCommit({
47
+ ref: context.branch,
48
+ parentSha: context.getCurrentRef(),
49
+ entries: [
50
+ { ...existingEntry, data: mergedData, deletion: false },
51
+ ...referencedEntryUpdates,
52
+ ],
53
+ message: args.commitMessage,
54
+ });
55
+ context.setCurrentRef(commit.ref);
56
+ const updatedEntry = await this.persistence.findByTypeId(context.gitAdapter, context.getCurrentRef(), typeName, args.id);
57
+ return { ...updatedEntry.data, id: updatedEntry.id };
58
+ };
59
+ }
60
+ mergeData(existingEntryData, updateData) {
61
+ return {
62
+ ...existingEntryData,
63
+ ...updateData,
64
+ };
65
+ }
66
+ }
67
+ //# 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,55 @@
1
+ import { isListType, isNonNullType, isObjectType, isUnionType, } from 'graphql';
2
+ export class ObjectTypeFieldDefaultValueResolverGenerator {
3
+ fieldDefaultValueResolver;
4
+ constructor(fieldDefaultValueResolver) {
5
+ this.fieldDefaultValueResolver = fieldDefaultValueResolver;
6
+ }
7
+ createResolver(schema) {
8
+ const resolvers = {};
9
+ for (const typeName of Object.keys(schema.getTypeMap())) {
10
+ const type = schema.getType(typeName);
11
+ if (!isObjectType(type) || type.name.startsWith('__')) {
12
+ continue;
13
+ }
14
+ const objectType = type;
15
+ const fieldsForCustomDefaultValueResolver = this.getFieldsForCustomDefaultValueResolver(objectType);
16
+ const fieldResolvers = {};
17
+ for (const field of fieldsForCustomDefaultValueResolver) {
18
+ fieldResolvers[field.name] = (obj, args, context, info) => this.fieldDefaultValueResolver.resolve(field.name in obj ? obj[field.name] : undefined, args, {
19
+ gitAdapter: context.gitAdapter,
20
+ getCurrentRef: context.getCurrentRef,
21
+ }, info);
22
+ }
23
+ if (Object.keys(fieldResolvers).length > 0) {
24
+ resolvers[typeName] = fieldResolvers;
25
+ }
26
+ }
27
+ return resolvers;
28
+ }
29
+ getFieldsForCustomDefaultValueResolver(objectType) {
30
+ const fields = [];
31
+ for (const fieldsKey in objectType.getFields()) {
32
+ const field = objectType.getFields()[fieldsKey];
33
+ if (this.requiresCustomDefaultValueResolver(field.type)) {
34
+ fields.push(field);
35
+ }
36
+ }
37
+ return fields;
38
+ }
39
+ requiresCustomDefaultValueResolver(type) {
40
+ if (isNonNullType(type)) {
41
+ return this.requiresCustomDefaultValueResolver(type.ofType);
42
+ }
43
+ else if (isListType(type)) {
44
+ return true;
45
+ }
46
+ else if (isUnionType(type)) {
47
+ return true;
48
+ }
49
+ else if (isObjectType(type)) {
50
+ return true;
51
+ }
52
+ return false;
53
+ }
54
+ }
55
+ //# sourceMappingURL=object-type-field-default-value-resolver-generator.js.map