zibri 2.4.0 → 2.4.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 (517) hide show
  1. package/dist/cjs/application.d.ts.map +1 -1
  2. package/dist/cjs/application.js +8 -2
  3. package/dist/cjs/application.js.map +1 -1
  4. package/dist/cjs/auth/encryption/encryption-key.model.d.ts +5 -1
  5. package/dist/cjs/auth/encryption/encryption-key.model.d.ts.map +1 -1
  6. package/dist/cjs/auth/encryption/encryption-key.model.js +9 -1
  7. package/dist/cjs/auth/encryption/encryption-key.model.js.map +1 -1
  8. package/dist/cjs/auth/strategies/cookie/cookie-auth.auth-strategy.d.ts.map +1 -1
  9. package/dist/cjs/auth/strategies/cookie/cookie-auth.auth-strategy.js.map +1 -1
  10. package/dist/cjs/auth/strategies/jwt/jwt-credentials.model.d.ts +5 -1
  11. package/dist/cjs/auth/strategies/jwt/jwt-credentials.model.d.ts.map +1 -1
  12. package/dist/cjs/auth/strategies/jwt/jwt-credentials.model.js +9 -1
  13. package/dist/cjs/auth/strategies/jwt/jwt-credentials.model.js.map +1 -1
  14. package/dist/cjs/auth/strategies/jwt/jwt.auth-strategy.d.ts.map +1 -1
  15. package/dist/cjs/auth/strategies/jwt/jwt.auth-strategy.js +2 -1
  16. package/dist/cjs/auth/strategies/jwt/jwt.auth-strategy.js.map +1 -1
  17. package/dist/cjs/backup/backup-resource-entity.model.d.ts +5 -1
  18. package/dist/cjs/backup/backup-resource-entity.model.d.ts.map +1 -1
  19. package/dist/cjs/backup/backup-resource-entity.model.js +9 -1
  20. package/dist/cjs/backup/backup-resource-entity.model.js.map +1 -1
  21. package/dist/cjs/backup/backup.service.js +2 -2
  22. package/dist/cjs/backup/backup.service.js.map +1 -1
  23. package/dist/cjs/caching/cache/base-cache.model.js.map +1 -1
  24. package/dist/cjs/caching/cache/multi-tier.cache.js.map +1 -1
  25. package/dist/cjs/caching/cache/read-aside/read-aside.cache.js.map +1 -1
  26. package/dist/cjs/caching/cache/read-aside/write-around-read-aside.cache.js.map +1 -1
  27. package/dist/cjs/caching/cache/read-aside/write-behind-read-aside.cache.js.map +1 -1
  28. package/dist/cjs/caching/cache/read-aside/write-invalidate-read-aside-args-only.cache.js.map +1 -1
  29. package/dist/cjs/caching/cache/read-aside/write-invalidate-read-aside-with-result.cache.js.map +1 -1
  30. package/dist/cjs/caching/cache/read-aside/write-through-read-aside.cache.js.map +1 -1
  31. package/dist/cjs/caching/cache/read-through/read-through.cache.js.map +1 -1
  32. package/dist/cjs/caching/cache/read-through/write-around-read-through.cache.js.map +1 -1
  33. package/dist/cjs/caching/cache/read-through/write-behind-read-through.cache.js.map +1 -1
  34. package/dist/cjs/caching/cache/read-through/write-invalidate-read-through-args-only.cache.js.map +1 -1
  35. package/dist/cjs/caching/cache/read-through/write-invalidate-read-through-with-result.cache.js.map +1 -1
  36. package/dist/cjs/caching/cache/read-through/write-through-read-through.cache.js.map +1 -1
  37. package/dist/cjs/change-sets/change-set-repository.d.ts +5 -3
  38. package/dist/cjs/change-sets/change-set-repository.d.ts.map +1 -1
  39. package/dist/cjs/change-sets/change-set-repository.js +16 -16
  40. package/dist/cjs/change-sets/change-set-repository.js.map +1 -1
  41. package/dist/cjs/change-sets/models/change-set-entity.model.d.ts +2 -2
  42. package/dist/cjs/change-sets/models/change-set-entity.model.d.ts.map +1 -1
  43. package/dist/cjs/change-sets/models/change-set-entity.model.js +29 -1
  44. package/dist/cjs/change-sets/models/change-set-entity.model.js.map +1 -1
  45. package/dist/cjs/change-sets/models/change-set.model.js +1 -1
  46. package/dist/cjs/change-sets/models/change-set.model.js.map +1 -1
  47. package/dist/cjs/change-sets/models/change.model.d.ts +5 -1
  48. package/dist/cjs/change-sets/models/change.model.d.ts.map +1 -1
  49. package/dist/cjs/change-sets/models/change.model.js +9 -1
  50. package/dist/cjs/change-sets/models/change.model.js.map +1 -1
  51. package/dist/cjs/change-sets/models/soft-delete-entity.model.d.ts +2 -2
  52. package/dist/cjs/change-sets/models/soft-delete-entity.model.d.ts.map +1 -1
  53. package/dist/cjs/change-sets/models/soft-delete-entity.model.js +26 -0
  54. package/dist/cjs/change-sets/models/soft-delete-entity.model.js.map +1 -1
  55. package/dist/cjs/change-sets/soft-delete-repository.d.ts +6 -5
  56. package/dist/cjs/change-sets/soft-delete-repository.d.ts.map +1 -1
  57. package/dist/cjs/change-sets/soft-delete-repository.js +22 -6
  58. package/dist/cjs/change-sets/soft-delete-repository.js.map +1 -1
  59. package/dist/cjs/context/als.utilities.d.ts +3 -3
  60. package/dist/cjs/context/als.utilities.d.ts.map +1 -1
  61. package/dist/cjs/context/als.utilities.js.map +1 -1
  62. package/dist/cjs/context/cache/cache.context.d.ts +27 -0
  63. package/dist/cjs/context/cache/cache.context.d.ts.map +1 -0
  64. package/dist/cjs/context/cache/cache.context.js +61 -0
  65. package/dist/cjs/context/cache/cache.context.js.map +1 -0
  66. package/dist/cjs/data-source/data-sources/data-source-initialization.error.d.ts +7 -0
  67. package/dist/cjs/data-source/data-sources/data-source-initialization.error.d.ts.map +1 -0
  68. package/dist/cjs/data-source/data-sources/data-source-initialization.error.js +14 -0
  69. package/dist/cjs/data-source/data-sources/data-source-initialization.error.js.map +1 -0
  70. package/dist/cjs/data-source/data-sources/data-source.interface.d.ts +9 -1
  71. package/dist/cjs/data-source/data-sources/data-source.interface.d.ts.map +1 -1
  72. package/dist/cjs/data-source/data-sources/data-source.interface.js.map +1 -1
  73. package/dist/cjs/data-source/data-sources/postgres-typeorm-data-source.model.d.ts +44 -0
  74. package/dist/cjs/data-source/data-sources/postgres-typeorm-data-source.model.d.ts.map +1 -0
  75. package/dist/cjs/data-source/data-sources/postgres-typeorm-data-source.model.js +289 -0
  76. package/dist/cjs/data-source/data-sources/postgres-typeorm-data-source.model.js.map +1 -0
  77. package/dist/cjs/data-source/data-sources/sql-data-source.interface.d.ts +32 -0
  78. package/dist/cjs/data-source/data-sources/sql-data-source.interface.d.ts.map +1 -0
  79. package/dist/cjs/{entity/models/one-to-one-property-metadata.model.js → data-source/data-sources/sql-data-source.interface.js} +1 -1
  80. package/dist/cjs/data-source/data-sources/sql-data-source.interface.js.map +1 -0
  81. package/dist/cjs/data-source/data-sources/typeorm-base-data-source.model.d.ts +156 -0
  82. package/dist/cjs/data-source/data-sources/typeorm-base-data-source.model.d.ts.map +1 -0
  83. package/dist/cjs/data-source/data-sources/typeorm-base-data-source.model.js +378 -0
  84. package/dist/cjs/data-source/data-sources/typeorm-base-data-source.model.js.map +1 -0
  85. package/dist/cjs/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.d.ts +25 -0
  86. package/dist/cjs/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.d.ts.map +1 -0
  87. package/dist/cjs/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.js +353 -0
  88. package/dist/cjs/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.js.map +1 -0
  89. package/dist/cjs/data-source/data-sources/where-converter/typeorm-where-filter.converter.d.ts +70 -0
  90. package/dist/cjs/data-source/data-sources/where-converter/typeorm-where-filter.converter.d.ts.map +1 -0
  91. package/dist/cjs/data-source/data-sources/where-converter/typeorm-where-filter.converter.js +248 -0
  92. package/dist/cjs/data-source/data-sources/where-converter/typeorm-where-filter.converter.js.map +1 -0
  93. package/dist/cjs/data-source/models/options/count-options.model.d.ts +2 -7
  94. package/dist/cjs/data-source/models/options/count-options.model.d.ts.map +1 -1
  95. package/dist/cjs/data-source/models/options/delete-all-options.model.d.ts +2 -4
  96. package/dist/cjs/data-source/models/options/delete-all-options.model.d.ts.map +1 -1
  97. package/dist/cjs/data-source/models/options/find-all-options.model.d.ts +2 -2
  98. package/dist/cjs/data-source/models/options/find-all-options.model.d.ts.map +1 -1
  99. package/dist/cjs/data-source/models/options/find-by-id-options.model.d.ts +1 -6
  100. package/dist/cjs/data-source/models/options/find-by-id-options.model.d.ts.map +1 -1
  101. package/dist/cjs/data-source/models/options/find-one-options.model.d.ts +2 -11
  102. package/dist/cjs/data-source/models/options/find-one-options.model.d.ts.map +1 -1
  103. package/dist/cjs/data-source/models/options/update-all-options.model.d.ts +1 -7
  104. package/dist/cjs/data-source/models/options/update-all-options.model.d.ts.map +1 -1
  105. package/dist/cjs/data-source/models/options/update-by-id-options.model.d.ts +1 -7
  106. package/dist/cjs/data-source/models/options/update-by-id-options.model.d.ts.map +1 -1
  107. package/dist/cjs/data-source/models/where/array-where-filter.model.d.ts +142 -3
  108. package/dist/cjs/data-source/models/where/array-where-filter.model.d.ts.map +1 -1
  109. package/dist/cjs/data-source/models/where/base-where-filter.model.d.ts +18 -1
  110. package/dist/cjs/data-source/models/where/base-where-filter.model.d.ts.map +1 -1
  111. package/dist/cjs/data-source/models/where/boolean-where-filter.model.d.ts +4 -2
  112. package/dist/cjs/data-source/models/where/boolean-where-filter.model.d.ts.map +1 -1
  113. package/dist/cjs/data-source/models/where/date-where-filter.model.d.ts +8 -15
  114. package/dist/cjs/data-source/models/where/date-where-filter.model.d.ts.map +1 -1
  115. package/dist/cjs/data-source/models/where/number-where-filter.model.d.ts +8 -15
  116. package/dist/cjs/data-source/models/where/number-where-filter.model.d.ts.map +1 -1
  117. package/dist/cjs/data-source/models/where/object-where-filter.model.d.ts +52 -7
  118. package/dist/cjs/data-source/models/where/object-where-filter.model.d.ts.map +1 -1
  119. package/dist/cjs/data-source/models/where/string-where-filter.model.d.ts +8 -15
  120. package/dist/cjs/data-source/models/where/string-where-filter.model.d.ts.map +1 -1
  121. package/dist/cjs/data-source/models/where/where-filter-keys.model.d.ts +46 -0
  122. package/dist/cjs/data-source/models/where/where-filter-keys.model.d.ts.map +1 -0
  123. package/dist/cjs/data-source/models/where/where-filter-keys.model.js +36 -0
  124. package/dist/cjs/data-source/models/where/where-filter-keys.model.js.map +1 -0
  125. package/dist/cjs/data-source/models/where/where-filter.model.d.ts +2 -2
  126. package/dist/cjs/data-source/models/where/where-filter.model.d.ts.map +1 -1
  127. package/dist/cjs/data-source/query-failed.error.js +27 -1
  128. package/dist/cjs/data-source/query-failed.error.js.map +1 -1
  129. package/dist/cjs/data-source/repository.d.ts +8 -3
  130. package/dist/cjs/data-source/repository.d.ts.map +1 -1
  131. package/dist/cjs/data-source/repository.js +42 -16
  132. package/dist/cjs/data-source/repository.js.map +1 -1
  133. package/dist/cjs/di/decorators/inject-repository.decorator.d.ts +2 -2
  134. package/dist/cjs/di/decorators/inject-repository.decorator.d.ts.map +1 -1
  135. package/dist/cjs/di/decorators/inject-repository.decorator.js.map +1 -1
  136. package/dist/cjs/di/default/zibri-di-tokens.default.d.ts +2 -2
  137. package/dist/cjs/di/default/zibri-di-tokens.default.d.ts.map +1 -1
  138. package/dist/cjs/di/default/zibri-di-tokens.default.js.map +1 -1
  139. package/dist/cjs/email/email.service.d.ts +2 -2
  140. package/dist/cjs/email/email.service.d.ts.map +1 -1
  141. package/dist/cjs/email/email.service.js +4 -6
  142. package/dist/cjs/email/email.service.js.map +1 -1
  143. package/dist/cjs/email/models/email.model.js +1 -1
  144. package/dist/cjs/email/models/email.model.js.map +1 -1
  145. package/dist/cjs/entity/decorators/entity.decorator.d.ts +28 -1
  146. package/dist/cjs/entity/decorators/entity.decorator.d.ts.map +1 -1
  147. package/dist/cjs/entity/decorators/entity.decorator.js +6 -3
  148. package/dist/cjs/entity/decorators/entity.decorator.js.map +1 -1
  149. package/dist/cjs/entity/decorators/property.decorator.d.ts +5 -8
  150. package/dist/cjs/entity/decorators/property.decorator.d.ts.map +1 -1
  151. package/dist/cjs/entity/decorators/property.decorator.js +34 -20
  152. package/dist/cjs/entity/decorators/property.decorator.js.map +1 -1
  153. package/dist/cjs/entity/entity-metadata-missing.error.d.ts +9 -0
  154. package/dist/cjs/entity/entity-metadata-missing.error.d.ts.map +1 -0
  155. package/dist/cjs/entity/entity-metadata-missing.error.js +17 -0
  156. package/dist/cjs/entity/entity-metadata-missing.error.js.map +1 -0
  157. package/dist/cjs/entity/models/base-relation-metadata.model.d.ts +1 -1
  158. package/dist/cjs/entity/models/belongs-to-one-property-metadata.model.d.ts +28 -0
  159. package/dist/cjs/entity/models/belongs-to-one-property-metadata.model.d.ts.map +1 -0
  160. package/dist/cjs/entity/models/belongs-to-one-property-metadata.model.js +3 -0
  161. package/dist/cjs/entity/models/belongs-to-one-property-metadata.model.js.map +1 -0
  162. package/dist/cjs/entity/models/has-one-property-metadata.model.d.ts +18 -0
  163. package/dist/cjs/entity/models/has-one-property-metadata.model.d.ts.map +1 -0
  164. package/dist/{esm/entity/models/one-to-one-property-metadata.model.js → cjs/entity/models/has-one-property-metadata.model.js} +1 -1
  165. package/dist/cjs/entity/models/has-one-property-metadata.model.js.map +1 -0
  166. package/dist/cjs/entity/models/many-to-many-property-metadata.model.d.ts +3 -3
  167. package/dist/cjs/entity/models/many-to-many-property-metadata.model.d.ts.map +1 -1
  168. package/dist/cjs/entity/models/many-to-one-property-metadata.model.d.ts +11 -1
  169. package/dist/cjs/entity/models/many-to-one-property-metadata.model.d.ts.map +1 -1
  170. package/dist/cjs/entity/models/relation.enum.d.ts +2 -1
  171. package/dist/cjs/entity/models/relation.enum.d.ts.map +1 -1
  172. package/dist/cjs/entity/models/relation.enum.js +2 -1
  173. package/dist/cjs/entity/models/relation.enum.js.map +1 -1
  174. package/dist/cjs/entity/partial-class.model.js +1 -1
  175. package/dist/cjs/entity/partial-class.model.js.map +1 -1
  176. package/dist/cjs/event/event-cleanup.cron-job.d.ts.map +1 -1
  177. package/dist/cjs/event/event-cleanup.cron-job.js +4 -6
  178. package/dist/cjs/event/event-cleanup.cron-job.js.map +1 -1
  179. package/dist/cjs/event/event-subscriber-run.model.d.ts +6 -8
  180. package/dist/cjs/event/event-subscriber-run.model.d.ts.map +1 -1
  181. package/dist/cjs/event/event-subscriber-run.model.js +10 -17
  182. package/dist/cjs/event/event-subscriber-run.model.js.map +1 -1
  183. package/dist/cjs/event/event.model.js +1 -1
  184. package/dist/cjs/event/event.model.js.map +1 -1
  185. package/dist/cjs/event/event.service.d.ts.map +1 -1
  186. package/dist/cjs/event/event.service.js +6 -3
  187. package/dist/cjs/event/event.service.js.map +1 -1
  188. package/dist/cjs/global/model-registry/default-descriptor.d.ts.map +1 -1
  189. package/dist/cjs/global/model-registry/default-descriptor.js +2 -1
  190. package/dist/cjs/global/model-registry/default-descriptor.js.map +1 -1
  191. package/dist/cjs/global/model-registry/encryption-descriptor.d.ts.map +1 -1
  192. package/dist/cjs/global/model-registry/encryption-descriptor.js +2 -1
  193. package/dist/cjs/global/model-registry/encryption-descriptor.js.map +1 -1
  194. package/dist/cjs/global/model-registry/exclude-descriptor.d.ts.map +1 -1
  195. package/dist/cjs/global/model-registry/exclude-descriptor.js +2 -1
  196. package/dist/cjs/global/model-registry/exclude-descriptor.js.map +1 -1
  197. package/dist/cjs/global/model-registry/hash-descriptor.d.ts.map +1 -1
  198. package/dist/cjs/global/model-registry/hash-descriptor.js +2 -1
  199. package/dist/cjs/global/model-registry/hash-descriptor.js.map +1 -1
  200. package/dist/cjs/index.d.ts +12 -3
  201. package/dist/cjs/index.d.ts.map +1 -1
  202. package/dist/cjs/index.js +12 -3
  203. package/dist/cjs/index.js.map +1 -1
  204. package/dist/cjs/logging/log-context.model.d.ts +2 -27
  205. package/dist/cjs/logging/log-context.model.d.ts.map +1 -1
  206. package/dist/cjs/logging/log-context.model.js +3 -49
  207. package/dist/cjs/logging/log-context.model.js.map +1 -1
  208. package/dist/cjs/open-api/open-api.service.d.ts.map +1 -1
  209. package/dist/cjs/open-api/open-api.service.js +20 -11
  210. package/dist/cjs/open-api/open-api.service.js.map +1 -1
  211. package/dist/cjs/parsing/form-data/form-data.body-parser.d.ts.map +1 -1
  212. package/dist/cjs/parsing/form-data/form-data.body-parser.js +2 -1
  213. package/dist/cjs/parsing/form-data/form-data.body-parser.js.map +1 -1
  214. package/dist/cjs/parsing/functions/parse-boolean.function.d.ts.map +1 -1
  215. package/dist/cjs/parsing/functions/parse-boolean.function.js.map +1 -1
  216. package/dist/cjs/parsing/functions/parse-object.function.d.ts.map +1 -1
  217. package/dist/cjs/parsing/functions/parse-object.function.js +2 -1
  218. package/dist/cjs/parsing/functions/parse-object.function.js.map +1 -1
  219. package/dist/cjs/parsing/parser.d.ts.map +1 -1
  220. package/dist/cjs/parsing/parser.js +2 -1
  221. package/dist/cjs/parsing/parser.js.map +1 -1
  222. package/dist/cjs/routing/decorators/body.decorator.js +2 -1
  223. package/dist/cjs/routing/decorators/body.decorator.js.map +1 -1
  224. package/dist/cjs/routing/resolve-route-params.function.js +1 -1
  225. package/dist/cjs/routing/resolve-route-params.function.js.map +1 -1
  226. package/dist/cjs/routing/router.d.ts.map +1 -1
  227. package/dist/cjs/routing/router.js +38 -2
  228. package/dist/cjs/routing/router.js.map +1 -1
  229. package/dist/cjs/utilities/metadata-injection-keys.enum.d.ts +1 -0
  230. package/dist/cjs/utilities/metadata-injection-keys.enum.d.ts.map +1 -1
  231. package/dist/cjs/utilities/metadata-injection-keys.enum.js +1 -0
  232. package/dist/cjs/utilities/metadata-injection-keys.enum.js.map +1 -1
  233. package/dist/cjs/utilities/typeorm.utilities.d.ts +39 -0
  234. package/dist/cjs/utilities/typeorm.utilities.d.ts.map +1 -0
  235. package/dist/cjs/utilities/typeorm.utilities.js +47 -0
  236. package/dist/cjs/utilities/typeorm.utilities.js.map +1 -0
  237. package/dist/cjs/validation/validation-problem.model.d.ts.map +1 -1
  238. package/dist/cjs/validation/validation-problem.model.js +4 -7
  239. package/dist/cjs/validation/validation-problem.model.js.map +1 -1
  240. package/dist/cjs/validation/validation.service.d.ts.map +1 -1
  241. package/dist/cjs/validation/validation.service.js +6 -4
  242. package/dist/cjs/validation/validation.service.js.map +1 -1
  243. package/dist/cjs/websocket/models/websocket-message.model.js +1 -1
  244. package/dist/cjs/websocket/models/websocket-message.model.js.map +1 -1
  245. package/dist/cjs/websocket/models/websocket-request.model.d.ts +5 -11
  246. package/dist/cjs/websocket/models/websocket-request.model.d.ts.map +1 -1
  247. package/dist/cjs/websocket/models/websocket-request.model.js.map +1 -1
  248. package/dist/cjs/websocket/services/websocket.service.d.ts.map +1 -1
  249. package/dist/cjs/websocket/services/websocket.service.js +1 -2
  250. package/dist/cjs/websocket/services/websocket.service.js.map +1 -1
  251. package/dist/esm/application.js +8 -2
  252. package/dist/esm/application.js.map +1 -1
  253. package/dist/esm/auth/encryption/encryption-key.model.js +9 -1
  254. package/dist/esm/auth/encryption/encryption-key.model.js.map +1 -1
  255. package/dist/esm/auth/strategies/cookie/cookie-auth.auth-strategy.js.map +1 -1
  256. package/dist/esm/auth/strategies/jwt/jwt-credentials.model.js +9 -1
  257. package/dist/esm/auth/strategies/jwt/jwt-credentials.model.js.map +1 -1
  258. package/dist/esm/auth/strategies/jwt/jwt.auth-strategy.js +2 -1
  259. package/dist/esm/auth/strategies/jwt/jwt.auth-strategy.js.map +1 -1
  260. package/dist/esm/backup/backup-resource-entity.model.js +9 -1
  261. package/dist/esm/backup/backup-resource-entity.model.js.map +1 -1
  262. package/dist/esm/backup/backup.service.js +2 -2
  263. package/dist/esm/backup/backup.service.js.map +1 -1
  264. package/dist/esm/caching/cache/base-cache.model.js.map +1 -1
  265. package/dist/esm/caching/cache/multi-tier.cache.js.map +1 -1
  266. package/dist/esm/caching/cache/read-aside/read-aside.cache.js.map +1 -1
  267. package/dist/esm/caching/cache/read-aside/write-around-read-aside.cache.js.map +1 -1
  268. package/dist/esm/caching/cache/read-aside/write-behind-read-aside.cache.js.map +1 -1
  269. package/dist/esm/caching/cache/read-aside/write-invalidate-read-aside-args-only.cache.js.map +1 -1
  270. package/dist/esm/caching/cache/read-aside/write-invalidate-read-aside-with-result.cache.js.map +1 -1
  271. package/dist/esm/caching/cache/read-aside/write-through-read-aside.cache.js.map +1 -1
  272. package/dist/esm/caching/cache/read-through/read-through.cache.js.map +1 -1
  273. package/dist/esm/caching/cache/read-through/write-around-read-through.cache.js.map +1 -1
  274. package/dist/esm/caching/cache/read-through/write-behind-read-through.cache.js.map +1 -1
  275. package/dist/esm/caching/cache/read-through/write-invalidate-read-through-args-only.cache.js.map +1 -1
  276. package/dist/esm/caching/cache/read-through/write-invalidate-read-through-with-result.cache.js.map +1 -1
  277. package/dist/esm/caching/cache/read-through/write-through-read-through.cache.js.map +1 -1
  278. package/dist/esm/change-sets/change-set-repository.js +16 -16
  279. package/dist/esm/change-sets/change-set-repository.js.map +1 -1
  280. package/dist/esm/change-sets/models/change-set-entity.model.js +29 -1
  281. package/dist/esm/change-sets/models/change-set-entity.model.js.map +1 -1
  282. package/dist/esm/change-sets/models/change-set.model.js +1 -1
  283. package/dist/esm/change-sets/models/change-set.model.js.map +1 -1
  284. package/dist/esm/change-sets/models/change.model.js +9 -1
  285. package/dist/esm/change-sets/models/change.model.js.map +1 -1
  286. package/dist/esm/change-sets/models/soft-delete-entity.model.js +26 -0
  287. package/dist/esm/change-sets/models/soft-delete-entity.model.js.map +1 -1
  288. package/dist/esm/change-sets/soft-delete-repository.js +22 -6
  289. package/dist/esm/change-sets/soft-delete-repository.js.map +1 -1
  290. package/dist/esm/context/als.utilities.js.map +1 -1
  291. package/dist/esm/context/cache/cache.context.js +61 -0
  292. package/dist/esm/context/cache/cache.context.js.map +1 -0
  293. package/dist/esm/data-source/data-sources/data-source-initialization.error.js +14 -0
  294. package/dist/esm/data-source/data-sources/data-source-initialization.error.js.map +1 -0
  295. package/dist/esm/data-source/data-sources/data-source.interface.js.map +1 -1
  296. package/dist/esm/data-source/data-sources/postgres-typeorm-data-source.model.js +289 -0
  297. package/dist/esm/data-source/data-sources/postgres-typeorm-data-source.model.js.map +1 -0
  298. package/dist/esm/data-source/data-sources/sql-data-source.interface.js +3 -0
  299. package/dist/esm/data-source/data-sources/sql-data-source.interface.js.map +1 -0
  300. package/dist/esm/data-source/data-sources/typeorm-base-data-source.model.js +378 -0
  301. package/dist/esm/data-source/data-sources/typeorm-base-data-source.model.js.map +1 -0
  302. package/dist/esm/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.js +353 -0
  303. package/dist/esm/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.js.map +1 -0
  304. package/dist/esm/data-source/data-sources/where-converter/typeorm-where-filter.converter.js +248 -0
  305. package/dist/esm/data-source/data-sources/where-converter/typeorm-where-filter.converter.js.map +1 -0
  306. package/dist/esm/data-source/models/where/where-filter-keys.model.js +36 -0
  307. package/dist/esm/data-source/models/where/where-filter-keys.model.js.map +1 -0
  308. package/dist/esm/data-source/query-failed.error.js +27 -1
  309. package/dist/esm/data-source/query-failed.error.js.map +1 -1
  310. package/dist/esm/data-source/repository.js +42 -16
  311. package/dist/esm/data-source/repository.js.map +1 -1
  312. package/dist/esm/di/decorators/inject-repository.decorator.js.map +1 -1
  313. package/dist/esm/di/default/zibri-di-tokens.default.js.map +1 -1
  314. package/dist/esm/email/email.service.js +4 -6
  315. package/dist/esm/email/email.service.js.map +1 -1
  316. package/dist/esm/email/models/email.model.js +1 -1
  317. package/dist/esm/email/models/email.model.js.map +1 -1
  318. package/dist/esm/entity/decorators/entity.decorator.js +6 -3
  319. package/dist/esm/entity/decorators/entity.decorator.js.map +1 -1
  320. package/dist/esm/entity/decorators/property.decorator.js +34 -20
  321. package/dist/esm/entity/decorators/property.decorator.js.map +1 -1
  322. package/dist/esm/entity/entity-metadata-missing.error.js +17 -0
  323. package/dist/esm/entity/entity-metadata-missing.error.js.map +1 -0
  324. package/dist/esm/entity/models/belongs-to-one-property-metadata.model.js +3 -0
  325. package/dist/esm/entity/models/belongs-to-one-property-metadata.model.js.map +1 -0
  326. package/dist/esm/entity/models/has-one-property-metadata.model.js +3 -0
  327. package/dist/esm/entity/models/has-one-property-metadata.model.js.map +1 -0
  328. package/dist/esm/entity/models/relation.enum.js +2 -1
  329. package/dist/esm/entity/models/relation.enum.js.map +1 -1
  330. package/dist/esm/entity/partial-class.model.js +1 -1
  331. package/dist/esm/entity/partial-class.model.js.map +1 -1
  332. package/dist/esm/event/event-cleanup.cron-job.js +4 -6
  333. package/dist/esm/event/event-cleanup.cron-job.js.map +1 -1
  334. package/dist/esm/event/event-subscriber-run.model.js +10 -17
  335. package/dist/esm/event/event-subscriber-run.model.js.map +1 -1
  336. package/dist/esm/event/event.model.js +1 -1
  337. package/dist/esm/event/event.model.js.map +1 -1
  338. package/dist/esm/event/event.service.js +6 -3
  339. package/dist/esm/event/event.service.js.map +1 -1
  340. package/dist/esm/global/model-registry/default-descriptor.js +2 -1
  341. package/dist/esm/global/model-registry/default-descriptor.js.map +1 -1
  342. package/dist/esm/global/model-registry/encryption-descriptor.js +2 -1
  343. package/dist/esm/global/model-registry/encryption-descriptor.js.map +1 -1
  344. package/dist/esm/global/model-registry/exclude-descriptor.js +2 -1
  345. package/dist/esm/global/model-registry/exclude-descriptor.js.map +1 -1
  346. package/dist/esm/global/model-registry/hash-descriptor.js +2 -1
  347. package/dist/esm/global/model-registry/hash-descriptor.js.map +1 -1
  348. package/dist/esm/index.js +12 -3
  349. package/dist/esm/index.js.map +1 -1
  350. package/dist/esm/logging/log-context.model.js +3 -49
  351. package/dist/esm/logging/log-context.model.js.map +1 -1
  352. package/dist/esm/open-api/open-api.service.js +20 -11
  353. package/dist/esm/open-api/open-api.service.js.map +1 -1
  354. package/dist/esm/parsing/form-data/form-data.body-parser.js +2 -1
  355. package/dist/esm/parsing/form-data/form-data.body-parser.js.map +1 -1
  356. package/dist/esm/parsing/functions/parse-boolean.function.js.map +1 -1
  357. package/dist/esm/parsing/functions/parse-object.function.js +2 -1
  358. package/dist/esm/parsing/functions/parse-object.function.js.map +1 -1
  359. package/dist/esm/parsing/parser.js +2 -1
  360. package/dist/esm/parsing/parser.js.map +1 -1
  361. package/dist/esm/routing/decorators/body.decorator.js +2 -1
  362. package/dist/esm/routing/decorators/body.decorator.js.map +1 -1
  363. package/dist/esm/routing/resolve-route-params.function.js +1 -1
  364. package/dist/esm/routing/resolve-route-params.function.js.map +1 -1
  365. package/dist/esm/routing/router.js +38 -2
  366. package/dist/esm/routing/router.js.map +1 -1
  367. package/dist/esm/utilities/metadata-injection-keys.enum.js +1 -0
  368. package/dist/esm/utilities/metadata-injection-keys.enum.js.map +1 -1
  369. package/dist/esm/utilities/typeorm.utilities.js +47 -0
  370. package/dist/esm/utilities/typeorm.utilities.js.map +1 -0
  371. package/dist/esm/validation/validation-problem.model.js +4 -7
  372. package/dist/esm/validation/validation-problem.model.js.map +1 -1
  373. package/dist/esm/validation/validation.service.js +6 -4
  374. package/dist/esm/validation/validation.service.js.map +1 -1
  375. package/dist/esm/websocket/models/websocket-message.model.js +1 -1
  376. package/dist/esm/websocket/models/websocket-message.model.js.map +1 -1
  377. package/dist/esm/websocket/models/websocket-request.model.js.map +1 -1
  378. package/dist/esm/websocket/services/websocket.service.js +1 -2
  379. package/dist/esm/websocket/services/websocket.service.js.map +1 -1
  380. package/package.json +9 -9
  381. package/src/__testing__/mocks/entities/child.entity.ts +4 -1
  382. package/src/__testing__/mocks/entities/company.entity.ts +5 -2
  383. package/src/__testing__/mocks/entities/profile.entity.ts +5 -2
  384. package/src/__testing__/mocks/entities/role.entity.ts +1 -1
  385. package/src/__testing__/mocks/entities/user.entity.ts +1 -1
  386. package/src/__testing__/test-server/create-test-data-source.function.ts +5 -5
  387. package/src/__testing__/test-server/start-test-server.function.ts +8 -6
  388. package/src/__testing__/test-server/user-repository.ts +4 -3
  389. package/src/application.ts +8 -2
  390. package/src/auth/2fa/two-factor.service.test.ts +151 -0
  391. package/src/auth/auth.service.test.ts +381 -0
  392. package/src/auth/encryption/encryption-key.model.ts +7 -2
  393. package/src/auth/strategies/cookie/cookie-auth.auth-strategy.ts +3 -2
  394. package/src/auth/strategies/jwt/jwt-credentials.model.ts +7 -1
  395. package/src/auth/strategies/jwt/jwt.auth-strategy.ts +5 -3
  396. package/src/backup/backup-resource-entity.model.ts +7 -2
  397. package/src/backup/backup-service.test.ts +1 -1
  398. package/src/backup/backup.service.ts +1 -1
  399. package/src/caching/cache/base-cache.model.ts +3 -3
  400. package/src/caching/cache/multi-tier.cache.ts +3 -3
  401. package/src/caching/cache/read-aside/read-aside.cache.ts +2 -2
  402. package/src/caching/cache/read-aside/write-around-read-aside.cache.ts +2 -2
  403. package/src/caching/cache/read-aside/write-behind-read-aside.cache.ts +2 -2
  404. package/src/caching/cache/read-aside/write-invalidate-read-aside-args-only.cache.ts +2 -2
  405. package/src/caching/cache/read-aside/write-invalidate-read-aside-with-result.cache.ts +2 -2
  406. package/src/caching/cache/read-aside/write-through-read-aside.cache.ts +2 -2
  407. package/src/caching/cache/read-through/read-through.cache.ts +2 -2
  408. package/src/caching/cache/read-through/write-around-read-through.cache.ts +2 -2
  409. package/src/caching/cache/read-through/write-behind-read-through.cache.ts +2 -2
  410. package/src/caching/cache/read-through/write-invalidate-read-through-args-only.cache.ts +2 -2
  411. package/src/caching/cache/read-through/write-invalidate-read-through-with-result.cache.ts +2 -2
  412. package/src/caching/cache/read-through/write-through-read-through.cache.ts +2 -2
  413. package/src/change-sets/change-set-repository.test.ts +317 -0
  414. package/src/change-sets/change-set-repository.ts +17 -17
  415. package/src/change-sets/models/change-set-entity.model.ts +6 -4
  416. package/src/change-sets/models/change-set.model.ts +1 -1
  417. package/src/change-sets/models/change.model.ts +7 -2
  418. package/src/change-sets/models/soft-delete-entity.model.ts +5 -3
  419. package/src/change-sets/soft-delete-repository.test.ts +326 -0
  420. package/src/change-sets/soft-delete-repository.ts +29 -10
  421. package/src/context/als.utilities.ts +5 -5
  422. package/src/context/cache/cache.context.ts +33 -0
  423. package/src/cron/cron.test.ts +421 -0
  424. package/src/data-source/array-where-filter.test.ts +332 -0
  425. package/src/data-source/data-sources/data-source-initialization.error.ts +9 -0
  426. package/src/data-source/data-sources/data-source.interface.ts +14 -1
  427. package/src/data-source/data-sources/postgres-typeorm-data-source.model.ts +330 -0
  428. package/src/data-source/data-sources/sql-data-source.interface.ts +35 -0
  429. package/src/data-source/data-sources/typeorm-base-data-source.model.ts +544 -0
  430. package/src/data-source/data-sources/where-converter/postgres-typeorm-where-filter.converter.ts +451 -0
  431. package/src/data-source/data-sources/where-converter/typeorm-where-filter.converter.ts +376 -0
  432. package/src/data-source/exclude-property.test.ts +4 -1
  433. package/src/data-source/hooks/hooks.test.ts +268 -0
  434. package/src/data-source/migration/migration.test.ts +4 -3
  435. package/src/data-source/models/options/count-options.model.ts +2 -7
  436. package/src/data-source/models/options/delete-all-options.model.ts +2 -4
  437. package/src/data-source/models/options/find-all-options.model.ts +2 -2
  438. package/src/data-source/models/options/find-by-id-options.model.ts +1 -6
  439. package/src/data-source/models/options/find-one-options.model.ts +2 -11
  440. package/src/data-source/models/options/update-all-options.model.ts +2 -5
  441. package/src/data-source/models/options/update-by-id-options.model.ts +2 -5
  442. package/src/data-source/models/where/array-where-filter.model.ts +147 -5
  443. package/src/data-source/models/where/base-where-filter.model.ts +19 -1
  444. package/src/data-source/models/where/boolean-where-filter.model.ts +7 -2
  445. package/src/data-source/models/where/date-where-filter.model.ts +9 -16
  446. package/src/data-source/models/where/number-where-filter.model.ts +9 -16
  447. package/src/data-source/models/where/object-where-filter.model.ts +66 -7
  448. package/src/data-source/models/where/string-where-filter.model.ts +9 -16
  449. package/src/data-source/models/where/where-filter-keys.model.ts +88 -0
  450. package/src/data-source/models/where/where-filter-to-find-options-where-function.test.ts +35 -13
  451. package/src/data-source/models/where/where-filter.model.ts +7 -4
  452. package/src/data-source/nested-where-filter.test.ts +344 -0
  453. package/src/data-source/query-failed.error.ts +38 -1
  454. package/src/data-source/repository-relation-pitfalls.test.ts +232 -0
  455. package/src/data-source/repository.test.ts +274 -37
  456. package/src/data-source/repository.ts +50 -16
  457. package/src/data-source/transaction/transaction.test.ts +1 -1
  458. package/src/data-source/where-filter.test.ts +479 -0
  459. package/src/di/decorators/inject-repository.decorator.ts +3 -2
  460. package/src/di/default/zibri-di-tokens.default.ts +2 -2
  461. package/src/email/email.service.test.ts +382 -0
  462. package/src/email/email.service.ts +4 -5
  463. package/src/email/models/email.model.ts +1 -1
  464. package/src/entity/decorators/entity.decorator.ts +44 -5
  465. package/src/entity/decorators/property.decorator.ts +54 -36
  466. package/src/entity/entity-metadata-missing.error.ts +15 -0
  467. package/src/entity/models/base-relation-metadata.model.ts +1 -1
  468. package/src/entity/models/belongs-to-one-property-metadata.model.ts +34 -0
  469. package/src/entity/models/has-one-property-metadata.model.ts +20 -0
  470. package/src/entity/models/many-to-many-property-metadata.model.ts +3 -3
  471. package/src/entity/models/many-to-one-property-metadata.model.ts +17 -3
  472. package/src/entity/models/relation.enum.ts +2 -1
  473. package/src/entity/partial-class.model.ts +1 -1
  474. package/src/event/event-cleanup.cron-job.ts +4 -6
  475. package/src/event/event-subscriber-run.model.ts +8 -9
  476. package/src/event/event.model.ts +1 -1
  477. package/src/event/event.service.ts +6 -3
  478. package/src/global/model-registry/default-descriptor.ts +2 -1
  479. package/src/global/model-registry/encryption-descriptor.ts +2 -1
  480. package/src/global/model-registry/exclude-descriptor.ts +2 -1
  481. package/src/global/model-registry/hash-descriptor.ts +2 -1
  482. package/src/index.ts +15 -3
  483. package/src/logging/log-context.model.ts +3 -34
  484. package/src/open-api/open-api.service.ts +32 -13
  485. package/src/parsing/form-data/form-data.body-parser.ts +2 -1
  486. package/src/parsing/functions/parse-boolean.function.ts +0 -1
  487. package/src/parsing/functions/parse-object.function.ts +2 -1
  488. package/src/parsing/parser.ts +2 -1
  489. package/src/routing/decorators/body.decorator.ts +2 -1
  490. package/src/routing/resolve-route-params.function.ts +1 -1
  491. package/src/routing/router.ts +41 -7
  492. package/src/utilities/metadata-injection-keys.enum.ts +1 -0
  493. package/src/utilities/typeorm.utilities.ts +75 -0
  494. package/src/validation/validation-problem.model.ts +7 -9
  495. package/src/validation/validation.service.ts +6 -4
  496. package/src/websocket/models/websocket-message.model.ts +1 -1
  497. package/src/websocket/models/websocket-request.model.ts +17 -9
  498. package/src/websocket/services/websocket.service.ts +1 -2
  499. package/dist/cjs/data-source/data-sources/postgres-data-source.model.d.ts +0 -129
  500. package/dist/cjs/data-source/data-sources/postgres-data-source.model.d.ts.map +0 -1
  501. package/dist/cjs/data-source/data-sources/postgres-data-source.model.js +0 -534
  502. package/dist/cjs/data-source/data-sources/postgres-data-source.model.js.map +0 -1
  503. package/dist/cjs/data-source/models/where/where-filter-to-find-options-where.function.d.ts +0 -11
  504. package/dist/cjs/data-source/models/where/where-filter-to-find-options-where.function.d.ts.map +0 -1
  505. package/dist/cjs/data-source/models/where/where-filter-to-find-options-where.function.js +0 -229
  506. package/dist/cjs/data-source/models/where/where-filter-to-find-options-where.function.js.map +0 -1
  507. package/dist/cjs/entity/models/one-to-one-property-metadata.model.d.ts +0 -30
  508. package/dist/cjs/entity/models/one-to-one-property-metadata.model.d.ts.map +0 -1
  509. package/dist/cjs/entity/models/one-to-one-property-metadata.model.js.map +0 -1
  510. package/dist/esm/data-source/data-sources/postgres-data-source.model.js +0 -534
  511. package/dist/esm/data-source/data-sources/postgres-data-source.model.js.map +0 -1
  512. package/dist/esm/data-source/models/where/where-filter-to-find-options-where.function.js +0 -229
  513. package/dist/esm/data-source/models/where/where-filter-to-find-options-where.function.js.map +0 -1
  514. package/dist/esm/entity/models/one-to-one-property-metadata.model.js.map +0 -1
  515. package/src/data-source/data-sources/postgres-data-source.model.ts +0 -675
  516. package/src/data-source/models/where/where-filter-to-find-options-where.function.ts +0 -307
  517. package/src/entity/models/one-to-one-property-metadata.model.ts +0 -35
@@ -1,14 +1,9 @@
1
1
  import { BaseRepositoryOptions } from './base-repository-options.model';
2
+ import { FindAllOptions } from './find-all-options.model';
2
3
  import { BaseEntity } from '../../../entity/base-entity.model';
3
- import { Where } from '../where/where-filter.model';
4
4
 
5
5
  /**
6
6
  * Options for counting entities.
7
7
  */
8
8
  export type CountOptions<T extends BaseEntity> = BaseRepositoryOptions
9
- & {
10
- /**
11
- * The where filter to count the options by.
12
- */
13
- where?: Where<T>
14
- };
9
+ & Pick<FindAllOptions<T>, 'where'>;
@@ -1,8 +1,6 @@
1
- import { FindAllOptions } from './find-all-options.model';
2
- import { BaseEntity } from '../../../entity/base-entity.model';
3
- import { OmitStrict } from '../../../types/omit-strict.type';
1
+ import { BaseRepositoryOptions } from './base-repository-options.model';
4
2
 
5
3
  /**
6
4
  * Options for deleting multiple entities.
7
5
  */
8
- export type DeleteAllOptions<T extends BaseEntity> = OmitStrict<FindAllOptions<T>, 'where'>;
6
+ export type DeleteAllOptions = BaseRepositoryOptions;
@@ -1,4 +1,4 @@
1
- import { FindManyOptions } from 'typeorm';
1
+ import { FindManyOptions, FindOptionsRelations } from 'typeorm';
2
2
 
3
3
  import { BaseRepositoryOptions } from './base-repository-options.model';
4
4
  import { BaseEntity } from '../../../entity/base-entity.model';
@@ -17,5 +17,5 @@ export type FindAllOptions<T extends BaseEntity> = BaseRepositoryOptions
17
17
  /**
18
18
  * The relations to include in the found entities.
19
19
  */
20
- relations?: (keyof T)[]
20
+ relations?: FindOptionsRelations<T> | (keyof T)[]
21
21
  };
@@ -5,9 +5,4 @@ import { OmitStrict } from '../../../types/omit-strict.type';
5
5
  /**
6
6
  * Options for finding a single entity by its id.
7
7
  */
8
- export type FindByIdOptions<T extends BaseEntity> = OmitStrict<FindOneOptions<T>, 'where' | 'relations'> & {
9
- /**
10
- * The relations to include in the found entity.
11
- */
12
- relations?: (keyof T)[]
13
- };
8
+ export type FindByIdOptions<T extends BaseEntity> = OmitStrict<FindOneOptions<T>, 'where'>;
@@ -1,18 +1,9 @@
1
1
  import { BaseRepositoryOptions } from './base-repository-options.model';
2
+ import { FindAllOptions } from './find-all-options.model';
2
3
  import { BaseEntity } from '../../../entity/base-entity.model';
3
- import { Where } from '../where/where-filter.model';
4
4
 
5
5
  /**
6
6
  * Options for finding a single entity.
7
7
  */
8
8
  export type FindOneOptions<T extends BaseEntity> = BaseRepositoryOptions
9
- & {
10
- /**
11
- * The where filter to find the entity by.
12
- */
13
- where?: Where<T>,
14
- /**
15
- * The relations to include in the found entity.
16
- */
17
- relations?: (keyof T)[]
18
- };
9
+ & Pick<FindAllOptions<T>, 'where' | 'relations'>;
@@ -4,9 +4,6 @@ import { BaseRepositoryOptions } from './base-repository-options.model';
4
4
  * Options for updating multiple entities at once.
5
5
  */
6
6
  export type UpdateAllOptions = BaseRepositoryOptions & {
7
- /**
8
- * Whether or not setting the id property manually is allowed.
9
- * @default false.
10
- */
11
- allowId?: boolean
7
+ // should never be allowed, as that would cause typeorm's manager.save method to create new entities instead of updating the existing ones.
8
+ // allowId?: boolean
12
9
  };
@@ -4,9 +4,6 @@ import { BaseRepositoryOptions } from './base-repository-options.model';
4
4
  * Options for updating an entity by its id.
5
5
  */
6
6
  export type UpdateByIdOptions = BaseRepositoryOptions & {
7
- /**
8
- * Whether or not setting the id property manually is allowed.
9
- * @default false.
10
- */
11
- allowId?: boolean
7
+ // should never be allowed, as that would cause typeorm's manager.save method to create a new entity instead of updating the existing one.
8
+ // allowId?: boolean
12
9
  };
@@ -1,13 +1,13 @@
1
+ import { Where, WhereFilterProperty } from './where-filter.model';
1
2
 
2
3
  /**
3
4
  * A filter for an array where property.
4
5
  */
5
- export type ArrayWhereFilter<ItemType> = null | {
6
+ export type ArrayWhereFilter<ItemType> = null | ItemType[] | {
6
7
  /**
7
- * The property needs to equal the value.
8
+ * The property needs to be not this value.
8
9
  */
9
- equals: ItemType[]
10
- } | {
10
+ not?: null | ItemType[],
11
11
  /**
12
12
  * The property needs to include the value.
13
13
  */
@@ -15,5 +15,147 @@ export type ArrayWhereFilter<ItemType> = null | {
15
15
  /**
16
16
  * The properties items needs to be included in the value.
17
17
  */
18
- isIncludedIn?: ItemType[]
18
+ isIncludedIn?: ItemType[],
19
+ /**
20
+ * The length that this array needs to have.
21
+ */
22
+ length?: number,
23
+ /**
24
+ * The length of this array needs to be greater than the provided value.
25
+ */
26
+ lengthGreaterThan?: number,
27
+ /**
28
+ * The length of this array needs to be greater than or equal to the provided value.
29
+ */
30
+ lengthGreaterThanEquals?: number,
31
+ /**
32
+ * The length of this array needs to be lesser than the provided value.
33
+ */
34
+ lengthLesserThan?: number,
35
+ /**
36
+ * The length of this array needs to be lesser than or equal to the provided value.
37
+ */
38
+ lengthLesserThanEquals?: number,
39
+ /**
40
+ * A where condition that at least one of the items inside this array needs to match.
41
+ */
42
+ where?: never
43
+ }
44
+ | {
45
+ /**
46
+ * The property needs to be not this value.
47
+ */
48
+ not?: never,
49
+ /**
50
+ * The property needs to include the value.
51
+ */
52
+ includes?: never,
53
+ /**
54
+ * The properties items needs to be included in the value.
55
+ */
56
+ isIncludedIn?: never,
57
+ /**
58
+ * The length that this array needs to have.
59
+ */
60
+ length?: number,
61
+ /**
62
+ * The length of this array needs to be greater than the provided value.
63
+ */
64
+ lengthGreaterThan?: number,
65
+ /**
66
+ * The length of this array needs to be greater than or equal to the provided value.
67
+ */
68
+ lengthGreaterThanEquals?: number,
69
+ /**
70
+ * The length of this array needs to be lesser than the provided value.
71
+ */
72
+ lengthLesserThan?: number,
73
+ /**
74
+ * The length of this array needs to be lesser than or equal to the provided value.
75
+ */
76
+ lengthLesserThanEquals?: number,
77
+ /**
78
+ * A where condition that at least one of the items inside this array needs to match.
79
+ */
80
+ where: WhereFilterProperty<ItemType> | WhereFilterProperty<ItemType>[]
81
+ };
82
+
83
+ /**
84
+ * A filter for an array of object items where property.
85
+ */
86
+ export type ObjectArrayWhereFilter<ItemType extends object> = null | ItemType[] | {
87
+ /**
88
+ * The property needs to be not this value.
89
+ */
90
+ not?: null | ItemType[],
91
+ /**
92
+ * The property needs to include the value.
93
+ */
94
+ includes?: ItemType[],
95
+ /**
96
+ * The properties items needs to be included in the value.
97
+ */
98
+ isIncludedIn?: ItemType[],
99
+ /**
100
+ * The length that this array needs to have.
101
+ */
102
+ length?: number,
103
+ /**
104
+ * The length of this array needs to be greater than the provided value.
105
+ */
106
+ lengthGreaterThan?: number,
107
+ /**
108
+ * The length of this array needs to be greater than or equal to the provided value.
109
+ */
110
+ lengthGreaterThanEquals?: number,
111
+ /**
112
+ * The length of this array needs to be lesser than the provided value.
113
+ */
114
+ lengthLesserThan?: number,
115
+ /**
116
+ * The length of this array needs to be lesser than or equal to the provided value.
117
+ */
118
+ lengthLesserThanEquals?: number,
119
+ /**
120
+ * A where condition that at least one of the items inside this array needs to match.
121
+ */
122
+ where?: never
123
+ }
124
+ | {
125
+ /**
126
+ * The property needs to be not this value.
127
+ */
128
+ not?: never,
129
+ /**
130
+ * The property needs to include the value.
131
+ */
132
+ includes?: never,
133
+ /**
134
+ * The properties items needs to be included in the value.
135
+ */
136
+ isIncludedIn?: never,
137
+ /**
138
+ * The length that this array needs to have.
139
+ */
140
+ length?: number,
141
+ /**
142
+ * The length of this array needs to be greater than the provided value.
143
+ */
144
+ lengthGreaterThan?: number,
145
+ /**
146
+ * The length of this array needs to be greater than or equal to the provided value.
147
+ */
148
+ lengthGreaterThanEquals?: number,
149
+ /**
150
+ * The length of this array needs to be lesser than the provided value.
151
+ */
152
+ lengthLesserThan?: number,
153
+ /**
154
+ * The length of this array needs to be lesser than or equal to the provided value.
155
+ */
156
+ lengthLesserThanEquals?: number,
157
+ /**
158
+ * A where condition that at least one of the items inside this array needs to match.
159
+ */
160
+ where: Where<ItemType>
19
161
  };
@@ -1,4 +1,22 @@
1
+ /**
2
+ * The base where filter object.
3
+ */
4
+ export type BaseWhereFilterObject<T> = {
5
+ /**
6
+ * The property needs to be not this value.
7
+ */
8
+ not?: T | null,
9
+ /**
10
+ * The property needs to be one of the values in the array.
11
+ */
12
+ oneOf?: (T | null)[],
13
+ /**
14
+ * The property needs to be NOT one of the values in the array.
15
+ */
16
+ notOneOf?: (T | null)[]
17
+ };
18
+
1
19
  /**
2
20
  * A base where filter, shared by all property types.
3
21
  */
4
- export type BaseWhereFilter<T> = T | null;
22
+ export type BaseWhereFilter<T, FilterObject extends BaseWhereFilterObject<T>> = T | null | FilterObject;
@@ -1,6 +1,11 @@
1
- import { BaseWhereFilter } from './base-where-filter.model';
1
+ import { BaseWhereFilter, BaseWhereFilterObject } from './base-where-filter.model';
2
+ import { ExcludeStrict } from '../../../types/exclude-strict.type';
3
+ import { OmitStrict } from '../../../types/omit-strict.type';
2
4
 
3
5
  /**
4
6
  * A filter for a boolean where property.
5
7
  */
6
- export type BooleanWhereFilter = BaseWhereFilter<boolean>;
8
+ export type BooleanWhereFilter = ExcludeStrict<
9
+ BaseWhereFilter<boolean, BaseWhereFilterObject<boolean>>,
10
+ BaseWhereFilterObject<boolean>
11
+ > | Required<OmitStrict<BaseWhereFilterObject<boolean>, 'oneOf' | 'notOneOf'>>;
@@ -1,21 +1,9 @@
1
- import { BaseWhereFilter } from './base-where-filter.model';
1
+ import { BaseWhereFilter, BaseWhereFilterObject } from './base-where-filter.model';
2
2
 
3
3
  /**
4
- * A filter for a date where property.
4
+ * The date where filter object.
5
5
  */
6
- export type DateWhereFilter = BaseWhereFilter<Date> | {
7
- /**
8
- * The property needs to be not this value.
9
- */
10
- not?: Date,
11
- /**
12
- * The property needs to be one of the values in the array.
13
- */
14
- oneOf?: Date[],
15
- /**
16
- * The property needs to be NOT one of the values in the array.
17
- */
18
- notOneOf?: Date[],
6
+ type DateFilterWhereObject = BaseWhereFilterObject<Date> & {
19
7
  /**
20
8
  * The property needs to be after the value.
21
9
  */
@@ -24,4 +12,9 @@ export type DateWhereFilter = BaseWhereFilter<Date> | {
24
12
  * The property needs to be before the value.
25
13
  */
26
14
  before?: Date
27
- };
15
+ };
16
+
17
+ /**
18
+ * A filter for a date where property.
19
+ */
20
+ export type DateWhereFilter = BaseWhereFilter<Date, DateFilterWhereObject>;
@@ -1,21 +1,9 @@
1
- import { BaseWhereFilter } from './base-where-filter.model';
1
+ import { BaseWhereFilter, BaseWhereFilterObject } from './base-where-filter.model';
2
2
 
3
3
  /**
4
- * A filter for a number where property.
4
+ * The number where filter object.
5
5
  */
6
- export type NumberWhereFilter<T extends number | bigint> = BaseWhereFilter<T> | {
7
- /**
8
- * The property needs to be not this value.
9
- */
10
- not?: T,
11
- /**
12
- * The property needs to be one of the values in the array.
13
- */
14
- oneOf?: T[],
15
- /**
16
- * The property needs to be NOT one of the values in the array.
17
- */
18
- notOneOf?: T[],
6
+ type NumberWhereFilterObject<T extends number | bigint> = BaseWhereFilterObject<T> & {
19
7
  /**
20
8
  * The property needs to be greater than the provided value.
21
9
  */
@@ -32,4 +20,9 @@ export type NumberWhereFilter<T extends number | bigint> = BaseWhereFilter<T> |
32
20
  * The property needs to be lesser than or equal to the provided value.
33
21
  */
34
22
  lesserThanEquals?: T
35
- };
23
+ };
24
+
25
+ /**
26
+ * A filter for a number where property.
27
+ */
28
+ export type NumberWhereFilter<T extends number | bigint> = BaseWhereFilter<T, NumberWhereFilterObject<T>>;
@@ -3,10 +3,69 @@ import { Where } from './where-filter.model';
3
3
  /**
4
4
  * A filter for a object where property.
5
5
  */
6
- export type ObjectWhereFilter<T extends Object> = null
7
- // eslint-disable-next-line jsdoc/require-jsdoc
8
- | { equals: T, where?: never, not?: never, oneOf?: never, notOneOf?: never }
9
- // eslint-disable-next-line jsdoc/require-jsdoc
10
- | { equals?: never, where: Where<T>, not?: never, oneOf?: never, notOneOf?: never }
11
- // eslint-disable-next-line jsdoc/require-jsdoc
12
- | { equals?: never, where?: never, not?: T, oneOf?: T[], notOneOf?: T[] };
6
+ export type ObjectWhereFilter<T extends Object> = {
7
+ /**
8
+ * The property needs to equal the value.
9
+ */
10
+ is: T | null,
11
+ /**
12
+ * A where condition that the property needs to match.
13
+ */
14
+ where?: never,
15
+ /**
16
+ * The property needs to be not this value.
17
+ */
18
+ not?: never,
19
+ /**
20
+ * The property should be one of the provided values.
21
+ */
22
+ oneOf?: never,
23
+ /**
24
+ * The property should NOT be one of the provided values.
25
+ */
26
+ notOneOf?: never
27
+ }
28
+ | {
29
+ /**
30
+ * The property needs to equal the value.
31
+ */
32
+ is?: never,
33
+ /**
34
+ * A where condition that the property needs to match.
35
+ */
36
+ where: Where<T>,
37
+ /**
38
+ * The property needs to be not this value.
39
+ */
40
+ not?: never,
41
+ /**
42
+ * The property should be one of the provided values.
43
+ */
44
+ oneOf?: never,
45
+ /**
46
+ * The property should NOT be one of the provided values.
47
+ */
48
+ notOneOf?: never
49
+ }
50
+ | {
51
+ /**
52
+ * The property needs to equal the value.
53
+ */
54
+ is?: never,
55
+ /**
56
+ * A where condition that the property needs to match.
57
+ */
58
+ where?: never,
59
+ /**
60
+ * The property needs to be not this value.
61
+ */
62
+ not?: T | null,
63
+ /**
64
+ * The property should be one of the provided values.
65
+ */
66
+ oneOf?: (T | null)[],
67
+ /**
68
+ * The property should NOT be one of the provided values.
69
+ */
70
+ notOneOf?: (T | null)[]
71
+ };
@@ -1,21 +1,9 @@
1
- import { BaseWhereFilter } from './base-where-filter.model';
1
+ import { BaseWhereFilter, BaseWhereFilterObject } from './base-where-filter.model';
2
2
 
3
3
  /**
4
- * A filter for a string where property.
4
+ * The string where filter object.
5
5
  */
6
- export type StringWhereFilter = BaseWhereFilter<string> | {
7
- /**
8
- * The property needs to be not this value.
9
- */
10
- not?: string,
11
- /**
12
- * The property needs to be one of the values in the array.
13
- */
14
- oneOf?: string[],
15
- /**
16
- * The property needs to be NOT one of the values in the array.
17
- */
18
- notOneOf?: string[],
6
+ type StringWhereFilterObject = BaseWhereFilterObject<string> & {
19
7
  /**
20
8
  * The property needs to be like the provided string.
21
9
  * @example '%.com'
@@ -26,4 +14,9 @@ export type StringWhereFilter = BaseWhereFilter<string> | {
26
14
  * @example '%.cOm'
27
15
  */
28
16
  iLike?: string
29
- };
17
+ };
18
+
19
+ /**
20
+ * A filter for a string where property.
21
+ */
22
+ export type StringWhereFilter = BaseWhereFilter<string, StringWhereFilterObject>;
@@ -0,0 +1,88 @@
1
+
2
+ import { ArrayWhereFilter, ObjectArrayWhereFilter } from './array-where-filter.model';
3
+ import { BooleanWhereFilter } from './boolean-where-filter.model';
4
+ import { DateWhereFilter } from './date-where-filter.model';
5
+ import { NumberWhereFilter } from './number-where-filter.model';
6
+ import { ObjectWhereFilter } from './object-where-filter.model';
7
+ import { StringWhereFilter } from './string-where-filter.model';
8
+ import { ExcludeStrict } from '../../../types/exclude-strict.type';
9
+ import { ObjectUtilities } from '../../../utilities/object.utilities';
10
+
11
+ /**
12
+ * Where filter keys of object properties.
13
+ */
14
+ type ObjectWhereFilterKeys = keyof ObjectWhereFilter<object>;
15
+
16
+ /**
17
+ * Where filter keys of array properties.
18
+ */
19
+ type ArrayWhereFilterKeys = keyof ExcludeStrict<ArrayWhereFilter<object>, null | object[]>;
20
+
21
+ /**
22
+ * Where filter keys of object array properties.
23
+ */
24
+ type ObjectArrayWhereFilterKeys = keyof ExcludeStrict<ObjectArrayWhereFilter<object>, null | object[]>;
25
+
26
+ /**
27
+ * Where filter keys of boolean properties.
28
+ */
29
+ type BooleanWhereFilterKeys = keyof BooleanWhereFilter;
30
+
31
+ /**
32
+ * Where filter keys of date properties.
33
+ */
34
+ type DateWhereFilterKeys = keyof ExcludeStrict<DateWhereFilter, null | Date>;
35
+
36
+ /**
37
+ * Where filter keys of number properties.
38
+ */
39
+ type NumberWhereFilterKeys = keyof ExcludeStrict<NumberWhereFilter<number | bigint>, null | (number | bigint)>;
40
+
41
+ /**
42
+ * Where filter keys of string properties.
43
+ */
44
+ type StringWhereFilterKeys = keyof ExcludeStrict<StringWhereFilter, null | string>;
45
+
46
+ /**
47
+ * All where filter keys.
48
+ */
49
+ export type WhereFilterKeys = ArrayWhereFilterKeys
50
+ | ObjectArrayWhereFilterKeys
51
+ | BooleanWhereFilterKeys
52
+ | DateWhereFilterKeys
53
+ | NumberWhereFilterKeys
54
+ | ObjectWhereFilterKeys
55
+ | StringWhereFilterKeys;
56
+
57
+ const whereFilterKeysRecord: Record<WhereFilterKeys, WhereFilterKeys> = {
58
+ not: 'not',
59
+ like: 'like',
60
+ oneOf: 'oneOf',
61
+ notOneOf: 'notOneOf',
62
+ after: 'after',
63
+ before: 'before',
64
+ greaterThan: 'greaterThan',
65
+ greaterThanEquals: 'greaterThanEquals',
66
+ lesserThan: 'lesserThan',
67
+ lesserThanEquals: 'lesserThanEquals',
68
+ iLike: 'iLike',
69
+ is: 'is',
70
+ where: 'where',
71
+ includes: 'includes',
72
+ isIncludedIn: 'isIncludedIn',
73
+ length: 'length',
74
+ lengthGreaterThan: 'lengthGreaterThan',
75
+ lengthLesserThanEquals: 'lengthLesserThanEquals',
76
+ lengthGreaterThanEquals: 'lengthGreaterThanEquals',
77
+ lengthLesserThan: 'lengthLesserThan'
78
+ };
79
+ const whereFilterKeySet: Set<WhereFilterKeys> = new Set<WhereFilterKeys>(ObjectUtilities.values(whereFilterKeysRecord));
80
+
81
+ // eslint-disable-next-line jsdoc/require-returns
82
+ /**
83
+ * Checks if the given key is a where filter key.
84
+ * @param key - The key to check.
85
+ */
86
+ export function isWhereFilterKey(key: unknown): key is WhereFilterKeys {
87
+ return whereFilterKeySet.has(key as WhereFilterKeys);
88
+ }
@@ -1,12 +1,35 @@
1
1
  /* eslint-disable unicorn/no-null */
2
- import { describe, expect, it } from '@jest/globals';
3
- import { EqualOperator, FindOptionsWhere, FindOperator, Equal, Raw } from 'typeorm';
2
+ import { afterAll, beforeAll, describe, expect, it } from '@jest/globals';
3
+ import { EqualOperator, FindOptionsWhere, FindOperator, Equal, FindOptionsWhere as ToFindOptionsWhere } from 'typeorm';
4
4
 
5
- import { whereFilterToFindOptionsWhere } from './where-filter-to-find-options-where.function';
6
- import { Where } from './where-filter.model';
5
+ import { Where, WhereFilter } from './where-filter.model';
7
6
  import { Address } from '../../../__testing__/mocks/entities/address.model';
8
7
  import { User } from '../../../__testing__/mocks/entities/user.entity';
9
- import { JsonUtilities } from '../../../utilities/json.utilities';
8
+ import { createTestDataSource } from '../../../__testing__/test-server/create-test-data-source.function';
9
+ import { StartedTestServer, startTestServer } from '../../../__testing__/test-server/start-test-server.function';
10
+ import { inject } from '../../../di/inject.function';
11
+ import { Newable } from '../../../types/newable.type';
12
+ import { DataSource } from '../../decorators/data-source.decorator';
13
+
14
+ @DataSource()
15
+ class DbDataSource extends createTestDataSource() {}
16
+
17
+ function whereFilterToFindOptionsWhere<T extends object>(
18
+ filter: Where<T>,
19
+ entityClass: Newable<T>
20
+ ): Where<T> extends WhereFilter<T>[] ? ToFindOptionsWhere<T>[] : ToFindOptionsWhere<T> {
21
+ return inject(DbDataSource).whereFilterToFindOptionsWhere(filter, entityClass);
22
+ }
23
+
24
+ let server: StartedTestServer;
25
+
26
+ beforeAll(async () => {
27
+ server = await startTestServer({ dataSources: [DbDataSource] });
28
+ }, 15000);
29
+
30
+ afterAll(async () => {
31
+ await server.shutdown();
32
+ });
10
33
 
11
34
  describe('whereFilterToFindOptionsWhere - primitive filters', () => {
12
35
  it('string equality', () => {
@@ -80,16 +103,15 @@ describe('whereFilterToFindOptionsWhere - date filters', () => {
80
103
  });
81
104
 
82
105
  describe('whereFilterToFindOptionsWhere - object filters', () => {
83
- it('nested where on json fields yields Raw operator', () => {
106
+ it('nested where on json fields yields Raw operator with inline SQL', () => {
84
107
  const filter: Where<User> = { address: { where: { street: 'Main St' } } };
85
108
  const result: FindOptionsWhere<User> = whereFilterToFindOptionsWhere(filter, User);
86
- const expectedResult: FindOptionsWhere<User> = {
87
- address: Raw<Address>(
88
- alias => `${alias} @> :json`,
89
- { json: { street: Equal('Main St') } }
90
- )
91
- };
92
- expect(JsonUtilities.stringify(result)).toEqual(JsonUtilities.stringify(expectedResult));
109
+
110
+ expect(result.address).toBeInstanceOf(FindOperator);
111
+ const raw: FindOperator<Address> = result.address as FindOperator<Address>;
112
+
113
+ const sql: string | undefined = raw.getSql?.('"TestAlias"."address"');
114
+ expect(sql).toEqual('("TestAlias"."address"->>\'street\') = \'Main St\'');
93
115
  });
94
116
  it('nested where on relation fields yields nested filter', () => {
95
117
  const filter: Where<User> = { company: { where: { id: '42' } } };
@@ -1,4 +1,4 @@
1
- import { ArrayWhereFilter } from './array-where-filter.model';
1
+ import { ArrayWhereFilter, ObjectArrayWhereFilter } from './array-where-filter.model';
2
2
  import { BooleanWhereFilter } from './boolean-where-filter.model';
3
3
  import { DateWhereFilter } from './date-where-filter.model';
4
4
  import { NumberWhereFilter } from './number-where-filter.model';
@@ -28,9 +28,12 @@ export type WhereFilterProperty<T> = T extends bigint
28
28
  ? NumberWhereFilter<number>
29
29
  : T extends boolean
30
30
  ? BooleanWhereFilter
31
- // eslint-disable-next-line typescript/no-explicit-any
32
- : T extends any[]
33
- ? ArrayWhereFilter<T[number]>
31
+ : T extends (infer ItemType)[]
32
+ ? ItemType extends Date
33
+ ? ArrayWhereFilter<ItemType>
34
+ : ItemType extends object
35
+ ? ObjectArrayWhereFilter<ItemType>
36
+ : ArrayWhereFilter<ItemType>
34
37
  : T extends Date
35
38
  ? DateWhereFilter
36
39
  : T extends object