@tstdl/base 0.86.0-beta1 → 0.86.0-beta11

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