@tstdl/base 0.87.15 → 0.88.0-alpha2

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