@tstdl/base 0.85.13 → 0.86.0-beta1

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