@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,221 +1,201 @@
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, from2, except, desc) => {
11
- if (from2 && typeof from2 === "object" || typeof from2 === "function") {
12
- for (let key of __getOwnPropNames(from2))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var circular_buffer_exports = {};
20
- __export(circular_buffer_exports, {
21
- CircularBuffer: () => CircularBuffer
22
- });
23
- module.exports = __toCommonJS(circular_buffer_exports);
24
- var import_token = require("../cancellation/token.js");
25
- var import_type_guards = require("../utils/type-guards.js");
26
- var import_rxjs = require("rxjs");
27
- var import_collection = require("./collection.js");
28
- class CircularBuffer extends import_collection.Collection {
29
- maxBufferSizeSubject;
30
- overflowSubject;
31
- backingArray;
32
- writeIndex;
33
- readIndex;
34
- /** emits overwritten items */
35
- overflow$;
36
- /** emits count of free slots in the buffer */
37
- freeSlots$;
38
- /** emits when the buffer is full */
39
- onFull$;
40
- /** emits when the buffer has free slots */
41
- onFreeSlots$;
42
- /** emits whether the buffer is full */
43
- isFull$;
44
- /** emits whether the buffer has free slots */
45
- hasFreeSlots$;
46
- /** resolves when the buffer is full */
47
- get $onFull() {
48
- return (0, import_rxjs.firstValueFrom)(this.onFull$);
49
- }
50
- /** resolves when the buffer has items */
51
- get $onFreeSlots() {
52
- return (0, import_rxjs.firstValueFrom)(this.onFreeSlots$);
53
- }
54
- /** size of buffer */
55
- get bufferSize() {
56
- return this.backingArray.length;
57
- }
58
- /** size of buffer */
59
- get maxBufferSize() {
60
- return this.maxBufferSizeSubject.value ?? Infinity;
61
- }
62
- /** count of free slots in buffer */
63
- get freeSlots() {
64
- if ((0, import_type_guards.isUndefined)(this.maxBufferSize)) {
65
- return Infinity;
66
- }
67
- return this.bufferSize - this.size;
68
- }
69
- /** whether the buffer is full */
70
- get isFull() {
71
- return this.freeSlots == 0;
72
- }
73
- /** whether the buffer has free slots */
74
- get hasFreeSlots() {
75
- return this.freeSlots > 0;
76
- }
77
- constructor(maxBufferSize) {
78
- super();
79
- this.maxBufferSizeSubject = new import_rxjs.BehaviorSubject(maxBufferSize);
80
- this.overflowSubject = new import_rxjs.Subject();
81
- this.overflow$ = this.overflowSubject.asObservable();
82
- this.freeSlots$ = this.change$.pipe((0, import_rxjs.map)(() => this.freeSlots));
83
- this.isFull$ = this.change$.pipe((0, import_rxjs.map)(() => this.isFull), (0, import_rxjs.distinctUntilChanged)());
84
- this.hasFreeSlots$ = this.change$.pipe((0, import_rxjs.map)(() => this.hasFreeSlots), (0, import_rxjs.distinctUntilChanged)());
85
- this.onFull$ = this.isFull$.pipe((0, import_rxjs.filter)((isFull) => isFull), (0, import_rxjs.map)(() => void 0));
86
- this.onFreeSlots$ = this.hasFreeSlots$.pipe((0, import_rxjs.filter)((hasFreeSlots) => hasFreeSlots), (0, import_rxjs.map)(() => void 0));
87
- this.clear();
88
- }
89
- includes(item) {
90
- for (const entry of this) {
91
- if (entry === item) {
92
- return true;
93
- }
94
- }
95
- return false;
96
- }
97
- add(item) {
98
- this.increaseBufferSizeIfNeeded();
99
- const overwrite = this.isFull;
100
- const overwrittenItem = overwrite ? this.backingArray[this.writeIndex] : void 0;
101
- this.backingArray[this.writeIndex] = item;
102
- this.writeIndex = (this.writeIndex + 1) % this.bufferSize;
103
- if (overwrite) {
104
- this.readIndex = (this.readIndex + 1) % this.bufferSize;
105
- this.overflowSubject.next(overwrittenItem);
106
- this.emitChange();
107
- return;
108
- }
109
- this.incrementSize();
110
- }
111
- addMany(items) {
112
- const increase = (0, import_type_guards.isArray)(items) ? items.length : items instanceof import_collection.Collection ? items.size : 1;
113
- this.increaseBufferSizeIfNeeded(this.size + increase);
114
- for (const item of items) {
115
- this.add(item);
116
- }
117
- }
118
- remove() {
119
- if (this.size == 0) {
120
- throw new Error("buffer is empty");
121
- }
122
- return this.tryRemove();
123
- }
124
- tryRemove() {
125
- if (this.size == 0) {
126
- return void 0;
127
- }
128
- const item = this.backingArray[this.readIndex];
129
- this.backingArray[this.readIndex] = void 0;
130
- this.readIndex = (this.readIndex + 1) % this.bufferSize;
131
- this.decrementSize();
132
- return item;
133
- }
134
- clone(newMaxBufferSize = this.maxBufferSize) {
135
- if ((0, import_type_guards.isDefined)(newMaxBufferSize) && newMaxBufferSize < this.size) {
136
- throw new Error("newSize must be equal or larger to current size.");
137
- }
138
- const cloned = new CircularBuffer(newMaxBufferSize);
139
- cloned.addMany(this);
140
- return cloned;
141
- }
142
- *items() {
143
- const size = this.size;
144
- let readIndex = this.readIndex;
145
- let modified = false;
146
- const subscription = (0, import_rxjs.from)(this.change$).pipe((0, import_rxjs.first)()).subscribe(() => modified = true);
147
- try {
148
- for (let i = 0; i < size; i++) {
149
- if (modified) {
150
- throw new Error("Buffer was modified while being iterated.");
151
- }
152
- yield this.backingArray[readIndex];
153
- readIndex = (readIndex + 1) % this.bufferSize;
154
- }
155
- } finally {
156
- subscription.unsubscribe();
157
- }
158
- }
159
- /** yields all items from the buffer and removes them */
160
- *consume() {
161
- while (this.size > 0) {
162
- yield this.tryRemove();
163
- }
164
- }
165
- /**
166
- * yields all items from the buffer, removes them and waits fore more
167
- * @param cancellationSignal token to cancel iteration
168
- * @param yieldOutstandingItems whether to yield all outstanding items or exit immdiately when {@link cancellationSignal} is set
169
- * @returns
170
- */
171
- async *consumeAsync(cancellationSignal = new import_token.CancellationToken(), yieldOutstandingItems = true) {
172
- while (true) {
173
- if (this.isEmpty) {
174
- await (0, import_rxjs.firstValueFrom)((0, import_rxjs.race)([this.onItems$, cancellationSignal]));
175
- }
176
- while (this.size > 0 && (cancellationSignal.isUnset || yieldOutstandingItems)) {
177
- yield this.tryRemove();
178
- }
179
- if (cancellationSignal.isSet) {
180
- return;
181
- }
182
- }
183
- }
184
- _clear() {
185
- this.backingArray = [];
186
- this.backingArray.length = 2;
187
- this.writeIndex = 0;
188
- this.readIndex = 0;
189
- }
190
- increaseBufferSizeIfNeeded(requiredCapacity = this.size + 1) {
191
- if (requiredCapacity <= this.bufferSize) {
192
- return;
193
- }
194
- const newSize = Math.min(2 ** Math.ceil(Math.log2(requiredCapacity)), this.maxBufferSize);
195
- if (newSize != this.bufferSize) {
196
- this.resize(newSize);
197
- }
198
- }
199
- resize(size) {
200
- if (size < this.size) {
201
- throw new Error("Buffer has more items than it would have capacity after resize.");
202
- }
203
- let newBackingArray;
204
- if (this.size > 0) {
205
- if (this.readIndex < this.writeIndex) {
206
- newBackingArray = this.backingArray.slice(this.readIndex, this.writeIndex);
207
- } else {
208
- const start = this.backingArray.slice(this.readIndex);
209
- const end = this.backingArray.slice(0, this.writeIndex);
210
- newBackingArray = start.concat(end);
211
- }
212
- } else {
213
- newBackingArray = [];
214
- }
215
- newBackingArray.length = size;
216
- this.backingArray = newBackingArray;
217
- this.writeIndex = this.size % this.backingArray.length;
218
- this.readIndex = 0;
219
- this.emitChange();
220
- }
1
+ import { CancellationToken } from '../cancellation/token.js';
2
+ import { isArray, isDefined, isUndefined } from '../utils/type-guards.js';
3
+ import { BehaviorSubject, Subject, distinctUntilChanged, filter, first, firstValueFrom, from, map, race } from 'rxjs';
4
+ import { Collection } from './collection.js';
5
+ export class CircularBuffer extends Collection {
6
+ maxBufferSizeSubject;
7
+ overflowSubject;
8
+ backingArray;
9
+ writeIndex;
10
+ readIndex;
11
+ /** emits overwritten items */
12
+ overflow$;
13
+ /** emits count of free slots in the buffer */
14
+ freeSlots$;
15
+ /** emits when the buffer is full */
16
+ onFull$;
17
+ /** emits when the buffer has free slots */
18
+ onFreeSlots$;
19
+ /** emits whether the buffer is full */
20
+ isFull$;
21
+ /** emits whether the buffer has free slots */
22
+ hasFreeSlots$;
23
+ /** resolves when the buffer is full */
24
+ get $onFull() {
25
+ return firstValueFrom(this.onFull$);
26
+ }
27
+ /** resolves when the buffer has items */
28
+ get $onFreeSlots() {
29
+ return firstValueFrom(this.onFreeSlots$);
30
+ }
31
+ /** size of buffer */
32
+ get bufferSize() {
33
+ return this.backingArray.length;
34
+ }
35
+ /** size of buffer */
36
+ get maxBufferSize() {
37
+ return this.maxBufferSizeSubject.value ?? Infinity;
38
+ }
39
+ /** count of free slots in buffer */
40
+ get freeSlots() {
41
+ if (isUndefined(this.maxBufferSize)) {
42
+ return Infinity;
43
+ }
44
+ return this.bufferSize - this.size;
45
+ }
46
+ /** whether the buffer is full */
47
+ get isFull() {
48
+ return this.freeSlots == 0;
49
+ }
50
+ /** whether the buffer has free slots */
51
+ get hasFreeSlots() {
52
+ return this.freeSlots > 0;
53
+ }
54
+ constructor(maxBufferSize) {
55
+ super();
56
+ this.maxBufferSizeSubject = new BehaviorSubject(maxBufferSize);
57
+ this.overflowSubject = new Subject();
58
+ this.overflow$ = this.overflowSubject.asObservable();
59
+ this.freeSlots$ = this.change$.pipe(map(() => this.freeSlots));
60
+ this.isFull$ = this.change$.pipe(map(() => this.isFull), distinctUntilChanged());
61
+ this.hasFreeSlots$ = this.change$.pipe(map(() => this.hasFreeSlots), distinctUntilChanged());
62
+ this.onFull$ = this.isFull$.pipe(filter((isFull) => isFull), map(() => undefined));
63
+ this.onFreeSlots$ = this.hasFreeSlots$.pipe(filter((hasFreeSlots) => hasFreeSlots), map(() => undefined));
64
+ this.clear();
65
+ }
66
+ includes(item) {
67
+ for (const entry of this) {
68
+ if (entry === item) {
69
+ return true;
70
+ }
71
+ }
72
+ return false;
73
+ }
74
+ add(item) {
75
+ this.increaseBufferSizeIfNeeded();
76
+ const overwrite = this.isFull;
77
+ const overwrittenItem = overwrite ? this.backingArray[this.writeIndex] : undefined;
78
+ this.backingArray[this.writeIndex] = item;
79
+ this.writeIndex = (this.writeIndex + 1) % this.bufferSize;
80
+ if (overwrite) {
81
+ this.readIndex = (this.readIndex + 1) % this.bufferSize;
82
+ this.overflowSubject.next(overwrittenItem);
83
+ this.emitChange();
84
+ return;
85
+ }
86
+ this.incrementSize();
87
+ }
88
+ addMany(items) {
89
+ const increase = isArray(items) ? items.length : (items instanceof Collection) ? items.size : 1;
90
+ this.increaseBufferSizeIfNeeded(this.size + increase);
91
+ for (const item of items) {
92
+ this.add(item);
93
+ }
94
+ }
95
+ remove() {
96
+ if (this.size == 0) {
97
+ throw new Error('buffer is empty');
98
+ }
99
+ return this.tryRemove();
100
+ }
101
+ tryRemove() {
102
+ if (this.size == 0) {
103
+ return undefined;
104
+ }
105
+ const item = this.backingArray[this.readIndex];
106
+ this.backingArray[this.readIndex] = undefined;
107
+ this.readIndex = (this.readIndex + 1) % this.bufferSize;
108
+ this.decrementSize();
109
+ return item;
110
+ }
111
+ clone(newMaxBufferSize = this.maxBufferSize) {
112
+ if (isDefined(newMaxBufferSize) && (newMaxBufferSize < this.size)) {
113
+ throw new Error('newSize must be equal or larger to current size.');
114
+ }
115
+ const cloned = new CircularBuffer(newMaxBufferSize);
116
+ cloned.addMany(this);
117
+ return cloned;
118
+ }
119
+ *items() {
120
+ const size = this.size;
121
+ let readIndex = this.readIndex;
122
+ let modified = false;
123
+ const subscription = from(this.change$).pipe(first()).subscribe(() => (modified = true));
124
+ try {
125
+ for (let i = 0; i < size; i++) {
126
+ if (modified) { // eslint-disable-line @typescript-eslint/no-unnecessary-condition
127
+ throw new Error('Buffer was modified while being iterated.');
128
+ }
129
+ yield this.backingArray[readIndex];
130
+ readIndex = (readIndex + 1) % this.bufferSize;
131
+ }
132
+ }
133
+ finally {
134
+ subscription.unsubscribe();
135
+ }
136
+ }
137
+ /** yields all items from the buffer and removes them */
138
+ *consume() {
139
+ while (this.size > 0) {
140
+ yield this.tryRemove();
141
+ }
142
+ }
143
+ /**
144
+ * yields all items from the buffer, removes them and waits fore more
145
+ * @param cancellationSignal token to cancel iteration
146
+ * @param yieldOutstandingItems whether to yield all outstanding items or exit immdiately when {@link cancellationSignal} is set
147
+ * @returns
148
+ */
149
+ async *consumeAsync(cancellationSignal = new CancellationToken(), yieldOutstandingItems = true) {
150
+ while (true) {
151
+ if (this.isEmpty) {
152
+ await firstValueFrom(race([this.onItems$, cancellationSignal]));
153
+ }
154
+ while ((this.size > 0) && (cancellationSignal.isUnset || yieldOutstandingItems)) { // eslint-disable-line no-unmodified-loop-condition
155
+ yield this.tryRemove();
156
+ }
157
+ if (cancellationSignal.isSet) {
158
+ return;
159
+ }
160
+ }
161
+ }
162
+ _clear() {
163
+ this.backingArray = [];
164
+ this.backingArray.length = 2;
165
+ this.writeIndex = 0;
166
+ this.readIndex = 0;
167
+ }
168
+ increaseBufferSizeIfNeeded(requiredCapacity = this.size + 1) {
169
+ if (requiredCapacity <= this.bufferSize) {
170
+ return;
171
+ }
172
+ const newSize = Math.min(2 ** Math.ceil(Math.log2(requiredCapacity)), this.maxBufferSize);
173
+ if (newSize != this.bufferSize) {
174
+ this.resize(newSize);
175
+ }
176
+ }
177
+ resize(size) {
178
+ if (size < this.size) {
179
+ throw new Error('Buffer has more items than it would have capacity after resize.');
180
+ }
181
+ let newBackingArray;
182
+ if (this.size > 0) {
183
+ if (this.readIndex < this.writeIndex) {
184
+ newBackingArray = this.backingArray.slice(this.readIndex, this.writeIndex);
185
+ }
186
+ else {
187
+ const start = this.backingArray.slice(this.readIndex);
188
+ const end = this.backingArray.slice(0, this.writeIndex);
189
+ newBackingArray = start.concat(end);
190
+ }
191
+ }
192
+ else {
193
+ newBackingArray = [];
194
+ }
195
+ newBackingArray.length = size;
196
+ this.backingArray = newBackingArray;
197
+ this.writeIndex = this.size % this.backingArray.length;
198
+ this.readIndex = 0;
199
+ this.emitChange();
200
+ }
221
201
  }
@@ -1,111 +1,88 @@
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 collection_exports = {};
20
- __export(collection_exports, {
21
- Collection: () => Collection
22
- });
23
- module.exports = __toCommonJS(collection_exports);
24
- var import_rxjs = require("rxjs");
25
- class Collection {
26
- sizeSubject;
27
- changeSubject;
28
- clearSubject;
29
- /** emits collection on subscribe and change */
30
- observe$;
31
- /** emits size of collection */
32
- size$;
33
- /** emits collection on change */
34
- change$;
35
- /* emits collection on clear */
36
- clear$;
37
- /** emits when the collection is empty */
38
- onEmpty$;
39
- /** emits when the collection has items */
40
- onItems$;
41
- /** emits whether the collection is empty */
42
- isEmpty$;
43
- /** emits whether the collection has items */
44
- hasItems$;
45
- /** resolves when the collection is empty */
46
- get $onEmpty() {
47
- return (0, import_rxjs.firstValueFrom)(this.onEmpty$);
48
- }
49
- /** resolves when the collection has items */
50
- get $onItems() {
51
- return (0, import_rxjs.firstValueFrom)(this.onItems$);
52
- }
53
- /** size of collection */
54
- get size() {
55
- return this.sizeSubject.value;
56
- }
57
- /** whether the collection is empty */
58
- get isEmpty() {
59
- return this.size == 0;
60
- }
61
- /** whether the collection has items */
62
- get hasItems() {
63
- return this.size > 0;
64
- }
65
- constructor() {
66
- this.sizeSubject = new import_rxjs.BehaviorSubject(0);
67
- this.changeSubject = new import_rxjs.Subject();
68
- this.clearSubject = new import_rxjs.Subject();
69
- this.size$ = this.sizeSubject.asObservable();
70
- this.change$ = this.changeSubject.asObservable();
71
- this.clear$ = this.clearSubject.asObservable();
72
- this.observe$ = this.change$.pipe((0, import_rxjs.startWith)(this));
73
- this.isEmpty$ = this.size$.pipe((0, import_rxjs.map)(() => this.isEmpty), (0, import_rxjs.distinctUntilChanged)());
74
- this.hasItems$ = this.size$.pipe((0, import_rxjs.map)(() => this.hasItems), (0, import_rxjs.distinctUntilChanged)());
75
- this.onEmpty$ = this.isEmpty$.pipe((0, import_rxjs.filter)((isEmpty) => isEmpty), (0, import_rxjs.map)(() => void 0));
76
- this.onItems$ = this.hasItems$.pipe((0, import_rxjs.filter)((hasItems) => hasItems), (0, import_rxjs.map)(() => void 0));
77
- }
78
- [Symbol.iterator]() {
79
- return this.items();
80
- }
81
- toArray() {
82
- return [...this];
83
- }
84
- toJSON() {
85
- return this.toArray();
86
- }
87
- /** remove all items */
88
- clear() {
89
- this._clear();
90
- this.clearSubject.next(this);
91
- this.setSize(0);
92
- }
93
- /** sets collection size */
94
- setSize(size) {
95
- if (size != this.size) {
96
- this.sizeSubject.next(size);
97
- this.emitChange();
1
+ import { BehaviorSubject, distinctUntilChanged, filter, firstValueFrom, map, startWith, Subject } from 'rxjs';
2
+ export class Collection {
3
+ sizeSubject;
4
+ changeSubject;
5
+ clearSubject;
6
+ /** emits collection on subscribe and change */
7
+ observe$;
8
+ /** emits size of collection */
9
+ size$;
10
+ /** emits collection on change */
11
+ change$;
12
+ /* emits collection on clear */
13
+ clear$;
14
+ /** emits when the collection is empty */
15
+ onEmpty$;
16
+ /** emits when the collection has items */
17
+ onItems$;
18
+ /** emits whether the collection is empty */
19
+ isEmpty$;
20
+ /** emits whether the collection has items */
21
+ hasItems$;
22
+ /** resolves when the collection is empty */
23
+ get $onEmpty() {
24
+ return firstValueFrom(this.onEmpty$);
25
+ }
26
+ /** resolves when the collection has items */
27
+ get $onItems() {
28
+ return firstValueFrom(this.onItems$);
29
+ }
30
+ /** size of collection */
31
+ get size() {
32
+ return this.sizeSubject.value;
33
+ }
34
+ /** whether the collection is empty */
35
+ get isEmpty() {
36
+ return this.size == 0;
37
+ }
38
+ /** whether the collection has items */
39
+ get hasItems() {
40
+ return this.size > 0;
41
+ }
42
+ constructor() {
43
+ this.sizeSubject = new BehaviorSubject(0);
44
+ this.changeSubject = new Subject();
45
+ this.clearSubject = new Subject();
46
+ this.size$ = this.sizeSubject.asObservable();
47
+ this.change$ = this.changeSubject.asObservable();
48
+ this.clear$ = this.clearSubject.asObservable();
49
+ this.observe$ = this.change$.pipe(startWith(this));
50
+ this.isEmpty$ = this.size$.pipe(map(() => this.isEmpty), distinctUntilChanged());
51
+ this.hasItems$ = this.size$.pipe(map(() => this.hasItems), distinctUntilChanged());
52
+ this.onEmpty$ = this.isEmpty$.pipe(filter((isEmpty) => isEmpty), map(() => undefined));
53
+ this.onItems$ = this.hasItems$.pipe(filter((hasItems) => hasItems), map(() => undefined));
54
+ }
55
+ [Symbol.iterator]() {
56
+ return this.items();
57
+ }
58
+ toArray() {
59
+ return [...this];
60
+ }
61
+ toJSON() {
62
+ return this.toArray();
63
+ }
64
+ /** remove all items */
65
+ clear() {
66
+ this._clear();
67
+ this.clearSubject.next(this);
68
+ this.setSize(0);
69
+ }
70
+ /** sets collection size */
71
+ setSize(size) {
72
+ if (size != this.size) {
73
+ this.sizeSubject.next(size);
74
+ this.emitChange();
75
+ }
76
+ }
77
+ /** increment collection size by amount (default 1) */
78
+ incrementSize(amount = 1) {
79
+ this.setSize(this.size + amount);
80
+ }
81
+ /** decrement collection size by amount (default 1) */
82
+ decrementSize(amount = 1) {
83
+ this.setSize(this.size - amount);
84
+ }
85
+ emitChange() {
86
+ this.changeSubject.next(this);
98
87
  }
99
- }
100
- /** increment collection size by amount (default 1) */
101
- incrementSize(amount = 1) {
102
- this.setSize(this.size + amount);
103
- }
104
- /** decrement collection size by amount (default 1) */
105
- decrementSize(amount = 1) {
106
- this.setSize(this.size - amount);
107
- }
108
- emitChange() {
109
- this.changeSubject.next(this);
110
- }
111
88
  }