@commitspark/graphql-api 0.90.0 → 1.0.0-beta.2

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 (342) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +8 -9
  3. package/dist/cjs/client.js +65 -0
  4. package/dist/cjs/client.js.map +1 -0
  5. package/dist/cjs/graphql/{apollo-config-factory.service.js → apollo-config-factory.js} +12 -17
  6. package/dist/cjs/graphql/apollo-config-factory.js.map +1 -0
  7. package/dist/cjs/graphql/errors.js +32 -0
  8. package/dist/cjs/graphql/errors.js.map +1 -0
  9. package/dist/cjs/graphql/input-type-generator.js +94 -0
  10. package/dist/cjs/graphql/input-type-generator.js.map +1 -0
  11. package/dist/cjs/graphql/queries-mutations-generator.js +70 -0
  12. package/dist/cjs/graphql/queries-mutations-generator.js.map +1 -0
  13. package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js +26 -0
  14. package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -0
  15. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js +93 -0
  16. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -0
  17. package/dist/cjs/graphql/{field-resolver/fieldResolver.js → resolvers/field-resolvers/types.js} +1 -1
  18. package/dist/cjs/graphql/resolvers/field-resolvers/types.js.map +1 -0
  19. package/dist/cjs/graphql/resolvers/field-resolvers/union-value-resolver.js +25 -0
  20. package/dist/cjs/graphql/resolvers/field-resolvers/union-value-resolver.js.map +1 -0
  21. package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js +53 -0
  22. package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -0
  23. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +74 -0
  24. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -0
  25. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +52 -0
  26. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -0
  27. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +57 -0
  28. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -0
  29. package/dist/cjs/graphql/{resolver-generators/query-type-by-id-resolver-generator.js → resolvers/query-mutation-resolvers/query-by-id-resolver.js} +8 -13
  30. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js.map +1 -0
  31. package/dist/cjs/graphql/{resolver-generators/query-count-all-resolver-generator.js → resolvers/query-mutation-resolvers/query-every-resolver.js} +10 -15
  32. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js.map +1 -0
  33. package/dist/cjs/graphql/{resolver-generators/query-by-id-resolver-generator.js → resolvers/query-mutation-resolvers/query-type-by-id-resolver.js} +7 -14
  34. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js.map +1 -0
  35. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js +27 -0
  36. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js.map +1 -0
  37. package/dist/cjs/graphql/resolvers/types.js +3 -0
  38. package/dist/cjs/graphql/resolvers/types.js.map +1 -0
  39. package/dist/cjs/graphql/schema-analyzer.js +38 -0
  40. package/dist/cjs/graphql/schema-analyzer.js.map +1 -0
  41. package/dist/cjs/graphql/schema-generator.js +100 -0
  42. package/dist/cjs/graphql/schema-generator.js.map +1 -0
  43. package/dist/cjs/graphql/schema-root-type-generator.js +32 -0
  44. package/dist/cjs/graphql/schema-root-type-generator.js.map +1 -0
  45. package/dist/cjs/graphql/schema-utils/entry-reference-util.js +115 -113
  46. package/dist/cjs/graphql/schema-utils/entry-reference-util.js.map +1 -1
  47. package/dist/cjs/graphql/schema-utils/entry-type-util.js +24 -26
  48. package/dist/cjs/graphql/schema-utils/entry-type-util.js.map +1 -1
  49. package/dist/cjs/graphql/schema-utils/union-type-util.js +19 -16
  50. package/dist/cjs/graphql/schema-utils/union-type-util.js.map +1 -1
  51. package/dist/cjs/graphql/schema-validator.js +23 -26
  52. package/dist/cjs/graphql/schema-validator.js.map +1 -1
  53. package/dist/cjs/index.js +10 -7
  54. package/dist/cjs/index.js.map +1 -1
  55. package/dist/cjs/persistence/persistence.js +63 -0
  56. package/dist/cjs/persistence/persistence.js.map +1 -0
  57. package/dist/esm/client.js +53 -0
  58. package/dist/esm/client.js.map +1 -0
  59. package/dist/esm/graphql/apollo-config-factory.js +12 -0
  60. package/dist/esm/graphql/apollo-config-factory.js.map +1 -0
  61. package/dist/esm/graphql/errors.js +28 -0
  62. package/dist/esm/graphql/errors.js.map +1 -0
  63. package/dist/esm/graphql/input-type-generator.js +89 -0
  64. package/dist/esm/graphql/input-type-generator.js.map +1 -0
  65. package/dist/esm/graphql/queries-mutations-generator.js +66 -0
  66. package/dist/esm/graphql/queries-mutations-generator.js.map +1 -0
  67. package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js +13 -0
  68. package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -0
  69. package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js +80 -0
  70. package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -0
  71. package/dist/esm/graphql/resolvers/field-resolvers/types.js +2 -0
  72. package/dist/esm/graphql/resolvers/field-resolvers/types.js.map +1 -0
  73. package/dist/esm/graphql/resolvers/field-resolvers/union-value-resolver.js +15 -0
  74. package/dist/esm/graphql/resolvers/field-resolvers/union-value-resolver.js.map +1 -0
  75. package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js +50 -0
  76. package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -0
  77. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +67 -0
  78. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -0
  79. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +48 -0
  80. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -0
  81. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +60 -0
  82. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -0
  83. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js +6 -0
  84. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js.map +1 -0
  85. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js +8 -0
  86. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-every-resolver.js.map +1 -0
  87. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js +5 -0
  88. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js.map +1 -0
  89. package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js +14 -0
  90. package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js.map +1 -0
  91. package/dist/esm/graphql/resolvers/types.js +2 -0
  92. package/dist/esm/graphql/resolvers/types.js.map +1 -0
  93. package/dist/esm/graphql/schema-analyzer.js +34 -0
  94. package/dist/esm/graphql/schema-analyzer.js.map +1 -0
  95. package/dist/esm/graphql/schema-generator.js +94 -0
  96. package/dist/esm/graphql/schema-generator.js.map +1 -0
  97. package/dist/esm/graphql/schema-root-type-generator.js +29 -0
  98. package/dist/esm/graphql/schema-root-type-generator.js.map +1 -0
  99. package/dist/esm/graphql/schema-utils/entry-reference-util.js +108 -108
  100. package/dist/esm/graphql/schema-utils/entry-reference-util.js.map +1 -1
  101. package/dist/esm/graphql/schema-utils/entry-type-util.js +20 -23
  102. package/dist/esm/graphql/schema-utils/entry-type-util.js.map +1 -1
  103. package/dist/esm/graphql/schema-utils/union-type-util.js +17 -14
  104. package/dist/esm/graphql/schema-utils/union-type-util.js.map +1 -1
  105. package/dist/esm/graphql/schema-validator.js +18 -20
  106. package/dist/esm/graphql/schema-validator.js.map +1 -1
  107. package/dist/esm/index.js +8 -5
  108. package/dist/esm/index.js.map +1 -1
  109. package/dist/esm/persistence/persistence.js +40 -0
  110. package/dist/esm/persistence/persistence.js.map +1 -0
  111. package/dist/tsconfig.build.cjs.tsbuildinfo +1 -1
  112. package/dist/tsconfig.build.esm.tsbuildinfo +1 -1
  113. package/dist/tsconfig.build.types.tsbuildinfo +1 -1
  114. package/dist/types/client.d.ts +27 -0
  115. package/dist/types/client.d.ts.map +1 -0
  116. package/dist/types/graphql/apollo-config-factory.d.ts +4 -0
  117. package/dist/types/graphql/apollo-config-factory.d.ts.map +1 -0
  118. package/dist/types/graphql/errors.d.ts +20 -0
  119. package/dist/types/graphql/errors.d.ts.map +1 -0
  120. package/dist/types/graphql/input-type-generator.d.ts +6 -0
  121. package/dist/types/graphql/input-type-generator.d.ts.map +1 -0
  122. package/dist/types/graphql/queries-mutations-generator.d.ts +18 -0
  123. package/dist/types/graphql/queries-mutations-generator.d.ts.map +1 -0
  124. package/dist/types/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts +3 -0
  125. package/dist/types/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts.map +1 -0
  126. package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts +3 -0
  127. package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts.map +1 -0
  128. package/dist/types/graphql/resolvers/field-resolvers/types.d.ts +12 -0
  129. package/dist/types/graphql/resolvers/field-resolvers/types.d.ts.map +1 -0
  130. package/dist/types/graphql/resolvers/field-resolvers/union-value-resolver.d.ts +3 -0
  131. package/dist/types/graphql/resolvers/field-resolvers/union-value-resolver.d.ts.map +1 -0
  132. package/dist/types/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts +8 -0
  133. package/dist/types/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts.map +1 -0
  134. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts +5 -0
  135. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts.map +1 -0
  136. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts +5 -0
  137. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts.map +1 -0
  138. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts +5 -0
  139. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts.map +1 -0
  140. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts +5 -0
  141. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts.map +1 -0
  142. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts +5 -0
  143. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-every-resolver.d.ts.map +1 -0
  144. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts +4 -0
  145. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts.map +1 -0
  146. package/dist/types/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts +4 -0
  147. package/dist/types/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts.map +1 -0
  148. package/dist/types/graphql/resolvers/types.d.ts +8 -0
  149. package/dist/types/graphql/resolvers/types.d.ts.map +1 -0
  150. package/dist/types/graphql/{schema-analyzer.service.d.ts → schema-analyzer.d.ts} +3 -5
  151. package/dist/types/graphql/schema-analyzer.d.ts.map +1 -0
  152. package/dist/types/graphql/schema-generator.d.ts +4 -0
  153. package/dist/types/graphql/schema-generator.d.ts.map +1 -0
  154. package/dist/types/graphql/schema-root-type-generator.d.ts +3 -0
  155. package/dist/types/graphql/schema-root-type-generator.d.ts.map +1 -0
  156. package/dist/types/graphql/schema-utils/entry-reference-util.d.ts +2 -13
  157. package/dist/types/graphql/schema-utils/entry-reference-util.d.ts.map +1 -1
  158. package/dist/types/graphql/schema-utils/entry-type-util.d.ts +3 -5
  159. package/dist/types/graphql/schema-utils/entry-type-util.d.ts.map +1 -1
  160. package/dist/types/graphql/schema-utils/union-type-util.d.ts +2 -4
  161. package/dist/types/graphql/schema-utils/union-type-util.d.ts.map +1 -1
  162. package/dist/types/graphql/schema-validator.d.ts +1 -4
  163. package/dist/types/graphql/schema-validator.d.ts.map +1 -1
  164. package/dist/types/index.d.ts +9 -3
  165. package/dist/types/index.d.ts.map +1 -1
  166. package/dist/types/persistence/persistence.d.ts +6 -0
  167. package/dist/types/persistence/persistence.d.ts.map +1 -0
  168. package/package.json +10 -2
  169. package/src/client.ts +114 -0
  170. package/src/graphql/apollo-config-factory.ts +17 -0
  171. package/src/graphql/errors.ts +43 -0
  172. package/src/graphql/input-type-generator.ts +126 -0
  173. package/src/graphql/queries-mutations-generator.ts +138 -0
  174. package/src/graphql/resolvers/field-resolvers/entry-reference-resolver.ts +29 -0
  175. package/src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts +125 -0
  176. package/src/graphql/{field-resolver/fieldResolver.ts → resolvers/field-resolvers/types.ts} +5 -4
  177. package/src/graphql/resolvers/field-resolvers/union-value-resolver.ts +24 -0
  178. package/src/graphql/resolvers/object-type-field-default-value-resolver-generator.ts +91 -0
  179. package/src/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.ts +116 -0
  180. package/src/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.ts +85 -0
  181. package/src/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.ts +119 -0
  182. package/src/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.ts +20 -0
  183. package/src/graphql/resolvers/query-mutation-resolvers/query-every-resolver.ts +21 -0
  184. package/src/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.ts +12 -0
  185. package/src/graphql/resolvers/query-mutation-resolvers/union-type-resolver.ts +19 -0
  186. package/src/graphql/resolvers/types.ts +14 -0
  187. package/src/graphql/schema-analyzer.ts +55 -0
  188. package/src/graphql/schema-generator.ts +166 -0
  189. package/src/graphql/schema-root-type-generator.ts +35 -0
  190. package/src/graphql/schema-utils/entry-reference-util.ts +175 -167
  191. package/src/graphql/schema-utils/entry-type-util.ts +25 -28
  192. package/src/graphql/schema-utils/union-type-util.ts +26 -15
  193. package/src/graphql/schema-validator.ts +29 -31
  194. package/src/index.ts +27 -5
  195. package/src/persistence/persistence.ts +70 -0
  196. package/dist/cjs/app/api.service.js +0 -74
  197. package/dist/cjs/app/api.service.js.map +0 -1
  198. package/dist/cjs/container.js +0 -53
  199. package/dist/cjs/container.js.map +0 -1
  200. package/dist/cjs/graphql/apollo-config-factory.service.js.map +0 -1
  201. package/dist/cjs/graphql/field-resolver/entry-reference-resolver.js +0 -26
  202. package/dist/cjs/graphql/field-resolver/entry-reference-resolver.js.map +0 -1
  203. package/dist/cjs/graphql/field-resolver/field-default-value-resolver.js +0 -73
  204. package/dist/cjs/graphql/field-resolver/field-default-value-resolver.js.map +0 -1
  205. package/dist/cjs/graphql/field-resolver/fieldResolver.js.map +0 -1
  206. package/dist/cjs/graphql/field-resolver/union-value-resolver.js +0 -21
  207. package/dist/cjs/graphql/field-resolver/union-value-resolver.js.map +0 -1
  208. package/dist/cjs/graphql/input-type-generator.service.js +0 -97
  209. package/dist/cjs/graphql/input-type-generator.service.js.map +0 -1
  210. package/dist/cjs/graphql/queries-mutations-generator.service.js +0 -82
  211. package/dist/cjs/graphql/queries-mutations-generator.service.js.map +0 -1
  212. package/dist/cjs/graphql/resolver-generators/mutation-create-resolver-generator.js +0 -83
  213. package/dist/cjs/graphql/resolver-generators/mutation-create-resolver-generator.js.map +0 -1
  214. package/dist/cjs/graphql/resolver-generators/mutation-delete-resolver-generator.js +0 -60
  215. package/dist/cjs/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +0 -1
  216. package/dist/cjs/graphql/resolver-generators/mutation-update-resolver-generator.js +0 -62
  217. package/dist/cjs/graphql/resolver-generators/mutation-update-resolver-generator.js.map +0 -1
  218. package/dist/cjs/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js +0 -58
  219. package/dist/cjs/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +0 -1
  220. package/dist/cjs/graphql/resolver-generators/query-all-resolver-generator.js +0 -27
  221. package/dist/cjs/graphql/resolver-generators/query-all-resolver-generator.js.map +0 -1
  222. package/dist/cjs/graphql/resolver-generators/query-by-id-resolver-generator.js.map +0 -1
  223. package/dist/cjs/graphql/resolver-generators/query-count-all-resolver-generator.js.map +0 -1
  224. package/dist/cjs/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +0 -1
  225. package/dist/cjs/graphql/resolver-generators/union-type-resolver-generator.js +0 -33
  226. package/dist/cjs/graphql/resolver-generators/union-type-resolver-generator.js.map +0 -1
  227. package/dist/cjs/graphql/schema-analyzer.service.js +0 -41
  228. package/dist/cjs/graphql/schema-analyzer.service.js.map +0 -1
  229. package/dist/cjs/graphql/schema-generator.service.js +0 -103
  230. package/dist/cjs/graphql/schema-generator.service.js.map +0 -1
  231. package/dist/cjs/graphql/schema-root-type-generator.service.js +0 -39
  232. package/dist/cjs/graphql/schema-root-type-generator.service.js.map +0 -1
  233. package/dist/cjs/persistence/persistence.service.js +0 -66
  234. package/dist/cjs/persistence/persistence.service.js.map +0 -1
  235. package/dist/esm/app/api.service.js +0 -61
  236. package/dist/esm/app/api.service.js.map +0 -1
  237. package/dist/esm/container.js +0 -50
  238. package/dist/esm/container.js.map +0 -1
  239. package/dist/esm/graphql/apollo-config-factory.service.js +0 -17
  240. package/dist/esm/graphql/apollo-config-factory.service.js.map +0 -1
  241. package/dist/esm/graphql/field-resolver/entry-reference-resolver.js +0 -13
  242. package/dist/esm/graphql/field-resolver/entry-reference-resolver.js.map +0 -1
  243. package/dist/esm/graphql/field-resolver/field-default-value-resolver.js +0 -73
  244. package/dist/esm/graphql/field-resolver/field-default-value-resolver.js.map +0 -1
  245. package/dist/esm/graphql/field-resolver/fieldResolver.js +0 -2
  246. package/dist/esm/graphql/field-resolver/fieldResolver.js.map +0 -1
  247. package/dist/esm/graphql/field-resolver/union-value-resolver.js +0 -22
  248. package/dist/esm/graphql/field-resolver/union-value-resolver.js.map +0 -1
  249. package/dist/esm/graphql/input-type-generator.service.js +0 -94
  250. package/dist/esm/graphql/input-type-generator.service.js.map +0 -1
  251. package/dist/esm/graphql/queries-mutations-generator.service.js +0 -85
  252. package/dist/esm/graphql/queries-mutations-generator.service.js.map +0 -1
  253. package/dist/esm/graphql/resolver-generators/mutation-create-resolver-generator.js +0 -78
  254. package/dist/esm/graphql/resolver-generators/mutation-create-resolver-generator.js.map +0 -1
  255. package/dist/esm/graphql/resolver-generators/mutation-delete-resolver-generator.js +0 -58
  256. package/dist/esm/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +0 -1
  257. package/dist/esm/graphql/resolver-generators/mutation-update-resolver-generator.js +0 -67
  258. package/dist/esm/graphql/resolver-generators/mutation-update-resolver-generator.js.map +0 -1
  259. package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js +0 -55
  260. package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +0 -1
  261. package/dist/esm/graphql/resolver-generators/query-all-resolver-generator.js +0 -15
  262. package/dist/esm/graphql/resolver-generators/query-all-resolver-generator.js.map +0 -1
  263. package/dist/esm/graphql/resolver-generators/query-by-id-resolver-generator.js +0 -13
  264. package/dist/esm/graphql/resolver-generators/query-by-id-resolver-generator.js.map +0 -1
  265. package/dist/esm/graphql/resolver-generators/query-count-all-resolver-generator.js +0 -14
  266. package/dist/esm/graphql/resolver-generators/query-count-all-resolver-generator.js.map +0 -1
  267. package/dist/esm/graphql/resolver-generators/query-type-by-id-resolver-generator.js +0 -12
  268. package/dist/esm/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +0 -1
  269. package/dist/esm/graphql/resolver-generators/union-type-resolver-generator.js +0 -22
  270. package/dist/esm/graphql/resolver-generators/union-type-resolver-generator.js.map +0 -1
  271. package/dist/esm/graphql/schema-analyzer.service.js +0 -36
  272. package/dist/esm/graphql/schema-analyzer.service.js.map +0 -1
  273. package/dist/esm/graphql/schema-generator.service.js +0 -103
  274. package/dist/esm/graphql/schema-generator.service.js.map +0 -1
  275. package/dist/esm/graphql/schema-root-type-generator.service.js +0 -35
  276. package/dist/esm/graphql/schema-root-type-generator.service.js.map +0 -1
  277. package/dist/esm/persistence/persistence.service.js +0 -45
  278. package/dist/esm/persistence/persistence.service.js.map +0 -1
  279. package/dist/types/app/api.service.d.ts +0 -34
  280. package/dist/types/app/api.service.d.ts.map +0 -1
  281. package/dist/types/container.d.ts +0 -3
  282. package/dist/types/container.d.ts.map +0 -1
  283. package/dist/types/graphql/apollo-config-factory.service.d.ts +0 -9
  284. package/dist/types/graphql/apollo-config-factory.service.d.ts.map +0 -1
  285. package/dist/types/graphql/field-resolver/entry-reference-resolver.d.ts +0 -11
  286. package/dist/types/graphql/field-resolver/entry-reference-resolver.d.ts.map +0 -1
  287. package/dist/types/graphql/field-resolver/field-default-value-resolver.d.ts +0 -15
  288. package/dist/types/graphql/field-resolver/field-default-value-resolver.d.ts.map +0 -1
  289. package/dist/types/graphql/field-resolver/fieldResolver.d.ts +0 -11
  290. package/dist/types/graphql/field-resolver/fieldResolver.d.ts.map +0 -1
  291. package/dist/types/graphql/field-resolver/union-value-resolver.d.ts +0 -11
  292. package/dist/types/graphql/field-resolver/union-value-resolver.d.ts.map +0 -1
  293. package/dist/types/graphql/input-type-generator.service.d.ts +0 -12
  294. package/dist/types/graphql/input-type-generator.service.d.ts.map +0 -1
  295. package/dist/types/graphql/queries-mutations-generator.service.d.ts +0 -39
  296. package/dist/types/graphql/queries-mutations-generator.service.d.ts.map +0 -1
  297. package/dist/types/graphql/resolver-generators/mutation-create-resolver-generator.d.ts +0 -12
  298. package/dist/types/graphql/resolver-generators/mutation-create-resolver-generator.d.ts.map +0 -1
  299. package/dist/types/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts +0 -12
  300. package/dist/types/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts.map +0 -1
  301. package/dist/types/graphql/resolver-generators/mutation-update-resolver-generator.d.ts +0 -13
  302. package/dist/types/graphql/resolver-generators/mutation-update-resolver-generator.d.ts.map +0 -1
  303. package/dist/types/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts +0 -13
  304. package/dist/types/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts.map +0 -1
  305. package/dist/types/graphql/resolver-generators/query-all-resolver-generator.d.ts +0 -10
  306. package/dist/types/graphql/resolver-generators/query-all-resolver-generator.d.ts.map +0 -1
  307. package/dist/types/graphql/resolver-generators/query-by-id-resolver-generator.d.ts +0 -10
  308. package/dist/types/graphql/resolver-generators/query-by-id-resolver-generator.d.ts.map +0 -1
  309. package/dist/types/graphql/resolver-generators/query-count-all-resolver-generator.d.ts +0 -10
  310. package/dist/types/graphql/resolver-generators/query-count-all-resolver-generator.d.ts.map +0 -1
  311. package/dist/types/graphql/resolver-generators/query-type-by-id-resolver-generator.d.ts +0 -9
  312. package/dist/types/graphql/resolver-generators/query-type-by-id-resolver-generator.d.ts.map +0 -1
  313. package/dist/types/graphql/resolver-generators/union-type-resolver-generator.d.ts +0 -11
  314. package/dist/types/graphql/resolver-generators/union-type-resolver-generator.d.ts.map +0 -1
  315. package/dist/types/graphql/schema-analyzer.service.d.ts.map +0 -1
  316. package/dist/types/graphql/schema-generator.service.d.ts +0 -21
  317. package/dist/types/graphql/schema-generator.service.d.ts.map +0 -1
  318. package/dist/types/graphql/schema-root-type-generator.service.d.ts +0 -5
  319. package/dist/types/graphql/schema-root-type-generator.service.d.ts.map +0 -1
  320. package/dist/types/persistence/persistence.service.d.ts +0 -8
  321. package/dist/types/persistence/persistence.service.d.ts.map +0 -1
  322. package/src/app/api.service.ts +0 -121
  323. package/src/container.ts +0 -106
  324. package/src/graphql/apollo-config-factory.service.ts +0 -21
  325. package/src/graphql/field-resolver/entry-reference-resolver.ts +0 -47
  326. package/src/graphql/field-resolver/field-default-value-resolver.ts +0 -152
  327. package/src/graphql/field-resolver/union-value-resolver.ts +0 -46
  328. package/src/graphql/input-type-generator.service.ts +0 -127
  329. package/src/graphql/queries-mutations-generator.service.ts +0 -154
  330. package/src/graphql/resolver-generators/mutation-create-resolver-generator.ts +0 -120
  331. package/src/graphql/resolver-generators/mutation-delete-resolver-generator.ts +0 -96
  332. package/src/graphql/resolver-generators/mutation-update-resolver-generator.ts +0 -127
  333. package/src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts +0 -117
  334. package/src/graphql/resolver-generators/query-all-resolver-generator.ts +0 -29
  335. package/src/graphql/resolver-generators/query-by-id-resolver-generator.ts +0 -23
  336. package/src/graphql/resolver-generators/query-count-all-resolver-generator.ts +0 -29
  337. package/src/graphql/resolver-generators/query-type-by-id-resolver-generator.ts +0 -27
  338. package/src/graphql/resolver-generators/union-type-resolver-generator.ts +0 -38
  339. package/src/graphql/schema-analyzer.service.ts +0 -57
  340. package/src/graphql/schema-generator.service.ts +0 -178
  341. package/src/graphql/schema-root-type-generator.service.ts +0 -44
  342. package/src/persistence/persistence.service.ts +0 -74
@@ -1,152 +0,0 @@
1
- import {
2
- FieldResolver,
3
- FieldResolverContext,
4
- ResolvedEntryData,
5
- } from './fieldResolver'
6
- import { EntryData } from '@commitspark/git-adapter'
7
- import {
8
- GraphQLFieldResolver,
9
- GraphQLNonNull,
10
- GraphQLOutputType,
11
- GraphQLResolveInfo,
12
- GraphQLUnionType,
13
- isListType,
14
- isNonNullType,
15
- isObjectType,
16
- isUnionType,
17
- } from 'graphql'
18
- import { EntryTypeUtil } from '../schema-utils/entry-type-util'
19
- import { UnionValueResolver } from './union-value-resolver'
20
- import { EntryReferenceResolver } from './entry-reference-resolver'
21
-
22
- export class FieldDefaultValueResolver implements FieldResolver<any> {
23
- resolve: GraphQLFieldResolver<
24
- any,
25
- FieldResolverContext,
26
- any,
27
- Promise<ResolvedEntryData<EntryData | EntryData[] | null>>
28
- >
29
-
30
- constructor(
31
- private readonly entryTypeUtil: EntryTypeUtil,
32
- private readonly unionValueResolver: UnionValueResolver,
33
- private readonly entryReferenceResolver: EntryReferenceResolver,
34
- ) {
35
- this.resolve = (
36
- fieldValue,
37
- args,
38
- context,
39
- info,
40
- ): Promise<ResolvedEntryData<EntryData | EntryData[] | null>> =>
41
- this.resolveFieldValue(
42
- fieldValue,
43
- args,
44
- context,
45
- info,
46
- info.returnType,
47
- false,
48
- )
49
- }
50
-
51
- private resolveFieldValue(
52
- fieldValue: any,
53
- args: any,
54
- context: FieldResolverContext,
55
- info: GraphQLResolveInfo,
56
- currentType: GraphQLOutputType,
57
- hasNonNullParent: boolean,
58
- ): Promise<ResolvedEntryData<EntryData | EntryData[] | null>> {
59
- if (isNonNullType(currentType)) {
60
- return this.resolveFieldValue(
61
- fieldValue,
62
- args,
63
- {
64
- gitAdapter: context.gitAdapter,
65
- getCurrentRef: context.getCurrentRef,
66
- },
67
- info,
68
- currentType.ofType,
69
- true,
70
- )
71
- } else if (isListType(currentType)) {
72
- if (fieldValue === undefined || fieldValue === null) {
73
- if (hasNonNullParent) {
74
- return new Promise((resolve) => resolve([]))
75
- } else {
76
- return new Promise((resolve) => resolve(null))
77
- }
78
- }
79
-
80
- if (!Array.isArray(fieldValue)) {
81
- throw new Error(
82
- `Expected array while resolving value for field "${info.fieldName}".`,
83
- )
84
- }
85
-
86
- const resultPromises = []
87
- for (const item of fieldValue) {
88
- const resultPromise = this.resolveFieldValue(
89
- item,
90
- args,
91
- {
92
- gitAdapter: context.gitAdapter,
93
- getCurrentRef: context.getCurrentRef,
94
- },
95
- info,
96
- currentType.ofType,
97
- hasNonNullParent,
98
- )
99
- resultPromises.push(resultPromise)
100
- }
101
- return Promise.all(resultPromises)
102
- } else if (isUnionType(currentType)) {
103
- if (fieldValue === undefined || fieldValue === null) {
104
- if (hasNonNullParent) {
105
- throw new Error(
106
- `Cannot generate a default value for NonNull field "${
107
- info.parentType.name
108
- }.${info.fieldName}" because it is a union field of type "${
109
- (info.returnType as GraphQLNonNull<GraphQLUnionType>).ofType.name
110
- }".`,
111
- )
112
- } else {
113
- return new Promise((resolve) => resolve(null))
114
- }
115
- }
116
-
117
- if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(currentType)) {
118
- return this.entryReferenceResolver.resolve(
119
- fieldValue,
120
- args,
121
- context,
122
- info,
123
- )
124
- }
125
-
126
- return this.unionValueResolver.resolve(fieldValue, args, context, info)
127
- } else if (isObjectType(currentType)) {
128
- if (fieldValue === undefined || fieldValue === null) {
129
- if (hasNonNullParent) {
130
- throw new Error(
131
- `Cannot generate a default value for NonNull field "${info.fieldName}" of type "${info.parentType.name}".`,
132
- )
133
- } else {
134
- return new Promise((resolve) => resolve(null))
135
- }
136
- }
137
-
138
- if (this.entryTypeUtil.hasEntryDirective(currentType)) {
139
- return this.entryReferenceResolver.resolve(
140
- fieldValue,
141
- args,
142
- context,
143
- info,
144
- )
145
- }
146
-
147
- return fieldValue
148
- }
149
-
150
- return fieldValue
151
- }
152
- }
@@ -1,46 +0,0 @@
1
- import { GraphQLFieldResolver } from 'graphql/type/definition'
2
- import { EntryData } from '@commitspark/git-adapter'
3
- import {
4
- FieldResolver,
5
- FieldResolverContext,
6
- ResolvedEntryData,
7
- } from './fieldResolver'
8
- import { UnionTypeUtil } from '../schema-utils/union-type-util'
9
-
10
- export class UnionValueResolver implements FieldResolver<any> {
11
- resolve: GraphQLFieldResolver<
12
- any,
13
- FieldResolverContext,
14
- any,
15
- Promise<ResolvedEntryData<EntryData | EntryData[] | null>>
16
- >
17
-
18
- constructor(private readonly unionTypeUtil: UnionTypeUtil) {
19
- this.resolve = (
20
- fieldValue,
21
- args,
22
- context,
23
- info,
24
- ): Promise<ResolvedEntryData<EntryData | EntryData[] | null>> =>
25
- this.resolveFieldValue(fieldValue)
26
- }
27
-
28
- private resolveFieldValue(
29
- fieldValue: any,
30
- ): Promise<ResolvedEntryData<EntryData | EntryData[] | null>> {
31
- const typeName =
32
- this.unionTypeUtil.getUnionTypeNameFromFieldValue(fieldValue)
33
- const unionValue = this.unionTypeUtil.getUnionValue(fieldValue)
34
-
35
- // We replace the helper type name field that holds our field's actual data
36
- // with this actual data and add a `__typename` field, so that our output data
37
- // corresponds to the output schema provided by the user (i.e. there is
38
- // no additional nesting level there).
39
- const res: EntryData = {
40
- ...unionValue,
41
- __typename: typeName,
42
- }
43
-
44
- return new Promise((resolve) => resolve(res))
45
- }
46
- }
@@ -1,127 +0,0 @@
1
- import {
2
- GraphQLEnumType,
3
- GraphQLInputObjectType,
4
- GraphQLInterfaceType,
5
- GraphQLNullableType,
6
- GraphQLObjectType,
7
- GraphQLScalarType,
8
- GraphQLUnionType,
9
- isInterfaceType,
10
- isListType,
11
- isNonNullType,
12
- isObjectType,
13
- isScalarType,
14
- isUnionType,
15
- } from 'graphql'
16
- import { ISchemaAnalyzerResult } from './schema-analyzer.service'
17
- import { EntryTypeUtil } from './schema-utils/entry-type-util'
18
-
19
- export class InputTypeGeneratorService {
20
- constructor(private readonly entryTypeUtil: EntryTypeUtil) {}
21
-
22
- public generateFieldInputTypeString(type: GraphQLNullableType): string {
23
- if (isListType(type)) {
24
- return `[${this.generateFieldInputTypeString(type.ofType)}]`
25
- } else if (isNonNullType(type)) {
26
- return `${this.generateFieldInputTypeString(type.ofType)}!`
27
- } else if (isObjectType(type)) {
28
- if (this.entryTypeUtil.hasEntryDirective(type)) {
29
- return `${type.name}IdInput`
30
- } else {
31
- return `${type.name}Input`
32
- }
33
- } else if (isInterfaceType(type)) {
34
- // TODO
35
- return ''
36
- } else if (isUnionType(type)) {
37
- if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(type)) {
38
- return `${type.name}IdInput`
39
- } else {
40
- return `${type.name}Input`
41
- }
42
- } else {
43
- return (
44
- type as GraphQLScalarType | GraphQLEnumType | GraphQLInputObjectType
45
- ).name
46
- }
47
- }
48
-
49
- public generateIdInputTypeStrings(
50
- schemaAnalyzerResult: ISchemaAnalyzerResult,
51
- ): string[] {
52
- let typesWithIdField: (
53
- | GraphQLObjectType
54
- | GraphQLInterfaceType
55
- | GraphQLUnionType
56
- )[] = []
57
- typesWithIdField = typesWithIdField.concat(
58
- schemaAnalyzerResult.entryDirectiveTypes,
59
- )
60
- typesWithIdField = typesWithIdField.concat(
61
- schemaAnalyzerResult.interfaceTypes,
62
- )
63
- typesWithIdField = typesWithIdField.concat(schemaAnalyzerResult.unionTypes)
64
-
65
- return typesWithIdField.map((type): string => {
66
- return `input ${type.name}IdInput {\n` + ' id: ID!\n' + '}\n'
67
- })
68
- }
69
-
70
- public generateObjectInputTypeStrings(
71
- objectTypes: GraphQLObjectType[],
72
- ): string[] {
73
- return objectTypes.map((objectType): string => {
74
- const name = objectType.name
75
- const inputTypeName = `${name}Input`
76
- let inputType = `input ${inputTypeName} {\n`
77
- let inputTypeFieldStrings = ''
78
- for (const fieldsKey in objectType.getFields()) {
79
- const field = objectType.getFields()[fieldsKey]
80
- if (
81
- (isNonNullType(field.type) &&
82
- isScalarType(field.type.ofType) &&
83
- field.type.ofType.name === 'ID') ||
84
- (isScalarType(field.type) && field.type.name === 'ID')
85
- ) {
86
- continue
87
- }
88
- const inputTypeString = this.generateFieldInputTypeString(field.type)
89
- inputTypeFieldStrings += ` ${field.name}: ${inputTypeString}\n`
90
- }
91
-
92
- if (inputTypeFieldStrings.length > 0) {
93
- inputType += `${inputTypeFieldStrings}`
94
- } else {
95
- // generate a dummy field as empty input types are not permitted
96
- inputType += ' _: Boolean\n'
97
- }
98
- inputType += '}\n'
99
-
100
- return inputType
101
- })
102
- }
103
-
104
- public generateUnionInputTypeStrings(
105
- unionTypes: GraphQLUnionType[],
106
- ): string[] {
107
- const typeStrings = unionTypes.map((unionType): string => {
108
- if (this.entryTypeUtil.buildsOnTypeWithEntryDirective(unionType)) {
109
- return ''
110
- }
111
-
112
- // see https://github.com/graphql/graphql-spec/pull/825
113
- let unionInputType = `input ${unionType.name}Input @oneOf {\n`
114
- for (const innerType of unionType.getTypes()) {
115
- unionInputType += ` ${innerType.name}: ${innerType.name}Input\n`
116
- }
117
- unionInputType += '}\n'
118
- return unionInputType
119
- })
120
-
121
- if (typeStrings.join('').length > 0) {
122
- typeStrings.push('directive @oneOf on INPUT_OBJECT\n')
123
- }
124
-
125
- return typeStrings
126
- }
127
- }
@@ -1,154 +0,0 @@
1
- import { EntryData } from '@commitspark/git-adapter'
2
- import { ApolloContext } from '../app/api.service'
3
- import { GraphQLFieldResolver, GraphQLObjectType } from 'graphql'
4
- import { QueryAllResolverGenerator } from './resolver-generators/query-all-resolver-generator'
5
- import { QueryByIdResolverGenerator } from './resolver-generators/query-by-id-resolver-generator'
6
- import { MutationCreateResolverGenerator } from './resolver-generators/mutation-create-resolver-generator'
7
- import { MutationUpdateResolverGenerator } from './resolver-generators/mutation-update-resolver-generator'
8
- import { MutationDeleteResolverGenerator } from './resolver-generators/mutation-delete-resolver-generator'
9
- import { QueryCountAllResolverGenerator } from './resolver-generators/query-count-all-resolver-generator'
10
- import { QueryTypeByIdResolverGenerator } from './resolver-generators/query-type-by-id-resolver-generator'
11
-
12
- export class QueriesMutationsGeneratorService {
13
- constructor(
14
- private readonly queryAllResolverGenerator: QueryAllResolverGenerator,
15
- private readonly queryByIdResolverGenerator: QueryByIdResolverGenerator,
16
- private readonly queryCountAllResolverGenerator: QueryCountAllResolverGenerator,
17
- private readonly queryTypeByIdResolverGenerator: QueryTypeByIdResolverGenerator,
18
- private readonly mutationCreateResolverGenerator: MutationCreateResolverGenerator,
19
- private readonly mutationUpdateResolverGenerator: MutationUpdateResolverGenerator,
20
- private readonly mutationDeleteResolverGenerator: MutationDeleteResolverGenerator,
21
- ) {}
22
-
23
- public generateFromAnalyzedSchema(
24
- entryDirectiveTypes: GraphQLObjectType[],
25
- ): IGeneratedSchema[] {
26
- return entryDirectiveTypes.map((objectType): IGeneratedSchema => {
27
- const typeName = objectType.name
28
-
29
- const queryAllName = `all${typeName}s`
30
- const queryAllString = `${queryAllName}: [${objectType.name}!]`
31
- const queryAllResolver: GraphQLFieldResolver<
32
- any,
33
- ApolloContext,
34
- any,
35
- Promise<EntryData[]>
36
- > = this.queryAllResolverGenerator.createResolver(typeName)
37
-
38
- const queryAllMetaName = `_${queryAllName}Meta`
39
- const queryAllMetaString = `${queryAllMetaName}: ListMetadata`
40
- const queryAllMetaResolver: GraphQLFieldResolver<
41
- any,
42
- ApolloContext,
43
- any,
44
- Promise<TypeCount>
45
- > = this.queryCountAllResolverGenerator.createResolver(typeName)
46
-
47
- const queryByIdName = typeName
48
- const queryByIdString = `${queryByIdName}(id: ID!): ${objectType.name}`
49
- const queryByIdResolver: GraphQLFieldResolver<
50
- any,
51
- ApolloContext,
52
- any,
53
- Promise<EntryData>
54
- > = this.queryByIdResolverGenerator.createResolver(typeName)
55
-
56
- const inputTypeName = `${typeName}Input`
57
- const createMutationName = `create${typeName}`
58
- const createMutationString = `${createMutationName}(id: ID!, data: ${inputTypeName}!, commitMessage: String): ${typeName}`
59
- const createMutationResolver: GraphQLFieldResolver<
60
- any,
61
- ApolloContext,
62
- any,
63
- Promise<EntryData>
64
- > = this.mutationCreateResolverGenerator.createResolver(typeName)
65
-
66
- const updateMutationName = `update${typeName}`
67
- const updateMutationString = `${updateMutationName}(id: ID!, data: ${inputTypeName}!, commitMessage: String): ${typeName}`
68
- const updateMutationResolver: GraphQLFieldResolver<
69
- any,
70
- ApolloContext,
71
- any,
72
- Promise<EntryData>
73
- > = this.mutationUpdateResolverGenerator.createResolver(typeName)
74
-
75
- const deleteMutationName = `delete${typeName}`
76
- const deleteMutationString = `${deleteMutationName}(id: ID!, commitMessage: String): ID`
77
- const deleteMutationResolver: GraphQLFieldResolver<
78
- any,
79
- ApolloContext,
80
- any,
81
- Promise<EntryData>
82
- > = this.mutationDeleteResolverGenerator.createResolver(typeName)
83
-
84
- return {
85
- queryAll: {
86
- name: queryAllName,
87
- schemaString: queryAllString,
88
- resolver: queryAllResolver,
89
- },
90
- queryAllMeta: {
91
- name: queryAllMetaName,
92
- schemaString: queryAllMetaString,
93
- resolver: queryAllMetaResolver,
94
- },
95
- queryById: {
96
- name: queryByIdName,
97
- schemaString: queryByIdString,
98
- resolver: queryByIdResolver,
99
- },
100
- createMutation: {
101
- name: createMutationName,
102
- schemaString: createMutationString,
103
- resolver: createMutationResolver,
104
- },
105
- updateMutation: {
106
- name: updateMutationName,
107
- schemaString: updateMutationString,
108
- resolver: updateMutationResolver,
109
- },
110
- deleteMutation: {
111
- name: deleteMutationName,
112
- schemaString: deleteMutationString,
113
- resolver: deleteMutationResolver,
114
- },
115
- }
116
- })
117
- }
118
-
119
- public generateTypeNameQuery(): IGeneratedQuery<Promise<string>> {
120
- const entryTypeQueryName = '_typeName'
121
- const entryTypeQueryString = `${entryTypeQueryName}(id: ID!): String!`
122
- const entryTypeQueryResolver: GraphQLFieldResolver<
123
- any,
124
- ApolloContext,
125
- any,
126
- Promise<string>
127
- > = this.queryTypeByIdResolverGenerator.createResolver()
128
-
129
- return {
130
- name: entryTypeQueryName,
131
- schemaString: entryTypeQueryString,
132
- resolver: entryTypeQueryResolver,
133
- }
134
- }
135
- }
136
-
137
- export interface IGeneratedSchema {
138
- queryAll: IGeneratedQuery<Promise<EntryData[]>>
139
- queryAllMeta: IGeneratedQuery<Promise<TypeCount>>
140
- queryById: IGeneratedQuery<Promise<EntryData>>
141
- createMutation: IGeneratedQuery<Promise<EntryData>>
142
- updateMutation: IGeneratedQuery<Promise<EntryData>>
143
- deleteMutation: IGeneratedQuery<Promise<EntryData>>
144
- }
145
-
146
- export interface IGeneratedQuery<T> {
147
- name: string
148
- schemaString: string
149
- resolver: GraphQLFieldResolver<any, ApolloContext, any, T>
150
- }
151
-
152
- export type TypeCount = {
153
- count: number
154
- }
@@ -1,120 +0,0 @@
1
- import { ApolloContext } from '../../app/api.service'
2
- import { PersistenceService } from '../../persistence/persistence.service'
3
- import { GraphQLError, GraphQLFieldResolver, isObjectType } from 'graphql'
4
- import { EntryReferenceUtil } from '../schema-utils/entry-reference-util'
5
- import {
6
- ENTRY_ID_INVALID_CHARACTERS,
7
- EntryData,
8
- EntryDraft,
9
- } from '@commitspark/git-adapter'
10
-
11
- export class MutationCreateResolverGenerator {
12
- constructor(
13
- private readonly persistence: PersistenceService,
14
- private readonly entryReferenceUtil: EntryReferenceUtil,
15
- ) {}
16
-
17
- public createResolver(
18
- typeName: string,
19
- ): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData>> {
20
- return async (
21
- source,
22
- args,
23
- context: ApolloContext,
24
- info,
25
- ): Promise<EntryData> => {
26
- if (!isObjectType(info.returnType)) {
27
- throw new Error('Expected to create an ObjectType')
28
- }
29
-
30
- const idValidationResult = args.id.match(ENTRY_ID_INVALID_CHARACTERS)
31
- if (idValidationResult) {
32
- throw new GraphQLError(
33
- `"id" contains invalid characters "${idValidationResult.join(', ')}"`,
34
- {
35
- extensions: {
36
- code: 'BAD_USER_INPUT',
37
- argumentName: 'id',
38
- },
39
- },
40
- )
41
- }
42
-
43
- let existingEntry
44
- try {
45
- existingEntry = await this.persistence.findById(
46
- context.gitAdapter,
47
- context.getCurrentRef(),
48
- args.id,
49
- )
50
- } catch (_) {
51
- /* empty */
52
- }
53
- if (existingEntry) {
54
- throw new GraphQLError(`An entry with id "${args.id}" already exists`, {
55
- extensions: {
56
- code: 'BAD_USER_INPUT',
57
- argumentName: 'id',
58
- },
59
- })
60
- }
61
-
62
- const referencedEntryIds =
63
- await this.entryReferenceUtil.getReferencedEntryIds(
64
- info.returnType,
65
- context,
66
- null,
67
- info.returnType,
68
- args.data,
69
- )
70
-
71
- const referencedEntryUpdates: EntryDraft[] = []
72
- for (const referencedEntryId of referencedEntryIds) {
73
- const referencedEntry = await this.persistence.findById(
74
- context.gitAdapter,
75
- context.getCurrentRef(),
76
- referencedEntryId,
77
- )
78
- const newReferencedEntryIds: string[] = [
79
- ...(referencedEntry.metadata.referencedBy ?? []),
80
- args.id,
81
- ].sort()
82
- const newReferencedEntryDraft: EntryDraft = {
83
- ...referencedEntry,
84
- metadata: {
85
- ...referencedEntry.metadata,
86
- referencedBy: newReferencedEntryIds,
87
- },
88
- deletion: false,
89
- }
90
- referencedEntryUpdates.push(newReferencedEntryDraft)
91
- }
92
-
93
- const newEntryDraft: EntryDraft = {
94
- id: args.id,
95
- metadata: {
96
- type: typeName,
97
- referencedBy: [],
98
- },
99
- data: args.data,
100
- deletion: false,
101
- }
102
-
103
- const commit = await context.gitAdapter.createCommit({
104
- ref: context.branch,
105
- parentSha: context.getCurrentRef(),
106
- entries: [newEntryDraft, ...referencedEntryUpdates],
107
- message: args.commitMessage,
108
- })
109
- context.setCurrentRef(commit.ref)
110
-
111
- const newEntry = await this.persistence.findByTypeId(
112
- context.gitAdapter,
113
- context.getCurrentRef(),
114
- typeName,
115
- args.id,
116
- )
117
- return { ...newEntry.data, id: newEntry.id }
118
- }
119
- }
120
- }
@@ -1,96 +0,0 @@
1
- import { PersistenceService } from '../../persistence/persistence.service'
2
- import { ApolloContext } from '../../app/api.service'
3
- import { Entry, EntryData, EntryDraft } from '@commitspark/git-adapter'
4
- import { EntryReferenceUtil } from '../schema-utils/entry-reference-util'
5
- import { GraphQLError, GraphQLFieldResolver, isObjectType } from 'graphql'
6
-
7
- export class MutationDeleteResolverGenerator {
8
- constructor(
9
- private readonly persistence: PersistenceService,
10
- private readonly entryReferenceUtil: EntryReferenceUtil,
11
- ) {}
12
-
13
- public createResolver(
14
- typeName: string,
15
- ): GraphQLFieldResolver<any, ApolloContext, any, Promise<EntryData>> {
16
- return async (
17
- source,
18
- args,
19
- context: ApolloContext,
20
- info,
21
- ): Promise<EntryData> => {
22
- const entry: Entry = await this.persistence.findByTypeId(
23
- context.gitAdapter,
24
- context.getCurrentRef(),
25
- typeName,
26
- args.id,
27
- )
28
-
29
- if (
30
- entry.metadata.referencedBy &&
31
- entry.metadata.referencedBy.length > 0
32
- ) {
33
- const otherIds = entry.metadata.referencedBy
34
- .map((referenceId) => `"${referenceId}"`)
35
- .join(', ')
36
- throw new GraphQLError(
37
- `Entry with id "${args.id}" is referenced by other entries: [${otherIds}]`,
38
- {
39
- extensions: {
40
- code: 'IN_USE',
41
- argumentName: 'id',
42
- },
43
- },
44
- )
45
- }
46
-
47
- const entryType = info.schema.getType(typeName)
48
- if (!isObjectType(entryType)) {
49
- throw new Error('Expected to delete an ObjectType')
50
- }
51
-
52
- const referencedEntryIds =
53
- await this.entryReferenceUtil.getReferencedEntryIds(
54
- entryType,
55
- context,
56
- null,
57
- entryType,
58
- entry.data,
59
- )
60
- const referencedEntryUpdates: EntryDraft[] = []
61
- for (const referencedEntryId of referencedEntryIds) {
62
- const noLongerReferencedEntry = await this.persistence.findById(
63
- context.gitAdapter,
64
- context.getCurrentRef(),
65
- referencedEntryId,
66
- )
67
- referencedEntryUpdates.push({
68
- ...noLongerReferencedEntry,
69
- metadata: {
70
- ...noLongerReferencedEntry.metadata,
71
- referencedBy: noLongerReferencedEntry.metadata.referencedBy?.filter(
72
- (entryId) => entryId !== args.id,
73
- ),
74
- },
75
- deletion: false,
76
- })
77
- }
78
-
79
- const commit = await context.gitAdapter.createCommit({
80
- ref: context.branch,
81
- parentSha: context.getCurrentRef(),
82
- entries: [
83
- {
84
- ...entry,
85
- deletion: true,
86
- },
87
- ...referencedEntryUpdates,
88
- ],
89
- message: args.commitMessage,
90
- })
91
- context.setCurrentRef(commit.ref)
92
-
93
- return args.id
94
- }
95
- }
96
- }