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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +5 -6
  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/input-type-generator.js +94 -0
  8. package/dist/cjs/graphql/input-type-generator.js.map +1 -0
  9. package/dist/cjs/graphql/queries-mutations-generator.js +68 -0
  10. package/dist/cjs/graphql/queries-mutations-generator.js.map +1 -0
  11. package/dist/cjs/graphql/{resolver-generators/query-all-resolver-generator.js → resolvers/field-resolvers/entry-reference-resolver.js} +11 -15
  12. package/dist/cjs/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -0
  13. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js +81 -0
  14. package/dist/cjs/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -0
  15. package/dist/cjs/graphql/{field-resolver/fieldResolver.js → resolvers/field-resolvers/types.js} +1 -1
  16. package/dist/cjs/graphql/resolvers/field-resolvers/types.js.map +1 -0
  17. package/dist/cjs/graphql/resolvers/field-resolvers/union-value-resolver.js +25 -0
  18. package/dist/cjs/graphql/resolvers/field-resolvers/union-value-resolver.js.map +1 -0
  19. package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js +53 -0
  20. package/dist/cjs/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -0
  21. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +77 -0
  22. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -0
  23. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +53 -0
  24. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -0
  25. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +56 -0
  26. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -0
  27. package/dist/cjs/graphql/{resolver-generators/query-count-all-resolver-generator.js → resolvers/query-mutation-resolvers/query-all-resolver.js} +10 -15
  28. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-all-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-by-id-resolver-generator.js → resolvers/query-mutation-resolvers/query-type-by-id-resolver.js} +7 -14
  32. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js.map +1 -0
  33. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js +27 -0
  34. package/dist/cjs/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js.map +1 -0
  35. package/dist/cjs/graphql/resolvers/types.js +3 -0
  36. package/dist/cjs/graphql/resolvers/types.js.map +1 -0
  37. package/dist/cjs/graphql/schema-analyzer.js +38 -0
  38. package/dist/cjs/graphql/schema-analyzer.js.map +1 -0
  39. package/dist/cjs/graphql/schema-generator.js +95 -0
  40. package/dist/cjs/graphql/schema-generator.js.map +1 -0
  41. package/dist/cjs/graphql/schema-root-type-generator.js +32 -0
  42. package/dist/cjs/graphql/schema-root-type-generator.js.map +1 -0
  43. package/dist/cjs/graphql/schema-utils/entry-reference-util.js +107 -113
  44. package/dist/cjs/graphql/schema-utils/entry-reference-util.js.map +1 -1
  45. package/dist/cjs/graphql/schema-utils/entry-type-util.js +24 -26
  46. package/dist/cjs/graphql/schema-utils/entry-type-util.js.map +1 -1
  47. package/dist/cjs/graphql/schema-utils/union-type-util.js +14 -16
  48. package/dist/cjs/graphql/schema-utils/union-type-util.js.map +1 -1
  49. package/dist/cjs/graphql/schema-validator.js +23 -26
  50. package/dist/cjs/graphql/schema-validator.js.map +1 -1
  51. package/dist/cjs/index.js +7 -7
  52. package/dist/cjs/index.js.map +1 -1
  53. package/dist/cjs/persistence/persistence.js +66 -0
  54. package/dist/cjs/persistence/persistence.js.map +1 -0
  55. package/dist/esm/client.js +53 -0
  56. package/dist/esm/client.js.map +1 -0
  57. package/dist/esm/graphql/apollo-config-factory.js +12 -0
  58. package/dist/esm/graphql/apollo-config-factory.js.map +1 -0
  59. package/dist/esm/graphql/input-type-generator.js +89 -0
  60. package/dist/esm/graphql/input-type-generator.js.map +1 -0
  61. package/dist/esm/graphql/queries-mutations-generator.js +64 -0
  62. package/dist/esm/graphql/queries-mutations-generator.js.map +1 -0
  63. package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js +10 -0
  64. package/dist/esm/graphql/resolvers/field-resolvers/entry-reference-resolver.js.map +1 -0
  65. package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js +68 -0
  66. package/dist/esm/graphql/resolvers/field-resolvers/field-default-value-resolver.js.map +1 -0
  67. package/dist/esm/graphql/resolvers/field-resolvers/types.js +2 -0
  68. package/dist/esm/graphql/resolvers/field-resolvers/types.js.map +1 -0
  69. package/dist/esm/graphql/resolvers/field-resolvers/union-value-resolver.js +15 -0
  70. package/dist/esm/graphql/resolvers/field-resolvers/union-value-resolver.js.map +1 -0
  71. package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js +50 -0
  72. package/dist/esm/graphql/resolvers/object-type-field-default-value-resolver-generator.js.map +1 -0
  73. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js +70 -0
  74. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.js.map +1 -0
  75. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js +49 -0
  76. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.js.map +1 -0
  77. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js +59 -0
  78. package/dist/esm/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.js.map +1 -0
  79. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-all-resolver.js +8 -0
  80. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-all-resolver.js.map +1 -0
  81. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js +6 -0
  82. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.js.map +1 -0
  83. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js +5 -0
  84. package/dist/esm/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.js.map +1 -0
  85. package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js +14 -0
  86. package/dist/esm/graphql/resolvers/query-mutation-resolvers/union-type-resolver.js.map +1 -0
  87. package/dist/esm/graphql/resolvers/types.js +2 -0
  88. package/dist/esm/graphql/resolvers/types.js.map +1 -0
  89. package/dist/esm/graphql/schema-analyzer.js +34 -0
  90. package/dist/esm/graphql/schema-analyzer.js.map +1 -0
  91. package/dist/esm/graphql/schema-generator.js +89 -0
  92. package/dist/esm/graphql/schema-generator.js.map +1 -0
  93. package/dist/esm/graphql/schema-root-type-generator.js +29 -0
  94. package/dist/esm/graphql/schema-root-type-generator.js.map +1 -0
  95. package/dist/esm/graphql/schema-utils/entry-reference-util.js +99 -107
  96. package/dist/esm/graphql/schema-utils/entry-reference-util.js.map +1 -1
  97. package/dist/esm/graphql/schema-utils/entry-type-util.js +20 -23
  98. package/dist/esm/graphql/schema-utils/entry-type-util.js.map +1 -1
  99. package/dist/esm/graphql/schema-utils/union-type-util.js +12 -14
  100. package/dist/esm/graphql/schema-utils/union-type-util.js.map +1 -1
  101. package/dist/esm/graphql/schema-validator.js +18 -20
  102. package/dist/esm/graphql/schema-validator.js.map +1 -1
  103. package/dist/esm/index.js +6 -5
  104. package/dist/esm/index.js.map +1 -1
  105. package/dist/esm/persistence/persistence.js +43 -0
  106. package/dist/esm/persistence/persistence.js.map +1 -0
  107. package/dist/tsconfig.build.cjs.tsbuildinfo +1 -1
  108. package/dist/tsconfig.build.esm.tsbuildinfo +1 -1
  109. package/dist/tsconfig.build.types.tsbuildinfo +1 -1
  110. package/dist/types/client.d.ts +27 -0
  111. package/dist/types/client.d.ts.map +1 -0
  112. package/dist/types/graphql/apollo-config-factory.d.ts +4 -0
  113. package/dist/types/graphql/apollo-config-factory.d.ts.map +1 -0
  114. package/dist/types/graphql/input-type-generator.d.ts +6 -0
  115. package/dist/types/graphql/input-type-generator.d.ts.map +1 -0
  116. package/dist/types/graphql/queries-mutations-generator.d.ts +18 -0
  117. package/dist/types/graphql/queries-mutations-generator.d.ts.map +1 -0
  118. package/dist/types/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts +3 -0
  119. package/dist/types/graphql/resolvers/field-resolvers/entry-reference-resolver.d.ts.map +1 -0
  120. package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts +3 -0
  121. package/dist/types/graphql/resolvers/field-resolvers/field-default-value-resolver.d.ts.map +1 -0
  122. package/dist/types/graphql/resolvers/field-resolvers/types.d.ts +12 -0
  123. package/dist/types/graphql/resolvers/field-resolvers/types.d.ts.map +1 -0
  124. package/dist/types/graphql/resolvers/field-resolvers/union-value-resolver.d.ts +3 -0
  125. package/dist/types/graphql/resolvers/field-resolvers/union-value-resolver.d.ts.map +1 -0
  126. package/dist/types/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts +8 -0
  127. package/dist/types/graphql/resolvers/object-type-field-default-value-resolver-generator.d.ts.map +1 -0
  128. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts +5 -0
  129. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.d.ts.map +1 -0
  130. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts +5 -0
  131. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.d.ts.map +1 -0
  132. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts +5 -0
  133. package/dist/types/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.d.ts.map +1 -0
  134. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-all-resolver.d.ts +5 -0
  135. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-all-resolver.d.ts.map +1 -0
  136. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts +5 -0
  137. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.d.ts.map +1 -0
  138. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts +4 -0
  139. package/dist/types/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.d.ts.map +1 -0
  140. package/dist/types/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts +4 -0
  141. package/dist/types/graphql/resolvers/query-mutation-resolvers/union-type-resolver.d.ts.map +1 -0
  142. package/dist/types/graphql/resolvers/types.d.ts +8 -0
  143. package/dist/types/graphql/resolvers/types.d.ts.map +1 -0
  144. package/dist/types/graphql/{schema-analyzer.service.d.ts → schema-analyzer.d.ts} +3 -5
  145. package/dist/types/graphql/schema-analyzer.d.ts.map +1 -0
  146. package/dist/types/graphql/schema-generator.d.ts +4 -0
  147. package/dist/types/graphql/schema-generator.d.ts.map +1 -0
  148. package/dist/types/graphql/schema-root-type-generator.d.ts +3 -0
  149. package/dist/types/graphql/schema-root-type-generator.d.ts.map +1 -0
  150. package/dist/types/graphql/schema-utils/entry-reference-util.d.ts +2 -13
  151. package/dist/types/graphql/schema-utils/entry-reference-util.d.ts.map +1 -1
  152. package/dist/types/graphql/schema-utils/entry-type-util.d.ts +3 -5
  153. package/dist/types/graphql/schema-utils/entry-type-util.d.ts.map +1 -1
  154. package/dist/types/graphql/schema-utils/union-type-util.d.ts +2 -4
  155. package/dist/types/graphql/schema-utils/union-type-util.d.ts.map +1 -1
  156. package/dist/types/graphql/schema-validator.d.ts +1 -4
  157. package/dist/types/graphql/schema-validator.d.ts.map +1 -1
  158. package/dist/types/index.d.ts +8 -3
  159. package/dist/types/index.d.ts.map +1 -1
  160. package/dist/types/persistence/persistence.d.ts +6 -0
  161. package/dist/types/persistence/persistence.d.ts.map +1 -0
  162. package/package.json +1 -1
  163. package/src/client.ts +114 -0
  164. package/src/graphql/apollo-config-factory.ts +17 -0
  165. package/src/graphql/input-type-generator.ts +126 -0
  166. package/src/graphql/queries-mutations-generator.ts +136 -0
  167. package/src/graphql/resolvers/field-resolvers/entry-reference-resolver.ts +22 -0
  168. package/src/graphql/resolvers/field-resolvers/field-default-value-resolver.ts +107 -0
  169. package/src/graphql/{field-resolver/fieldResolver.ts → resolvers/field-resolvers/types.ts} +5 -4
  170. package/src/graphql/resolvers/field-resolvers/union-value-resolver.ts +24 -0
  171. package/src/graphql/resolvers/object-type-field-default-value-resolver-generator.ts +91 -0
  172. package/src/graphql/resolvers/query-mutation-resolvers/mutation-create-resolver.ts +108 -0
  173. package/src/graphql/resolvers/query-mutation-resolvers/mutation-delete-resolver.ts +81 -0
  174. package/src/graphql/resolvers/query-mutation-resolvers/mutation-update-resolver.ts +114 -0
  175. package/src/graphql/resolvers/query-mutation-resolvers/query-all-resolver.ts +21 -0
  176. package/src/graphql/resolvers/query-mutation-resolvers/query-by-id-resolver.ts +20 -0
  177. package/src/graphql/resolvers/query-mutation-resolvers/query-type-by-id-resolver.ts +12 -0
  178. package/src/graphql/resolvers/query-mutation-resolvers/union-type-resolver.ts +19 -0
  179. package/src/graphql/resolvers/types.ts +14 -0
  180. package/src/graphql/schema-analyzer.ts +55 -0
  181. package/src/graphql/schema-generator.ts +161 -0
  182. package/src/graphql/schema-root-type-generator.ts +35 -0
  183. package/src/graphql/schema-utils/entry-reference-util.ts +152 -166
  184. package/src/graphql/schema-utils/entry-type-util.ts +25 -28
  185. package/src/graphql/schema-utils/union-type-util.ts +13 -15
  186. package/src/graphql/schema-validator.ts +29 -31
  187. package/src/index.ts +26 -5
  188. package/src/persistence/persistence.ts +72 -0
  189. package/dist/cjs/app/api.service.js +0 -74
  190. package/dist/cjs/app/api.service.js.map +0 -1
  191. package/dist/cjs/container.js +0 -53
  192. package/dist/cjs/container.js.map +0 -1
  193. package/dist/cjs/graphql/apollo-config-factory.service.js.map +0 -1
  194. package/dist/cjs/graphql/field-resolver/entry-reference-resolver.js +0 -26
  195. package/dist/cjs/graphql/field-resolver/entry-reference-resolver.js.map +0 -1
  196. package/dist/cjs/graphql/field-resolver/field-default-value-resolver.js +0 -73
  197. package/dist/cjs/graphql/field-resolver/field-default-value-resolver.js.map +0 -1
  198. package/dist/cjs/graphql/field-resolver/fieldResolver.js.map +0 -1
  199. package/dist/cjs/graphql/field-resolver/union-value-resolver.js +0 -21
  200. package/dist/cjs/graphql/field-resolver/union-value-resolver.js.map +0 -1
  201. package/dist/cjs/graphql/input-type-generator.service.js +0 -97
  202. package/dist/cjs/graphql/input-type-generator.service.js.map +0 -1
  203. package/dist/cjs/graphql/queries-mutations-generator.service.js +0 -82
  204. package/dist/cjs/graphql/queries-mutations-generator.service.js.map +0 -1
  205. package/dist/cjs/graphql/resolver-generators/mutation-create-resolver-generator.js +0 -83
  206. package/dist/cjs/graphql/resolver-generators/mutation-create-resolver-generator.js.map +0 -1
  207. package/dist/cjs/graphql/resolver-generators/mutation-delete-resolver-generator.js +0 -60
  208. package/dist/cjs/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +0 -1
  209. package/dist/cjs/graphql/resolver-generators/mutation-update-resolver-generator.js +0 -62
  210. package/dist/cjs/graphql/resolver-generators/mutation-update-resolver-generator.js.map +0 -1
  211. package/dist/cjs/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js +0 -58
  212. package/dist/cjs/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +0 -1
  213. package/dist/cjs/graphql/resolver-generators/query-all-resolver-generator.js.map +0 -1
  214. package/dist/cjs/graphql/resolver-generators/query-by-id-resolver-generator.js.map +0 -1
  215. package/dist/cjs/graphql/resolver-generators/query-count-all-resolver-generator.js.map +0 -1
  216. package/dist/cjs/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +0 -1
  217. package/dist/cjs/graphql/resolver-generators/union-type-resolver-generator.js +0 -33
  218. package/dist/cjs/graphql/resolver-generators/union-type-resolver-generator.js.map +0 -1
  219. package/dist/cjs/graphql/schema-analyzer.service.js +0 -41
  220. package/dist/cjs/graphql/schema-analyzer.service.js.map +0 -1
  221. package/dist/cjs/graphql/schema-generator.service.js +0 -103
  222. package/dist/cjs/graphql/schema-generator.service.js.map +0 -1
  223. package/dist/cjs/graphql/schema-root-type-generator.service.js +0 -39
  224. package/dist/cjs/graphql/schema-root-type-generator.service.js.map +0 -1
  225. package/dist/cjs/persistence/persistence.service.js +0 -66
  226. package/dist/cjs/persistence/persistence.service.js.map +0 -1
  227. package/dist/esm/app/api.service.js +0 -61
  228. package/dist/esm/app/api.service.js.map +0 -1
  229. package/dist/esm/container.js +0 -50
  230. package/dist/esm/container.js.map +0 -1
  231. package/dist/esm/graphql/apollo-config-factory.service.js +0 -17
  232. package/dist/esm/graphql/apollo-config-factory.service.js.map +0 -1
  233. package/dist/esm/graphql/field-resolver/entry-reference-resolver.js +0 -13
  234. package/dist/esm/graphql/field-resolver/entry-reference-resolver.js.map +0 -1
  235. package/dist/esm/graphql/field-resolver/field-default-value-resolver.js +0 -73
  236. package/dist/esm/graphql/field-resolver/field-default-value-resolver.js.map +0 -1
  237. package/dist/esm/graphql/field-resolver/fieldResolver.js +0 -2
  238. package/dist/esm/graphql/field-resolver/fieldResolver.js.map +0 -1
  239. package/dist/esm/graphql/field-resolver/union-value-resolver.js +0 -22
  240. package/dist/esm/graphql/field-resolver/union-value-resolver.js.map +0 -1
  241. package/dist/esm/graphql/input-type-generator.service.js +0 -94
  242. package/dist/esm/graphql/input-type-generator.service.js.map +0 -1
  243. package/dist/esm/graphql/queries-mutations-generator.service.js +0 -85
  244. package/dist/esm/graphql/queries-mutations-generator.service.js.map +0 -1
  245. package/dist/esm/graphql/resolver-generators/mutation-create-resolver-generator.js +0 -78
  246. package/dist/esm/graphql/resolver-generators/mutation-create-resolver-generator.js.map +0 -1
  247. package/dist/esm/graphql/resolver-generators/mutation-delete-resolver-generator.js +0 -58
  248. package/dist/esm/graphql/resolver-generators/mutation-delete-resolver-generator.js.map +0 -1
  249. package/dist/esm/graphql/resolver-generators/mutation-update-resolver-generator.js +0 -67
  250. package/dist/esm/graphql/resolver-generators/mutation-update-resolver-generator.js.map +0 -1
  251. package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js +0 -55
  252. package/dist/esm/graphql/resolver-generators/object-type-field-default-value-resolver-generator.js.map +0 -1
  253. package/dist/esm/graphql/resolver-generators/query-all-resolver-generator.js +0 -15
  254. package/dist/esm/graphql/resolver-generators/query-all-resolver-generator.js.map +0 -1
  255. package/dist/esm/graphql/resolver-generators/query-by-id-resolver-generator.js +0 -13
  256. package/dist/esm/graphql/resolver-generators/query-by-id-resolver-generator.js.map +0 -1
  257. package/dist/esm/graphql/resolver-generators/query-count-all-resolver-generator.js +0 -14
  258. package/dist/esm/graphql/resolver-generators/query-count-all-resolver-generator.js.map +0 -1
  259. package/dist/esm/graphql/resolver-generators/query-type-by-id-resolver-generator.js +0 -12
  260. package/dist/esm/graphql/resolver-generators/query-type-by-id-resolver-generator.js.map +0 -1
  261. package/dist/esm/graphql/resolver-generators/union-type-resolver-generator.js +0 -22
  262. package/dist/esm/graphql/resolver-generators/union-type-resolver-generator.js.map +0 -1
  263. package/dist/esm/graphql/schema-analyzer.service.js +0 -36
  264. package/dist/esm/graphql/schema-analyzer.service.js.map +0 -1
  265. package/dist/esm/graphql/schema-generator.service.js +0 -103
  266. package/dist/esm/graphql/schema-generator.service.js.map +0 -1
  267. package/dist/esm/graphql/schema-root-type-generator.service.js +0 -35
  268. package/dist/esm/graphql/schema-root-type-generator.service.js.map +0 -1
  269. package/dist/esm/persistence/persistence.service.js +0 -45
  270. package/dist/esm/persistence/persistence.service.js.map +0 -1
  271. package/dist/types/app/api.service.d.ts +0 -34
  272. package/dist/types/app/api.service.d.ts.map +0 -1
  273. package/dist/types/container.d.ts +0 -3
  274. package/dist/types/container.d.ts.map +0 -1
  275. package/dist/types/graphql/apollo-config-factory.service.d.ts +0 -9
  276. package/dist/types/graphql/apollo-config-factory.service.d.ts.map +0 -1
  277. package/dist/types/graphql/field-resolver/entry-reference-resolver.d.ts +0 -11
  278. package/dist/types/graphql/field-resolver/entry-reference-resolver.d.ts.map +0 -1
  279. package/dist/types/graphql/field-resolver/field-default-value-resolver.d.ts +0 -15
  280. package/dist/types/graphql/field-resolver/field-default-value-resolver.d.ts.map +0 -1
  281. package/dist/types/graphql/field-resolver/fieldResolver.d.ts +0 -11
  282. package/dist/types/graphql/field-resolver/fieldResolver.d.ts.map +0 -1
  283. package/dist/types/graphql/field-resolver/union-value-resolver.d.ts +0 -11
  284. package/dist/types/graphql/field-resolver/union-value-resolver.d.ts.map +0 -1
  285. package/dist/types/graphql/input-type-generator.service.d.ts +0 -12
  286. package/dist/types/graphql/input-type-generator.service.d.ts.map +0 -1
  287. package/dist/types/graphql/queries-mutations-generator.service.d.ts +0 -39
  288. package/dist/types/graphql/queries-mutations-generator.service.d.ts.map +0 -1
  289. package/dist/types/graphql/resolver-generators/mutation-create-resolver-generator.d.ts +0 -12
  290. package/dist/types/graphql/resolver-generators/mutation-create-resolver-generator.d.ts.map +0 -1
  291. package/dist/types/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts +0 -12
  292. package/dist/types/graphql/resolver-generators/mutation-delete-resolver-generator.d.ts.map +0 -1
  293. package/dist/types/graphql/resolver-generators/mutation-update-resolver-generator.d.ts +0 -13
  294. package/dist/types/graphql/resolver-generators/mutation-update-resolver-generator.d.ts.map +0 -1
  295. package/dist/types/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts +0 -13
  296. package/dist/types/graphql/resolver-generators/object-type-field-default-value-resolver-generator.d.ts.map +0 -1
  297. package/dist/types/graphql/resolver-generators/query-all-resolver-generator.d.ts +0 -10
  298. package/dist/types/graphql/resolver-generators/query-all-resolver-generator.d.ts.map +0 -1
  299. package/dist/types/graphql/resolver-generators/query-by-id-resolver-generator.d.ts +0 -10
  300. package/dist/types/graphql/resolver-generators/query-by-id-resolver-generator.d.ts.map +0 -1
  301. package/dist/types/graphql/resolver-generators/query-count-all-resolver-generator.d.ts +0 -10
  302. package/dist/types/graphql/resolver-generators/query-count-all-resolver-generator.d.ts.map +0 -1
  303. package/dist/types/graphql/resolver-generators/query-type-by-id-resolver-generator.d.ts +0 -9
  304. package/dist/types/graphql/resolver-generators/query-type-by-id-resolver-generator.d.ts.map +0 -1
  305. package/dist/types/graphql/resolver-generators/union-type-resolver-generator.d.ts +0 -11
  306. package/dist/types/graphql/resolver-generators/union-type-resolver-generator.d.ts.map +0 -1
  307. package/dist/types/graphql/schema-analyzer.service.d.ts.map +0 -1
  308. package/dist/types/graphql/schema-generator.service.d.ts +0 -21
  309. package/dist/types/graphql/schema-generator.service.d.ts.map +0 -1
  310. package/dist/types/graphql/schema-root-type-generator.service.d.ts +0 -5
  311. package/dist/types/graphql/schema-root-type-generator.service.d.ts.map +0 -1
  312. package/dist/types/persistence/persistence.service.d.ts +0 -8
  313. package/dist/types/persistence/persistence.service.d.ts.map +0 -1
  314. package/src/app/api.service.ts +0 -121
  315. package/src/container.ts +0 -106
  316. package/src/graphql/apollo-config-factory.service.ts +0 -21
  317. package/src/graphql/field-resolver/entry-reference-resolver.ts +0 -47
  318. package/src/graphql/field-resolver/field-default-value-resolver.ts +0 -152
  319. package/src/graphql/field-resolver/union-value-resolver.ts +0 -46
  320. package/src/graphql/input-type-generator.service.ts +0 -127
  321. package/src/graphql/queries-mutations-generator.service.ts +0 -154
  322. package/src/graphql/resolver-generators/mutation-create-resolver-generator.ts +0 -120
  323. package/src/graphql/resolver-generators/mutation-delete-resolver-generator.ts +0 -96
  324. package/src/graphql/resolver-generators/mutation-update-resolver-generator.ts +0 -127
  325. package/src/graphql/resolver-generators/object-type-field-default-value-resolver-generator.ts +0 -117
  326. package/src/graphql/resolver-generators/query-all-resolver-generator.ts +0 -29
  327. package/src/graphql/resolver-generators/query-by-id-resolver-generator.ts +0 -23
  328. package/src/graphql/resolver-generators/query-count-all-resolver-generator.ts +0 -29
  329. package/src/graphql/resolver-generators/query-type-by-id-resolver-generator.ts +0 -27
  330. package/src/graphql/resolver-generators/union-type-resolver-generator.ts +0 -38
  331. package/src/graphql/schema-analyzer.service.ts +0 -57
  332. package/src/graphql/schema-generator.service.ts +0 -178
  333. package/src/graphql/schema-root-type-generator.service.ts +0 -44
  334. package/src/persistence/persistence.service.ts +0 -74
@@ -7,185 +7,171 @@ import {
7
7
  isObjectType,
8
8
  isUnionType,
9
9
  } 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'
10
+ import { ApolloContext } from '../../client'
11
+ import { getTypeById } from '../../persistence/persistence'
12
+ import {
13
+ getUnionTypeNameFromFieldValue,
14
+ getUnionValue,
15
+ } from './union-type-util'
16
+ import { hasEntryDirective, isUnionOfEntryTypes } from './entry-type-util'
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,
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 new Error(`Expected array value in field "${fieldName}"`)
49
+ }
50
+ for (const fieldListElement of fieldValue) {
51
+ await validateReference(
32
52
  context,
33
53
  fieldName,
34
- type.ofType,
35
- data,
54
+ fieldType.ofType,
55
+ fieldListElement,
36
56
  )
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,
73
- context,
74
- fieldName,
75
- unionType,
76
- unionValue,
57
+ }
58
+ return
59
+ } else if (isUnionType(fieldType) || isObjectType(fieldType)) {
60
+ if (!('id' in fieldValue)) {
61
+ throw new Error('Expected key "id"')
62
+ }
63
+ const referencedId = fieldValue.id
64
+ let referencedTypeName
65
+ try {
66
+ referencedTypeName = await getTypeById(
67
+ context.gitAdapter,
68
+ context.getCurrentRef(),
69
+ referencedId,
70
+ )
71
+ } catch (error) {
72
+ throw new GraphQLError(
73
+ `Reference with id "${referencedId}" points to non-existing entry`,
74
+ {
75
+ extensions: {
76
+ code: 'BAD_USER_INPUT',
77
+ fieldName: fieldName,
78
+ },
79
+ },
80
+ )
81
+ }
82
+ if (!isPermittedReferenceType(referencedTypeName, fieldType)) {
83
+ throw new GraphQLError(
84
+ `Reference with id "${referencedId}" points to entry of incompatible type`,
85
+ {
86
+ extensions: {
87
+ code: 'BAD_USER_INPUT',
88
+ fieldName: fieldName,
89
+ },
90
+ },
77
91
  )
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
92
  }
105
-
106
- return []
107
93
  }
94
+ }
108
95
 
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(
96
+ export async function getReferencedEntryIds(
97
+ rootType: GraphQLObjectType,
98
+ context: ApolloContext,
99
+ fieldName: string | null,
100
+ type: GraphQLNullableType,
101
+ data: any,
102
+ ): Promise<string[]> {
103
+ if (isNonNullType(type)) {
104
+ return getReferencedEntryIds(
105
+ rootType,
106
+ context,
107
+ fieldName,
108
+ type.ofType,
109
+ data,
110
+ )
111
+ } else if (isListType(type)) {
112
+ let referencedEntryIds: string[] = []
113
+ for (const element of data) {
114
+ referencedEntryIds = [
115
+ ...referencedEntryIds,
116
+ ...(await getReferencedEntryIds(
117
+ rootType,
129
118
  context,
130
119
  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
- }
120
+ type.ofType,
121
+ element,
122
+ )),
123
+ ]
124
+ }
125
+ // deduplicate
126
+ referencedEntryIds = [...new Set(referencedEntryIds)]
127
+ return referencedEntryIds
128
+ } else if (isUnionType(type)) {
129
+ if (isUnionOfEntryTypes(type)) {
130
+ await validateReference(context, '', type, data)
131
+ return [data.id]
170
132
  }
171
- }
172
133
 
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
134
+ const unionTypeName = getUnionTypeNameFromFieldValue(data)
135
+ const unionType = type
136
+ .getTypes()
137
+ .find((type) => type.name === unionTypeName)
138
+ if (!unionType) {
139
+ throw new Error(
140
+ `Type "${unionTypeName}" found in field data is not a valid type for union type "${type.name}".`,
141
+ )
142
+ }
143
+ const unionValue = getUnionValue(data)
144
+ return getReferencedEntryIds(
145
+ rootType,
146
+ context,
147
+ fieldName,
148
+ unionType,
149
+ unionValue,
150
+ )
151
+ } else if (isObjectType(type)) {
152
+ if (type.name !== rootType.name && hasEntryDirective(type)) {
153
+ await validateReference(context, fieldName ?? '', type, data)
154
+ return [data.id]
155
+ } else {
156
+ let referencedEntryIds: string[] = []
157
+ for (const [fieldsKey, field] of Object.entries(type.getFields())) {
158
+ const fieldValue = data[fieldsKey] ?? undefined
159
+ if (fieldValue !== undefined) {
160
+ const nestedResult = await getReferencedEntryIds(
161
+ rootType,
162
+ context,
163
+ fieldsKey,
164
+ field.type,
165
+ fieldValue,
166
+ )
167
+ referencedEntryIds = [...referencedEntryIds, ...nestedResult]
168
+ }
169
+ }
170
+ // deduplicate
171
+ referencedEntryIds = [...new Set(referencedEntryIds)]
172
+ return referencedEntryIds
188
173
  }
189
- return false
190
174
  }
175
+
176
+ return []
191
177
  }
@@ -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,20 @@
1
1
  import { EntryData } from '@commitspark/git-adapter'
2
2
 
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]
3
+ export function getUnionTypeNameFromFieldValue(fieldValue: any): string {
4
+ if (typeof fieldValue !== 'object') {
5
+ throw new Error('Expected object as union value')
12
6
  }
13
7
 
14
- public getUnionValue(fieldValue: any): EntryData {
15
- if (typeof fieldValue !== 'object') {
16
- throw new Error('Expected object as union value')
17
- }
8
+ // Based on our @oneOf directive, we expect only one field whose name
9
+ // corresponds to the concrete type's name.
10
+ return Object.keys(fieldValue)[0]
11
+ }
18
12
 
19
- const firstKey = Object.keys(fieldValue)[0]
20
- return fieldValue[firstKey]
13
+ export function getUnionValue(fieldValue: any): EntryData {
14
+ if (typeof fieldValue !== 'object') {
15
+ throw new Error('Expected object as union value')
21
16
  }
17
+
18
+ const firstKey = Object.keys(fieldValue)[0]
19
+ return fieldValue[firstKey]
22
20
  }
@@ -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,29 @@
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'
3
10
 
4
- export { ApiService, GraphQLResponse, SchemaResponse }
11
+ interface Client {
12
+ postGraphQL<
13
+ TData = Record<string, unknown>,
14
+ TVariables extends VariableValues = VariableValues,
15
+ >(
16
+ ref: string,
17
+ request: ApolloExecuteOperationRequest<TData, TVariables>,
18
+ ): Promise<GraphQLResponse<TData | null>>
19
+ getSchema(ref: string): Promise<SchemaResponse>
20
+ }
21
+
22
+ export { Client, GraphQLResponse, SchemaResponse }
5
23
 
6
- export async function getApiService(): Promise<ApiService> {
7
- return apiService
24
+ export async function createClient(gitAdapter: GitAdapter): Promise<Client> {
25
+ return {
26
+ postGraphQL: (ref, request) => postGraphQL(gitAdapter, ref, request),
27
+ getSchema: (ref) => getSchema(gitAdapter, ref),
28
+ }
8
29
  }
@@ -0,0 +1,72 @@
1
+ import { Entry, GitAdapter } from '@commitspark/git-adapter'
2
+ import { GraphQLError } from 'graphql'
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 new GraphQLError(`Not found: ${id}`, {
13
+ extensions: {
14
+ code: 'NOT_FOUND',
15
+ },
16
+ })
17
+ }
18
+
19
+ return requestedEntry.metadata.type
20
+ }
21
+
22
+ export async function findById(
23
+ gitAdapter: GitAdapter,
24
+ commitHash: string,
25
+ id: string,
26
+ ): Promise<Entry> {
27
+ const allEntries = await gitAdapter.getEntries(commitHash)
28
+ const requestedEntry = allEntries.find((entry: Entry) => entry.id === id)
29
+ if (requestedEntry === undefined) {
30
+ throw new GraphQLError(`Not found: ${id}`, {
31
+ extensions: {
32
+ code: 'NOT_FOUND',
33
+ },
34
+ })
35
+ }
36
+
37
+ return requestedEntry
38
+ }
39
+
40
+ export async function findByType(
41
+ gitAdapter: GitAdapter,
42
+ commitHash: string,
43
+ type: string,
44
+ ): Promise<Entry[]> {
45
+ const allEntries = await gitAdapter.getEntries(commitHash)
46
+ return allEntries.filter((entry: Entry) => entry.metadata.type === type)
47
+ }
48
+
49
+ export async function findByTypeId(
50
+ gitAdapter: GitAdapter,
51
+ commitHash: string,
52
+ type: string,
53
+ id: string,
54
+ ): Promise<Entry> {
55
+ const allEntries = await gitAdapter.getEntries(commitHash)
56
+ const requestedEntry = allEntries.find(
57
+ (entry: Entry) => entry.id === id && entry.metadata.type === type,
58
+ )
59
+ if (requestedEntry === undefined) {
60
+ throw new GraphQLError(
61
+ `No entry of type "${type}" with id "${id}" exists`,
62
+ {
63
+ extensions: {
64
+ code: 'BAD_USER_INPUT',
65
+ argumentName: 'id',
66
+ },
67
+ },
68
+ )
69
+ }
70
+
71
+ return requestedEntry
72
+ }