@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,5 +1,4 @@
1
1
  import {
2
- GraphQLError,
3
2
  GraphQLNullableType,
4
3
  GraphQLObjectType,
5
4
  isListType,
@@ -7,185 +6,194 @@ import {
7
6
  isObjectType,
8
7
  isUnionType,
9
8
  } from 'graphql'
10
- import { ApolloContext } from '../../app/api.service'
11
- import { PersistenceService } from '../../persistence/persistence.service'
12
- import { UnionTypeUtil } from './union-type-util'
13
- import { EntryTypeUtil } from './entry-type-util'
9
+ import { ApolloContext } from '../../client'
10
+ import { getTypeById } from '../../persistence/persistence'
11
+ import {
12
+ getUnionTypeNameFromFieldValue,
13
+ getUnionValue,
14
+ } from './union-type-util'
15
+ import { hasEntryDirective, isUnionOfEntryTypes } from './entry-type-util'
16
+ import { createError, ErrorCode } from '../errors'
14
17
 
15
- export class EntryReferenceUtil {
16
- constructor(
17
- private readonly persistence: PersistenceService,
18
- private readonly entryTypeUtil: EntryTypeUtil,
19
- private readonly unionTypeUtil: UnionTypeUtil,
20
- ) {}
18
+ function isPermittedReferenceType(
19
+ referencedTypeName: string,
20
+ fieldType: GraphQLNullableType,
21
+ ): boolean {
22
+ if (isNonNullType(fieldType)) {
23
+ return isPermittedReferenceType(referencedTypeName, fieldType.ofType)
24
+ } else if (isListType(fieldType)) {
25
+ return isPermittedReferenceType(referencedTypeName, fieldType.ofType)
26
+ } else if (isUnionType(fieldType)) {
27
+ return fieldType
28
+ .getTypes()
29
+ .map((concreteType) => concreteType.name)
30
+ .includes(referencedTypeName)
31
+ } else if (isObjectType(fieldType)) {
32
+ return fieldType.name === referencedTypeName
33
+ }
34
+ return false
35
+ }
21
36
 
22
- public async getReferencedEntryIds(
23
- rootType: GraphQLObjectType,
24
- context: ApolloContext,
25
- fieldName: string | null,
26
- type: GraphQLNullableType,
27
- data: any,
28
- ): Promise<string[]> {
29
- if (isNonNullType(type)) {
30
- return this.getReferencedEntryIds(
31
- rootType,
32
- context,
33
- fieldName,
34
- type.ofType,
35
- data,
37
+ async function validateReference(
38
+ context: ApolloContext,
39
+ fieldName: string,
40
+ fieldType: GraphQLNullableType,
41
+ fieldValue: any,
42
+ ): Promise<void> {
43
+ if (isNonNullType(fieldType)) {
44
+ await validateReference(context, fieldName, fieldType.ofType, fieldValue)
45
+ return
46
+ } else if (isListType(fieldType)) {
47
+ if (!Array.isArray(fieldValue)) {
48
+ throw createError(
49
+ `Expected array while validation references for field "${fieldName}".`,
50
+ ErrorCode.SCHEMA_DATA_MISMATCH,
51
+ {
52
+ fieldName: fieldName,
53
+ fieldValue: fieldValue,
54
+ },
36
55
  )
37
- } else if (isListType(type)) {
38
- let referencedEntryIds: string[] = []
39
- for (const element of data) {
40
- referencedEntryIds = [
41
- ...referencedEntryIds,
42
- ...(await this.getReferencedEntryIds(
43
- rootType,
44
- context,
45
- fieldName,
46
- type.ofType,
47
- element,
48
- )),
49
- ]
50
- }
51
- // deduplicate
52
- referencedEntryIds = [...new Set(referencedEntryIds)]
53
- return referencedEntryIds
54
- } else if (isUnionType(type)) {
55
- if (this.entryTypeUtil.isUnionOfEntryTypes(type)) {
56
- await this.validateReference(context, '', type, data)
57
- return [data.id]
58
- }
59
-
60
- const unionTypeName =
61
- this.unionTypeUtil.getUnionTypeNameFromFieldValue(data)
62
- const unionType = type
63
- .getTypes()
64
- .find((type) => type.name === unionTypeName)
65
- if (!unionType) {
66
- throw new Error(
67
- `Type "${unionTypeName}" found in field data is not a valid type for union type "${type.name}".`,
68
- )
69
- }
70
- const unionValue = this.unionTypeUtil.getUnionValue(data)
71
- return this.getReferencedEntryIds(
72
- rootType,
56
+ }
57
+ for (const fieldListElement of fieldValue) {
58
+ await validateReference(
73
59
  context,
74
60
  fieldName,
75
- unionType,
76
- unionValue,
61
+ fieldType.ofType,
62
+ fieldListElement,
63
+ )
64
+ }
65
+ return
66
+ } else if (isUnionType(fieldType) || isObjectType(fieldType)) {
67
+ if (!('id' in fieldValue)) {
68
+ throw createError(
69
+ `Expected key "id" in data while validating reference for field "${fieldName}".`,
70
+ ErrorCode.SCHEMA_DATA_MISMATCH,
71
+ {
72
+ fieldName: fieldName,
73
+ fieldValue: fieldValue,
74
+ },
75
+ )
76
+ }
77
+ const referencedId = fieldValue.id
78
+ let referencedTypeName
79
+ try {
80
+ referencedTypeName = await getTypeById(
81
+ context.gitAdapter,
82
+ context.getCurrentRef(),
83
+ referencedId,
84
+ )
85
+ } catch (error) {
86
+ throw createError(
87
+ `Failed to resolve entry reference "${referencedId}".`,
88
+ ErrorCode.BAD_USER_INPUT,
89
+ {
90
+ fieldName: fieldName,
91
+ fieldValue: referencedId,
92
+ },
93
+ )
94
+ }
95
+ if (!isPermittedReferenceType(referencedTypeName, fieldType)) {
96
+ throw createError(
97
+ `Reference with ID "${referencedId}" points to entry of incompatible type "${referencedTypeName}".`,
98
+ ErrorCode.BAD_USER_INPUT,
99
+ {
100
+ fieldName: fieldName,
101
+ fieldValue: referencedId,
102
+ },
77
103
  )
78
- } else if (isObjectType(type)) {
79
- if (
80
- type.name !== rootType.name &&
81
- this.entryTypeUtil.hasEntryDirective(type)
82
- ) {
83
- await this.validateReference(context, fieldName ?? '', type, data)
84
- return [data.id]
85
- } else {
86
- let referencedEntryIds: string[] = []
87
- for (const [fieldsKey, field] of Object.entries(type.getFields())) {
88
- const fieldValue = data[fieldsKey] ?? undefined
89
- if (fieldValue !== undefined) {
90
- const nestedResult = await this.getReferencedEntryIds(
91
- rootType,
92
- context,
93
- fieldsKey,
94
- field.type,
95
- fieldValue,
96
- )
97
- referencedEntryIds = [...referencedEntryIds, ...nestedResult]
98
- }
99
- }
100
- // deduplicate
101
- referencedEntryIds = [...new Set(referencedEntryIds)]
102
- return referencedEntryIds
103
- }
104
104
  }
105
-
106
- return []
107
105
  }
106
+ }
108
107
 
109
- private async validateReference(
110
- context: ApolloContext,
111
- fieldName: string,
112
- fieldType: GraphQLNullableType,
113
- fieldValue: any,
114
- ): Promise<void> {
115
- if (isNonNullType(fieldType)) {
116
- await this.validateReference(
117
- context,
118
- fieldName,
119
- fieldType.ofType,
120
- fieldValue,
121
- )
122
- return
123
- } else if (isListType(fieldType)) {
124
- if (!Array.isArray(fieldValue)) {
125
- throw new Error(`Expected array value in field "${fieldName}"`)
126
- }
127
- for (const fieldListElement of fieldValue) {
128
- await this.validateReference(
108
+ export async function getReferencedEntryIds(
109
+ rootType: GraphQLObjectType,
110
+ context: ApolloContext,
111
+ fieldName: string | null,
112
+ type: GraphQLNullableType,
113
+ data: any,
114
+ ): Promise<string[]> {
115
+ if (isNonNullType(type)) {
116
+ return getReferencedEntryIds(
117
+ rootType,
118
+ context,
119
+ fieldName,
120
+ type.ofType,
121
+ data,
122
+ )
123
+ } else if (isListType(type)) {
124
+ let referencedEntryIds: string[] = []
125
+ for (const element of data) {
126
+ referencedEntryIds = [
127
+ ...referencedEntryIds,
128
+ ...(await getReferencedEntryIds(
129
+ rootType,
129
130
  context,
130
131
  fieldName,
131
- fieldType.ofType,
132
- fieldListElement,
133
- )
134
- }
135
- return
136
- } else if (isUnionType(fieldType) || isObjectType(fieldType)) {
137
- if (!('id' in fieldValue)) {
138
- throw new Error('Expected key "id"')
139
- }
140
- const referencedId = fieldValue.id
141
- let referencedTypeName
142
- try {
143
- referencedTypeName = await this.persistence.getTypeById(
144
- context.gitAdapter,
145
- context.getCurrentRef(),
146
- referencedId,
147
- )
148
- } catch (error) {
149
- throw new GraphQLError(
150
- `Reference with id "${referencedId}" points to non-existing entry`,
151
- {
152
- extensions: {
153
- code: 'BAD_USER_INPUT',
154
- fieldName: fieldName,
155
- },
156
- },
157
- )
158
- }
159
- if (!this.isPermittedReferenceType(referencedTypeName, fieldType)) {
160
- throw new GraphQLError(
161
- `Reference with id "${referencedId}" points to entry of incompatible type`,
162
- {
163
- extensions: {
164
- code: 'BAD_USER_INPUT',
165
- fieldName: fieldName,
166
- },
167
- },
168
- )
169
- }
132
+ type.ofType,
133
+ element,
134
+ )),
135
+ ]
136
+ }
137
+ // deduplicate
138
+ referencedEntryIds = [...new Set(referencedEntryIds)]
139
+ return referencedEntryIds
140
+ } else if (isUnionType(type)) {
141
+ if (isUnionOfEntryTypes(type)) {
142
+ await validateReference(context, '', type, data)
143
+ return [data.id]
170
144
  }
171
- }
172
145
 
173
- private isPermittedReferenceType(
174
- referencedTypeName: string,
175
- fieldType: GraphQLNullableType,
176
- ): boolean {
177
- if (isNonNullType(fieldType)) {
178
- return this.isPermittedReferenceType(referencedTypeName, fieldType.ofType)
179
- } else if (isListType(fieldType)) {
180
- return this.isPermittedReferenceType(referencedTypeName, fieldType.ofType)
181
- } else if (isUnionType(fieldType)) {
182
- return fieldType
183
- .getTypes()
184
- .map((concreteType) => concreteType.name)
185
- .includes(referencedTypeName)
186
- } else if (isObjectType(fieldType)) {
187
- return fieldType.name === referencedTypeName
146
+ const requestedUnionTypeName = getUnionTypeNameFromFieldValue(data)
147
+ const concreteFieldUnionType = type
148
+ .getTypes()
149
+ .find(
150
+ (concreteFieldType) =>
151
+ concreteFieldType.name === requestedUnionTypeName,
152
+ )
153
+ if (!concreteFieldUnionType) {
154
+ throw createError(
155
+ `Type "${requestedUnionTypeName}" found in field data is not a valid type for ` +
156
+ `union type "${type.name}".`,
157
+ ErrorCode.BAD_REPOSITORY_DATA,
158
+ {
159
+ typeName: type.name,
160
+ fieldName: fieldName ? fieldName : undefined,
161
+ fieldValue: data,
162
+ },
163
+ )
164
+ }
165
+ const unionValue = getUnionValue(data)
166
+ return getReferencedEntryIds(
167
+ rootType,
168
+ context,
169
+ fieldName,
170
+ concreteFieldUnionType,
171
+ unionValue,
172
+ )
173
+ } else if (isObjectType(type)) {
174
+ if (type.name !== rootType.name && hasEntryDirective(type)) {
175
+ await validateReference(context, fieldName ?? '', type, data)
176
+ return [data.id]
177
+ } else {
178
+ let referencedEntryIds: string[] = []
179
+ for (const [fieldsKey, field] of Object.entries(type.getFields())) {
180
+ const fieldValue = data[fieldsKey] ?? undefined
181
+ if (fieldValue !== undefined) {
182
+ const nestedResult = await getReferencedEntryIds(
183
+ rootType,
184
+ context,
185
+ fieldsKey,
186
+ field.type,
187
+ fieldValue,
188
+ )
189
+ referencedEntryIds = [...referencedEntryIds, ...nestedResult]
190
+ }
191
+ }
192
+ // deduplicate
193
+ referencedEntryIds = [...new Set(referencedEntryIds)]
194
+ return referencedEntryIds
188
195
  }
189
- return false
190
196
  }
197
+
198
+ return []
191
199
  }
@@ -8,35 +8,32 @@ import {
8
8
  isUnionType,
9
9
  } from 'graphql'
10
10
 
11
- export class EntryTypeUtil {
12
- public buildsOnTypeWithEntryDirective(type: GraphQLNullableType): boolean {
13
- if (isNonNullType(type)) {
14
- return this.buildsOnTypeWithEntryDirective(type.ofType)
15
- } else if (isListType(type)) {
16
- return this.buildsOnTypeWithEntryDirective(type.ofType)
17
- } else if (isUnionType(type)) {
18
- return this.isUnionOfEntryTypes(type)
19
- } else if (isObjectType(type)) {
20
- return this.hasEntryDirective(type)
21
- }
22
- return false
23
- }
11
+ export function hasEntryDirective(type: GraphQLObjectType): boolean {
12
+ return (
13
+ !!type.astNode &&
14
+ type.astNode.directives?.find(
15
+ (directive) => directive.name.value === 'Entry',
16
+ ) !== undefined
17
+ )
18
+ }
24
19
 
25
- public hasEntryDirective(type: GraphQLObjectType): boolean {
26
- return (
27
- !!type.astNode &&
28
- type.astNode.directives?.find(
29
- (directive) => directive.name.value === 'Entry',
30
- ) !== undefined
31
- )
32
- }
20
+ export function isUnionOfEntryTypes(type: GraphQLUnionType): boolean {
21
+ return type
22
+ .getTypes()
23
+ .every((unionType) => buildsOnTypeWithEntryDirective(unionType))
24
+ }
33
25
 
34
- public isUnionOfEntryTypes(type: GraphQLUnionType): boolean {
35
- return (
36
- type
37
- .getTypes()
38
- .filter((unionType) => this.buildsOnTypeWithEntryDirective(unionType))
39
- .length > 0
40
- )
26
+ export function buildsOnTypeWithEntryDirective(
27
+ type: GraphQLNullableType,
28
+ ): boolean {
29
+ if (isNonNullType(type)) {
30
+ return buildsOnTypeWithEntryDirective(type.ofType)
31
+ } else if (isListType(type)) {
32
+ return buildsOnTypeWithEntryDirective(type.ofType)
33
+ } else if (isUnionType(type)) {
34
+ return isUnionOfEntryTypes(type)
35
+ } else if (isObjectType(type)) {
36
+ return hasEntryDirective(type)
41
37
  }
38
+ return false
42
39
  }
@@ -1,22 +1,33 @@
1
1
  import { EntryData } from '@commitspark/git-adapter'
2
+ import { createError, ErrorCode } from '../errors'
2
3
 
3
- export class UnionTypeUtil {
4
- public getUnionTypeNameFromFieldValue(fieldValue: any): string {
5
- if (typeof fieldValue !== 'object') {
6
- throw new Error('Expected object as union value')
7
- }
8
-
9
- // Based on our @oneOf directive, we expect only one field whose name
10
- // corresponds to the concrete type's name.
11
- return Object.keys(fieldValue)[0]
4
+ export function getUnionTypeNameFromFieldValue(fieldValue: unknown): string {
5
+ if (typeof fieldValue !== 'object' || fieldValue === null) {
6
+ throw createError(
7
+ `Expected object value in order to determine union type name.`,
8
+ ErrorCode.BAD_REPOSITORY_DATA,
9
+ {
10
+ fieldValue: fieldValue,
11
+ },
12
+ )
12
13
  }
13
14
 
14
- public getUnionValue(fieldValue: any): EntryData {
15
- if (typeof fieldValue !== 'object') {
16
- throw new Error('Expected object as union value')
17
- }
15
+ // Based on our @oneOf directive, we expect only one field whose name
16
+ // corresponds to the concrete type's name.
17
+ return Object.keys(fieldValue)[0]
18
+ }
18
19
 
19
- const firstKey = Object.keys(fieldValue)[0]
20
- return fieldValue[firstKey]
20
+ export function getUnionValue(fieldValue: unknown): EntryData {
21
+ if (typeof fieldValue !== 'object' || fieldValue === null) {
22
+ throw createError(
23
+ `Expected object value in order to determine union value.`,
24
+ ErrorCode.BAD_REPOSITORY_DATA,
25
+ {
26
+ fieldValue: fieldValue,
27
+ },
28
+ )
21
29
  }
30
+
31
+ const firstKey = Object.keys(fieldValue)[0]
32
+ return (fieldValue as Record<string, EntryData>)[firstKey]
22
33
  }
@@ -1,39 +1,37 @@
1
1
  import { GraphQLSchema, GraphQLUnionType, Kind } from 'graphql'
2
2
 
3
- export class SchemaValidator {
4
- public getValidationResult(schema: GraphQLSchema): string[] {
5
- const results = []
6
- results.push(this.checkUnionMembersConsistentUseOfEntryDirective(schema))
7
- return results.filter((result) => result !== '')
8
- }
9
-
10
- private checkUnionMembersConsistentUseOfEntryDirective(
11
- schema: GraphQLSchema,
12
- ): string {
13
- const typeMap = schema.getTypeMap()
3
+ function checkUnionMembersConsistentUseOfEntryDirective(
4
+ schema: GraphQLSchema,
5
+ ): string {
6
+ const typeMap = schema.getTypeMap()
14
7
 
15
- for (const [key, type] of Object.entries(typeMap)) {
16
- if (type.astNode?.kind !== Kind.UNION_TYPE_DEFINITION) {
17
- continue
18
- }
19
- const innerTypes = (type as GraphQLUnionType).getTypes()
8
+ for (const [key, type] of Object.entries(typeMap)) {
9
+ if (type.astNode?.kind !== Kind.UNION_TYPE_DEFINITION) {
10
+ continue
11
+ }
12
+ const innerTypes = (type as GraphQLUnionType).getTypes()
20
13
 
21
- const numberUnionMembersWithEntryDirective = innerTypes.filter(
22
- (innerType) =>
23
- !!innerType.astNode &&
24
- innerType.astNode.directives?.find(
25
- (directive) => directive.name.value === 'Entry',
26
- ) !== undefined,
27
- ).length
14
+ const numberUnionMembersWithEntryDirective = innerTypes.filter(
15
+ (innerType) =>
16
+ !!innerType.astNode &&
17
+ innerType.astNode.directives?.find(
18
+ (directive) => directive.name.value === 'Entry',
19
+ ) !== undefined,
20
+ ).length
28
21
 
29
- if (
30
- numberUnionMembersWithEntryDirective !== 0 &&
31
- numberUnionMembersWithEntryDirective !== innerTypes.length
32
- ) {
33
- return `Either all union members of "${type.name}" must have "@Entry" directive or none.`
34
- }
22
+ if (
23
+ numberUnionMembersWithEntryDirective !== 0 &&
24
+ numberUnionMembersWithEntryDirective !== innerTypes.length
25
+ ) {
26
+ return `Either all union members of "${type.name}" must have "@Entry" directive or none.`
35
27
  }
36
-
37
- return ''
38
28
  }
29
+
30
+ return ''
31
+ }
32
+
33
+ export function getValidationResult(schema: GraphQLSchema): string[] {
34
+ const results = []
35
+ results.push(checkUnionMembersConsistentUseOfEntryDirective(schema))
36
+ return results.filter((result) => result !== '')
39
37
  }
package/src/index.ts CHANGED
@@ -1,8 +1,30 @@
1
- import { ApiService, GraphQLResponse, SchemaResponse } from './app/api.service'
2
- import { apiService } from './container'
1
+ import {
2
+ ApolloExecuteOperationRequest,
3
+ getSchema,
4
+ GraphQLResponse,
5
+ postGraphQL,
6
+ SchemaResponse,
7
+ VariableValues,
8
+ } from './client'
9
+ import { GitAdapter } from '@commitspark/git-adapter'
10
+ import { ErrorCode, ErrorMetadata } from './graphql/errors'
3
11
 
4
- export { ApiService, GraphQLResponse, SchemaResponse }
12
+ interface Client {
13
+ postGraphQL<
14
+ TData = Record<string, unknown>,
15
+ TVariables extends VariableValues = VariableValues,
16
+ >(
17
+ ref: string,
18
+ request: ApolloExecuteOperationRequest<TData, TVariables>,
19
+ ): Promise<GraphQLResponse<TData | null>>
20
+ getSchema(ref: string): Promise<SchemaResponse>
21
+ }
22
+
23
+ export { Client, GraphQLResponse, SchemaResponse, ErrorCode, ErrorMetadata }
5
24
 
6
- export async function getApiService(): Promise<ApiService> {
7
- return apiService
25
+ export async function createClient(gitAdapter: GitAdapter): Promise<Client> {
26
+ return {
27
+ postGraphQL: (ref, request) => postGraphQL(gitAdapter, ref, request),
28
+ getSchema: (ref) => getSchema(gitAdapter, ref),
29
+ }
8
30
  }
@@ -0,0 +1,70 @@
1
+ import { Entry, GitAdapter } from '@commitspark/git-adapter'
2
+ import { createError, ErrorCode } from '../graphql/errors'
3
+
4
+ export async function getTypeById(
5
+ gitAdapter: GitAdapter,
6
+ commitHash: string,
7
+ id: string,
8
+ ): Promise<string> {
9
+ const allEntries = await gitAdapter.getEntries(commitHash)
10
+ const requestedEntry = allEntries.find((entry: Entry) => entry.id === id)
11
+ if (requestedEntry === undefined) {
12
+ throw createError(`No entry with id "${id}" exists.`, ErrorCode.NOT_FOUND, {
13
+ argumentName: 'id',
14
+ argumentValue: id,
15
+ })
16
+ }
17
+
18
+ return requestedEntry.metadata.type
19
+ }
20
+
21
+ export async function findById(
22
+ gitAdapter: GitAdapter,
23
+ commitHash: string,
24
+ id: string,
25
+ ): Promise<Entry> {
26
+ const allEntries = await gitAdapter.getEntries(commitHash)
27
+ const requestedEntry = allEntries.find((entry: Entry) => entry.id === id)
28
+ if (requestedEntry === undefined) {
29
+ throw createError(`No entry with id "${id}" exists.`, ErrorCode.NOT_FOUND, {
30
+ argumentName: 'id',
31
+ argumentValue: id,
32
+ })
33
+ }
34
+
35
+ return requestedEntry
36
+ }
37
+
38
+ export async function findByType(
39
+ gitAdapter: GitAdapter,
40
+ commitHash: string,
41
+ type: string,
42
+ ): Promise<Entry[]> {
43
+ const allEntries = await gitAdapter.getEntries(commitHash)
44
+ return allEntries.filter((entry: Entry) => entry.metadata.type === type)
45
+ }
46
+
47
+ export async function findByTypeId(
48
+ gitAdapter: GitAdapter,
49
+ commitHash: string,
50
+ type: string,
51
+ id: string,
52
+ ): Promise<Entry> {
53
+ const allEntries = await gitAdapter.getEntries(commitHash)
54
+ const requestedEntry = allEntries.find(
55
+ (entry: Entry) => entry.id === id && entry.metadata.type === type,
56
+ )
57
+ if (requestedEntry === undefined) {
58
+ throw createError(
59
+ `No entry of type "${type}" with id "${id}" exists.`,
60
+ ErrorCode.NOT_FOUND,
61
+ {
62
+ typeName: type,
63
+ argumentName: 'id',
64
+ argumentValue: id,
65
+ },
66
+ )
67
+ }
68
+
69
+ return requestedEntry
70
+ }