cruddl 3.3.1 → 3.3.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 (331) hide show
  1. package/dist/src/cruddl-version.js +1 -1
  2. package/dist/src/meta-schema/meta-schema.js +19 -17
  3. package/dist/src/meta-schema/meta-schema.js.map +1 -1
  4. package/package.json +1 -1
  5. package/dist/spec/authorization/move-errors-to-output-nodes.spec.d.ts +0 -1
  6. package/dist/spec/authorization/move-errors-to-output-nodes.spec.js +0 -111
  7. package/dist/spec/authorization/move-errors-to-output-nodes.spec.js.map +0 -1
  8. package/dist/spec/authorization/permission-descriptor.spec.d.ts +0 -1
  9. package/dist/spec/authorization/permission-descriptor.spec.js +0 -85
  10. package/dist/spec/authorization/permission-descriptor.spec.js.map +0 -1
  11. package/dist/spec/authorization/permission-profile.spec.d.ts +0 -1
  12. package/dist/spec/authorization/permission-profile.spec.js +0 -110
  13. package/dist/spec/authorization/permission-profile.spec.js.map +0 -1
  14. package/dist/spec/database/arangodb/aql-generator.spec.d.ts +0 -1
  15. package/dist/spec/database/arangodb/aql-generator.spec.js +0 -21
  16. package/dist/spec/database/arangodb/aql-generator.spec.js.map +0 -1
  17. package/dist/spec/database/arangodb/aql.spec.d.ts +0 -1
  18. package/dist/spec/database/arangodb/aql.spec.js +0 -78
  19. package/dist/spec/database/arangodb/aql.spec.js.map +0 -1
  20. package/dist/spec/database/arangodb/arangodb-adapter.spec.d.ts +0 -1
  21. package/dist/spec/database/arangodb/arangodb-adapter.spec.js +0 -192
  22. package/dist/spec/database/arangodb/arangodb-adapter.spec.js.map +0 -1
  23. package/dist/spec/database/arangodb/arangodb-test-utils.d.ts +0 -1
  24. package/dist/spec/database/arangodb/arangodb-test-utils.js +0 -8
  25. package/dist/spec/database/arangodb/arangodb-test-utils.js.map +0 -1
  26. package/dist/spec/database/arangodb/retry.spec.d.ts +0 -1
  27. package/dist/spec/database/arangodb/retry.spec.js +0 -74
  28. package/dist/spec/database/arangodb/retry.spec.js.map +0 -1
  29. package/dist/spec/database/arangodb/schema-migration/arango-search-helper.spec.d.ts +0 -1
  30. package/dist/spec/database/arangodb/schema-migration/arango-search-helper.spec.js +0 -76
  31. package/dist/spec/database/arangodb/schema-migration/arango-search-helper.spec.js.map +0 -1
  32. package/dist/spec/database/arangodb/ttl.spec.d.ts +0 -1
  33. package/dist/spec/database/arangodb/ttl.spec.js +0 -346
  34. package/dist/spec/database/arangodb/ttl.spec.js.map +0 -1
  35. package/dist/spec/database/like-helper.spec.d.ts +0 -1
  36. package/dist/spec/database/like-helper.spec.js +0 -87
  37. package/dist/spec/database/like-helper.spec.js.map +0 -1
  38. package/dist/spec/dev/fast-server.d.ts +0 -4
  39. package/dist/spec/dev/fast-server.js +0 -57
  40. package/dist/spec/dev/fast-server.js.map +0 -1
  41. package/dist/spec/dev/server.d.ts +0 -12
  42. package/dist/spec/dev/server.js +0 -121
  43. package/dist/spec/dev/server.js.map +0 -1
  44. package/dist/spec/dev/start.d.ts +0 -1
  45. package/dist/spec/dev/start.js +0 -10
  46. package/dist/spec/dev/start.js.map +0 -1
  47. package/dist/spec/graphql/query-distiller.spec.d.ts +0 -1
  48. package/dist/spec/graphql/query-distiller.spec.js +0 -220
  49. package/dist/spec/graphql/query-distiller.spec.js.map +0 -1
  50. package/dist/spec/helpers/log4js-logger-provider.d.ts +0 -11
  51. package/dist/spec/helpers/log4js-logger-provider.js +0 -18
  52. package/dist/spec/helpers/log4js-logger-provider.js.map +0 -1
  53. package/dist/spec/init.mocha.d.ts +0 -1
  54. package/dist/spec/init.mocha.js +0 -11
  55. package/dist/spec/init.mocha.js.map +0 -1
  56. package/dist/spec/meta-schema/meta-schema.spec.d.ts +0 -1
  57. package/dist/spec/meta-schema/meta-schema.spec.js +0 -951
  58. package/dist/spec/meta-schema/meta-schema.spec.js.map +0 -1
  59. package/dist/spec/model/create-model.spec.d.ts +0 -1
  60. package/dist/spec/model/create-model.spec.js +0 -158
  61. package/dist/spec/model/create-model.spec.js.map +0 -1
  62. package/dist/spec/model/implementation/billing-validation.spec.d.ts +0 -1
  63. package/dist/spec/model/implementation/billing-validation.spec.js +0 -180
  64. package/dist/spec/model/implementation/billing-validation.spec.js.map +0 -1
  65. package/dist/spec/model/implementation/collect-path.spec.d.ts +0 -1
  66. package/dist/spec/model/implementation/collect-path.spec.js +0 -678
  67. package/dist/spec/model/implementation/collect-path.spec.js.map +0 -1
  68. package/dist/spec/model/implementation/entity-extenion-type.spec.d.ts +0 -1
  69. package/dist/spec/model/implementation/entity-extenion-type.spec.js +0 -71
  70. package/dist/spec/model/implementation/entity-extenion-type.spec.js.map +0 -1
  71. package/dist/spec/model/implementation/field.spec.d.ts +0 -1
  72. package/dist/spec/model/implementation/field.spec.js +0 -648
  73. package/dist/spec/model/implementation/field.spec.js.map +0 -1
  74. package/dist/spec/model/implementation/flex-search-validation.spec.d.ts +0 -1
  75. package/dist/spec/model/implementation/flex-search-validation.spec.js +0 -288
  76. package/dist/spec/model/implementation/flex-search-validation.spec.js.map +0 -1
  77. package/dist/spec/model/implementation/i18n-fields.spec.d.ts +0 -1
  78. package/dist/spec/model/implementation/i18n-fields.spec.js +0 -208
  79. package/dist/spec/model/implementation/i18n-fields.spec.js.map +0 -1
  80. package/dist/spec/model/implementation/i18n-types.spec.d.ts +0 -1
  81. package/dist/spec/model/implementation/i18n-types.spec.js +0 -160
  82. package/dist/spec/model/implementation/i18n-types.spec.js.map +0 -1
  83. package/dist/spec/model/implementation/i18n-validation.spec.d.ts +0 -1
  84. package/dist/spec/model/implementation/i18n-validation.spec.js +0 -210
  85. package/dist/spec/model/implementation/i18n-validation.spec.js.map +0 -1
  86. package/dist/spec/model/implementation/indices.spec.d.ts +0 -1
  87. package/dist/spec/model/implementation/indices.spec.js +0 -96
  88. package/dist/spec/model/implementation/indices.spec.js.map +0 -1
  89. package/dist/spec/model/implementation/model.spec.d.ts +0 -1
  90. package/dist/spec/model/implementation/model.spec.js +0 -101
  91. package/dist/spec/model/implementation/model.spec.js.map +0 -1
  92. package/dist/spec/model/implementation/namespace.spec.d.ts +0 -1
  93. package/dist/spec/model/implementation/namespace.spec.js +0 -231
  94. package/dist/spec/model/implementation/namespace.spec.js.map +0 -1
  95. package/dist/spec/model/implementation/object-type.spec.d.ts +0 -1
  96. package/dist/spec/model/implementation/object-type.spec.js +0 -65
  97. package/dist/spec/model/implementation/object-type.spec.js.map +0 -1
  98. package/dist/spec/model/implementation/relation.spec.d.ts +0 -1
  99. package/dist/spec/model/implementation/relation.spec.js +0 -99
  100. package/dist/spec/model/implementation/relation.spec.js.map +0 -1
  101. package/dist/spec/model/implementation/root-entity-type.spec.d.ts +0 -1
  102. package/dist/spec/model/implementation/root-entity-type.spec.js +0 -470
  103. package/dist/spec/model/implementation/root-entity-type.spec.js.map +0 -1
  104. package/dist/spec/model/implementation/type.spec.d.ts +0 -1
  105. package/dist/spec/model/implementation/type.spec.js +0 -52
  106. package/dist/spec/model/implementation/type.spec.js.map +0 -1
  107. package/dist/spec/model/implementation/validation-utils.d.ts +0 -7
  108. package/dist/spec/model/implementation/validation-utils.js +0 -34
  109. package/dist/spec/model/implementation/validation-utils.js.map +0 -1
  110. package/dist/spec/model/model-spec.helper.d.ts +0 -3
  111. package/dist/spec/model/model-spec.helper.js +0 -35
  112. package/dist/spec/model/model-spec.helper.js.map +0 -1
  113. package/dist/spec/performance/associations.perf.d.ts +0 -3
  114. package/dist/spec/performance/associations.perf.js +0 -78
  115. package/dist/spec/performance/associations.perf.js.map +0 -1
  116. package/dist/spec/performance/count.perf.d.ts +0 -5
  117. package/dist/spec/performance/count.perf.js +0 -52
  118. package/dist/spec/performance/count.perf.js.map +0 -1
  119. package/dist/spec/performance/crud.perf.d.ts +0 -3
  120. package/dist/spec/performance/crud.perf.js +0 -100
  121. package/dist/spec/performance/crud.perf.js.map +0 -1
  122. package/dist/spec/performance/filter.perf.d.ts +0 -3
  123. package/dist/spec/performance/filter.perf.js +0 -32
  124. package/dist/spec/performance/filter.perf.js.map +0 -1
  125. package/dist/spec/performance/index.d.ts +0 -1
  126. package/dist/spec/performance/index.js +0 -21
  127. package/dist/spec/performance/index.js.map +0 -1
  128. package/dist/spec/performance/pagination.perf.d.ts +0 -5
  129. package/dist/spec/performance/pagination.perf.js +0 -50
  130. package/dist/spec/performance/pagination.perf.js.map +0 -1
  131. package/dist/spec/performance/query-pipeline.perf.d.ts +0 -3
  132. package/dist/spec/performance/query-pipeline.perf.js +0 -196
  133. package/dist/spec/performance/query-pipeline.perf.js.map +0 -1
  134. package/dist/spec/performance/references.perf.d.ts +0 -3
  135. package/dist/spec/performance/references.perf.js +0 -62
  136. package/dist/spec/performance/references.perf.js.map +0 -1
  137. package/dist/spec/performance/support/async-bench.d.ts +0 -92
  138. package/dist/spec/performance/support/async-bench.js +0 -237
  139. package/dist/spec/performance/support/async-bench.js.map +0 -1
  140. package/dist/spec/performance/support/helpers.d.ts +0 -28
  141. package/dist/spec/performance/support/helpers.js +0 -130
  142. package/dist/spec/performance/support/helpers.js.map +0 -1
  143. package/dist/spec/performance/support/runner.d.ts +0 -2
  144. package/dist/spec/performance/support/runner.js +0 -72
  145. package/dist/spec/performance/support/runner.js.map +0 -1
  146. package/dist/spec/project/project.spec.d.ts +0 -1
  147. package/dist/spec/project/project.spec.js +0 -72
  148. package/dist/spec/project/project.spec.js.map +0 -1
  149. package/dist/spec/query-tree/utils/simplify-booleans.spec.d.ts +0 -1
  150. package/dist/spec/query-tree/utils/simplify-booleans.spec.js +0 -87
  151. package/dist/spec/query-tree/utils/simplify-booleans.spec.js.map +0 -1
  152. package/dist/spec/regression/drop-test-db.d.ts +0 -1
  153. package/dist/spec/regression/drop-test-db.js +0 -5
  154. package/dist/spec/regression/drop-test-db.js.map +0 -1
  155. package/dist/spec/regression/initialization.d.ts +0 -10
  156. package/dist/spec/regression/initialization.js +0 -148
  157. package/dist/spec/regression/initialization.js.map +0 -1
  158. package/dist/spec/regression/regression-suite.d.ts +0 -28
  159. package/dist/spec/regression/regression-suite.js +0 -228
  160. package/dist/spec/regression/regression-suite.js.map +0 -1
  161. package/dist/spec/regression/regressions.spec.d.ts +0 -1
  162. package/dist/spec/regression/regressions.spec.js +0 -54
  163. package/dist/spec/regression/regressions.spec.js.map +0 -1
  164. package/dist/spec/schema/ast-validation-modules/business-object.spec.d.ts +0 -1
  165. package/dist/spec/schema/ast-validation-modules/business-object.spec.js +0 -27
  166. package/dist/spec/schema/ast-validation-modules/business-object.spec.js.map +0 -1
  167. package/dist/spec/schema/ast-validation-modules/check-directed-relation-edges-validator.spec.d.ts +0 -1
  168. package/dist/spec/schema/ast-validation-modules/check-directed-relation-edges-validator.spec.js +0 -73
  169. package/dist/spec/schema/ast-validation-modules/check-directed-relation-edges-validator.spec.js.map +0 -1
  170. package/dist/spec/schema/ast-validation-modules/collect-validation.spec.d.ts +0 -1
  171. package/dist/spec/schema/ast-validation-modules/collect-validation.spec.js +0 -633
  172. package/dist/spec/schema/ast-validation-modules/collect-validation.spec.js.map +0 -1
  173. package/dist/spec/schema/ast-validation-modules/entity-directive-nesting-validator.spec.d.ts +0 -1
  174. package/dist/spec/schema/ast-validation-modules/entity-directive-nesting-validator.spec.js +0 -94
  175. package/dist/spec/schema/ast-validation-modules/entity-directive-nesting-validator.spec.js.map +0 -1
  176. package/dist/spec/schema/ast-validation-modules/flex-search-commit-interval-msec-validator.spec.d.ts +0 -1
  177. package/dist/spec/schema/ast-validation-modules/flex-search-commit-interval-msec-validator.spec.js +0 -235
  178. package/dist/spec/schema/ast-validation-modules/flex-search-commit-interval-msec-validator.spec.js.map +0 -1
  179. package/dist/spec/schema/ast-validation-modules/helpers.d.ts +0 -10
  180. package/dist/spec/schema/ast-validation-modules/helpers.js +0 -85
  181. package/dist/spec/schema/ast-validation-modules/helpers.js.map +0 -1
  182. package/dist/spec/schema/ast-validation-modules/illegal-enum-values.spec.d.ts +0 -1
  183. package/dist/spec/schema/ast-validation-modules/illegal-enum-values.spec.js +0 -24
  184. package/dist/spec/schema/ast-validation-modules/illegal-enum-values.spec.js.map +0 -1
  185. package/dist/spec/schema/ast-validation-modules/indices-validator.spec.d.ts +0 -1
  186. package/dist/spec/schema/ast-validation-modules/indices-validator.spec.js +0 -117
  187. package/dist/spec/schema/ast-validation-modules/indices-validator.spec.js.map +0 -1
  188. package/dist/spec/schema/ast-validation-modules/key-field-validator.spec.d.ts +0 -1
  189. package/dist/spec/schema/ast-validation-modules/key-field-validator.spec.js +0 -139
  190. package/dist/spec/schema/ast-validation-modules/key-field-validator.spec.js.map +0 -1
  191. package/dist/spec/schema/ast-validation-modules/known-field-directive-validator.spec.d.ts +0 -1
  192. package/dist/spec/schema/ast-validation-modules/known-field-directive-validator.spec.js +0 -27
  193. package/dist/spec/schema/ast-validation-modules/known-field-directive-validator.spec.js.map +0 -1
  194. package/dist/spec/schema/ast-validation-modules/known-object-type-directive-validator.spec.d.ts +0 -1
  195. package/dist/spec/schema/ast-validation-modules/known-object-type-directive-validator.spec.js +0 -31
  196. package/dist/spec/schema/ast-validation-modules/known-object-type-directive-validator.spec.js.map +0 -1
  197. package/dist/spec/schema/ast-validation-modules/no-duplicate-types-validator.spec.d.ts +0 -1
  198. package/dist/spec/schema/ast-validation-modules/no-duplicate-types-validator.spec.js +0 -32
  199. package/dist/spec/schema/ast-validation-modules/no-duplicate-types-validator.spec.js.map +0 -1
  200. package/dist/spec/schema/ast-validation-modules/no-lists-of-lists-validator.spec.d.ts +0 -1
  201. package/dist/spec/schema/ast-validation-modules/no-lists-of-lists-validator.spec.js +0 -27
  202. package/dist/spec/schema/ast-validation-modules/no-lists-of-lists-validator.spec.js.map +0 -1
  203. package/dist/spec/schema/ast-validation-modules/no-lists-of-references-validator.spec.d.ts +0 -1
  204. package/dist/spec/schema/ast-validation-modules/no-lists-of-references-validator.spec.js +0 -27
  205. package/dist/spec/schema/ast-validation-modules/no-lists-of-references-validator.spec.js.map +0 -1
  206. package/dist/spec/schema/ast-validation-modules/no-unused-non-root-object-types-validator.spec.d.ts +0 -1
  207. package/dist/spec/schema/ast-validation-modules/no-unused-non-root-object-types-validator.spec.js +0 -27
  208. package/dist/spec/schema/ast-validation-modules/no-unused-non-root-object-types-validator.spec.js.map +0 -1
  209. package/dist/spec/schema/ast-validation-modules/non-unique-fields-validator.spec.d.ts +0 -1
  210. package/dist/spec/schema/ast-validation-modules/non-unique-fields-validator.spec.js +0 -29
  211. package/dist/spec/schema/ast-validation-modules/non-unique-fields-validator.spec.js.map +0 -1
  212. package/dist/spec/schema/ast-validation-modules/object-directive-count-validator.spec.d.ts +0 -1
  213. package/dist/spec/schema/ast-validation-modules/object-directive-count-validator.spec.js +0 -53
  214. package/dist/spec/schema/ast-validation-modules/object-directive-count-validator.spec.js.map +0 -1
  215. package/dist/spec/schema/ast-validation-modules/only-allowed-types-validator.spec.d.ts +0 -1
  216. package/dist/spec/schema/ast-validation-modules/only-allowed-types-validator.spec.js +0 -30
  217. package/dist/spec/schema/ast-validation-modules/only-allowed-types-validator.spec.js.map +0 -1
  218. package/dist/spec/schema/ast-validation-modules/parent-field.spec.d.ts +0 -1
  219. package/dist/spec/schema/ast-validation-modules/parent-field.spec.js +0 -451
  220. package/dist/spec/schema/ast-validation-modules/parent-field.spec.js.map +0 -1
  221. package/dist/spec/schema/ast-validation-modules/references-only-to-root-entities-with-key-field-validator.spec.d.ts +0 -1
  222. package/dist/spec/schema/ast-validation-modules/references-only-to-root-entities-with-key-field-validator.spec.js +0 -40
  223. package/dist/spec/schema/ast-validation-modules/references-only-to-root-entities-with-key-field-validator.spec.js.map +0 -1
  224. package/dist/spec/schema/ast-validation-modules/references-with-key-field.spec.d.ts +0 -1
  225. package/dist/spec/schema/ast-validation-modules/references-with-key-field.spec.js +0 -74
  226. package/dist/spec/schema/ast-validation-modules/references-with-key-field.spec.js.map +0 -1
  227. package/dist/spec/schema/ast-validation-modules/relations-only-in-root-entities-validator.spec.d.ts +0 -1
  228. package/dist/spec/schema/ast-validation-modules/relations-only-in-root-entities-validator.spec.js +0 -26
  229. package/dist/spec/schema/ast-validation-modules/relations-only-in-root-entities-validator.spec.js.map +0 -1
  230. package/dist/spec/schema/ast-validation-modules/relations-only-to-root-entities-validator.spec.d.ts +0 -1
  231. package/dist/spec/schema/ast-validation-modules/relations-only-to-root-entities-validator.spec.js +0 -26
  232. package/dist/spec/schema/ast-validation-modules/relations-only-to-root-entities-validator.spec.js.map +0 -1
  233. package/dist/spec/schema/ast-validation-modules/relations.spec.d.ts +0 -1
  234. package/dist/spec/schema/ast-validation-modules/relations.spec.js +0 -145
  235. package/dist/spec/schema/ast-validation-modules/relations.spec.js.map +0 -1
  236. package/dist/spec/schema/ast-validation-modules/roles-and-permission-profile-combined.spec.d.ts +0 -1
  237. package/dist/spec/schema/ast-validation-modules/roles-and-permission-profile-combined.spec.js +0 -31
  238. package/dist/spec/schema/ast-validation-modules/roles-and-permission-profile-combined.spec.js.map +0 -1
  239. package/dist/spec/schema/ast-validation-modules/roles-on-non-root-entity-types.spec.d.ts +0 -1
  240. package/dist/spec/schema/ast-validation-modules/roles-on-non-root-entity-types.spec.js +0 -35
  241. package/dist/spec/schema/ast-validation-modules/roles-on-non-root-entity-types.spec.js.map +0 -1
  242. package/dist/spec/schema/ast-validation-modules/root-entities-without-read-roles.spec.d.ts +0 -1
  243. package/dist/spec/schema/ast-validation-modules/root-entities-without-read-roles.spec.js +0 -27
  244. package/dist/spec/schema/ast-validation-modules/root-entities-without-read-roles.spec.js.map +0 -1
  245. package/dist/spec/schema/ast-validation-modules/root-field.spec.d.ts +0 -1
  246. package/dist/spec/schema/ast-validation-modules/root-field.spec.js +0 -405
  247. package/dist/spec/schema/ast-validation-modules/root-field.spec.js.map +0 -1
  248. package/dist/spec/schema/ast-validation-modules/ttl.spec.d.ts +0 -1
  249. package/dist/spec/schema/ast-validation-modules/ttl.spec.js +0 -362
  250. package/dist/spec/schema/ast-validation-modules/ttl.spec.js.map +0 -1
  251. package/dist/spec/schema/ast-validation-modules/undefined-permission-profile.spec.d.ts +0 -1
  252. package/dist/spec/schema/ast-validation-modules/undefined-permission-profile.spec.js +0 -79
  253. package/dist/spec/schema/ast-validation-modules/undefined-permission-profile.spec.js.map +0 -1
  254. package/dist/spec/schema/ast-validation-modules/undefined-types.spec.d.ts +0 -1
  255. package/dist/spec/schema/ast-validation-modules/undefined-types.spec.js +0 -38
  256. package/dist/spec/schema/ast-validation-modules/undefined-types.spec.js.map +0 -1
  257. package/dist/spec/schema/preparation/ast-transformation-modules/add-namespaces-to-types-transformer.spec.d.ts +0 -1
  258. package/dist/spec/schema/preparation/ast-transformation-modules/add-namespaces-to-types-transformer.spec.js +0 -53
  259. package/dist/spec/schema/preparation/ast-transformation-modules/add-namespaces-to-types-transformer.spec.js.map +0 -1
  260. package/dist/spec/schema/scalars/date-time.spec.d.ts +0 -1
  261. package/dist/spec/schema/scalars/date-time.spec.js +0 -74
  262. package/dist/spec/schema/scalars/date-time.spec.js.map +0 -1
  263. package/dist/spec/schema/scalars/fixed-point-decimals.spec.d.ts +0 -1
  264. package/dist/spec/schema/scalars/fixed-point-decimals.spec.js +0 -66
  265. package/dist/spec/schema/scalars/fixed-point-decimals.spec.js.map +0 -1
  266. package/dist/spec/schema/scalars/int53.spec.d.ts +0 -1
  267. package/dist/spec/schema/scalars/int53.spec.js +0 -45
  268. package/dist/spec/schema/scalars/int53.spec.js.map +0 -1
  269. package/dist/spec/schema/scalars/local-date.spec.d.ts +0 -1
  270. package/dist/spec/schema/scalars/local-date.spec.js +0 -30
  271. package/dist/spec/schema/scalars/local-date.spec.js.map +0 -1
  272. package/dist/spec/schema/scalars/local-time.spec.d.ts +0 -1
  273. package/dist/spec/schema/scalars/local-time.spec.js +0 -64
  274. package/dist/spec/schema/scalars/local-time.spec.js.map +0 -1
  275. package/dist/spec/schema/scalars/offset-date-time.spec.d.ts +0 -1
  276. package/dist/spec/schema/scalars/offset-date-time.spec.js +0 -82
  277. package/dist/spec/schema/scalars/offset-date-time.spec.js.map +0 -1
  278. package/dist/spec/schema/scalars/string-map.spec.d.ts +0 -1
  279. package/dist/spec/schema/scalars/string-map.spec.js +0 -230
  280. package/dist/spec/schema/scalars/string-map.spec.js.map +0 -1
  281. package/dist/spec/schema/schema-builder.spec.d.ts +0 -1
  282. package/dist/spec/schema/schema-builder.spec.js +0 -105
  283. package/dist/spec/schema/schema-builder.spec.js.map +0 -1
  284. package/dist/spec/schema/source-validation-modules/check-graphql-syntax.spec.d.ts +0 -1
  285. package/dist/spec/schema/source-validation-modules/check-graphql-syntax.spec.js +0 -30
  286. package/dist/spec/schema/source-validation-modules/check-graphql-syntax.spec.js.map +0 -1
  287. package/dist/spec/schema/source-validation-modules/check-json-syntax.spec.d.ts +0 -1
  288. package/dist/spec/schema/source-validation-modules/check-json-syntax.spec.js +0 -36
  289. package/dist/spec/schema/source-validation-modules/check-json-syntax.spec.js.map +0 -1
  290. package/dist/spec/schema/source-validation-modules/check-yaml-syntax.spec.d.ts +0 -1
  291. package/dist/spec/schema/source-validation-modules/check-yaml-syntax.spec.js +0 -30
  292. package/dist/spec/schema/source-validation-modules/check-yaml-syntax.spec.js.map +0 -1
  293. package/dist/spec/schema/source-validation-modules/graphql-rules.spec.d.ts +0 -1
  294. package/dist/spec/schema/source-validation-modules/graphql-rules.spec.js +0 -89
  295. package/dist/spec/schema/source-validation-modules/graphql-rules.spec.js.map +0 -1
  296. package/dist/spec/schema/source-validation-modules/permission-profile-validator.spec.d.ts +0 -1
  297. package/dist/spec/schema/source-validation-modules/permission-profile-validator.spec.js +0 -99
  298. package/dist/spec/schema/source-validation-modules/permission-profile-validator.spec.js.map +0 -1
  299. package/dist/spec/schema/source-validation-modules/sidecar-schema.spec.d.ts +0 -1
  300. package/dist/spec/schema/source-validation-modules/sidecar-schema.spec.js +0 -145
  301. package/dist/spec/schema/source-validation-modules/sidecar-schema.spec.js.map +0 -1
  302. package/dist/spec/schema/source-validation-modules/source-validation-helper.d.ts +0 -3
  303. package/dist/spec/schema/source-validation-modules/source-validation-helper.js +0 -12
  304. package/dist/spec/schema/source-validation-modules/source-validation-helper.js.map +0 -1
  305. package/dist/spec/schema/source-validation-modules/yaml-parser.spec.d.ts +0 -1
  306. package/dist/spec/schema/source-validation-modules/yaml-parser.spec.js +0 -87
  307. package/dist/spec/schema/source-validation-modules/yaml-parser.spec.js.map +0 -1
  308. package/dist/spec/schema-generation/create-input-type-generator.spec.d.ts +0 -1
  309. package/dist/spec/schema-generation/create-input-type-generator.spec.js +0 -518
  310. package/dist/spec/schema-generation/create-input-type-generator.spec.js.map +0 -1
  311. package/dist/spec/schema-generation/createdat-updatedat-modification.spec.d.ts +0 -1
  312. package/dist/spec/schema-generation/createdat-updatedat-modification.spec.js +0 -160
  313. package/dist/spec/schema-generation/createdat-updatedat-modification.spec.js.map +0 -1
  314. package/dist/spec/schema-generation/enum-type-generator.spec.d.ts +0 -1
  315. package/dist/spec/schema-generation/enum-type-generator.spec.js +0 -21
  316. package/dist/spec/schema-generation/enum-type-generator.spec.js.map +0 -1
  317. package/dist/spec/schema-generation/memorize-decorator.spec.d.ts +0 -1
  318. package/dist/spec/schema-generation/memorize-decorator.spec.js +0 -39
  319. package/dist/spec/schema-generation/memorize-decorator.spec.js.map +0 -1
  320. package/dist/spec/schema-generation/order-by-enum-generator.spec.d.ts +0 -1
  321. package/dist/spec/schema-generation/order-by-enum-generator.spec.js +0 -188
  322. package/dist/spec/schema-generation/order-by-enum-generator.spec.js.map +0 -1
  323. package/dist/spec/utils/group-by-equivalence.spec.d.ts +0 -1
  324. package/dist/spec/utils/group-by-equivalence.spec.js +0 -11
  325. package/dist/spec/utils/group-by-equivalence.spec.js.map +0 -1
  326. package/dist/spec/utils/utils.spec.d.ts +0 -1
  327. package/dist/spec/utils/utils.spec.js +0 -24
  328. package/dist/spec/utils/utils.spec.js.map +0 -1
  329. package/dist/spec/utils/visitor.spec.d.ts +0 -1
  330. package/dist/spec/utils/visitor.spec.js +0 -119
  331. package/dist/spec/utils/visitor.spec.js.map +0 -1
@@ -1,633 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_1 = require("chai");
4
- const helpers_1 = require("./helpers");
5
- describe('collect validation', () => {
6
- describe('without aggregate', () => {
7
- it('accepts to-n-to-n traversal', () => {
8
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
9
- type HandlingUnit @rootEntity {
10
- handlingUnitNumber: String
11
- delivery: Delivery @relation(inverseOf: "handlingUnits")
12
- }
13
- type Delivery @rootEntity {
14
- deliveryNumber: String
15
- handlingUnits: [HandlingUnit] @relation
16
- }
17
- type Shipment @rootEntity {
18
- deliveries: [Delivery] @relation
19
- allHandlingUnits: [HandlingUnit] @collect(path: "deliveries.handlingUnits")
20
- }
21
- `);
22
- });
23
- it('rejects to-n-then-m-to-n traversal because of possible duplicates', () => {
24
- (0, helpers_1.assertValidatorRejects)(`
25
- type HandlingUnit @rootEntity {
26
- handlingUnitNumber: String
27
- }
28
- type Delivery @rootEntity {
29
- deliveryNumber: String
30
- handlingUnits: [HandlingUnit] @relation
31
- }
32
- type Shipment @rootEntity {
33
- deliveries: [Delivery] @relation
34
- allHandlingUnits: [HandlingUnit] @collect(path: "deliveries.handlingUnits")
35
- }
36
- `, `The path can produce duplicate HandlingUnit entities (because the relation target type "HandlingUnit" does not declare an inverse relation field to "Delivery.handlingUnits"). Please set argument "aggregate" to "DISTINCT" to filter out duplicates and null items if you don't want any other aggregation.`);
37
- });
38
- it('accepts to-1-to-n-to-n traversals', () => {
39
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
40
- type HandlingUnit @rootEntity {
41
- handlingUnitNumber: String
42
- delivery: Delivery @relation(inverseOf: "handlingUnits")
43
- }
44
- type Delivery @rootEntity {
45
- deliveryNumber: String
46
- shipment: Shipment @relation(inverseOf: "deliveries")
47
- handlingUnits: [HandlingUnit] @relation
48
- shipmentHandlingUnits: [HandlingUnit] @collect(path: "shipment.deliveries.handlingUnits")
49
- }
50
- type Shipment @rootEntity {
51
- deliveries: [Delivery] @relation
52
- }
53
- `);
54
- });
55
- it('rejects to-1-to-n-to-n traversals if last segment is m-to-n because of possible duplicates', () => {
56
- (0, helpers_1.assertValidatorRejects)(`
57
- type HandlingUnit @rootEntity {
58
- handlingUnitNumber: String
59
- deliveries: [Delivery] @relation(inverseOf: "handlingUnits")
60
- }
61
- type Delivery @rootEntity {
62
- deliveryNumber: String
63
- shipment: Shipment @relation(inverseOf: "deliveries")
64
- handlingUnits: [HandlingUnit] @relation
65
- shipmentHandlingUnits: [HandlingUnit] @collect(path: "shipment.deliveries.handlingUnits")
66
- }
67
- type Shipment @rootEntity {
68
- deliveries: [Delivery] @relation
69
- }
70
- `, `The path can produce duplicate HandlingUnit entities (because "HandlingUnit.deliveries", which is the inverse relation field to "Delivery.handlingUnits", is declared as a list). Please set argument "aggregate" to "DISTINCT" to filter out duplicates and null items if you don't want any other aggregation.`);
71
- });
72
- it('accepts to-1-to-n traversals', () => {
73
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
74
- type Delivery @rootEntity {
75
- deliveryNumber: String
76
- shipment: Shipment @relation(inverseOf: "deliveries")
77
- shipmentHandlingUnits: [Delivery] @collect(path: "shipment.deliveries")
78
- }
79
- type Shipment @rootEntity {
80
- deliveries: [Delivery] @relation
81
- }
82
- `);
83
- });
84
- it('accepts indirect to-1-to-n traversals', () => {
85
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
86
- type HandlingUnit @rootEntity {
87
- handlingUnitNumber: String
88
- delivery: Delivery @relation(inverseOf: "handlingUnits")
89
- }
90
- type Delivery @rootEntity {
91
- deliveryNumber: String
92
- shipment: Shipment @relation(inverseOf: "deliveries")
93
- handlingUnits: [HandlingUnit] @relation
94
- shipmentHandlingUnits: [HandlingUnit] @collect(path: "shipment.allHandlingUnits")
95
- }
96
- type Shipment @rootEntity {
97
- deliveries: [Delivery] @relation
98
- allHandlingUnits: [HandlingUnit] @collect(path: "deliveries.handlingUnits")
99
- }
100
- `);
101
- });
102
- it('rejects indirect to-n-to-n traversals due to possible duplicates', () => {
103
- (0, helpers_1.assertValidatorRejects)(`
104
- type HandlingUnit @rootEntity {
105
- handlingUnitNumber: String
106
- delivery: Delivery @relation(inverseOf: "handlingUnits")
107
- }
108
- type Delivery @rootEntity {
109
- deliveryNumber: String
110
- handlingUnits: [HandlingUnit] @relation
111
- }
112
- type Shipment @rootEntity {
113
- deliveries: [Delivery] @relation
114
- allHandlingUnits: [HandlingUnit] @collect(path: "deliveries.handlingUnits")
115
- }
116
- type Order @rootEntity {
117
- shipments: [Shipment] @relation
118
- shipmentHandlingUnits: [HandlingUnit] @collect(path: "shipments.allHandlingUnits")
119
- }
120
- `, `The path can produce duplicate HandlingUnit entities. Please set argument "aggregate" to "DISTINCT" to filter out duplicates and null items if you don't want any other aggregation.`);
121
- });
122
- it('accepts nested traversals', () => {
123
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
124
- type HandlingUnit @rootEntity {
125
- handlingUnitNumber: String
126
- delivery: Delivery @relation(inverseOf: "handlingUnits")
127
- parentHandlingUnit: HandlingUnit @relation(inverseOf: "childHandlingUnits")
128
- childHandlingUnits: [HandlingUnit] @relation
129
- }
130
- type Delivery @rootEntity {
131
- deliveryNumber: String
132
- handlingUnits: [HandlingUnit] @relation
133
- shipment: Shipment @relation(inverseOf: "deliveries")
134
- innerHandlingUnits: [HandlingUnit] @collect(path: "handlingUnits.childHandlingUnits")
135
- }
136
- type Shipment @rootEntity {
137
- deliveries: [Delivery] @relation
138
- allInnerHandlingUnits: [HandlingUnit] @collect(path: "deliveries.innerHandlingUnits")
139
- }
140
- `);
141
- });
142
- it('rejects recursively nested traversals', () => {
143
- const result = (0, helpers_1.validate)(`
144
- type HandlingUnit @rootEntity {
145
- handlingUnitNumber: String
146
- }
147
- type Delivery @rootEntity {
148
- deliveryNumber: String
149
- shipment: Shipment @relation(inverseOf: "deliveries")
150
- handlingUnits: [HandlingUnit] @relation
151
- shipmentHandlingUnits: [HandlingUnit] @collect(path: "shipment.allHandlingUnits")
152
- }
153
- type Shipment @rootEntity {
154
- deliveries: [Delivery] @relation
155
- allHandlingUnits: [HandlingUnit] @collect(path: "deliveries.shipmentHandlingUnits")
156
- }
157
- `);
158
- (0, chai_1.expect)(result.getErrors().map((e) => e.message)).to.deep.equal([
159
- `Collect field "allHandlingUnits" cannot be used here because it would cause a recursion.`,
160
- `Collect field "shipmentHandlingUnits" cannot be used here because it would cause a recursion.`,
161
- ]);
162
- });
163
- it('rejects indirectly recursively nested traversals', () => {
164
- const result = (0, helpers_1.validate)(`
165
- type HandlingUnit @rootEntity {
166
- handlingUnitNumber: String
167
- }
168
- type Delivery @rootEntity {
169
- deliveryNumber: String
170
- shipment: Shipment @relation(inverseOf: "deliveries")
171
- handlingUnits: [HandlingUnit] @relation
172
- shipmentHandlingUnits: [HandlingUnit] @collect(path: "shipment.order.allHandlingUnits")
173
- }
174
- type Shipment @rootEntity {
175
- deliveries: [Delivery] @relation
176
- order: Order @relation(inverseOf: "shipment")
177
- }
178
- type Order @rootEntity {
179
- shipment: Shipment @relation
180
- allHandlingUnits: [HandlingUnit] @collect(path: "shipment.deliveries.shipmentHandlingUnits")
181
- }
182
- `);
183
- (0, chai_1.expect)(result.getErrors().map((e) => e.message)).to.deep.equal([
184
- `Collect field "allHandlingUnits" cannot be used here because it would cause a recursion.`,
185
- `Collect field "shipmentHandlingUnits" cannot be used here because it would cause a recursion.`,
186
- ]);
187
- });
188
- it('rejects using nested collect paths with validation errors', () => {
189
- const result = (0, helpers_1.validate)(`
190
- type HandlingUnit @rootEntity {
191
- handlingUnitNumber: String
192
- allInnerHandlingUnits: [HandlingUnit] @collect(path: "childHandlingUnits{1,3}")
193
- }
194
- type Delivery @rootEntity {
195
- deliveryNumber: String
196
- handlingUnits: [HandlingUnit] @relation
197
- allInnerHandlingUnits: [HandlingUnit] @collect(path: "handlingUnits.allInnerHandlingUnits")
198
- }
199
- `);
200
- (0, chai_1.expect)(result.getErrors().map((e) => e.message)).to.deep.equal([
201
- `Type "HandlingUnit" does not have a field "childHandlingUnits".`,
202
- `The collect path of "HandlingUnit.allInnerHandlingUnits" has validation errors.`,
203
- ]);
204
- });
205
- it('rejects traversal to scalars without aggregation', () => {
206
- (0, helpers_1.assertValidatorRejects)(`
207
- type HandlingUnit @rootEntity {
208
- handlingUnitNumber: String
209
- }
210
- type Delivery @rootEntity {
211
- handlingUnits: [HandlingUnit] @relation
212
- handlingUnitNumbers: [String] @collect(path: "handlingUnits.handlingUnitNumber")
213
- }
214
- `, `The collect path results in scalar type "String", but scalars cannot be collected without aggregating them. You may want to use the "DISTINCT" aggregation.`);
215
- });
216
- it('rejects traversal with missing list type', () => {
217
- (0, helpers_1.assertValidatorRejects)(`
218
- type HandlingUnit @rootEntity {
219
- handlingUnitNumber: String
220
- }
221
- type Delivery @rootEntity {
222
- handlingUnits: [HandlingUnit] @relation
223
- hu: HandlingUnit @collect(path: "handlingUnits")
224
- }
225
- `, `This collect field should be a declared as a list.`);
226
- });
227
- it('rejects a path that does not result in a list', () => {
228
- (0, helpers_1.assertValidatorRejects)(`
229
- type HandlingUnit @rootEntity {
230
- handlingUnitNumber: String
231
- }
232
- type Delivery @rootEntity {
233
- handlingUnit: HandlingUnit @relation
234
- hus: [HandlingUnit] @collect(path: "handlingUnit")
235
- }
236
- `, `The path does not result in a list.`);
237
- });
238
- it('rejects traversal with wrong field type', () => {
239
- (0, helpers_1.assertValidatorRejects)(`
240
- type HandlingUnit @rootEntity {
241
- handlingUnitNumber: String
242
- }
243
- type Delivery @rootEntity {
244
- handlingUnits: [HandlingUnit] @relation
245
- hus: [Delivery] @collect(path: "handlingUnits")
246
- }
247
- `, `The collect path results in type "HandlingUnit", but this field is declared with type "Delivery".`);
248
- });
249
- it('rejects empty paths', () => {
250
- (0, helpers_1.assertValidatorRejects)(`
251
- type Delivery @rootEntity {
252
- deliveries: [Delivery] @collect(path: "")
253
- }
254
- `, `The path cannot be empty.`);
255
- });
256
- it('rejects paths with empty segments', () => {
257
- (0, helpers_1.assertValidatorRejects)(`
258
- type Delivery @rootEntity {
259
- childDelivery: Delivery @relation
260
- deliveries: [Delivery] @collect(path: "childDelivery..childDelivery")
261
- }
262
- `, `The path should consist of dot-separated segments.`);
263
- });
264
- it('rejects paths with invalid segments', () => {
265
- (0, helpers_1.assertValidatorRejects)(`
266
- type Delivery @rootEntity {
267
- childDelivery: Delivery @relation
268
- deliveries: [Delivery] @collect(path: "childDelivery.!")
269
- }
270
- `, `The path segment "!" is invalid. It should be a field name, optionally followed by a depth specifier like {1,2}.`);
271
- });
272
- it('rejects navigating into fields of non-objects', () => {
273
- (0, helpers_1.assertValidatorRejects)(`
274
- type Delivery @rootEntity {
275
- deliveries: [Delivery] @collect(path: "deliveryNumber.delivery")
276
- deliveryNumber: String
277
- }
278
- `, `Type "String" is not an object type and cannot be navigated into.`);
279
- });
280
- it('rejects unknown field in path', () => {
281
- (0, helpers_1.assertValidatorRejects)(`
282
- type Delivery @rootEntity {
283
- hus: [Delivery] @collect(path: "handlingUnits")
284
- }
285
- `, `Type "Delivery" does not have a field "handlingUnits".`);
286
- });
287
- it('rejects references in path', () => {
288
- (0, helpers_1.assertValidatorRejects)(`
289
- type Country @rootEntity {
290
- isoCode: String @key
291
- }
292
- type Delivery @rootEntity {
293
- country: Country @reference
294
- c: Country @collect(path: "country")
295
- }
296
- `, `Field "Delivery.country" is a reference and cannot be used in a collect path.`);
297
- });
298
- it('rejects fields with root-entity type that are neither relation nor reference', () => {
299
- const result = (0, helpers_1.validate)(`
300
- type Country @rootEntity {
301
- isoCode: String @key
302
- }
303
- type Delivery @rootEntity {
304
- country: Country
305
- c: Country @collect(path: "country")
306
- }
307
- `);
308
- (0, chai_1.expect)(result.getErrors().map((e) => e.message)).to.deep.equal([
309
- `Type "Country" is a root entity type and cannot be embedded. Consider adding @reference or @relation.`,
310
- `Field "Delivery.country" is a root entity, but not a relation, and cannot be used in a collect path.`,
311
- ]);
312
- });
313
- it('rejects missing path', () => {
314
- (0, helpers_1.assertValidatorRejects)(`
315
- type Country @rootEntity {
316
- isoCode: String @key
317
- }
318
- type Delivery @rootEntity {
319
- tra: Country @collect
320
- }
321
- `, `Directive "@collect" argument "path" of type "String!" is required, but it was not provided.`);
322
- });
323
- it('rejects empty path', () => {
324
- (0, helpers_1.assertValidatorRejects)(`
325
- type Country @rootEntity {
326
- isoCode: String @key
327
- }
328
- type Delivery @rootEntity {
329
- tra: Country @collect(path: "")
330
- }
331
- `, `The path cannot be empty.`);
332
- });
333
- it('rejects combined with relation', () => {
334
- (0, helpers_1.assertValidatorRejects)(`
335
- type Delivery @rootEntity {
336
- tra: Delivery @relation @collect(path: "tra")
337
- }
338
- `, `@collect and @relation cannot be combined.`);
339
- });
340
- it('accept depth specifier on to-n relations', () => {
341
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
342
- type HandlingUnit @rootEntity {
343
- childHandlingUnits: [HandlingUnit] @relation
344
- allInnerHandlingUnits: [HandlingUnit] @collect(path: "childHandlingUnits{1,3}")
345
- }
346
- `);
347
- });
348
- it('accept depth specifier with min=0 on to-n relations', () => {
349
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
350
- type HandlingUnit @rootEntity {
351
- childHandlingUnits: [HandlingUnit] @relation
352
- allInnerHandlingUnits: [HandlingUnit] @collect(path: "childHandlingUnits{0,3}")
353
- }
354
- `);
355
- });
356
- it('accept depth specifier with implicit max', () => {
357
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
358
- type HandlingUnit @rootEntity {
359
- childHandlingUnits: [HandlingUnit] @relation
360
- allInnerHandlingUnits: [HandlingUnit] @collect(path: "childHandlingUnits{2}")
361
- }
362
- `);
363
- });
364
- it('rejects depth specifier if min=max=0', () => {
365
- (0, helpers_1.assertValidatorRejects)(`
366
- type HandlingUnit @rootEntity {
367
- childHandlingUnits: [HandlingUnit] @relation
368
- allInnerHandlingUnits: [HandlingUnit] @collect(path: "childHandlingUnits{0}")
369
- }
370
- `, `The maximum depth cannot be zero.`);
371
- });
372
- it('rejects depth specifier if max < min', () => {
373
- (0, helpers_1.assertValidatorRejects)(`
374
- type HandlingUnit @rootEntity {
375
- childHandlingUnits: [HandlingUnit] @relation
376
- allInnerHandlingUnits: [HandlingUnit] @collect(path: "childHandlingUnits{2,1}")
377
- }
378
- `, `The maximum depth (1) cannot be lower than the minimum depth (2).`);
379
- });
380
- it('rejects depth specifier on child entities', () => {
381
- (0, helpers_1.assertValidatorRejects)(`
382
- type Item @childEntity {
383
- subItems: [Item]
384
- }
385
- type Delivery @rootEntity {
386
- items: [Item]
387
- allItems: [Item] @collect(path: "items.subItems{0,3}")
388
- }
389
- `, `A depth specifier is only valid for relation fields, and field "Item.subItems" is not a relation.`);
390
- });
391
- it('rejects depth specifier on non-self relations', () => {
392
- (0, helpers_1.assertValidatorRejects)(`
393
- type HandlingUnit @rootEntity {
394
- handlingUnitNumber: String
395
- }
396
- type Delivery @rootEntity {
397
- handlingUnits: [HandlingUnit] @relation
398
- allHandlingUnits: [HandlingUnit] @collect(path: "handlingUnits{0,3}")
399
- }
400
- `, `A depth specifier is only valid for recursive relation fields, and field "Delivery.handlingUnits" is not of type "Delivery", but of type "HandlingUnit".`);
401
- });
402
- it('rejects depth specifier greater than 1 on to-1 relations', () => {
403
- (0, helpers_1.assertValidatorRejects)(`
404
- type Delivery @rootEntity {
405
- siblingDelivery: Delivery @relation
406
- thisAndSiblings: [Delivery] @collect(path: "siblingDelivery{0,2}")
407
- }
408
- `, `The maximum depth of "Delivery.siblingDelivery" cannot be higher than 1 because it is a to-1 relation.`);
409
- });
410
- it('accepts depth specifier of 0..1 on to-1 relations but rejects because of possible duplicates', () => {
411
- (0, helpers_1.assertValidatorRejects)(`
412
- type Delivery @rootEntity {
413
- siblingDelivery: Delivery @relation
414
- thisAndSibling: [Delivery] @collect(path: "siblingDelivery{0,1}")
415
- }
416
- `, `The collect path can produce items that are null because "Delivery.siblingDelivery" can be null. Please set argument "aggregate" to "DISTINCT" to filter out null items if you don't want any other aggregation.`);
417
- });
418
- });
419
- describe('with aggregate', () => {
420
- it('accepts sum aggregation', () => {
421
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
422
- type HandlingUnit @rootEntity {
423
- totalWeightInKg: Float
424
- }
425
- type Delivery @rootEntity {
426
- handlingUnits: [HandlingUnit] @relation
427
- totalWeightInKg: Float @collect(path: "handlingUnits.totalWeightInKg", aggregate: SUM)
428
- }
429
- type Shipment @rootEntity {
430
- deliveries: [Delivery] @relation
431
- totalWeightInKg: Float @collect(path: "deliveries.handlingUnits.totalWeightInKg", aggregate: SUM)
432
- }
433
- `);
434
- });
435
- it('rejects wrong field type for SUM', () => {
436
- (0, helpers_1.assertValidatorRejects)(`
437
- type HandlingUnit @rootEntity {
438
- totalWeightInKg: Float
439
- }
440
- type Delivery @rootEntity {
441
- handlingUnits: [HandlingUnit] @relation
442
- totalWeightInKg: Int @collect(path: "handlingUnits.totalWeightInKg", aggregate: SUM)
443
- }
444
- `, `The aggregation results in type "Float", but this field is declared with type "Int".`);
445
- });
446
- it('rejects wrong field type for COUNT', () => {
447
- (0, helpers_1.assertValidatorRejects)(`
448
- type HandlingUnit @rootEntity {
449
- totalWeightInKg: Float
450
- }
451
- type Delivery @rootEntity {
452
- handlingUnits: [HandlingUnit] @relation
453
- totalWeightInKg: Float @collect(path: "handlingUnits", aggregate: COUNT)
454
- }
455
- `, `The aggregation results in type "Int", but this field is declared with type "Float".`);
456
- });
457
- it('rejects wrongly declared list', () => {
458
- (0, helpers_1.assertValidatorRejects)(`
459
- type HandlingUnit @rootEntity {
460
- totalWeightInKg: Float
461
- }
462
- type Delivery @rootEntity {
463
- handlingUnits: [HandlingUnit] @relation
464
- totalWeightInKg: [Int] @collect(path: "handlingUnits", aggregate: COUNT)
465
- }
466
- `, `This aggregation field should not be declared as a list.`);
467
- });
468
- it('rejects SUM on DateTimes', () => {
469
- (0, helpers_1.assertValidatorRejects)(`
470
- type HandlingUnit @rootEntity {
471
- totalWeightInKg: Float
472
- packedAt: DateTime
473
- }
474
- type Delivery @rootEntity {
475
- handlingUnits: [HandlingUnit] @relation
476
- packedAtCount: Int @collect(path: "handlingUnits", aggregate: COUNT)
477
- totalPackedAt: DateTime @collect(path: "handlingUnits.packedAt", aggregate: SUM)
478
- }
479
- `, `Aggregation operator "SUM" is not supported on type "DateTime" (supported types: "Int", "Int53", "Float", "Decimal1", "Decimal2", "Decimal3").`);
480
- });
481
- it('accepts MAX on OffsetDateTime', () => {
482
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
483
- type HandlingUnit @rootEntity {
484
- packedAt: OffsetDateTime
485
- }
486
- type Delivery @rootEntity {
487
- handlingUnits: [HandlingUnit] @relation
488
- totalPackedAt: DateTime @collect(path: "handlingUnits.packedAt", aggregate: MAX)
489
- }
490
- `);
491
- });
492
- it('rejects MAX on OffsetDateTime with OffsetDateTime as collect field type', () => {
493
- (0, helpers_1.assertValidatorRejects)(`
494
- type HandlingUnit @rootEntity {
495
- packedAt: OffsetDateTime
496
- }
497
- type Delivery @rootEntity {
498
- handlingUnits: [HandlingUnit] @relation
499
- totalPackedAt: OffsetDateTime @collect(path: "handlingUnits.packedAt", aggregate: MAX)
500
- }
501
- `, 'The aggregation results in type "DateTime", but this field is declared with type "OffsetDateTime".');
502
- });
503
- it('accepts collect fields within aggregation paths', () => {
504
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
505
- type HandlingUnit @rootEntity {
506
- weightInKg: Float
507
- delivery: Delivery @relation(inverseOf: "handlingUnits")
508
- }
509
- type Delivery @rootEntity {
510
- handlingUnits: [HandlingUnit] @relation
511
- }
512
- type Shipment @rootEntity {
513
- deliveries: [Delivery] @relation
514
- allHandlingUnits: [HandlingUnit] @collect(path: "deliveries.handlingUnits")
515
- totalWeightInKg: Float @collect(path: "allHandlingUnits.weightInKg", aggregate: SUM)
516
- }
517
- `);
518
- });
519
- it('rejects aggregations within aggregation paths', () => {
520
- // would need extra handling, may support in the future. stuff like average would be ambiguous though.
521
- (0, helpers_1.assertValidatorRejects)(`
522
- type HandlingUnit @rootEntity {
523
- weightInKg: Float
524
- }
525
- type Delivery @rootEntity {
526
- handlingUnits: [HandlingUnit] @relation
527
- totalWeightInKg: Float @collect(path: "handlingUnits.weightInKg", aggregate: SUM)
528
- }
529
- type Shipment @rootEntity {
530
- deliveries: [Delivery] @relation
531
- totalWeightInKg: Float @collect(path: "deliveries.totalWeightInKg", aggregate: SUM)
532
- }
533
- `, `Field "Delivery.totalWeightInKg" is an aggregation field and cannot be used in a collect path.`);
534
- });
535
- it('rejects parent fields within the path', () => {
536
- (0, helpers_1.assertValidatorRejects)(`
537
- type Delivery @rootEntity {
538
- this: [Delivery] @collect(path: "children.children.parent")
539
- children: [Child]
540
- }
541
-
542
- type Child @childEntity {
543
- children: [Grandchild]
544
- }
545
-
546
- type Grandchild @childEntity {
547
- name: String
548
- parent: Child @parent
549
- }
550
- `, `Field "Grandchild.parent" is a parent field and cannot be used in a collect path.`);
551
- });
552
- it('rejects root fields within the path', () => {
553
- (0, helpers_1.assertValidatorRejects)(`
554
- type Delivery @rootEntity {
555
- this: [Delivery] @collect(path: "children.parent")
556
- children: [Child]
557
- }
558
-
559
- type Child @childEntity {
560
- name: String
561
- parent: Delivery @root
562
- }
563
- `, `Field "Child.parent" is a root field and cannot be used in a collect path.`);
564
- });
565
- describe('distinct', () => {
566
- it('is supported on strings', () => {
567
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
568
- type Delivery @rootEntity {
569
- keys: [String]
570
- distinctKeys: [String] @collect(path: "keys", aggregate: DISTINCT)
571
- }
572
- `);
573
- });
574
- it('is supported on enums', () => {
575
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
576
- enum Kind { OBJECT, TYPE, FIELD }
577
-
578
- type Delivery @rootEntity {
579
- kinds: [Kind]
580
- distinctKinds: [Kind] @collect(path: "kinds", aggregate: DISTINCT)
581
- }
582
- `);
583
- });
584
- it('is not supported on entity extensions', () => {
585
- (0, helpers_1.assertValidatorRejects)(`
586
- type ItemExtension @entityExtension {
587
- code: String
588
- }
589
-
590
- type Item @childEntity {
591
- extension: ItemExtension
592
- }
593
-
594
- type Delivery @rootEntity {
595
- items: [Item]
596
- distinctItemExtensions: [ItemExtension] @collect(path: "items.extension", aggregate: DISTINCT)
597
- }
598
- `, 'Aggregation operator "DISTINCT" is not supported on entity extension types. You can instead collect the parent objects by removing the last path segment.');
599
- });
600
- it('is supported on simple value objects', () => {
601
- (0, helpers_1.assertValidatorAcceptsAndDoesNotWarn)(`
602
- enum Kind { OBJECT, TYPE, FIELD }
603
-
604
- type Identifier @valueObject {
605
- kind: Kind
606
- id: String
607
- }
608
-
609
- type Delivery @rootEntity {
610
- identifiers: [Identifier]
611
- distinctIdentifiers: [Identifier] @collect(path: "identifiers", aggregate: DISTINCT)
612
- }
613
- `);
614
- });
615
- it('is supported on value objects containing floats', () => {
616
- (0, helpers_1.assertValidatorRejects)(`
617
- enum VolumeUnit { M3, LITER, BARRELS }
618
-
619
- type Volume @valueObject {
620
- unit: VolumeUnit
621
- value: Float
622
- }
623
-
624
- type Delivery @rootEntity {
625
- volumes: [Volume]
626
- distinctVolumes: [Volume] @collect(path: "volumes", aggregate: DISTINCT)
627
- }
628
- `, 'Aggregation operator "DISTINCT" is not supported on value object type "Volume" because its field "value" has a type that does not support this operator.');
629
- });
630
- });
631
- });
632
- });
633
- //# sourceMappingURL=collect-validation.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collect-validation.spec.js","sourceRoot":"","sources":["../../../../spec/schema/ast-validation-modules/collect-validation.spec.ts"],"names":[],"mappings":"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"}