@tstdl/base 0.86.0-beta2 → 0.86.0-beta4

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 (872) hide show
  1. package/.eslintrc.json +1 -0
  2. package/__container/decorators.d.ts +2 -0
  3. package/__container/decorators.js +34 -0
  4. package/__container/index.d.ts +3 -0
  5. package/__container/index.js +20 -0
  6. package/__container/interfaces.d.ts +2 -0
  7. package/__container/interfaces.js +25 -0
  8. package/__container/token.d.ts +2 -0
  9. package/__container/token.js +26 -0
  10. package/_container/container.js +443 -0
  11. package/_container/decorators.js +110 -0
  12. package/_container/index.js +27 -0
  13. package/_container/interfaces.js +26 -0
  14. package/_container/provider.js +60 -0
  15. package/_container/resolve-chain.js +105 -0
  16. package/_container/resolve.error.js +36 -0
  17. package/_container/token.js +41 -0
  18. package/_container/type-info.js +16 -0
  19. package/_container/types.js +16 -0
  20. package/_container/utils.js +44 -0
  21. package/api/client/client.d.ts +2 -2
  22. package/api/client/client.js +127 -109
  23. package/api/client/index.js +18 -1
  24. package/api/default-error-handlers.js +44 -18
  25. package/api/index.js +20 -14
  26. package/api/response.js +123 -99
  27. package/api/server/api-controller.d.ts +2 -2
  28. package/api/server/api-controller.js +71 -42
  29. package/api/server/api-request-token.provider.js +40 -12
  30. package/api/server/error-handler.js +46 -25
  31. package/api/server/gateway.d.ts +5 -6
  32. package/api/server/gateway.js +226 -207
  33. package/api/server/index.js +22 -5
  34. package/api/server/middlewares/allowed-methods.middleware.js +40 -17
  35. package/api/server/middlewares/catch-error.middleware.js +33 -12
  36. package/api/server/middlewares/cors.middleware.js +69 -49
  37. package/api/server/middlewares/index.js +21 -4
  38. package/api/server/middlewares/response-time.middleware.js +31 -8
  39. package/api/server/module.js +42 -18
  40. package/api/server/tokens.d.ts +4 -1
  41. package/api/server/tokens.js +31 -2
  42. package/api/types.js +40 -14
  43. package/api/utils.js +36 -13
  44. package/application/application.d.ts +7 -8
  45. package/application/application.js +163 -155
  46. package/application/index.js +18 -1
  47. package/async-iterator-symbol.js +28 -5
  48. package/authentication/authentication.api.js +113 -89
  49. package/authentication/client/api.client.js +57 -28
  50. package/authentication/client/authentication.service.d.ts +4 -4
  51. package/authentication/client/authentication.service.js +249 -223
  52. package/authentication/client/http-client.middleware.d.ts +3 -5
  53. package/authentication/client/http-client.middleware.js +35 -21
  54. package/authentication/client/index.js +22 -5
  55. package/authentication/client/module.d.ts +2 -1
  56. package/authentication/client/module.js +46 -15
  57. package/authentication/client/tokens.d.ts +2 -2
  58. package/authentication/client/tokens.js +30 -5
  59. package/authentication/errors/index.js +18 -1
  60. package/authentication/errors/secret-requirements.error.js +29 -6
  61. package/authentication/index.js +19 -2
  62. package/authentication/models/authentication-credentials.model.js +66 -37
  63. package/authentication/models/authentication-session.model.js +80 -51
  64. package/authentication/models/index.js +23 -6
  65. package/authentication/models/init-secret-reset-data.model.js +44 -16
  66. package/authentication/models/secret-check-result.model.js +36 -9
  67. package/authentication/models/token-payload-base.model.js +59 -31
  68. package/authentication/models/token.model.js +16 -1
  69. package/authentication/server/authentication-api-request-token.provider.js +52 -24
  70. package/authentication/server/authentication-credentials.repository.js +24 -1
  71. package/authentication/server/authentication-secret-requirements.validator.d.ts +11 -2
  72. package/authentication/server/authentication-secret-requirements.validator.js +58 -23
  73. package/authentication/server/authentication-secret-reset.handler.js +24 -1
  74. package/authentication/server/authentication-session.repository.js +24 -1
  75. package/authentication/server/authentication-subject.resolver.js +24 -5
  76. package/authentication/server/authentication-token-payload.provider.js +29 -5
  77. package/authentication/server/authentication.api-controller.js +114 -88
  78. package/authentication/server/authentication.service.d.ts +10 -3
  79. package/authentication/server/authentication.service.js +308 -264
  80. package/authentication/server/helper.js +87 -66
  81. package/authentication/server/index.js +28 -11
  82. package/authentication/server/module.d.ts +2 -1
  83. package/authentication/server/module.js +48 -25
  84. package/authentication/server/mongo/index.js +19 -2
  85. package/authentication/server/mongo/mongo-authentication-credentials.repository.d.ts +3 -3
  86. package/authentication/server/mongo/mongo-authentication-credentials.repository.js +84 -52
  87. package/authentication/server/mongo/mongo-authentication-session.repository.d.ts +3 -3
  88. package/authentication/server/mongo/mongo-authentication-session.repository.js +81 -49
  89. package/browser/browser-context-controller.d.ts +4 -4
  90. package/browser/browser-context-controller.js +106 -72
  91. package/browser/browser-controller.d.ts +12 -5
  92. package/browser/browser-controller.js +115 -74
  93. package/browser/browser.service.d.ts +12 -6
  94. package/browser/browser.service.js +117 -83
  95. package/browser/document-controller.js +81 -48
  96. package/browser/element-controller.d.ts +24 -0
  97. package/browser/element-controller.js +217 -139
  98. package/browser/frame-controller.js +50 -27
  99. package/browser/index.js +27 -10
  100. package/browser/locator-controller.js +59 -36
  101. package/browser/module.js +47 -23
  102. package/browser/page-controller.js +108 -89
  103. package/browser/pdf-options.js +103 -73
  104. package/browser/types.js +16 -1
  105. package/browser/utils.d.ts +2 -0
  106. package/browser/utils.js +116 -77
  107. package/collections/awaitable/awaitable-list.js +122 -99
  108. package/collections/awaitable/awaitable-map.js +116 -93
  109. package/collections/awaitable/awaitable-set.js +86 -63
  110. package/collections/awaitable/index.js +20 -3
  111. package/collections/collection.js +16 -1
  112. package/collections/index.js +23 -6
  113. package/collections/keyed-set.js +77 -53
  114. package/collections/list.js +16 -1
  115. package/collections/observable/index.js +25 -8
  116. package/collections/observable/observable-array.js +118 -95
  117. package/collections/observable/observable-collection-base.js +83 -60
  118. package/collections/observable/observable-collection.js +16 -1
  119. package/collections/observable/observable-list-base.js +78 -55
  120. package/collections/observable/observable-list.js +16 -1
  121. package/collections/observable/observable-map.js +79 -56
  122. package/collections/observable/observable-set.js +98 -75
  123. package/collections/observable/observable-sorted-array-list.js +188 -165
  124. package/collections/sorted-array-list.js +179 -156
  125. package/collections/sorted-list.js +16 -1
  126. package/collections/sorted-map.js +93 -70
  127. package/cookie/cookie.js +71 -49
  128. package/cookie/index.js +18 -1
  129. package/core.d.ts +4 -2
  130. package/core.js +82 -46
  131. package/data-structures/array-dictionary.js +110 -89
  132. package/data-structures/array-list.d.ts +1 -1
  133. package/data-structures/array-list.js +128 -105
  134. package/data-structures/cache.js +64 -41
  135. package/data-structures/circular-buffer.js +219 -195
  136. package/data-structures/collection.js +109 -86
  137. package/data-structures/dictionary.js +75 -51
  138. package/data-structures/distinct-collection.d.ts +24 -0
  139. package/data-structures/distinct-collection.js +77 -0
  140. package/data-structures/index-out-of-bounds.error.js +31 -8
  141. package/data-structures/index.d.ts +2 -1
  142. package/data-structures/index.js +33 -15
  143. package/data-structures/iterable-weak-map.js +149 -129
  144. package/data-structures/linked-list.js +385 -367
  145. package/data-structures/list.js +109 -78
  146. package/data-structures/map-dictionary.js +78 -55
  147. package/data-structures/multi-key-map.d.ts +1 -1
  148. package/data-structures/multi-key-map.js +163 -138
  149. package/data-structures/multi-key-set.d.ts +19 -0
  150. package/data-structures/multi-key-set.js +81 -0
  151. package/data-structures/{set.d.ts → set-collection.d.ts} +3 -3
  152. package/data-structures/set-collection.js +79 -0
  153. package/data-structures/sorted-array-list.d.ts +1 -1
  154. package/data-structures/sorted-array-list.js +166 -142
  155. package/data-structures/weak-ref-map.js +146 -123
  156. package/database/entity-repository.js +26 -2
  157. package/database/entity.js +16 -1
  158. package/database/id.js +29 -8
  159. package/database/index.js +23 -6
  160. package/database/module.js +33 -9
  161. package/database/mongo/classes.d.ts +5 -5
  162. package/database/mongo/classes.js +43 -13
  163. package/database/mongo/index.js +27 -10
  164. package/database/mongo/model/document.js +93 -62
  165. package/database/mongo/model/index.js +18 -1
  166. package/database/mongo/module.js +79 -51
  167. package/database/mongo/mongo-base.repository.js +283 -259
  168. package/database/mongo/mongo-bulk.js +110 -87
  169. package/database/mongo/mongo-entity-repository.d.ts +5 -5
  170. package/database/mongo/mongo-entity-repository.js +296 -270
  171. package/database/mongo/operations.js +76 -48
  172. package/database/mongo/query-converter.js +96 -73
  173. package/database/mongo/simple-entity-repository.js +28 -5
  174. package/database/mongo/types.js +25 -2
  175. package/database/query.js +36 -7
  176. package/database/utils.js +25 -2
  177. package/decorators/index.d.ts +1 -0
  178. package/decorators/index.js +18 -0
  179. package/decorators/log.d.ts +2 -0
  180. package/decorators/log.js +56 -0
  181. package/disposable/async-disposer.d.ts +4 -4
  182. package/disposable/async-disposer.js +105 -93
  183. package/disposable/disposable.js +33 -7
  184. package/disposable/index.js +20 -3
  185. package/disposable/using.js +37 -15
  186. package/distributed-loop/controller.js +16 -1
  187. package/distributed-loop/distributed-loop.d.ts +3 -3
  188. package/distributed-loop/distributed-loop.js +105 -78
  189. package/distributed-loop/index.js +20 -3
  190. package/distributed-loop/provider.js +48 -20
  191. package/enumerable/async-enumerable.js +261 -238
  192. package/enumerable/enumerable-methods.js +16 -1
  193. package/enumerable/enumerable.js +200 -177
  194. package/enumerable/index.js +19 -2
  195. package/environment.js +57 -25
  196. package/error/api.error.js +33 -10
  197. package/error/assertion.error.js +29 -6
  198. package/error/bad-request.error.js +29 -6
  199. package/error/custom.error.js +47 -25
  200. package/error/details.error.js +31 -8
  201. package/error/forbidden.error.js +29 -6
  202. package/error/index.js +33 -16
  203. package/error/invalid-token.error.js +29 -6
  204. package/error/max-bytes-exceeded.error.js +32 -9
  205. package/error/method-not-allowed.error.js +29 -6
  206. package/error/multi.error.js +31 -8
  207. package/error/not-found.error.js +29 -6
  208. package/error/not-implemented.error.js +29 -6
  209. package/error/not-supported.error.js +34 -11
  210. package/error/timeout.error.js +29 -6
  211. package/error/unauthorized.error.js +29 -6
  212. package/error/unsupported-media-type.error.js +29 -6
  213. package/examples/api/authentication.js +49 -42
  214. package/examples/api/basic-overview.js +85 -81
  215. package/examples/api/custom-authentication.js +69 -61
  216. package/examples/api/streaming.js +95 -90
  217. package/examples/browser/basic.js +21 -20
  218. package/examples/http/client.js +16 -13
  219. package/examples/mail/basic.js +42 -36
  220. package/examples/mail/templates/hello-name.js +33 -10
  221. package/examples/pdf/basic.js +49 -44
  222. package/examples/pdf/templates/hello-name.js +58 -35
  223. package/examples/reflection/basic.js +84 -52
  224. package/examples/template/basic.js +33 -30
  225. package/examples/template/templates/hello-jsx.js +32 -8
  226. package/examples/template/templates/hello-name.js +41 -18
  227. package/function/index.d.ts +1 -0
  228. package/function/index.js +18 -0
  229. package/function/log.d.ts +6 -0
  230. package/function/log.js +37 -0
  231. package/global-this.js +36 -17
  232. package/http/client/adapters/undici-http-client.adapter.js +111 -90
  233. package/http/client/http-client-options.d.ts +0 -5
  234. package/http/client/http-client-options.js +33 -14
  235. package/http/client/http-client-request.js +171 -149
  236. package/http/client/http-client-response.js +56 -33
  237. package/http/client/http-client.adapter.js +24 -1
  238. package/http/client/http-client.d.ts +5 -8
  239. package/http/client/http-client.js +325 -301
  240. package/http/client/index.js +23 -6
  241. package/http/client/middleware.d.ts +6 -0
  242. package/http/client/middleware.js +16 -0
  243. package/http/client/module.d.ts +6 -1
  244. package/http/client/module.js +42 -14
  245. package/http/client/tokens.d.ts +2 -0
  246. package/http/client/tokens.js +25 -0
  247. package/http/cookie-parser.js +42 -19
  248. package/http/http-body.js +75 -52
  249. package/http/http-form.js +37 -14
  250. package/http/http-headers.js +109 -86
  251. package/http/http-query.js +37 -14
  252. package/http/http-url-parameters.js +31 -8
  253. package/http/http-value-map.js +133 -110
  254. package/http/http.error.js +82 -60
  255. package/http/index.js +28 -11
  256. package/http/server/http-server-request.js +47 -24
  257. package/http/server/http-server-response.js +45 -22
  258. package/http/server/http-server.js +25 -2
  259. package/http/server/index.js +20 -3
  260. package/http/server/node/index.js +19 -2
  261. package/http/server/node/module.js +28 -8
  262. package/http/server/node/node-http-server.d.ts +1 -4
  263. package/http/server/node/node-http-server.js +230 -208
  264. package/http/types.js +47 -21
  265. package/http/utils.js +108 -92
  266. package/image-service/image-service.js +91 -59
  267. package/image-service/imgproxy/imgproxy-image-service.d.ts +6 -8
  268. package/image-service/imgproxy/imgproxy-image-service.js +125 -86
  269. package/image-service/imgproxy/index.js +18 -1
  270. package/image-service/index.js +18 -1
  271. package/import.js +25 -2
  272. package/index.js +18 -1
  273. package/injector/decorators.d.ts +81 -0
  274. package/injector/decorators.js +126 -0
  275. package/{container/index.js → injector/index.d.ts} +3 -2
  276. package/injector/index.js +28 -0
  277. package/injector/inject.d.ts +85 -0
  278. package/injector/inject.js +106 -0
  279. package/injector/injector.d.ts +91 -0
  280. package/injector/injector.js +497 -0
  281. package/injector/interfaces.d.ts +16 -0
  282. package/injector/interfaces.js +26 -0
  283. package/injector/provider.d.ts +49 -0
  284. package/injector/provider.js +64 -0
  285. package/injector/resolve-chain.d.ts +31 -0
  286. package/injector/resolve-chain.js +113 -0
  287. package/injector/resolve.error.d.ts +5 -0
  288. package/injector/resolve.error.js +36 -0
  289. package/injector/symbols.d.ts +2 -0
  290. package/injector/symbols.js +26 -0
  291. package/injector/token.d.ts +25 -0
  292. package/injector/token.js +41 -0
  293. package/injector/type-info.d.ts +20 -0
  294. package/injector/type-info.js +16 -0
  295. package/injector/types.d.ts +49 -0
  296. package/injector/types.js +16 -0
  297. package/interfaces.js +16 -1
  298. package/json-path/index.js +18 -1
  299. package/json-path/json-path.js +138 -138
  300. package/key-value-store/index.js +19 -2
  301. package/key-value-store/key-value-store.provider.js +24 -1
  302. package/key-value-store/key-value.store.d.ts +3 -3
  303. package/key-value-store/key-value.store.js +29 -6
  304. package/key-value-store/mongo/index.js +23 -6
  305. package/key-value-store/mongo/module.js +35 -17
  306. package/key-value-store/mongo/mongo-key-value-store.provider.js +48 -20
  307. package/key-value-store/mongo/mongo-key-value.model.js +16 -1
  308. package/key-value-store/mongo/mongo-key-value.repository.d.ts +3 -3
  309. package/key-value-store/mongo/mongo-key-value.repository.js +52 -22
  310. package/key-value-store/mongo/mongo-key-value.store.js +89 -59
  311. package/key-value-store/mongo/tokens.d.ts +1 -1
  312. package/key-value-store/mongo/tokens.js +25 -2
  313. package/lock/index.js +19 -2
  314. package/lock/lock.d.ts +3 -2
  315. package/lock/lock.js +29 -5
  316. package/lock/mongo/index.js +22 -5
  317. package/lock/mongo/lock.js +135 -111
  318. package/lock/mongo/model.js +16 -1
  319. package/lock/mongo/module.js +37 -18
  320. package/lock/mongo/mongo-lock-repository.d.ts +3 -3
  321. package/lock/mongo/mongo-lock-repository.js +85 -56
  322. package/lock/mongo/provider.js +68 -38
  323. package/lock/provider.d.ts +3 -2
  324. package/lock/provider.js +25 -1
  325. package/lock/web/index.js +20 -3
  326. package/lock/web/module.js +31 -11
  327. package/lock/web/web-lock.js +105 -80
  328. package/lock/web/web-lock.provider.js +57 -27
  329. package/logger/console/index.js +18 -1
  330. package/logger/console/logger.js +80 -53
  331. package/logger/index.js +19 -2
  332. package/logger/level.js +31 -8
  333. package/logger/logger.d.ts +3 -2
  334. package/logger/logger.js +61 -37
  335. package/logger/noop/index.js +18 -1
  336. package/logger/noop/logger.js +42 -20
  337. package/mail/clients/nodemailer.mail-client.js +91 -62
  338. package/mail/index.js +22 -5
  339. package/mail/mail-log.repository.js +25 -2
  340. package/mail/mail.client.d.ts +3 -2
  341. package/mail/mail.client.js +63 -34
  342. package/mail/mail.service.js +106 -73
  343. package/mail/models/index.js +23 -6
  344. package/mail/models/mail-address.model.js +16 -1
  345. package/mail/models/mail-content.model.js +16 -1
  346. package/mail/models/mail-data.model.js +16 -1
  347. package/mail/models/mail-log.model.js +16 -1
  348. package/mail/models/mail-send-result.model.js +16 -1
  349. package/mail/models/mail-template.model.js +28 -5
  350. package/mail/module.js +41 -21
  351. package/mail/repositories/mongo-mail-log.repository.d.ts +3 -3
  352. package/mail/repositories/mongo-mail-log.repository.js +56 -24
  353. package/mail/tokens.d.ts +1 -1
  354. package/mail/tokens.js +25 -2
  355. package/memory/finalization.js +60 -36
  356. package/memory/index.js +19 -2
  357. package/memory/observable-finalization-registry.js +32 -9
  358. package/message-bus/broadcast-channel/broadcast-channel-message-bus-provider.js +53 -23
  359. package/message-bus/broadcast-channel/broadcast-channel-message-bus.d.ts +1 -1
  360. package/message-bus/broadcast-channel/broadcast-channel-message-bus.js +74 -46
  361. package/message-bus/broadcast-channel/index.js +20 -3
  362. package/message-bus/broadcast-channel/module.js +31 -11
  363. package/message-bus/index.js +20 -3
  364. package/message-bus/local/index.js +20 -3
  365. package/message-bus/local/local-message-bus-provider.js +65 -35
  366. package/message-bus/local/local-message-bus.d.ts +1 -1
  367. package/message-bus/local/local-message-bus.js +66 -38
  368. package/message-bus/local/module.js +31 -11
  369. package/message-bus/local/types.js +16 -1
  370. package/message-bus/message-bus-base.js +63 -41
  371. package/message-bus/message-bus-provider.js +24 -1
  372. package/message-bus/message-bus.d.ts +3 -3
  373. package/message-bus/message-bus.js +29 -5
  374. package/migration/index.d.ts +1 -1
  375. package/migration/index.js +20 -3
  376. package/migration/migration-state-repository.js +25 -2
  377. package/migration/migration-state.js +16 -1
  378. package/migration/migrator.js +108 -80
  379. package/migration/mongo/index.js +19 -2
  380. package/migration/mongo/migration-state-repository.d.ts +3 -3
  381. package/migration/mongo/migration-state-repository.js +53 -23
  382. package/migration/mongo/module.js +34 -15
  383. package/module/index.js +21 -4
  384. package/module/module-base.js +60 -37
  385. package/module/module-metric-reporter.js +77 -58
  386. package/module/module.js +34 -10
  387. package/module/modules/function.module.js +34 -11
  388. package/module/modules/index.js +19 -2
  389. package/module/modules/web-server.module.d.ts +5 -10
  390. package/module/modules/web-server.module.js +83 -67
  391. package/module/utils.js +43 -19
  392. package/notification/api.js +50 -21
  393. package/notification/models/index.js +19 -2
  394. package/notification/models/notification-channel-job.model.js +16 -1
  395. package/notification/models/notification.model.js +103 -74
  396. package/notification/module.js +28 -8
  397. package/notification/notification-channel.service.js +24 -1
  398. package/notification/notification.repository.js +24 -1
  399. package/notification/notification.service.js +58 -30
  400. package/object-storage/index.js +20 -3
  401. package/object-storage/object-storage-provider.js +24 -1
  402. package/object-storage/object-storage.d.ts +3 -3
  403. package/object-storage/object-storage.js +30 -6
  404. package/object-storage/object.js +30 -7
  405. package/object-storage/s3/index.js +20 -3
  406. package/object-storage/s3/s3.object-storage-provider.js +109 -82
  407. package/object-storage/s3/s3.object-storage.d.ts +2 -2
  408. package/object-storage/s3/s3.object-storage.js +157 -130
  409. package/object-storage/s3/s3.object.js +62 -39
  410. package/openid-connect/cached-oidc-configuration.service.js +65 -35
  411. package/openid-connect/index.d.ts +1 -1
  412. package/openid-connect/index.js +28 -11
  413. package/openid-connect/mongo-oidc-state.repository.d.ts +3 -3
  414. package/openid-connect/mongo-oidc-state.repository.js +65 -38
  415. package/openid-connect/oidc-configuration.service.js +66 -38
  416. package/openid-connect/oidc-state.model.js +16 -1
  417. package/openid-connect/oidc-state.repository.js +25 -2
  418. package/openid-connect/oidc.service-model.js +16 -1
  419. package/openid-connect/oidc.service.js +187 -157
  420. package/package.json +18 -18
  421. package/password/have-i-been-pwned.js +39 -21
  422. package/password/index.js +21 -4
  423. package/password/password-check-result.model.js +63 -34
  424. package/password/password-check.js +76 -46
  425. package/password/password-check.localization.js +111 -86
  426. package/pdf/index.js +18 -1
  427. package/pdf/pdf.service.d.ts +3 -3
  428. package/pdf/pdf.service.js +206 -171
  429. package/pool/index.js +18 -1
  430. package/pool/pool.js +133 -116
  431. package/process-shutdown.d.ts +2 -2
  432. package/process-shutdown.js +75 -54
  433. package/promise/cancelable-promise.js +41 -23
  434. package/promise/deferred-promise.js +92 -68
  435. package/promise/index.js +20 -3
  436. package/promise/lazy-promise.js +47 -24
  437. package/queue/enqueue-batch.js +41 -18
  438. package/queue/index.js +20 -3
  439. package/queue/mongo/index.js +21 -4
  440. package/queue/mongo/job.js +16 -1
  441. package/queue/mongo/mongo-job.repository.d.ts +3 -3
  442. package/queue/mongo/mongo-job.repository.js +70 -44
  443. package/queue/mongo/queue.js +265 -242
  444. package/queue/mongo/queue.provider.d.ts +3 -3
  445. package/queue/mongo/queue.provider.js +72 -44
  446. package/queue/provider.js +24 -1
  447. package/queue/queue.d.ts +3 -3
  448. package/queue/queue.js +41 -15
  449. package/random/index.js +19 -2
  450. package/random/number-generator/index.js +20 -3
  451. package/random/number-generator/mulberry32.js +51 -34
  452. package/random/number-generator/random-number-generator-function.js +24 -1
  453. package/random/number-generator/random-number-generator.js +31 -8
  454. package/random/number-generator/seeded-random-number-generator.js +28 -5
  455. package/random/number-generator/sfc32.js +64 -41
  456. package/random/number-generator/utils.js +25 -2
  457. package/random/series.js +43 -41
  458. package/reflection/decorator-data.js +80 -63
  459. package/reflection/decorators.js +69 -39
  460. package/reflection/index.js +22 -5
  461. package/reflection/reflection-data-map.js +55 -32
  462. package/reflection/registry.d.ts +0 -1
  463. package/reflection/registry.js +130 -111
  464. package/reflection/types.js +16 -1
  465. package/reflection/utils.js +124 -96
  466. package/require.js +26 -3
  467. package/rpc/endpoints/message-port.rpc-endpoint.js +48 -29
  468. package/rpc/index.js +21 -4
  469. package/rpc/model.js +30 -7
  470. package/rpc/rpc-endpoint.js +40 -17
  471. package/rpc/rpc-error.js +40 -17
  472. package/rpc/rpc.js +235 -223
  473. package/rxjs/cast.js +28 -4
  474. package/rxjs/index.d.ts +1 -0
  475. package/rxjs/index.js +30 -12
  476. package/rxjs/intersection-observer.js +48 -25
  477. package/rxjs/media-query.js +27 -8
  478. package/rxjs/mutation-observer.js +50 -28
  479. package/rxjs/noop.js +28 -4
  480. package/rxjs/performance-observer.js +60 -37
  481. package/rxjs/resize-observer.js +50 -28
  482. package/rxjs/retry-backoff.js +47 -23
  483. package/rxjs/slow-array.js +36 -22
  484. package/rxjs/start-with-provider.d.ts +2 -0
  485. package/rxjs/start-with-provider.js +29 -0
  486. package/rxjs/teardown.js +44 -21
  487. package/rxjs/timing.js +57 -26
  488. package/rxjs/touch.js +30 -11
  489. package/schema/array-constraints/index.js +19 -2
  490. package/schema/array-constraints/maximum-length.js +42 -19
  491. package/schema/array-constraints/minimum-length.js +42 -19
  492. package/schema/coercers/boolean.coercer.js +49 -25
  493. package/schema/coercers/date.coercer.js +38 -14
  494. package/schema/coercers/index.js +23 -6
  495. package/schema/coercers/number.coercer.js +36 -12
  496. package/schema/coercers/regexp.coercer.js +41 -18
  497. package/schema/coercers/string.coercer.js +36 -12
  498. package/schema/coercers/uint8-array.coercer.js +44 -20
  499. package/schema/constraints/enumeration.js +49 -27
  500. package/schema/constraints/generic.js +41 -21
  501. package/schema/constraints/index.js +29 -12
  502. package/schema/constraints/integer.js +44 -20
  503. package/schema/constraints/length.js +36 -14
  504. package/schema/constraints/literal.js +44 -22
  505. package/schema/constraints/maximum-date.js +46 -23
  506. package/schema/constraints/maximum-length.js +45 -22
  507. package/schema/constraints/maximum.js +44 -21
  508. package/schema/constraints/minimum-date.js +46 -23
  509. package/schema/constraints/minimum-length.js +45 -22
  510. package/schema/constraints/minimum.js +44 -21
  511. package/schema/constraints/pattern.js +46 -23
  512. package/schema/decorators/class.js +26 -4
  513. package/schema/decorators/coerce.js +26 -4
  514. package/schema/decorators/constraint.js +28 -6
  515. package/schema/decorators/index.js +23 -6
  516. package/schema/decorators/property.js +38 -16
  517. package/schema/decorators/types.js +16 -1
  518. package/schema/decorators/utils.js +73 -45
  519. package/schema/index.js +27 -10
  520. package/schema/schema.error.js +72 -59
  521. package/schema/schema.js +274 -256
  522. package/schema/schemas/any.js +30 -7
  523. package/schema/schemas/array.js +44 -21
  524. package/schema/schemas/assign.js +46 -23
  525. package/schema/schemas/boolean.js +30 -7
  526. package/schema/schemas/constraint.js +29 -6
  527. package/schema/schemas/date.js +43 -20
  528. package/schema/schemas/defaulted.js +31 -8
  529. package/schema/schemas/enumeration.js +38 -15
  530. package/schema/schemas/index.js +43 -26
  531. package/schema/schemas/instance.js +26 -4
  532. package/schema/schemas/literal.js +38 -15
  533. package/schema/schemas/nullable.js +30 -7
  534. package/schema/schemas/number.js +48 -25
  535. package/schema/schemas/object.js +34 -10
  536. package/schema/schemas/omit.js +37 -14
  537. package/schema/schemas/one-or-many.js +35 -13
  538. package/schema/schemas/optional.js +30 -6
  539. package/schema/schemas/partial.js +39 -16
  540. package/schema/schemas/pick.js +37 -14
  541. package/schema/schemas/readable-stream.js +30 -7
  542. package/schema/schemas/record.js +31 -9
  543. package/schema/schemas/regexp.js +30 -7
  544. package/schema/schemas/string.js +59 -36
  545. package/schema/schemas/transform.js +29 -6
  546. package/schema/schemas/uint8-array.js +50 -27
  547. package/schema/schemas/union.js +34 -11
  548. package/schema/schemas/unknown.js +30 -7
  549. package/schema/transformers/generic.js +39 -16
  550. package/schema/transformers/index.js +21 -4
  551. package/schema/transformers/lowercase.js +33 -10
  552. package/schema/transformers/trim.js +33 -10
  553. package/schema/transformers/uppercase.js +33 -10
  554. package/schema/types/index.js +22 -5
  555. package/schema/types/schema-array-constraint.js +24 -1
  556. package/schema/types/schema-value-coercer.js +24 -1
  557. package/schema/types/schema-value-constraint.js +24 -1
  558. package/schema/types/schema-value-transformer.js +24 -1
  559. package/schema/types/types.js +191 -161
  560. package/schema/utils/index.js +19 -2
  561. package/schema/utils/schema.js +142 -120
  562. package/schema/utils/value-type.js +74 -51
  563. package/search-index/elastic/config.d.ts +3 -3
  564. package/search-index/elastic/config.js +50 -19
  565. package/search-index/elastic/index.js +23 -6
  566. package/search-index/elastic/keyword-rewriter.js +40 -17
  567. package/search-index/elastic/model/elastic-query.js +16 -1
  568. package/search-index/elastic/model/index-mapping.js +26 -4
  569. package/search-index/elastic/model/index.js +20 -3
  570. package/search-index/elastic/model/sort.js +16 -1
  571. package/search-index/elastic/module.d.ts +1 -1
  572. package/search-index/elastic/module.js +72 -39
  573. package/search-index/elastic/query-builder/boolean-query-builder.js +69 -46
  574. package/search-index/elastic/query-builder/index.js +18 -1
  575. package/search-index/elastic/query-converter.js +192 -174
  576. package/search-index/elastic/search-index.d.ts +2 -2
  577. package/search-index/elastic/search-index.js +153 -132
  578. package/search-index/elastic/sort-converter.js +34 -12
  579. package/search-index/elastic/types.js +16 -1
  580. package/search-index/error.js +35 -12
  581. package/search-index/index.js +20 -3
  582. package/search-index/memory/index.js +18 -1
  583. package/search-index/memory/memory-search-index.js +152 -130
  584. package/search-index/search-index.js +53 -30
  585. package/search-index/search-result.js +16 -1
  586. package/serializer/handlers/binary.js +47 -19
  587. package/serializer/handlers/date.js +28 -4
  588. package/serializer/handlers/error.js +31 -7
  589. package/serializer/handlers/index.js +24 -7
  590. package/serializer/handlers/map.js +40 -16
  591. package/serializer/handlers/regex.js +31 -7
  592. package/serializer/handlers/register.js +59 -36
  593. package/serializer/handlers/set.js +37 -13
  594. package/serializer/index.js +30 -3
  595. package/serializer/serializable.js +68 -43
  596. package/serializer/serializer.js +264 -244
  597. package/serializer/types.js +34 -6
  598. package/signals/api.d.ts +1 -1
  599. package/signals/api.js +48 -17
  600. package/signals/computed-with-dependencies.js +31 -8
  601. package/signals/effect-with-dependencies.js +31 -8
  602. package/signals/implementation/api.js +33 -33
  603. package/signals/implementation/computed.js +104 -125
  604. package/signals/implementation/configure.js +41 -18
  605. package/signals/implementation/effect.js +66 -48
  606. package/signals/implementation/errors.js +29 -5
  607. package/signals/implementation/graph.js +136 -164
  608. package/signals/implementation/index.js +27 -10
  609. package/signals/implementation/signal.js +101 -91
  610. package/signals/implementation/to-observable.js +38 -21
  611. package/signals/implementation/to-signal.js +60 -44
  612. package/signals/implementation/untracked.js +31 -15
  613. package/signals/implementation/watch.js +73 -58
  614. package/signals/index.d.ts +2 -0
  615. package/signals/index.js +26 -7
  616. package/signals/lazylize.d.ts +2 -0
  617. package/signals/lazylize.js +28 -0
  618. package/signals/pipe.d.ts +1 -1
  619. package/signals/pipe.js +33 -7
  620. package/signals/switch-map.js +27 -4
  621. package/signals/to-signal-2.d.ts +14 -0
  622. package/signals/to-signal-2.js +67 -0
  623. package/signals/types.js +16 -1
  624. package/signals/untracked-operator.js +33 -11
  625. package/sse/index.js +19 -2
  626. package/sse/model.js +16 -1
  627. package/sse/server-sent-events-source.js +76 -54
  628. package/sse/server-sent-events.js +72 -48
  629. package/supports.js +32 -5
  630. package/templates/index.js +26 -9
  631. package/templates/module.d.ts +2 -2
  632. package/templates/module.js +47 -40
  633. package/templates/providers/file.template-provider.d.ts +3 -3
  634. package/templates/providers/file.template-provider.js +82 -39
  635. package/templates/providers/memory.template-provider.js +55 -27
  636. package/templates/renderers/handlebars.template-renderer.js +122 -84
  637. package/templates/renderers/jsx.template-renderer.js +56 -28
  638. package/templates/renderers/mjml.template-renderer.js +82 -42
  639. package/templates/renderers/string.template-renderer.js +52 -24
  640. package/templates/resolvers/file.template-resolver.d.ts +3 -3
  641. package/templates/resolvers/file.template-resolver.js +90 -45
  642. package/templates/resolvers/jsx.template-resolver.js +59 -29
  643. package/templates/resolvers/string.template-resolver.js +59 -29
  644. package/templates/template-renderer.provider.js +66 -36
  645. package/templates/template-resolver.provider.js +66 -36
  646. package/templates/template.model.js +69 -39
  647. package/templates/template.provider.js +24 -1
  648. package/templates/template.renderer.js +34 -11
  649. package/templates/template.resolver.js +24 -1
  650. package/templates/template.service.js +82 -49
  651. package/templates/tokens.d.ts +2 -2
  652. package/templates/tokens.js +27 -3
  653. package/templates/types/jsx.intrinsic-elements.js +16 -1
  654. package/text/dynamic-text.model.js +69 -41
  655. package/text/index.js +20 -3
  656. package/text/localizable-text.model.js +16 -1
  657. package/text/localization.service.js +229 -196
  658. package/theme/adapters/css-adapter.js +46 -23
  659. package/theme/adapters/tailwind-adapter.js +52 -29
  660. package/theme/index.js +18 -1
  661. package/theme/theme-service.d.ts +1 -1
  662. package/theme/theme-service.js +147 -107
  663. package/threading/index.js +19 -2
  664. package/threading/thread-pool.js +70 -48
  665. package/threading/thread-worker.js +26 -3
  666. package/tokens.d.ts +1 -1
  667. package/tokens.js +25 -2
  668. package/types/geo-json.js +16 -1
  669. package/types.js +16 -2
  670. package/utils/alphabet.js +35 -12
  671. package/utils/any-iterable-iterator.js +27 -4
  672. package/utils/array/array-backtracker.js +65 -42
  673. package/utils/array/array.js +79 -76
  674. package/utils/array/index.js +19 -2
  675. package/utils/async-iterable-helpers/all.js +46 -25
  676. package/utils/async-iterable-helpers/any.js +46 -25
  677. package/utils/async-iterable-helpers/assert.js +43 -22
  678. package/utils/async-iterable-helpers/batch.js +46 -26
  679. package/utils/async-iterable-helpers/buffer.js +64 -47
  680. package/utils/async-iterable-helpers/concat.js +27 -5
  681. package/utils/async-iterable-helpers/default-if-empty.js +32 -9
  682. package/utils/async-iterable-helpers/deferred.js +26 -3
  683. package/utils/async-iterable-helpers/difference.js +48 -24
  684. package/utils/async-iterable-helpers/distinct.js +44 -23
  685. package/utils/async-iterable-helpers/drain.js +26 -4
  686. package/utils/async-iterable-helpers/filter.js +44 -23
  687. package/utils/async-iterable-helpers/first-or-default.js +30 -8
  688. package/utils/async-iterable-helpers/first.js +30 -8
  689. package/utils/async-iterable-helpers/for-each.js +38 -18
  690. package/utils/async-iterable-helpers/group-single.js +26 -3
  691. package/utils/async-iterable-helpers/group-to-map.js +41 -20
  692. package/utils/async-iterable-helpers/group-to-single-map.js +44 -23
  693. package/utils/async-iterable-helpers/group.js +26 -3
  694. package/utils/async-iterable-helpers/includes.js +28 -7
  695. package/utils/async-iterable-helpers/index.js +65 -48
  696. package/utils/async-iterable-helpers/interrupt.js +43 -19
  697. package/utils/async-iterable-helpers/is-async-iterable.js +29 -5
  698. package/utils/async-iterable-helpers/last-or-default.js +36 -13
  699. package/utils/async-iterable-helpers/last.js +36 -13
  700. package/utils/async-iterable-helpers/map-many.js +40 -19
  701. package/utils/async-iterable-helpers/map.js +40 -19
  702. package/utils/async-iterable-helpers/materialize.js +42 -21
  703. package/utils/async-iterable-helpers/metadata.js +58 -38
  704. package/utils/async-iterable-helpers/multiplex.js +44 -23
  705. package/utils/async-iterable-helpers/observable-iterable.js +53 -31
  706. package/utils/async-iterable-helpers/pairwise.js +44 -26
  707. package/utils/async-iterable-helpers/parallel/feed.js +45 -24
  708. package/utils/async-iterable-helpers/parallel/filter.js +31 -8
  709. package/utils/async-iterable-helpers/parallel/for-each.js +44 -21
  710. package/utils/async-iterable-helpers/parallel/group.js +32 -9
  711. package/utils/async-iterable-helpers/parallel/index.js +24 -7
  712. package/utils/async-iterable-helpers/parallel/map.js +29 -6
  713. package/utils/async-iterable-helpers/parallel/tap.js +29 -6
  714. package/utils/async-iterable-helpers/parallel/types.js +16 -1
  715. package/utils/async-iterable-helpers/reduce.js +46 -31
  716. package/utils/async-iterable-helpers/retry.js +58 -43
  717. package/utils/async-iterable-helpers/single-or-default.js +40 -17
  718. package/utils/async-iterable-helpers/single.js +42 -19
  719. package/utils/async-iterable-helpers/skip.js +26 -3
  720. package/utils/async-iterable-helpers/sort.js +29 -6
  721. package/utils/async-iterable-helpers/take-until.js +49 -32
  722. package/utils/async-iterable-helpers/take-while.js +46 -29
  723. package/utils/async-iterable-helpers/take.js +33 -10
  724. package/utils/async-iterable-helpers/tap.js +40 -19
  725. package/utils/async-iterable-helpers/throttle.js +30 -9
  726. package/utils/async-iterable-helpers/to-array.js +33 -10
  727. package/utils/async-iterable-helpers/to-async-iterable-iterator.js +59 -40
  728. package/utils/async-iterable-helpers/to-async-iterator.js +54 -32
  729. package/utils/async-iterable-helpers/to-set.js +33 -10
  730. package/utils/async-iterable-helpers/to-sync-iterable.js +27 -6
  731. package/utils/async-iterable-helpers/types.js +16 -1
  732. package/utils/async-iterable-helpers/while.js +46 -25
  733. package/utils/async-iterator-iterable-iterator.js +62 -41
  734. package/utils/backoff.js +109 -109
  735. package/utils/base64.js +140 -153
  736. package/utils/benchmark.js +107 -114
  737. package/utils/binary-search.js +87 -70
  738. package/utils/binary.js +61 -50
  739. package/utils/cancellation-token.js +140 -120
  740. package/utils/clone.js +64 -43
  741. package/utils/comparison.js +98 -76
  742. package/utils/compression.js +118 -107
  743. package/utils/config-parser.js +48 -21
  744. package/utils/crc32.js +42 -20
  745. package/utils/cryptography.js +121 -163
  746. package/utils/date-time.js +138 -102
  747. package/utils/encoding.js +60 -62
  748. package/utils/enum.js +53 -27
  749. package/utils/equals.js +119 -103
  750. package/utils/event-loop.js +39 -19
  751. package/utils/factory-map.js +75 -53
  752. package/utils/feedable-async-iterable.js +70 -47
  753. package/utils/file-reader.js +41 -15
  754. package/utils/format-error.js +57 -36
  755. package/utils/format.js +53 -32
  756. package/utils/function/index.js +19 -2
  757. package/utils/function/memoize.js +53 -38
  758. package/utils/function/throttle.js +48 -26
  759. package/utils/helpers.js +102 -93
  760. package/utils/image.js +88 -62
  761. package/utils/index.js +65 -48
  762. package/utils/iterable-helpers/all.js +31 -8
  763. package/utils/iterable-helpers/any.js +31 -8
  764. package/utils/iterable-helpers/assert.js +30 -7
  765. package/utils/iterable-helpers/batch.js +34 -11
  766. package/utils/iterable-helpers/concat.js +27 -4
  767. package/utils/iterable-helpers/default-if-empty.js +32 -9
  768. package/utils/iterable-helpers/deferred.js +25 -2
  769. package/utils/iterable-helpers/difference.js +45 -21
  770. package/utils/iterable-helpers/distinct.js +32 -9
  771. package/utils/iterable-helpers/drain.js +26 -4
  772. package/utils/iterable-helpers/filter.js +30 -7
  773. package/utils/iterable-helpers/first-or-default.js +30 -8
  774. package/utils/iterable-helpers/first.js +30 -8
  775. package/utils/iterable-helpers/for-each.js +28 -5
  776. package/utils/iterable-helpers/group-single.js +26 -3
  777. package/utils/iterable-helpers/group-to-map.js +32 -9
  778. package/utils/iterable-helpers/group-to-single-map.js +33 -10
  779. package/utils/iterable-helpers/group.js +26 -3
  780. package/utils/iterable-helpers/includes.js +26 -3
  781. package/utils/iterable-helpers/index.js +56 -39
  782. package/utils/iterable-helpers/is-iterable.js +29 -5
  783. package/utils/iterable-helpers/last-or-default.js +36 -13
  784. package/utils/iterable-helpers/last.js +36 -13
  785. package/utils/iterable-helpers/map-many.js +29 -6
  786. package/utils/iterable-helpers/map.js +29 -6
  787. package/utils/iterable-helpers/materialize.js +25 -2
  788. package/utils/iterable-helpers/metadata.js +38 -16
  789. package/utils/iterable-helpers/pairwise.js +33 -11
  790. package/utils/iterable-helpers/range.js +27 -4
  791. package/utils/iterable-helpers/reduce.js +33 -11
  792. package/utils/iterable-helpers/single-or-default.js +37 -14
  793. package/utils/iterable-helpers/single.js +40 -17
  794. package/utils/iterable-helpers/skip.js +29 -6
  795. package/utils/iterable-helpers/sort.js +27 -4
  796. package/utils/iterable-helpers/take-until.js +31 -8
  797. package/utils/iterable-helpers/take-while.js +33 -10
  798. package/utils/iterable-helpers/take.js +33 -10
  799. package/utils/iterable-helpers/tap.js +29 -6
  800. package/utils/iterable-helpers/types.js +16 -1
  801. package/utils/iterable-helpers/while.js +31 -8
  802. package/utils/jwt.js +100 -77
  803. package/utils/map.js +62 -35
  804. package/utils/math.js +64 -102
  805. package/utils/merge.js +45 -26
  806. package/utils/middleware.js +60 -36
  807. package/utils/moving-metric.js +188 -155
  808. package/utils/noop.js +27 -4
  809. package/utils/object/decycle.js +78 -57
  810. package/utils/object/dereference.js +44 -46
  811. package/utils/object/forward-ref.js +73 -57
  812. package/utils/object/index.js +24 -7
  813. package/utils/object/lazy-property.js +96 -81
  814. package/utils/object/merge.js +70 -48
  815. package/utils/object/object.js +136 -106
  816. package/utils/object/property-name.js +72 -69
  817. package/utils/ordered-feedable-async-iterable.js +65 -42
  818. package/utils/patch-worker.js +90 -69
  819. package/utils/patterns.js +29 -7
  820. package/utils/periodic-reporter.js +82 -60
  821. package/utils/periodic-sampler.js +91 -67
  822. package/utils/provider-function-iterable.js +48 -26
  823. package/utils/proxy.js +42 -17
  824. package/utils/random.js +50 -40
  825. package/utils/reflection.js +41 -13
  826. package/utils/repl.js +33 -14
  827. package/utils/set.js +62 -36
  828. package/utils/singleton.js +41 -18
  829. package/utils/sort.js +77 -53
  830. package/utils/stream/finalize-stream.js +62 -43
  831. package/utils/stream/index.js +23 -6
  832. package/utils/stream/readable-stream-adapter.js +57 -35
  833. package/utils/stream/readable-stream-from-promise.js +28 -7
  834. package/utils/stream/size-limited-stream.js +35 -12
  835. package/utils/stream/stream-helper-types.js +16 -1
  836. package/utils/stream/stream-reader.js +52 -30
  837. package/utils/string/hypenate.js +25 -2
  838. package/utils/string/index.js +20 -3
  839. package/utils/string/title-case.js +26 -6
  840. package/utils/string/trim.js +32 -9
  841. package/utils/throw.js +30 -7
  842. package/utils/timer.js +91 -70
  843. package/utils/timing.js +80 -52
  844. package/utils/type-guards.js +1076 -253
  845. package/utils/type-of.js +43 -25
  846. package/utils/units.js +124 -53
  847. package/utils/url-builder.js +68 -47
  848. package/utils/value-or-provider.js +29 -6
  849. package/utils/z-base32.js +63 -42
  850. package/web-types.js +16 -1
  851. package/container/container.js +0 -428
  852. package/container/decorators.js +0 -126
  853. package/container/interfaces.js +0 -2
  854. package/container/provider.js +0 -29
  855. package/container/resolve-chain.js +0 -80
  856. package/container/resolve.error.js +0 -11
  857. package/container/token.js +0 -20
  858. package/container/type-info.js +0 -1
  859. package/container/types.js +0 -1
  860. package/container/utils.js +0 -20
  861. package/data-structures/set.js +0 -56
  862. /package/{container → _container}/container.d.ts +0 -0
  863. /package/{container → _container}/decorators.d.ts +0 -0
  864. /package/{container → _container}/index.d.ts +0 -0
  865. /package/{container → _container}/interfaces.d.ts +0 -0
  866. /package/{container → _container}/provider.d.ts +0 -0
  867. /package/{container → _container}/resolve-chain.d.ts +0 -0
  868. /package/{container → _container}/resolve.error.d.ts +0 -0
  869. /package/{container → _container}/token.d.ts +0 -0
  870. /package/{container → _container}/type-info.d.ts +0 -0
  871. /package/{container → _container}/types.d.ts +0 -0
  872. /package/{container → _container}/utils.d.ts +0 -0
@@ -1,278 +1,304 @@
1
- import { afterResolve } from '../../container/index.js';
2
- import { EntityRepository } from '../../database/index.js';
3
- import { equals } from '../../utils/equals.js';
4
- import { filterUndefinedFromRecord, objectEntries, objectKeys } from '../../utils/object/object.js';
5
- import { _throw } from '../../utils/throw.js';
6
- import { isDefined, isUndefined } from '../../utils/type-guards.js';
7
- import { MongoBaseRepository } from './mongo-base.repository.js';
8
- import { convertQuery, convertSort } from './query-converter.js';
9
- export function mapTo(key, transform) {
10
- return { key, transform };
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var mongo_entity_repository_exports = {};
20
+ __export(mongo_entity_repository_exports, {
21
+ MongoEntityRepository: () => MongoEntityRepository,
22
+ getNoopTransformer: () => getNoopTransformer,
23
+ mapTo: () => mapTo,
24
+ noopTransformer: () => noopTransformer,
25
+ noopTransformerFunction: () => noopTransformerFunction
26
+ });
27
+ module.exports = __toCommonJS(mongo_entity_repository_exports);
28
+ var import_database = require("../../database/index.js");
29
+ var import_injector = require("../../injector/index.js");
30
+ var import_equals = require("../../utils/equals.js");
31
+ var import_object = require("../../utils/object/object.js");
32
+ var import_throw = require("../../utils/throw.js");
33
+ var import_type_guards = require("../../utils/type-guards.js");
34
+ var import_mongo_base_repository = require("./mongo-base.repository.js");
35
+ var import_query_converter = require("./query-converter.js");
36
+ function mapTo(key, transform) {
37
+ return { key, transform };
11
38
  }
12
- export const noopTransformerFunction = (item) => item;
13
- export const noopTransformer = {
14
- transform: noopTransformerFunction,
15
- untransform: noopTransformerFunction
39
+ const noopTransformerFunction = (item) => item;
40
+ const noopTransformer = {
41
+ transform: noopTransformerFunction,
42
+ untransform: noopTransformerFunction
16
43
  };
17
- export function getNoopTransformer() {
18
- return noopTransformer;
44
+ function getNoopTransformer() {
45
+ return noopTransformer;
19
46
  }
20
- export class MongoEntityRepository extends EntityRepository {
21
- collection;
22
- transformer;
23
- logger;
24
- indexes;
25
- baseRepository;
26
- transformerMappingMap;
27
- constructor(collection, transformer, { logger, indexes }) {
28
- super();
29
- this.collection = collection;
30
- this.transformer = transformer;
31
- this.logger = logger.prefix(`${collection.collectionName}: `);
32
- this.indexes = indexes?.map(normalizeIndex);
33
- this.baseRepository = new MongoBaseRepository(collection);
34
- this.transformerMappingMap = new Map(objectEntries(transformer.mapping ?? {}));
35
- }
36
- async [afterResolve]() {
37
- await this.initialize();
38
- }
39
- async initialize() {
40
- const indexes = this.indexes?.map((index) => ({ index, normalizedIndex: normalizeIndex(index) }));
41
- if (isUndefined(indexes)) {
42
- return;
43
- }
44
- const existingRawIndexes = await this.collection.indexes();
45
- const existingIndexes = existingRawIndexes.map(normalizeIndex).filter((index) => index.name != '_id_');
46
- const unwantedIndexes = existingIndexes.filter((existingIndex) => !indexes.some(({ normalizedIndex }) => equals(existingIndex, normalizedIndex, { deep: true, sortArray: false })));
47
- const requiredIndexes = indexes.filter(({ normalizedIndex: wantedNormalizedIndex }) => !existingIndexes.some((index) => equals(wantedNormalizedIndex, index, { deep: true, sortArray: false })));
48
- for (const unwantedIndex of unwantedIndexes) {
49
- this.logger.warn(`dropping index ${unwantedIndex.name}`);
50
- await this.collection.dropIndex(unwantedIndex.name);
51
- }
52
- if (requiredIndexes.length > 0) {
53
- const indexexToCreate = requiredIndexes.map(({ index }) => index);
54
- const indexNames = indexexToCreate.map((index) => index.name ?? _throw(new Error('index name missing')));
55
- this.logger.warn(`creating indexes ${indexNames.join(', ')}`);
56
- await this.baseRepository.createIndexes(indexexToCreate);
57
- }
58
- }
59
- async load(id) {
60
- return this.loadByFilter({ id });
61
- }
62
- async tryLoad(id) {
63
- return this.tryLoadByFilter({ id });
64
- }
65
- async loadMany(ids, options) {
66
- return this.loadManyByFilter({ id: { $in: ids } }, options);
67
- }
68
- // eslint-disable-next-line @typescript-eslint/require-await
69
- async *loadManyCursor(ids, options) {
70
- yield* this.loadManyByFilterCursor({ id: { $in: ids } }, options);
71
- }
72
- async loadByFilter(filter, options) {
73
- const transformedFilter = this.transformFilter(filter);
74
- const entity = await this.baseRepository.loadByFilter(transformedFilter, convertOptions(options, this.transformerMappingMap));
75
- return this.transformer.untransform(entity);
76
- }
77
- async tryLoadByFilter(filter, options) {
78
- const transformedFilter = this.transformFilter(filter);
79
- const entity = await this.baseRepository.tryLoadByFilter(transformedFilter, convertOptions(options, this.transformerMappingMap));
80
- return entity == undefined ? undefined : this.transformer.untransform(entity);
81
- }
82
- async loadManyByFilter(filter, options) {
83
- const transformedFilter = this.transformFilter(filter);
84
- const entities = await this.baseRepository.loadManyByFilter(transformedFilter, convertOptions(options, this.transformerMappingMap));
85
- return entities.map(this.transformer.untransform);
86
- }
87
- async *loadManyByFilterCursor(filter, options) {
88
- const transformedFilter = this.transformFilter(filter);
89
- for await (const entity of this.baseRepository.loadManyByFilterWithCursor(transformedFilter, convertOptions(options, this.transformerMappingMap))) {
90
- yield this.transformer.untransform(entity);
91
- }
92
- }
93
- async loadAll(options) {
94
- const entities = await this.baseRepository.loadManyByFilter({}, convertOptions(options, this.transformerMappingMap));
95
- return entities.map((entity) => this.transformer.untransform(entity));
96
- }
97
- async *loadAllCursor(options) {
98
- for await (const entity of this.baseRepository.loadManyByFilterWithCursor({}, convertOptions(options, this.transformerMappingMap))) {
99
- yield this.transformer.untransform(entity);
100
- }
101
- }
102
- async loadAndDelete(id) {
103
- return this.loadByFilterAndDelete({ id });
104
- }
105
- async tryLoadAndDelete(id) {
106
- return this.tryLoadByFilterAndDelete({ id });
107
- }
108
- async loadByFilterAndDelete(filter, options) {
109
- const transformedFilter = this.transformFilter(filter);
110
- const entity = await this.baseRepository.loadByFilterAndDelete(transformedFilter, convertOptions(options, this.transformerMappingMap));
111
- return this.transformer.untransform(entity);
112
- }
113
- async tryLoadByFilterAndDelete(filter, options) {
114
- const transformedFilter = this.transformFilter(filter);
115
- const entity = await this.baseRepository.tryLoadByFilterAndDelete(transformedFilter, convertOptions(options, this.transformerMappingMap));
116
- return entity == undefined ? undefined : this.transformer.untransform(entity);
117
- }
118
- async loadAndPatch(id, patch, includePatch) {
119
- return this.loadByFilterAndPatch({ id }, patch, includePatch);
120
- }
121
- async tryLoadAndPatch(id, patch, includePatch) {
122
- return this.tryLoadByFilterAndPatch({ id }, patch, includePatch);
123
- }
124
- async loadByFilterAndPatch(filter, patch, includePatch, options) {
125
- const transformedFilter = this.transformFilter(filter);
126
- const update = this.transformPatch(patch);
127
- const loadOptions = convertOptions(options, this.transformerMappingMap) ?? {};
128
- const entity = await this.baseRepository.loadByFilterAndUpdate(transformedFilter, update, { ...loadOptions, returnDocument: includePatch ? 'after' : 'before' });
129
- return this.transformer.untransform(entity);
130
- }
131
- async tryLoadByFilterAndPatch(filter, patch, includePatch, options) {
132
- const transformedFilter = this.transformFilter(filter);
133
- const update = this.transformPatch(patch);
134
- const loadOptions = convertOptions(options, this.transformerMappingMap) ?? {};
135
- const entity = await this.baseRepository.tryLoadByFilterAndUpdate(transformedFilter, update, { ...loadOptions, returnDocument: includePatch ? 'after' : 'before' });
136
- return entity == undefined ? undefined : this.transformer.untransform(entity);
137
- }
138
- async has(id) {
139
- return this.hasByFilter({ id });
140
- }
141
- async hasByFilter(filter) {
142
- const transformedFilter = this.transformFilter(filter);
143
- return this.baseRepository.hasByFilter(transformedFilter);
144
- }
145
- async hasMany(ids) {
146
- const transformedFilter = this.transformFilter({ id: { $in: ids } });
147
- return this.baseRepository.getIdsByFilter(transformedFilter);
148
- }
149
- async hasAll(ids) {
150
- const transformedFilter = this.transformFilter({ id: { $in: ids } });
151
- const count = await this.baseRepository.countByFilter(transformedFilter);
152
- return count == ids.length;
153
- }
154
- async count(allowEstimation = false) {
155
- if (allowEstimation) {
156
- return this.baseRepository.countByFilterEstimated();
157
- }
158
- return this.baseRepository.countByFilter({});
159
- }
160
- async countByFilter(filter, _allowEstimation = false) {
161
- const transformedFilter = this.transformFilter(filter);
162
- return this.baseRepository.countByFilter(transformedFilter);
163
- }
164
- async patch(entity, patch) {
165
- return this.patchByFilter({ _id: entity.id }, patch);
166
- }
167
- async patchMany(entities, patch) {
168
- const ids = entities.map((entity) => entity.id);
169
- return this.patchManyByFilter({ _id: { $in: ids } }, patch);
170
- }
171
- async patchByFilter(filter, patch) {
172
- const transformedFilter = this.transformFilter(filter);
173
- const transformedPatch = this.transformPatch(patch);
174
- const { matchedCount } = await this.baseRepository.update(transformedFilter, transformedPatch);
175
- return matchedCount > 0;
176
- }
177
- async patchManyByFilter(filter, patch) {
178
- const transformedFilter = this.transformFilter(filter);
179
- const transformedPatch = this.transformPatch(patch);
180
- const { matchedCount } = await this.baseRepository.updateMany(transformedFilter, transformedPatch);
181
- return matchedCount;
182
- }
183
- async insert(entity) {
184
- const transformed = this.transformer.transform(entity);
185
- const insertedEntity = await this.baseRepository.insert(transformed);
186
- return this.transformer.untransform(insertedEntity);
187
- }
188
- async insertMany(entities) {
189
- const transformed = entities.map((entity) => this.transformer.transform(entity));
190
- const insertedEntities = await this.baseRepository.insertMany(transformed);
191
- return insertedEntities.map((insertedEntity) => this.transformer.untransform(insertedEntity));
192
- }
193
- async insertIfNotExists(entity) {
194
- const transformed = this.transformer.transform(entity);
195
- const insertedEntity = await this.baseRepository.insertIfNotExists(transformed);
196
- return isUndefined(insertedEntity) ? undefined : this.transformer.untransform(insertedEntity);
197
- }
198
- async insertManyIfNotExists(entities) {
199
- const transformed = entities.map((entity) => this.transformer.transform(entity));
200
- const insertedEntities = await this.baseRepository.insertManyIfNotExists(transformed);
201
- return insertedEntities.map((insertedEntity) => this.transformer.untransform(insertedEntity));
202
- }
203
- async insertIfNotExistsByFilter(query, entity) {
204
- const transformedFilter = this.transformFilter(query);
205
- const transformed = this.transformer.transform(entity);
206
- const document = await this.baseRepository.insertIfNotExistsByFilter(transformedFilter, transformed);
207
- return isUndefined(document) ? undefined : this.transformer.untransform(document);
208
- }
209
- async insertManyIfNotExistsByFilter(items) {
210
- const transformedItems = items.map((item) => ({
211
- filter: this.transformFilter(item.query),
212
- entity: this.transformer.transform(item.entity)
213
- }));
214
- const insertedEntities = await this.baseRepository.insertManyIfNotExistsByFilter(transformedItems);
215
- return insertedEntities.map((insertedEntity) => this.transformer.untransform(insertedEntity));
216
- }
217
- async update(entity, options) {
218
- const transformed = this.transformer.transform(entity);
219
- return this.baseRepository.replace(transformed, options);
220
- }
221
- async updateMany(entities, options) {
222
- const transformed = entities.map((entity) => this.transformer.transform(entity));
223
- return this.baseRepository.replaceMany(transformed, options);
224
- }
225
- async delete(entity) {
226
- return this.deleteById(entity.id);
227
- }
228
- async deleteMany(entities) {
229
- const ids = entities.map((entity) => entity.id);
230
- return this.deleteManyByFilter({ id: { $in: ids } });
231
- }
232
- async deleteById(id) {
233
- return this.deleteByFilter({ id });
234
- }
235
- async deleteManyById(ids) {
236
- return this.deleteManyByFilter({ id: { $in: ids } });
237
- }
238
- async deleteByFilter(filter) {
239
- const transformedFilter = this.transformFilter(filter);
240
- return this.baseRepository.deleteByFilter(transformedFilter);
241
- }
242
- async deleteManyByFilter(filter) {
243
- const transformedFilter = this.transformFilter(filter);
244
- return this.baseRepository.deleteManyByFilter(transformedFilter);
245
- }
246
- transformFilter(filter) {
247
- return convertQuery(filter, this.transformerMappingMap);
248
- }
249
- transformPatch(patch) {
250
- const transformedPatch = {};
251
- for (const [property, value] of objectEntries(patch)) {
252
- const mapping = this.transformerMappingMap.get(property);
253
- if (isDefined(mapping)) {
254
- transformedPatch[mapping.key] = mapping.transform(value);
255
- }
256
- else {
257
- transformedPatch[property] = value;
258
- }
259
- }
260
- return { $set: { ...transformedPatch } };
261
- }
47
+ class MongoEntityRepository extends import_database.EntityRepository {
48
+ collection;
49
+ transformer;
50
+ logger;
51
+ indexes;
52
+ baseRepository;
53
+ transformerMappingMap;
54
+ constructor(collection, transformer, { logger, indexes }) {
55
+ super();
56
+ this.collection = collection;
57
+ this.transformer = transformer;
58
+ this.logger = logger.prefix(`${collection.collectionName}: `);
59
+ this.indexes = indexes?.map(normalizeIndex);
60
+ this.baseRepository = new import_mongo_base_repository.MongoBaseRepository(collection);
61
+ this.transformerMappingMap = new Map((0, import_object.objectEntries)(transformer.mapping ?? {}));
62
+ }
63
+ async [import_injector.afterResolve]() {
64
+ await this.initialize();
65
+ }
66
+ async initialize() {
67
+ const indexes = this.indexes?.map((index) => ({ index, normalizedIndex: normalizeIndex(index) }));
68
+ if ((0, import_type_guards.isUndefined)(indexes)) {
69
+ return;
70
+ }
71
+ const existingRawIndexes = await this.collection.indexes();
72
+ const existingIndexes = existingRawIndexes.map(normalizeIndex).filter((index) => index.name != "_id_");
73
+ const unwantedIndexes = existingIndexes.filter((existingIndex) => !indexes.some(({ normalizedIndex }) => (0, import_equals.equals)(existingIndex, normalizedIndex, { deep: true, sortArray: false })));
74
+ const requiredIndexes = indexes.filter(({ normalizedIndex: wantedNormalizedIndex }) => !existingIndexes.some((index) => (0, import_equals.equals)(wantedNormalizedIndex, index, { deep: true, sortArray: false })));
75
+ for (const unwantedIndex of unwantedIndexes) {
76
+ this.logger.warn(`dropping index ${unwantedIndex.name}`);
77
+ await this.collection.dropIndex(unwantedIndex.name);
78
+ }
79
+ if (requiredIndexes.length > 0) {
80
+ const indexexToCreate = requiredIndexes.map(({ index }) => index);
81
+ const indexNames = indexexToCreate.map((index) => index.name ?? (0, import_throw._throw)(new Error("index name missing")));
82
+ this.logger.warn(`creating indexes ${indexNames.join(", ")}`);
83
+ await this.baseRepository.createIndexes(indexexToCreate);
84
+ }
85
+ }
86
+ async load(id) {
87
+ return this.loadByFilter({ id });
88
+ }
89
+ async tryLoad(id) {
90
+ return this.tryLoadByFilter({ id });
91
+ }
92
+ async loadMany(ids, options) {
93
+ return this.loadManyByFilter({ id: { $in: ids } }, options);
94
+ }
95
+ // eslint-disable-next-line @typescript-eslint/require-await
96
+ async *loadManyCursor(ids, options) {
97
+ yield* this.loadManyByFilterCursor({ id: { $in: ids } }, options);
98
+ }
99
+ async loadByFilter(filter, options) {
100
+ const transformedFilter = this.transformFilter(filter);
101
+ const entity = await this.baseRepository.loadByFilter(transformedFilter, convertOptions(options, this.transformerMappingMap));
102
+ return this.transformer.untransform(entity);
103
+ }
104
+ async tryLoadByFilter(filter, options) {
105
+ const transformedFilter = this.transformFilter(filter);
106
+ const entity = await this.baseRepository.tryLoadByFilter(transformedFilter, convertOptions(options, this.transformerMappingMap));
107
+ return entity == void 0 ? void 0 : this.transformer.untransform(entity);
108
+ }
109
+ async loadManyByFilter(filter, options) {
110
+ const transformedFilter = this.transformFilter(filter);
111
+ const entities = await this.baseRepository.loadManyByFilter(transformedFilter, convertOptions(options, this.transformerMappingMap));
112
+ return entities.map(this.transformer.untransform);
113
+ }
114
+ async *loadManyByFilterCursor(filter, options) {
115
+ const transformedFilter = this.transformFilter(filter);
116
+ for await (const entity of this.baseRepository.loadManyByFilterWithCursor(transformedFilter, convertOptions(options, this.transformerMappingMap))) {
117
+ yield this.transformer.untransform(entity);
118
+ }
119
+ }
120
+ async loadAll(options) {
121
+ const entities = await this.baseRepository.loadManyByFilter({}, convertOptions(options, this.transformerMappingMap));
122
+ return entities.map((entity) => this.transformer.untransform(entity));
123
+ }
124
+ async *loadAllCursor(options) {
125
+ for await (const entity of this.baseRepository.loadManyByFilterWithCursor({}, convertOptions(options, this.transformerMappingMap))) {
126
+ yield this.transformer.untransform(entity);
127
+ }
128
+ }
129
+ async loadAndDelete(id) {
130
+ return this.loadByFilterAndDelete({ id });
131
+ }
132
+ async tryLoadAndDelete(id) {
133
+ return this.tryLoadByFilterAndDelete({ id });
134
+ }
135
+ async loadByFilterAndDelete(filter, options) {
136
+ const transformedFilter = this.transformFilter(filter);
137
+ const entity = await this.baseRepository.loadByFilterAndDelete(transformedFilter, convertOptions(options, this.transformerMappingMap));
138
+ return this.transformer.untransform(entity);
139
+ }
140
+ async tryLoadByFilterAndDelete(filter, options) {
141
+ const transformedFilter = this.transformFilter(filter);
142
+ const entity = await this.baseRepository.tryLoadByFilterAndDelete(transformedFilter, convertOptions(options, this.transformerMappingMap));
143
+ return entity == void 0 ? void 0 : this.transformer.untransform(entity);
144
+ }
145
+ async loadAndPatch(id, patch, includePatch) {
146
+ return this.loadByFilterAndPatch({ id }, patch, includePatch);
147
+ }
148
+ async tryLoadAndPatch(id, patch, includePatch) {
149
+ return this.tryLoadByFilterAndPatch({ id }, patch, includePatch);
150
+ }
151
+ async loadByFilterAndPatch(filter, patch, includePatch, options) {
152
+ const transformedFilter = this.transformFilter(filter);
153
+ const update = this.transformPatch(patch);
154
+ const loadOptions = convertOptions(options, this.transformerMappingMap) ?? {};
155
+ const entity = await this.baseRepository.loadByFilterAndUpdate(transformedFilter, update, { ...loadOptions, returnDocument: includePatch ? "after" : "before" });
156
+ return this.transformer.untransform(entity);
157
+ }
158
+ async tryLoadByFilterAndPatch(filter, patch, includePatch, options) {
159
+ const transformedFilter = this.transformFilter(filter);
160
+ const update = this.transformPatch(patch);
161
+ const loadOptions = convertOptions(options, this.transformerMappingMap) ?? {};
162
+ const entity = await this.baseRepository.tryLoadByFilterAndUpdate(transformedFilter, update, { ...loadOptions, returnDocument: includePatch ? "after" : "before" });
163
+ return entity == void 0 ? void 0 : this.transformer.untransform(entity);
164
+ }
165
+ async has(id) {
166
+ return this.hasByFilter({ id });
167
+ }
168
+ async hasByFilter(filter) {
169
+ const transformedFilter = this.transformFilter(filter);
170
+ return this.baseRepository.hasByFilter(transformedFilter);
171
+ }
172
+ async hasMany(ids) {
173
+ const transformedFilter = this.transformFilter({ id: { $in: ids } });
174
+ return this.baseRepository.getIdsByFilter(transformedFilter);
175
+ }
176
+ async hasAll(ids) {
177
+ const transformedFilter = this.transformFilter({ id: { $in: ids } });
178
+ const count = await this.baseRepository.countByFilter(transformedFilter);
179
+ return count == ids.length;
180
+ }
181
+ async count(allowEstimation = false) {
182
+ if (allowEstimation) {
183
+ return this.baseRepository.countByFilterEstimated();
184
+ }
185
+ return this.baseRepository.countByFilter({});
186
+ }
187
+ async countByFilter(filter, _allowEstimation = false) {
188
+ const transformedFilter = this.transformFilter(filter);
189
+ return this.baseRepository.countByFilter(transformedFilter);
190
+ }
191
+ async patch(entity, patch) {
192
+ return this.patchByFilter({ _id: entity.id }, patch);
193
+ }
194
+ async patchMany(entities, patch) {
195
+ const ids = entities.map((entity) => entity.id);
196
+ return this.patchManyByFilter({ _id: { $in: ids } }, patch);
197
+ }
198
+ async patchByFilter(filter, patch) {
199
+ const transformedFilter = this.transformFilter(filter);
200
+ const transformedPatch = this.transformPatch(patch);
201
+ const { matchedCount } = await this.baseRepository.update(transformedFilter, transformedPatch);
202
+ return matchedCount > 0;
203
+ }
204
+ async patchManyByFilter(filter, patch) {
205
+ const transformedFilter = this.transformFilter(filter);
206
+ const transformedPatch = this.transformPatch(patch);
207
+ const { matchedCount } = await this.baseRepository.updateMany(transformedFilter, transformedPatch);
208
+ return matchedCount;
209
+ }
210
+ async insert(entity) {
211
+ const transformed = this.transformer.transform(entity);
212
+ const insertedEntity = await this.baseRepository.insert(transformed);
213
+ return this.transformer.untransform(insertedEntity);
214
+ }
215
+ async insertMany(entities) {
216
+ const transformed = entities.map((entity) => this.transformer.transform(entity));
217
+ const insertedEntities = await this.baseRepository.insertMany(transformed);
218
+ return insertedEntities.map((insertedEntity) => this.transformer.untransform(insertedEntity));
219
+ }
220
+ async insertIfNotExists(entity) {
221
+ const transformed = this.transformer.transform(entity);
222
+ const insertedEntity = await this.baseRepository.insertIfNotExists(transformed);
223
+ return (0, import_type_guards.isUndefined)(insertedEntity) ? void 0 : this.transformer.untransform(insertedEntity);
224
+ }
225
+ async insertManyIfNotExists(entities) {
226
+ const transformed = entities.map((entity) => this.transformer.transform(entity));
227
+ const insertedEntities = await this.baseRepository.insertManyIfNotExists(transformed);
228
+ return insertedEntities.map((insertedEntity) => this.transformer.untransform(insertedEntity));
229
+ }
230
+ async insertIfNotExistsByFilter(query, entity) {
231
+ const transformedFilter = this.transformFilter(query);
232
+ const transformed = this.transformer.transform(entity);
233
+ const document = await this.baseRepository.insertIfNotExistsByFilter(transformedFilter, transformed);
234
+ return (0, import_type_guards.isUndefined)(document) ? void 0 : this.transformer.untransform(document);
235
+ }
236
+ async insertManyIfNotExistsByFilter(items) {
237
+ const transformedItems = items.map((item) => ({
238
+ filter: this.transformFilter(item.query),
239
+ entity: this.transformer.transform(item.entity)
240
+ }));
241
+ const insertedEntities = await this.baseRepository.insertManyIfNotExistsByFilter(transformedItems);
242
+ return insertedEntities.map((insertedEntity) => this.transformer.untransform(insertedEntity));
243
+ }
244
+ async update(entity, options) {
245
+ const transformed = this.transformer.transform(entity);
246
+ return this.baseRepository.replace(transformed, options);
247
+ }
248
+ async updateMany(entities, options) {
249
+ const transformed = entities.map((entity) => this.transformer.transform(entity));
250
+ return this.baseRepository.replaceMany(transformed, options);
251
+ }
252
+ async delete(entity) {
253
+ return this.deleteById(entity.id);
254
+ }
255
+ async deleteMany(entities) {
256
+ const ids = entities.map((entity) => entity.id);
257
+ return this.deleteManyByFilter({ id: { $in: ids } });
258
+ }
259
+ async deleteById(id) {
260
+ return this.deleteByFilter({ id });
261
+ }
262
+ async deleteManyById(ids) {
263
+ return this.deleteManyByFilter({ id: { $in: ids } });
264
+ }
265
+ async deleteByFilter(filter) {
266
+ const transformedFilter = this.transformFilter(filter);
267
+ return this.baseRepository.deleteByFilter(transformedFilter);
268
+ }
269
+ async deleteManyByFilter(filter) {
270
+ const transformedFilter = this.transformFilter(filter);
271
+ return this.baseRepository.deleteManyByFilter(transformedFilter);
272
+ }
273
+ transformFilter(filter) {
274
+ return (0, import_query_converter.convertQuery)(filter, this.transformerMappingMap);
275
+ }
276
+ transformPatch(patch) {
277
+ const transformedPatch = {};
278
+ for (const [property, value] of (0, import_object.objectEntries)(patch)) {
279
+ const mapping = this.transformerMappingMap.get(property);
280
+ if ((0, import_type_guards.isDefined)(mapping)) {
281
+ transformedPatch[mapping.key] = mapping.transform(value);
282
+ } else {
283
+ transformedPatch[property] = value;
284
+ }
285
+ }
286
+ return { $set: { ...transformedPatch } };
287
+ }
262
288
  }
263
289
  function normalizeIndex(index) {
264
- const { name: providedName, unique, v, background, ns, ...indexRest } = index; // eslint-disable-line @typescript-eslint/no-unused-vars
265
- const name = providedName ?? objectKeys(index.key).join('_');
266
- return filterUndefinedFromRecord({ name, unique: (unique == true) ? true : undefined, ...indexRest });
290
+ const { name: providedName, unique, v, background, ns, ...indexRest } = index;
291
+ const name = providedName ?? (0, import_object.objectKeys)(index.key).join("_");
292
+ return (0, import_object.filterUndefinedFromRecord)({ name, unique: unique == true ? true : void 0, ...indexRest });
267
293
  }
268
294
  function convertOptions(options, mappingMap) {
269
- if (options == undefined) {
270
- return undefined;
271
- }
272
- const loadOptions = {
273
- skip: options.skip,
274
- limit: options.limit,
275
- sort: options.sort?.map((item) => convertSort(item, mappingMap))
276
- };
277
- return loadOptions;
295
+ if (options == void 0) {
296
+ return void 0;
297
+ }
298
+ const loadOptions = {
299
+ skip: options.skip,
300
+ limit: options.limit,
301
+ sort: options.sort?.map((item) => (0, import_query_converter.convertSort)(item, mappingMap))
302
+ };
303
+ return loadOptions;
278
304
  }