@daiso-tech/core 0.15.0 → 0.16.0
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.
- package/dist/cjs/_module.js +2 -2
- package/dist/cjs/_module.js.map +1 -1
- package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js +15 -0
- package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
- package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js +256 -177
- package/dist/cjs/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
- package/dist/cjs/cache/implementations/_shared/cache.test-suite.js +23 -2
- package/dist/cjs/cache/implementations/_shared/cache.test-suite.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +59 -18
- package/dist/cjs/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +15 -5
- package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +58 -39
- package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +63 -26
- package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +10 -1
- package/dist/cjs/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +44 -19
- package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +15 -5
- package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
- package/dist/cjs/cache/implementations/derivables/_module.js +0 -1
- package/dist/cjs/cache/implementations/derivables/_module.js.map +1 -1
- package/dist/cjs/cache/implementations/derivables/cache-factory.js +1 -4
- package/dist/cjs/cache/implementations/derivables/cache-factory.js.map +1 -1
- package/dist/cjs/cache/implementations/derivables/cache.js +297 -53
- package/dist/cjs/cache/implementations/derivables/cache.js.map +1 -1
- package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.js +14 -7
- package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.js.map +1 -1
- package/dist/cjs/collection/implementations/async-iterable-collection/async-iterable-collection.js +51 -39
- package/dist/cjs/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
- package/dist/cjs/collection/implementations/iterable-collection/_shared/merge-iterable.js +6 -7
- package/dist/cjs/collection/implementations/iterable-collection/_shared/merge-iterable.js.map +1 -1
- package/dist/cjs/collection/implementations/iterable-collection/iterable-collection.js +11 -2
- package/dist/cjs/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
- package/dist/cjs/collection/implementations/list-collection/list-collection.js +13 -0
- package/dist/cjs/collection/implementations/list-collection/list-collection.js.map +1 -1
- package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +76 -32
- package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
- package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js +63 -27
- package/dist/cjs/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
- package/dist/cjs/event-bus/implementations/adapters/_module.js +1 -1
- package/dist/cjs/event-bus/implementations/adapters/_module.js.map +1 -1
- package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +19 -9
- package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
- package/dist/cjs/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +7 -1
- package/dist/cjs/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
- package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -0
- package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +52 -0
- package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -0
- package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js +3 -4
- package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
- package/dist/cjs/event-bus/implementations/derivables/event-bus.js +82 -25
- package/dist/cjs/event-bus/implementations/derivables/event-bus.js.map +1 -1
- package/dist/cjs/{serializer/implementations/_shared/test-utilities → serde/contracts}/_module.js +2 -1
- package/dist/cjs/serde/contracts/_module.js.map +1 -0
- package/dist/cjs/{serializer/contracts/serializer.contract.js → serde/contracts/serde.contract.js} +1 -1
- package/dist/cjs/serde/contracts/serde.contract.js.map +1 -0
- package/dist/cjs/{serializer/contracts/serializer.errors.js → serde/contracts/serde.errors.js} +7 -7
- package/dist/cjs/serde/contracts/serde.errors.js.map +1 -0
- package/dist/cjs/{serializer/contracts → serde/implementations}/_module.js +5 -2
- package/dist/cjs/serde/implementations/_module.js.map +1 -0
- package/dist/cjs/{serializer/implementations/mongodb-serializer → serde/implementations/_shared/test-utilities}/_module.js +1 -1
- package/dist/cjs/serde/implementations/_shared/test-utilities/_module.js.map +1 -0
- package/dist/{esm/serializer/implementations/_shared/test-utilities/serializer.test-suite.js → cjs/serde/implementations/_shared/test-utilities/serde.test-suite.js} +65 -62
- package/dist/cjs/serde/implementations/_shared/test-utilities/serde.test-suite.js.map +1 -0
- package/dist/cjs/{serializer/implementations/sql-serializer → serde/implementations/mongodb-serde}/_module.js +1 -1
- package/dist/cjs/serde/implementations/mongodb-serde/_module.js.map +1 -0
- package/dist/cjs/serde/implementations/mongodb-serde/mongodb-serde.js +36 -0
- package/dist/cjs/serde/implementations/mongodb-serde/mongodb-serde.js.map +1 -0
- package/dist/cjs/{serializer/implementations/redis-serializer → serde/implementations/redis-serde}/_module.js +1 -1
- package/dist/cjs/serde/implementations/redis-serde/_module.js.map +1 -0
- package/dist/cjs/serde/implementations/redis-serde/redis-serde.js +37 -0
- package/dist/cjs/serde/implementations/redis-serde/redis-serde.js.map +1 -0
- package/dist/cjs/serde/implementations/sql-serde/_module.js +18 -0
- package/dist/cjs/serde/implementations/sql-serde/_module.js.map +1 -0
- package/dist/cjs/serde/implementations/sql-serde/sql-serde.js +37 -0
- package/dist/cjs/serde/implementations/sql-serde/sql-serde.js.map +1 -0
- package/dist/cjs/serde/implementations/super-json-serde/_module.js +18 -0
- package/dist/cjs/serde/implementations/super-json-serde/_module.js.map +1 -0
- package/dist/cjs/{serializer/implementations/super-json-serializer/super-json-serializer.js → serde/implementations/super-json-serde/super-json-serde.js} +74 -100
- package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js.map +1 -0
- package/dist/cjs/utilities/functions.js +5 -5
- package/dist/cjs/utilities/functions.js.map +1 -1
- package/dist/cjs/utilities/time-span/time-span.js +8 -0
- package/dist/cjs/utilities/time-span/time-span.js.map +1 -1
- package/dist/esm/_module.js +2 -2
- package/dist/esm/_module.js.map +1 -1
- package/dist/esm/async/utilities/lazy-promise/lazy-promise.js +15 -0
- package/dist/esm/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
- package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js +256 -177
- package/dist/esm/cache/implementations/_shared/cache-adapter.test-suite.js.map +1 -1
- package/dist/esm/cache/implementations/_shared/cache.test-suite.js +23 -2
- package/dist/esm/cache/implementations/_shared/cache.test-suite.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js +60 -19
- package/dist/esm/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +15 -5
- package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +58 -39
- package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +63 -23
- package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +10 -1
- package/dist/esm/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +44 -19
- package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +15 -5
- package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
- package/dist/esm/cache/implementations/derivables/_module.js +0 -1
- package/dist/esm/cache/implementations/derivables/_module.js.map +1 -1
- package/dist/esm/cache/implementations/derivables/cache-factory.js +1 -4
- package/dist/esm/cache/implementations/derivables/cache-factory.js.map +1 -1
- package/dist/esm/cache/implementations/derivables/cache.js +296 -52
- package/dist/esm/cache/implementations/derivables/cache.js.map +1 -1
- package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.js +14 -7
- package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.js.map +1 -1
- package/dist/esm/collection/implementations/async-iterable-collection/async-iterable-collection.js +51 -39
- package/dist/esm/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
- package/dist/esm/collection/implementations/iterable-collection/_shared/merge-iterable.js +6 -7
- package/dist/esm/collection/implementations/iterable-collection/_shared/merge-iterable.js.map +1 -1
- package/dist/esm/collection/implementations/iterable-collection/iterable-collection.js +11 -2
- package/dist/esm/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
- package/dist/esm/collection/implementations/list-collection/list-collection.js +13 -0
- package/dist/esm/collection/implementations/list-collection/list-collection.js.map +1 -1
- package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +76 -32
- package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js.map +1 -1
- package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js +63 -27
- package/dist/esm/event-bus/implementations/_shared/event-bus.test-suite.js.map +1 -1
- package/dist/esm/event-bus/implementations/adapters/_module.js +1 -1
- package/dist/esm/event-bus/implementations/adapters/_module.js.map +1 -1
- package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +19 -9
- package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js.map +1 -1
- package/dist/esm/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +7 -1
- package/dist/esm/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
- package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.js.map +1 -0
- package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +48 -0
- package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -0
- package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js +3 -4
- package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
- package/dist/esm/event-bus/implementations/derivables/event-bus.js +83 -26
- package/dist/esm/event-bus/implementations/derivables/event-bus.js.map +1 -1
- package/dist/esm/serde/contracts/_module.js +3 -0
- package/dist/esm/serde/contracts/_module.js.map +1 -0
- package/dist/esm/serde/contracts/serde.contract.js +1 -0
- package/dist/esm/serde/contracts/serde.contract.js.map +1 -0
- package/dist/esm/{serializer/contracts/serializer.errors.js → serde/contracts/serde.errors.js} +5 -5
- package/dist/esm/serde/contracts/serde.errors.js.map +1 -0
- package/dist/esm/serde/implementations/_module.js +6 -0
- package/dist/esm/serde/implementations/_module.js.map +1 -0
- package/dist/esm/serde/implementations/_shared/test-utilities/_module.js +2 -0
- package/dist/esm/serde/implementations/_shared/test-utilities/_module.js.map +1 -0
- package/dist/{cjs/serializer/implementations/_shared/test-utilities/serializer.test-suite.js → esm/serde/implementations/_shared/test-utilities/serde.test-suite.js} +62 -65
- package/dist/esm/serde/implementations/_shared/test-utilities/serde.test-suite.js.map +1 -0
- package/dist/esm/serde/implementations/mongodb-serde/_module.js +2 -0
- package/dist/esm/serde/implementations/mongodb-serde/_module.js.map +1 -0
- package/dist/esm/{serializer/implementations/mongodb-serializer/mongodb-serializer.js → serde/implementations/mongodb-serde/mongodb-serde.js} +10 -10
- package/dist/esm/serde/implementations/mongodb-serde/mongodb-serde.js.map +1 -0
- package/dist/esm/serde/implementations/redis-serde/_module.js +2 -0
- package/dist/esm/serde/implementations/redis-serde/_module.js.map +1 -0
- package/dist/esm/{serializer/implementations/sql-serializer/sql-serializer.js → serde/implementations/redis-serde/redis-serde.js} +10 -10
- package/dist/esm/serde/implementations/redis-serde/redis-serde.js.map +1 -0
- package/dist/esm/serde/implementations/sql-serde/_module.js +2 -0
- package/dist/esm/serde/implementations/sql-serde/_module.js.map +1 -0
- package/dist/esm/{serializer/implementations/redis-serializer/redis-serializer.js → serde/implementations/sql-serde/sql-serde.js} +10 -10
- package/dist/esm/serde/implementations/sql-serde/sql-serde.js.map +1 -0
- package/dist/esm/serde/implementations/super-json-serde/_module.js +2 -0
- package/dist/esm/serde/implementations/super-json-serde/_module.js.map +1 -0
- package/dist/esm/{serializer/implementations/super-json-serializer/super-json-serializer.js → serde/implementations/super-json-serde/super-json-serde.js} +52 -55
- package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js.map +1 -0
- package/dist/esm/utilities/functions.js +4 -4
- package/dist/esm/utilities/functions.js.map +1 -1
- package/dist/esm/utilities/time-span/time-span.js +8 -0
- package/dist/esm/utilities/time-span/time-span.js.map +1 -1
- package/dist/types/_module.d.ts +2 -2
- package/dist/types/async/utilities/lazy-promise/lazy-promise.d.ts +38 -1
- package/dist/types/cache/contracts/cache-adapter.contract.d.ts +20 -6
- package/dist/types/cache/contracts/cache-factory.contract.d.ts +4 -4
- package/dist/types/cache/contracts/cache.contract.d.ts +19 -16
- package/dist/types/cache/contracts/cache.events.d.ts +17 -21
- package/dist/types/cache/implementations/_shared/cache-adapter.test-suite.d.ts +12 -5
- package/dist/types/cache/implementations/_shared/cache.test-suite.d.ts +6 -6
- package/dist/types/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.d.ts +11 -5
- package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +17 -11
- package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +12 -6
- package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +21 -10
- package/dist/types/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +5 -2
- package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +20 -13
- package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +16 -8
- package/dist/types/cache/implementations/derivables/_module.d.ts +0 -1
- package/dist/types/cache/implementations/derivables/cache-factory.d.ts +5 -11
- package/dist/types/cache/implementations/derivables/cache.d.ts +35 -43
- package/dist/types/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.d.ts +4 -5
- package/dist/types/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +7 -2
- package/dist/types/collection/implementations/iterable-collection/_shared/merge-iterable.d.ts +4 -5
- package/dist/types/collection/implementations/iterable-collection/iterable-collection.d.ts +3 -0
- package/dist/types/collection/implementations/list-collection/list-collection.d.ts +3 -0
- package/dist/types/event-bus/contracts/event-bus-adapter.contract.d.ts +8 -5
- package/dist/types/event-bus/contracts/event-bus-factory.contract.d.ts +3 -3
- package/dist/types/event-bus/contracts/event-bus.contract.d.ts +36 -13
- package/dist/types/event-bus/implementations/_shared/event-bus-adapter.test-suite.d.ts +16 -7
- package/dist/types/event-bus/implementations/_shared/event-bus.test-suite.d.ts +9 -9
- package/dist/types/event-bus/implementations/adapters/_module.d.ts +1 -1
- package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +10 -5
- package/dist/types/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +4 -1
- package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +50 -0
- package/dist/types/event-bus/implementations/derivables/event-bus-factory.d.ts +5 -6
- package/dist/types/event-bus/implementations/derivables/event-bus.d.ts +16 -42
- package/dist/types/serde/contracts/_module.d.ts +2 -0
- package/dist/types/serde/contracts/serde.contract.d.ts +41 -0
- package/dist/types/{serializer/contracts/serializer.errors.d.ts → serde/contracts/serde.errors.d.ts} +4 -4
- package/dist/types/serde/implementations/_module.d.ts +5 -0
- package/dist/types/serde/implementations/_shared/test-utilities/_module.d.ts +1 -0
- package/dist/types/serde/implementations/_shared/test-utilities/serde.test-suite.d.ts +18 -0
- package/dist/types/serde/implementations/mongodb-serde/_module.d.ts +1 -0
- package/dist/types/serde/implementations/mongodb-serde/mongodb-serde.d.ts +13 -0
- package/dist/types/serde/implementations/redis-serde/_module.d.ts +1 -0
- package/dist/types/serde/implementations/redis-serde/redis-serde.d.ts +13 -0
- package/dist/types/serde/implementations/sql-serde/_module.d.ts +1 -0
- package/dist/types/serde/implementations/sql-serde/sql-serde.d.ts +13 -0
- package/dist/types/serde/implementations/super-json-serde/_module.d.ts +1 -0
- package/dist/types/serde/implementations/super-json-serde/super-json-serde.d.ts +25 -0
- package/dist/types/utilities/functions.d.ts +1 -1
- package/dist/types/utilities/time-span/time-span.d.ts +11 -2
- package/package.json +3 -9
- package/dist/cjs/cache/implementations/derivables/base-cache.js +0 -270
- package/dist/cjs/cache/implementations/derivables/base-cache.js.map +0 -1
- package/dist/cjs/event-bus/implementations/adapters/redis-event-bus-adapter/_module.js.map +0 -1
- package/dist/cjs/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js +0 -44
- package/dist/cjs/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js.map +0 -1
- package/dist/cjs/event-bus/implementations/derivables/base-event-bus.js +0 -47
- package/dist/cjs/event-bus/implementations/derivables/base-event-bus.js.map +0 -1
- package/dist/cjs/event-bus/implementations/derivables/with-namespace-event-bus-adapter.js +0 -42
- package/dist/cjs/event-bus/implementations/derivables/with-namespace-event-bus-adapter.js.map +0 -1
- package/dist/cjs/serializer/contracts/_module.js.map +0 -1
- package/dist/cjs/serializer/contracts/serializer.contract.js.map +0 -1
- package/dist/cjs/serializer/contracts/serializer.errors.js.map +0 -1
- package/dist/cjs/serializer/implementations/_module.js +0 -22
- package/dist/cjs/serializer/implementations/_module.js.map +0 -1
- package/dist/cjs/serializer/implementations/_shared/test-utilities/_module.js.map +0 -1
- package/dist/cjs/serializer/implementations/_shared/test-utilities/serializer.test-suite.js.map +0 -1
- package/dist/cjs/serializer/implementations/mongodb-serializer/_module.js.map +0 -1
- package/dist/cjs/serializer/implementations/mongodb-serializer/mongodb-serializer.js +0 -36
- package/dist/cjs/serializer/implementations/mongodb-serializer/mongodb-serializer.js.map +0 -1
- package/dist/cjs/serializer/implementations/redis-serializer/_module.js.map +0 -1
- package/dist/cjs/serializer/implementations/redis-serializer/redis-serializer.js +0 -37
- package/dist/cjs/serializer/implementations/redis-serializer/redis-serializer.js.map +0 -1
- package/dist/cjs/serializer/implementations/sql-serializer/_module.js.map +0 -1
- package/dist/cjs/serializer/implementations/sql-serializer/sql-serializer.js +0 -37
- package/dist/cjs/serializer/implementations/sql-serializer/sql-serializer.js.map +0 -1
- package/dist/cjs/serializer/implementations/super-json-serializer/_module.js +0 -18
- package/dist/cjs/serializer/implementations/super-json-serializer/_module.js.map +0 -1
- package/dist/cjs/serializer/implementations/super-json-serializer/super-json-serializer.js.map +0 -1
- package/dist/esm/cache/implementations/derivables/base-cache.js +0 -266
- package/dist/esm/cache/implementations/derivables/base-cache.js.map +0 -1
- package/dist/esm/event-bus/implementations/adapters/redis-event-bus-adapter/_module.js.map +0 -1
- package/dist/esm/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js +0 -40
- package/dist/esm/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.js.map +0 -1
- package/dist/esm/event-bus/implementations/derivables/base-event-bus.js +0 -43
- package/dist/esm/event-bus/implementations/derivables/base-event-bus.js.map +0 -1
- package/dist/esm/event-bus/implementations/derivables/with-namespace-event-bus-adapter.js +0 -38
- package/dist/esm/event-bus/implementations/derivables/with-namespace-event-bus-adapter.js.map +0 -1
- package/dist/esm/serializer/contracts/_module.js +0 -3
- package/dist/esm/serializer/contracts/_module.js.map +0 -1
- package/dist/esm/serializer/contracts/serializer.contract.js +0 -1
- package/dist/esm/serializer/contracts/serializer.contract.js.map +0 -1
- package/dist/esm/serializer/contracts/serializer.errors.js.map +0 -1
- package/dist/esm/serializer/implementations/_module.js +0 -6
- package/dist/esm/serializer/implementations/_module.js.map +0 -1
- package/dist/esm/serializer/implementations/_shared/test-utilities/_module.js +0 -2
- package/dist/esm/serializer/implementations/_shared/test-utilities/_module.js.map +0 -1
- package/dist/esm/serializer/implementations/_shared/test-utilities/serializer.test-suite.js.map +0 -1
- package/dist/esm/serializer/implementations/mongodb-serializer/_module.js +0 -2
- package/dist/esm/serializer/implementations/mongodb-serializer/_module.js.map +0 -1
- package/dist/esm/serializer/implementations/mongodb-serializer/mongodb-serializer.js.map +0 -1
- package/dist/esm/serializer/implementations/redis-serializer/_module.js +0 -2
- package/dist/esm/serializer/implementations/redis-serializer/_module.js.map +0 -1
- package/dist/esm/serializer/implementations/redis-serializer/redis-serializer.js.map +0 -1
- package/dist/esm/serializer/implementations/sql-serializer/_module.js +0 -2
- package/dist/esm/serializer/implementations/sql-serializer/_module.js.map +0 -1
- package/dist/esm/serializer/implementations/sql-serializer/sql-serializer.js.map +0 -1
- package/dist/esm/serializer/implementations/super-json-serializer/_module.js +0 -2
- package/dist/esm/serializer/implementations/super-json-serializer/_module.js.map +0 -1
- package/dist/esm/serializer/implementations/super-json-serializer/super-json-serializer.js.map +0 -1
- package/dist/types/cache/implementations/derivables/base-cache.d.ts +0 -58
- package/dist/types/event-bus/implementations/adapters/redis-event-bus-adapter/redis-event-bus-adapter.d.ts +0 -43
- package/dist/types/event-bus/implementations/derivables/base-event-bus.d.ts +0 -23
- package/dist/types/event-bus/implementations/derivables/with-namespace-event-bus-adapter.d.ts +0 -16
- package/dist/types/serializer/contracts/_module.d.ts +0 -2
- package/dist/types/serializer/contracts/serializer.contract.d.ts +0 -16
- package/dist/types/serializer/implementations/_module.d.ts +0 -5
- package/dist/types/serializer/implementations/_shared/test-utilities/_module.d.ts +0 -1
- package/dist/types/serializer/implementations/_shared/test-utilities/serializer.test-suite.d.ts +0 -18
- package/dist/types/serializer/implementations/mongodb-serializer/_module.d.ts +0 -1
- package/dist/types/serializer/implementations/mongodb-serializer/mongodb-serializer.d.ts +0 -13
- package/dist/types/serializer/implementations/redis-serializer/_module.d.ts +0 -1
- package/dist/types/serializer/implementations/redis-serializer/redis-serializer.d.ts +0 -13
- package/dist/types/serializer/implementations/sql-serializer/_module.d.ts +0 -1
- package/dist/types/serializer/implementations/sql-serializer/sql-serializer.d.ts +0 -13
- package/dist/types/serializer/implementations/super-json-serializer/_module.d.ts +0 -1
- package/dist/types/serializer/implementations/super-json-serializer/super-json-serializer.d.ts +0 -37
- /package/dist/cjs/event-bus/implementations/adapters/{redis-event-bus-adapter → redis-pub-sub-event-bus-adapter}/_module.js +0 -0
- /package/dist/esm/event-bus/implementations/adapters/{redis-event-bus-adapter → redis-pub-sub-event-bus-adapter}/_module.js +0 -0
- /package/dist/types/event-bus/implementations/adapters/{redis-event-bus-adapter → redis-pub-sub-event-bus-adapter}/_module.d.ts +0 -0
package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts
CHANGED
|
@@ -2,51 +2,59 @@
|
|
|
2
2
|
* @module Cache
|
|
3
3
|
*/
|
|
4
4
|
import { type ICacheAdapter } from "../../../../cache/contracts/cache-adapter.contract";
|
|
5
|
-
import type {
|
|
6
|
-
import type { TimeSpan, IInitizable, IDeinitizable } from "../../../../utilities/_module";
|
|
5
|
+
import type { ISerde } from "../../../../serde/contracts/_module";
|
|
6
|
+
import type { TimeSpan, IInitizable, IDeinitizable, OneOrMore } from "../../../../utilities/_module";
|
|
7
7
|
import { type Database } from "better-sqlite3";
|
|
8
8
|
/**
|
|
9
9
|
* @group Adapters
|
|
10
10
|
*/
|
|
11
11
|
export type SqliteStorageAdapterSettings = {
|
|
12
12
|
tableName?: string;
|
|
13
|
-
|
|
13
|
+
serde: ISerde<string>;
|
|
14
14
|
enableTransactions?: boolean;
|
|
15
15
|
expiredKeysRemovalInterval?: TimeSpan;
|
|
16
16
|
shouldRemoveExpiredKeys?: boolean;
|
|
17
|
+
rootGroup: OneOrMore<string>;
|
|
17
18
|
};
|
|
18
19
|
/**
|
|
19
|
-
* To utilize the <i>SqliteCacheAdapter</i>, you must install the <i>"better-sqlite3"</i> package and supply a <i>{@link
|
|
20
|
+
* To utilize the <i>SqliteCacheAdapter</i>, you must install the <i>"better-sqlite3"</i> package and supply a <i>{@link ISerde | string serde}</i>, such as <i>{@link SuperJsonSerde}</i>.
|
|
20
21
|
* @group Adapters
|
|
21
22
|
* @example
|
|
22
23
|
* ```ts
|
|
23
|
-
* import { SqliteCacheAdapter,
|
|
24
|
+
* import { SqliteCacheAdapter, SuperJsonSerde } from "@daiso-tech/core";
|
|
24
25
|
* import Sqlite from "better-sqlite3";
|
|
25
26
|
*
|
|
26
27
|
* const client = new Sqlite("local.db");
|
|
27
|
-
* const
|
|
28
|
+
* const serde = new SuperJsonSerde();
|
|
28
29
|
* const cacheAdapter = new SqliteCacheAdapter(client, {
|
|
29
|
-
*
|
|
30
|
+
* serde,
|
|
31
|
+
* rootGroup: "@global"
|
|
30
32
|
* });
|
|
33
|
+
*
|
|
34
|
+
* (async () => {
|
|
31
35
|
* // You only need to call it once before using the adapter.
|
|
32
36
|
* await cacheAdapter.init();
|
|
33
37
|
* await cacheAdapter.add("a", 1);
|
|
34
38
|
*
|
|
35
39
|
* // Will remove the cache
|
|
36
40
|
* await cacheAdapter.deInit();
|
|
41
|
+
* })();
|
|
37
42
|
* ```
|
|
38
43
|
*/
|
|
39
44
|
export declare class SqliteCacheAdapter<TType> implements ICacheAdapter<TType>, IInitizable, IDeinitizable {
|
|
40
45
|
private readonly cacheAdapter;
|
|
41
46
|
constructor(database: Database, settings: SqliteStorageAdapterSettings);
|
|
47
|
+
getGroup(): string;
|
|
48
|
+
withGroup(group: OneOrMore<string>): ICacheAdapter<TType>;
|
|
42
49
|
removeExpiredKeys(): Promise<void>;
|
|
43
50
|
deInit(): Promise<void>;
|
|
44
51
|
init(): Promise<void>;
|
|
52
|
+
exists(key: string): Promise<boolean>;
|
|
45
53
|
get(key: string): Promise<TType | null>;
|
|
46
54
|
add(key: string, value: TType, ttl: TimeSpan | null): Promise<boolean>;
|
|
47
55
|
update(key: string, value: TType): Promise<boolean>;
|
|
48
56
|
put(key: string, value: TType, ttl: TimeSpan | null): Promise<boolean>;
|
|
49
57
|
remove(key: string): Promise<boolean>;
|
|
50
58
|
increment(key: string, value: number): Promise<boolean>;
|
|
51
|
-
clear(
|
|
59
|
+
clear(): Promise<void>;
|
|
52
60
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Cache
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
5
|
-
import type { ICacheFactory,
|
|
4
|
+
import type { IGroupableEventBus } from "../../../event-bus/contracts/_module";
|
|
5
|
+
import type { ICacheFactory, IGroupableCache, ICacheAdapter } from "../../../cache/contracts/_module";
|
|
6
6
|
import type { TimeSpan } from "../../../utilities/_module";
|
|
7
7
|
/**
|
|
8
8
|
* @group Derivables
|
|
@@ -19,13 +19,9 @@ export type CacheFactorySettings<TDrivers extends string = string> = {
|
|
|
19
19
|
*/
|
|
20
20
|
defaultTtl?: TimeSpan;
|
|
21
21
|
/**
|
|
22
|
-
* In order to listen to events of <i>{@link Cache}</i> class you must pass in <i>{@link
|
|
22
|
+
* In order to listen to events of <i>{@link Cache}</i> class you must pass in <i>{@link IGroupableEventBus}</i>.
|
|
23
23
|
*/
|
|
24
|
-
eventBus?:
|
|
25
|
-
/**
|
|
26
|
-
* You can prefix all keys with a given <i>rootNamespace</i>.
|
|
27
|
-
*/
|
|
28
|
-
rootNamespace?: string;
|
|
24
|
+
eventBus?: IGroupableEventBus<any>;
|
|
29
25
|
};
|
|
30
26
|
/**
|
|
31
27
|
* @group Derivables
|
|
@@ -40,17 +36,15 @@ export type CacheFactorySettings<TDrivers extends string = string> = {
|
|
|
40
36
|
* redis: new RedisCacheAdapter(new Redis()),
|
|
41
37
|
* },
|
|
42
38
|
* defaultDriver: "memory",
|
|
43
|
-
* rootNamespace: "@events"
|
|
44
39
|
* });
|
|
45
40
|
* ```
|
|
46
41
|
*/
|
|
47
42
|
export declare class CacheFactory<TDrivers extends string = string, TType = unknown> implements ICacheFactory<TDrivers, TType> {
|
|
48
|
-
private readonly rootNamespace?;
|
|
49
43
|
private readonly drivers;
|
|
50
44
|
private readonly defaultDriver?;
|
|
51
45
|
private readonly eventBus?;
|
|
52
46
|
private defaultTtl;
|
|
53
47
|
constructor(settings: CacheFactorySettings<TDrivers>);
|
|
54
|
-
use(driverName?: TDrivers | undefined):
|
|
48
|
+
use(driverName?: TDrivers | undefined): IGroupableCache<TType>;
|
|
55
49
|
withType<TOutput extends TType = TType>(): ICacheFactory<TDrivers, TOutput>;
|
|
56
50
|
}
|
|
@@ -1,51 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Cache
|
|
3
3
|
*/
|
|
4
|
-
import type { CacheEvents } from "../../../cache/contracts/_module";
|
|
4
|
+
import type { CacheEvents, WithTtlValue } from "../../../cache/contracts/_module";
|
|
5
5
|
import { type ICache, type ICacheAdapter } from "../../../cache/contracts/_module";
|
|
6
|
-
import { type
|
|
7
|
-
import type { OneOrMore } from "../../../utilities/_module";
|
|
6
|
+
import { type IGroupableCache } from "../../../cache/contracts/_module";
|
|
7
|
+
import type { AsyncLazyable, GetOrAddValue, OneOrMore } from "../../../utilities/_module";
|
|
8
8
|
import type { TimeSpan } from "../../../utilities/_module";
|
|
9
9
|
import type { LazyPromiseSettings } from "../../../async/_module";
|
|
10
|
-
import
|
|
11
|
-
import type {
|
|
12
|
-
import { BaseCache } from "../../../cache/implementations/derivables/base-cache";
|
|
10
|
+
import { LazyPromise } from "../../../async/_module";
|
|
11
|
+
import type { IGroupableEventBus, Listener, SelectEvent, Unsubscribe } from "../../../event-bus/contracts/_module";
|
|
13
12
|
/**
|
|
14
13
|
* @group Derivables
|
|
15
14
|
*/
|
|
16
15
|
export type CacheSettings<TType> = {
|
|
17
16
|
/**
|
|
18
|
-
*
|
|
19
|
-
* This useful if you want to add multitenancy but still use the same database.
|
|
20
|
-
* @default {""}
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* import { Cache, MemoryCacheAdapter } from "@daiso-tech/core";
|
|
24
|
-
*
|
|
25
|
-
* const memoryCacheAdapter = new MemoryCacheAdapter();
|
|
26
|
-
* const cacheA = new Cache(memoryCacheAdapter, {
|
|
27
|
-
* rootNamespace: "@a"
|
|
28
|
-
* });
|
|
29
|
-
* const cacheB = new Cache(memoryCacheAdapter, {
|
|
30
|
-
* rootNamespace: "@b"
|
|
31
|
-
* });
|
|
32
|
-
*
|
|
33
|
-
* (async () => {
|
|
34
|
-
* await cacheA.add("a", 1);
|
|
35
|
-
*
|
|
36
|
-
* // Will be "a"
|
|
37
|
-
* console.log(await cacheA.get("a"));
|
|
38
|
-
*
|
|
39
|
-
* // Will be "null"
|
|
40
|
-
* console.log(await cacheB.get("a"));
|
|
41
|
-
* })();
|
|
42
|
-
* ```
|
|
17
|
+
* In order to listen to events of <i>{@link Cache}</i> class you must pass in <i>{@link IGroupableEventBus}</i>.
|
|
43
18
|
*/
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* In order to listen to events of <i>{@link Cache}</i> class you must pass in <i>{@link INamespacedEventBus}</i>.
|
|
47
|
-
*/
|
|
48
|
-
eventBus?: INamespacedEventBus<CacheEvents<TType>>;
|
|
19
|
+
eventBus?: IGroupableEventBus<CacheEvents<TType>>;
|
|
49
20
|
/**
|
|
50
21
|
* You can decide the default ttl value. If null is passed then no ttl will be used by default.
|
|
51
22
|
*/
|
|
@@ -62,14 +33,14 @@ export type CacheSettings<TType> = {
|
|
|
62
33
|
* const cache = new Cache(new MemoryCacheAdapter());
|
|
63
34
|
* ```
|
|
64
35
|
*/
|
|
65
|
-
export declare class Cache<TType = unknown>
|
|
66
|
-
private readonly
|
|
67
|
-
private readonly namespacedEventBus;
|
|
36
|
+
export declare class Cache<TType = unknown> implements IGroupableCache<TType> {
|
|
37
|
+
private readonly groupdEventBus;
|
|
68
38
|
private readonly eventBus;
|
|
69
39
|
private readonly cacheAdapter;
|
|
70
|
-
private readonly eventAttributes;
|
|
71
40
|
private readonly defaultTtl;
|
|
41
|
+
private readonly lazyPromiseSettings?;
|
|
72
42
|
constructor(cacheAdapter: ICacheAdapter<any>, settings?: CacheSettings<TType>);
|
|
43
|
+
private createLayPromise;
|
|
73
44
|
private createKeyFoundEvent;
|
|
74
45
|
private createKeyNotFoundEvent;
|
|
75
46
|
private createKeyAddedEvent;
|
|
@@ -78,9 +49,8 @@ export declare class Cache<TType = unknown> extends BaseCache<TType> implements
|
|
|
78
49
|
private createKeysClearedEvent;
|
|
79
50
|
private createKeyIncrementedEvent;
|
|
80
51
|
private createKeyDecrementedEvent;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
getNamespace(): string;
|
|
52
|
+
withGroup(group: OneOrMore<string>): ICache<TType>;
|
|
53
|
+
getGroup(): string;
|
|
84
54
|
get(key: string): LazyPromise<TType | null>;
|
|
85
55
|
add(key: string, value: TType, ttl?: TimeSpan | null): LazyPromise<boolean>;
|
|
86
56
|
update(key: string, value: TType): LazyPromise<boolean>;
|
|
@@ -88,4 +58,26 @@ export declare class Cache<TType = unknown> extends BaseCache<TType> implements
|
|
|
88
58
|
remove(key: string): LazyPromise<boolean>;
|
|
89
59
|
increment(key: string, value?: Extract<TType, number>): LazyPromise<boolean>;
|
|
90
60
|
clear(): LazyPromise<void>;
|
|
61
|
+
addListener<TEventName extends keyof CacheEvents>(eventName: TEventName, listener: Listener<SelectEvent<CacheEvents, TEventName>>): LazyPromise<void>;
|
|
62
|
+
addListenerMany<TEventName extends keyof CacheEvents>(eventNames: TEventName[], listener: Listener<SelectEvent<CacheEvents, TEventName>>): LazyPromise<void>;
|
|
63
|
+
removeListener<TEventName extends keyof CacheEvents>(eventName: TEventName, listener: Listener<SelectEvent<CacheEvents, TEventName>>): LazyPromise<void>;
|
|
64
|
+
removeListenerMany<TEventName extends keyof CacheEvents>(eventNames: TEventName[], listener: Listener<SelectEvent<CacheEvents, TEventName>>): LazyPromise<void>;
|
|
65
|
+
listenOnce<TEventName extends keyof CacheEvents>(eventName: TEventName, listener: Listener<SelectEvent<CacheEvents, TEventName>>): LazyPromise<void>;
|
|
66
|
+
subscribe<TEventName extends keyof CacheEvents>(eventName: TEventName, listener: Listener<SelectEvent<CacheEvents, TEventName>>): LazyPromise<Unsubscribe>;
|
|
67
|
+
subscribeMany<TEventName extends keyof CacheEvents>(eventNames: TEventName[], listener: Listener<SelectEvent<CacheEvents, TEventName>>): LazyPromise<Unsubscribe>;
|
|
68
|
+
exists(key: string): LazyPromise<boolean>;
|
|
69
|
+
existsMany<TKeys extends string>(keys: TKeys[]): LazyPromise<Record<TKeys, boolean>>;
|
|
70
|
+
missing(key: string): LazyPromise<boolean>;
|
|
71
|
+
missingMany<TKeys extends string>(keys: TKeys[]): LazyPromise<Record<TKeys, boolean>>;
|
|
72
|
+
getMany<TKeys extends string>(keys: TKeys[]): LazyPromise<Record<TKeys, TType | null>>;
|
|
73
|
+
getOr(key: string, defaultValue: AsyncLazyable<TType>): LazyPromise<TType>;
|
|
74
|
+
getOrMany<TKeys extends string>(keysWithDefaults: Record<TKeys, AsyncLazyable<TType>>): LazyPromise<Record<TKeys, TType>>;
|
|
75
|
+
getOrFail(key: string): LazyPromise<TType>;
|
|
76
|
+
addMany<TKeys extends string>(values: Record<TKeys, WithTtlValue<TType>>): LazyPromise<Record<TKeys, boolean>>;
|
|
77
|
+
updateMany<TKeys extends string>(values: Record<TKeys, TType>): LazyPromise<Record<TKeys, boolean>>;
|
|
78
|
+
putMany<TKeys extends string>(values: Record<TKeys, WithTtlValue<TType>>): LazyPromise<Record<TKeys, boolean>>;
|
|
79
|
+
removeMany<TKeys extends string>(keys: TKeys[]): LazyPromise<Record<TKeys, boolean>>;
|
|
80
|
+
getAndRemove(key: string): LazyPromise<TType | null>;
|
|
81
|
+
getOrAdd(key: string, valueToAdd: AsyncLazyable<GetOrAddValue<TType>>, ttl?: TimeSpan): LazyPromise<TType>;
|
|
82
|
+
decrement(key: string, value?: Extract<TType, number>): LazyPromise<boolean>;
|
|
91
83
|
}
|
|
@@ -5,9 +5,8 @@ import { type AsyncIterableValue } from "../../../../utilities/_module";
|
|
|
5
5
|
/**
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
8
|
-
export declare class AsyncMergeIterable<TInput
|
|
9
|
-
private
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
[Symbol.asyncIterator](): AsyncIterator<TInput | TExtended>;
|
|
8
|
+
export declare class AsyncMergeIterable<TInput> implements AsyncIterable<TInput> {
|
|
9
|
+
private readonly iterables;
|
|
10
|
+
constructor(iterables: AsyncIterableValue<AsyncIterableValue<TInput>>);
|
|
11
|
+
[Symbol.asyncIterator](): AsyncIterator<TInput>;
|
|
13
12
|
}
|
|
@@ -5,6 +5,7 @@ import type { EnsureMap, EnsureRecord } from "../../../collection/contracts/_mod
|
|
|
5
5
|
import { type AsyncCollapse, type AsyncPredicate, type AsyncForEach, type AsyncMap, type AsyncModifier, type AsyncTap, type AsyncTransform, type Comparator, type IAsyncCollection, type AsyncReduce, type CrossJoinResult } from "../../../collection/contracts/_module";
|
|
6
6
|
import { type AsyncIterableValue, type AsyncLazyable } from "../../../utilities/_module";
|
|
7
7
|
import type { TimeSpan } from "../../../utilities/_module";
|
|
8
|
+
import type { LazyPromiseSettings } from "../../../async/_module";
|
|
8
9
|
import { LazyPromise } from "../../../async/_module";
|
|
9
10
|
/**
|
|
10
11
|
* All methods that return <i>{@link IAsyncCollection}</i> are executed lazly.
|
|
@@ -14,13 +15,17 @@ import { LazyPromise } from "../../../async/_module";
|
|
|
14
15
|
*/
|
|
15
16
|
export declare class AsyncIterableCollection<TInput> implements IAsyncCollection<TInput> {
|
|
16
17
|
private readonly iterable;
|
|
17
|
-
private
|
|
18
|
+
private readonly settings;
|
|
19
|
+
static concat<TValue>(iterables: AsyncIterableValue<AsyncIterableValue<TValue>>): IAsyncCollection<TValue>;
|
|
20
|
+
static difference<TValue, TSelect>(iterableA: AsyncIterableValue<TValue>, iterableB: AsyncIterableValue<TValue>, selectFn?: AsyncMap<TValue, IAsyncCollection<TValue>, TSelect>): IAsyncCollection<TValue>;
|
|
21
|
+
static zip<TValueA, TValueB>(iterableA: AsyncIterableValue<TValueA>, iterableB: AsyncIterableValue<TValueB>): IAsyncCollection<[TValueA, TValueB]>;
|
|
18
22
|
private static DEFAULT_CHUNK_SIZE;
|
|
19
23
|
private static makeCollection;
|
|
20
24
|
/**
|
|
21
25
|
* The <i>constructor</i> takes an <i>{@link Iterable}</i> or <i>{@link AsyncIterable}</i>.
|
|
22
26
|
*/
|
|
23
|
-
constructor(iterable?: AsyncIterableValue<TInput
|
|
27
|
+
constructor(iterable?: AsyncIterableValue<TInput>, settings?: LazyPromiseSettings);
|
|
28
|
+
private createLazyPromise;
|
|
24
29
|
[Symbol.asyncIterator](): AsyncIterator<TInput>;
|
|
25
30
|
toIterator(): AsyncIterator<TInput, void>;
|
|
26
31
|
entries(): IAsyncCollection<[number, TInput]>;
|
package/dist/types/collection/implementations/iterable-collection/_shared/merge-iterable.d.ts
CHANGED
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
7
|
-
export declare class MergeIterable<TInput
|
|
8
|
-
private
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
[Symbol.iterator](): Iterator<TInput | TExtended>;
|
|
7
|
+
export declare class MergeIterable<TInput> implements Iterable<TInput> {
|
|
8
|
+
private iterables;
|
|
9
|
+
constructor(iterables: Iterable<Iterable<TInput>>);
|
|
10
|
+
[Symbol.iterator](): Iterator<TInput>;
|
|
12
11
|
}
|
|
@@ -11,6 +11,9 @@ import { type Lazyable } from "../../../utilities/_module";
|
|
|
11
11
|
*/
|
|
12
12
|
export declare class IterableCollection<TInput> implements ICollection<TInput> {
|
|
13
13
|
private readonly iterable;
|
|
14
|
+
static concat<TValue>(iterables: Iterable<Iterable<TValue>>): ICollection<TValue>;
|
|
15
|
+
static difference<TValue, TSelect>(iterableA: Iterable<TValue>, iterableB: Iterable<TValue>, selectFn?: Map<TValue, ICollection<TValue>, TSelect>): ICollection<TValue>;
|
|
16
|
+
static zip<TValueA, TValueB>(iterableA: Iterable<TValueA>, iterableB: Iterable<TValueB>): ICollection<[TValueA, TValueB]>;
|
|
14
17
|
private static DEFAULT_CHUNK_SIZE;
|
|
15
18
|
private static makeCollection;
|
|
16
19
|
/**
|
|
@@ -9,6 +9,9 @@ import { type Lazyable } from "../../../utilities/_module";
|
|
|
9
9
|
* @group Adapters
|
|
10
10
|
*/
|
|
11
11
|
export declare class ListCollection<TInput> implements ICollection<TInput> {
|
|
12
|
+
static concat<TValue>(iterables: Iterable<Iterable<TValue>>): ICollection<TValue>;
|
|
13
|
+
static difference<TValue, TSelect>(iterableA: Iterable<TValue>, iterableB: Iterable<TValue>, selectFn?: Map<TValue, ICollection<TValue>, TSelect>): ICollection<TValue>;
|
|
14
|
+
static zip<TValueA, TValueB>(iterableA: Iterable<TValueA>, iterableB: Iterable<TValueB>): ICollection<[TValueA, TValueB]>;
|
|
12
15
|
private array;
|
|
13
16
|
/**
|
|
14
17
|
* The <i>constructor</i> takes an <i>{@link Iterable}</i>.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @module EventBus
|
|
3
3
|
*/
|
|
4
4
|
import type { Listener } from "../../event-bus/contracts/_shared";
|
|
5
|
+
import type { OneOrMore } from "../../utilities/_module";
|
|
5
6
|
export type IBaseEvent = {
|
|
6
7
|
type: string;
|
|
7
8
|
};
|
|
@@ -12,15 +13,17 @@ export type IBaseEvent = {
|
|
|
12
13
|
*/
|
|
13
14
|
export type IEventBusAdapter = {
|
|
14
15
|
/**
|
|
15
|
-
* The <i>addListener</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>
|
|
16
|
+
* The <i>addListener</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>eventName</i>.
|
|
16
17
|
*/
|
|
17
|
-
addListener(
|
|
18
|
+
addListener(eventName: string, listener: Listener<IBaseEvent>): PromiseLike<void>;
|
|
18
19
|
/**
|
|
19
|
-
* The <i>removeListener</i> method is used for removing <i>{@link Listener | listener}</i> for certain <i>
|
|
20
|
+
* The <i>removeListener</i> method is used for removing <i>{@link Listener | listener}</i> for certain <i>eventName</i>.
|
|
20
21
|
*/
|
|
21
|
-
removeListener(
|
|
22
|
+
removeListener(eventName: string, listener: Listener<IBaseEvent>): PromiseLike<void>;
|
|
22
23
|
/**
|
|
23
24
|
* The <i>dispatch</i> method is used for dispatching one or multiple <i>events</i>.
|
|
24
25
|
*/
|
|
25
|
-
dispatch(
|
|
26
|
+
dispatch(event: IBaseEvent): PromiseLike<void>;
|
|
27
|
+
getGroup(): string;
|
|
28
|
+
withGroup(group: OneOrMore<string>): IEventBusAdapter;
|
|
26
29
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module EventBus
|
|
3
3
|
*/
|
|
4
|
-
import type { BaseEvents,
|
|
4
|
+
import type { BaseEvents, IGroupableEventBus } from "../../event-bus/contracts/event-bus.contract";
|
|
5
5
|
/**
|
|
6
|
-
* The <i>IEventBusFactory</i> contract makes it easy to configure and switch between different <i>{@link
|
|
6
|
+
* The <i>IEventBusFactory</i> contract makes it easy to configure and switch between different <i>{@link IGroupableEventBus}</i> dynamically.
|
|
7
7
|
* @group Contracts
|
|
8
8
|
*/
|
|
9
9
|
export type IEventBusFactory<TDrivers extends string = string, TEvents extends BaseEvents = BaseEvents> = {
|
|
@@ -28,7 +28,7 @@ export type IEventBusFactory<TDrivers extends string = string, TEvents extends B
|
|
|
28
28
|
* }
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
-
use(driverName?: TDrivers):
|
|
31
|
+
use(driverName?: TDrivers): IGroupableEventBus<TEvents>;
|
|
32
32
|
/**
|
|
33
33
|
* The <i>withTypes</i> method is used to set the event types of the <i>{@link IEventBus}</i>.
|
|
34
34
|
* @example
|
|
@@ -10,12 +10,24 @@ export type AllEvents<TEvents extends BaseEvents> = Values<{
|
|
|
10
10
|
type: TEventName;
|
|
11
11
|
};
|
|
12
12
|
}>;
|
|
13
|
+
/**
|
|
14
|
+
* @group Contracts
|
|
15
|
+
*/
|
|
13
16
|
export type SelectEvent<TEvents extends BaseEvents, TEventName extends keyof TEvents> = {
|
|
14
17
|
[TEventName in keyof TEvents]: TEvents[TEventName] & {
|
|
15
18
|
type: TEventName;
|
|
16
19
|
};
|
|
17
20
|
}[TEventName];
|
|
21
|
+
/**
|
|
22
|
+
* @group Contracts
|
|
23
|
+
*/
|
|
18
24
|
export type Unsubscribe = () => LazyPromise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* @group Contracts
|
|
27
|
+
*/
|
|
28
|
+
export type AddListenerSettings = {
|
|
29
|
+
signal?: AbortSignal;
|
|
30
|
+
};
|
|
19
31
|
/**
|
|
20
32
|
* The <i>IListenable</i> contract defines a way listening to events independent of underlying technology
|
|
21
33
|
* @group Contracts
|
|
@@ -45,6 +57,11 @@ export type IListenable<TEvents extends BaseEvents = BaseEvents> = {
|
|
|
45
57
|
* @throws {RemoveListenerEventBusError} {@link RemoveListenerEventBusError}
|
|
46
58
|
*/
|
|
47
59
|
removeListenerMany<TEventName extends keyof TEvents>(eventNames: TEventName[], listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* The <i>listenOnce</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i> that is trigged only once.
|
|
62
|
+
* @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
|
|
63
|
+
*/
|
|
64
|
+
listenOnce<TEventName extends keyof TEvents>(eventName: TEventName, listener: Listener<SelectEvent<TEvents, TEventName>>): LazyPromise<void>;
|
|
48
65
|
/**
|
|
49
66
|
* The <i>subscribe</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i>.
|
|
50
67
|
* A listener can only be added once for a specific event. Adding the same listener multiple times will have no effect and nothing will occur.
|
|
@@ -62,11 +79,17 @@ export type IListenable<TEvents extends BaseEvents = BaseEvents> = {
|
|
|
62
79
|
*/
|
|
63
80
|
export type IDispatcher<TEvents extends BaseEvents = BaseEvents> = {
|
|
64
81
|
/**
|
|
65
|
-
* The <i>dispatch</i> method is used for dispatching
|
|
82
|
+
* The <i>dispatch</i> method is used for dispatching a <i>event</i>.
|
|
83
|
+
|
|
84
|
+
* @throws {DispatchEventBusError} {@link DispatchEventBusError}
|
|
85
|
+
*/
|
|
86
|
+
dispatch(event: AllEvents<TEvents>): LazyPromise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* The <i>dispatchMany</i> method is used for dispatching multiple <i>event</i>.
|
|
66
89
|
|
|
67
90
|
* @throws {DispatchEventBusError} {@link DispatchEventBusError}
|
|
68
91
|
*/
|
|
69
|
-
|
|
92
|
+
dispatchMany(events: AllEvents<TEvents>[]): LazyPromise<void>;
|
|
70
93
|
};
|
|
71
94
|
/**
|
|
72
95
|
* The <i>IEventBus</i> contract defines a way for dispatching and listening to events independent of underlying technology.
|
|
@@ -75,45 +98,45 @@ export type IDispatcher<TEvents extends BaseEvents = BaseEvents> = {
|
|
|
75
98
|
*/
|
|
76
99
|
export type IEventBus<TEvents extends BaseEvents = BaseEvents> = IListenable<TEvents> & IDispatcher<TEvents> & {
|
|
77
100
|
/**
|
|
78
|
-
* The <i>
|
|
101
|
+
* The <i>getGroup</i> method returns the complete group.
|
|
79
102
|
* @example
|
|
80
103
|
* ```ts
|
|
81
104
|
* import { type IEventBus } from "@daiso-tech/core";
|
|
82
105
|
*
|
|
83
106
|
* async function main(eventBus: IEventBus): Promise<void> {
|
|
84
107
|
* // Will be "@root"
|
|
85
|
-
* console.log(eventBus.
|
|
108
|
+
* console.log(eventBus.getGroup())
|
|
86
109
|
*
|
|
87
|
-
* const eventBusA = eventBus.
|
|
110
|
+
* const eventBusA = eventBus.withGroup("a");
|
|
88
111
|
*
|
|
89
112
|
* // Will be "@root/a"
|
|
90
|
-
* console.log(eventBusA.
|
|
113
|
+
* console.log(eventBusA.getGroup())
|
|
91
114
|
* }
|
|
92
115
|
* ```
|
|
93
116
|
*/
|
|
94
|
-
|
|
117
|
+
getGroup(): string;
|
|
95
118
|
};
|
|
96
119
|
/**
|
|
97
|
-
* The <i>
|
|
120
|
+
* The <i>IGroupableEventBus</i> contract defines a way for dispatching and listening to events independent of underlying technology.
|
|
98
121
|
* It commes with one extra method which is useful for multitennat applications compared to <i>IEventBus</i>.
|
|
99
122
|
* @group Contracts
|
|
100
123
|
*/
|
|
101
|
-
export type
|
|
124
|
+
export type IGroupableEventBus<TEvents extends BaseEvents = BaseEvents> = IEventBus<TEvents> & {
|
|
102
125
|
/**
|
|
103
|
-
* The <i>
|
|
126
|
+
* The <i>withGroup</i> method returns new instance of <i>{@link IEventBus}</i> where all the events names will be prefixed with a given <i>group</i>.
|
|
104
127
|
* This useful for multitennat applications.
|
|
105
128
|
* @example
|
|
106
129
|
* ```ts
|
|
107
130
|
* import { type IEventBus } from "@daiso-tech/core";
|
|
108
131
|
*
|
|
109
132
|
* async function main(eventBus: IEventBus): Promise<void> {
|
|
110
|
-
* const eventBusA = eventBus.
|
|
133
|
+
* const eventBusA = eventBus.withGroup("a");
|
|
111
134
|
* await eventBusA.subscribe("add", (event) => {
|
|
112
135
|
* // This will be logged
|
|
113
136
|
* console.log("eventBusA:", event);
|
|
114
137
|
* });
|
|
115
138
|
*
|
|
116
|
-
* const eventBusB = eventBus.
|
|
139
|
+
* const eventBusB = eventBus.withGroup("b");
|
|
117
140
|
* await eventBusB.subscribe("add", (event) => {
|
|
118
141
|
* // This will never be logged
|
|
119
142
|
* console.log("eventBusB:", event);
|
|
@@ -127,5 +150,5 @@ export type INamespacedEventBus<TEvents extends BaseEvents = BaseEvents> = IEven
|
|
|
127
150
|
* }
|
|
128
151
|
* ```
|
|
129
152
|
*/
|
|
130
|
-
|
|
153
|
+
withGroup(group: OneOrMore<string>): IEventBus<TEvents>;
|
|
131
154
|
};
|
|
@@ -12,7 +12,8 @@ export type EventBusAdapterTestSuiteSettings = {
|
|
|
12
12
|
test: TestAPI;
|
|
13
13
|
describe: SuiteAPI;
|
|
14
14
|
beforeEach: typeof beforeEach;
|
|
15
|
-
|
|
15
|
+
createAdapterA: () => Promisable<IEventBusAdapter>;
|
|
16
|
+
createAdapterB: () => Promisable<IEventBusAdapter>;
|
|
16
17
|
};
|
|
17
18
|
/**
|
|
18
19
|
* The <i>eventBusAdapterTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IEventBusAdapter}</i> with vitest.
|
|
@@ -23,14 +24,14 @@ export type EventBusAdapterTestSuiteSettings = {
|
|
|
23
24
|
* import type { StartedRedisContainer } from "@testcontainers/redis";
|
|
24
25
|
* import { RedisContainer } from "@testcontainers/redis";
|
|
25
26
|
* import Redis from "ioredis";
|
|
26
|
-
* import {
|
|
27
|
+
* import { SuperJsonSerde, TimeSpan, RedisPubSubEventBusAdapter, eventBusAdapterTestSuite } from "@daiso-tech/core";
|
|
27
28
|
*
|
|
28
29
|
* const timeout = TimeSpan.fromMinutes(2);
|
|
29
|
-
* describe("class:
|
|
30
|
+
* describe("class: RedisPubSubEventBusAdapter", () => {
|
|
30
31
|
* let dispatcherClient: Redis;
|
|
31
32
|
* let listenerClient: Redis;
|
|
32
33
|
* let startedContainer: StartedRedisContainer;
|
|
33
|
-
* const
|
|
34
|
+
* const serde = new SuperJsonSerde();
|
|
34
35
|
* beforeEach(async () => {
|
|
35
36
|
* startedContainer = await new RedisContainer().start();
|
|
36
37
|
* dispatcherClient = new Redis(startedContainer.getConnectionUrl());
|
|
@@ -42,11 +43,19 @@ export type EventBusAdapterTestSuiteSettings = {
|
|
|
42
43
|
* await startedContainer.stop();
|
|
43
44
|
* }, timeout.toMilliseconds());
|
|
44
45
|
* eventBusAdapterTestSuite({
|
|
45
|
-
*
|
|
46
|
-
* new
|
|
46
|
+
* createAdapterA: () =>
|
|
47
|
+
* new RedisPubSubEventBusAdapter({
|
|
47
48
|
* dispatcherClient,
|
|
48
49
|
* listenerClient,
|
|
49
|
-
*
|
|
50
|
+
* serde,
|
|
51
|
+
* rootGroup: "@global"
|
|
52
|
+
* }),
|
|
53
|
+
* createAdapterB: () =>
|
|
54
|
+
* new RedisPubSubEventBusAdapter({
|
|
55
|
+
* dispatcherClient,
|
|
56
|
+
* listenerClient,
|
|
57
|
+
* serde,
|
|
58
|
+
* rootGroup: "@global"
|
|
50
59
|
* }),
|
|
51
60
|
* test,
|
|
52
61
|
* beforeEach,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module EventBus
|
|
3
3
|
*/
|
|
4
4
|
import { type TestAPI, type SuiteAPI, type ExpectStatic, type beforeEach } from "vitest";
|
|
5
|
-
import type
|
|
5
|
+
import { type IEventBus } from "../../../event-bus/contracts/_module";
|
|
6
6
|
import { type Promisable } from "../../../utilities/_module";
|
|
7
7
|
/**
|
|
8
8
|
* @group Utilities
|
|
@@ -24,14 +24,14 @@ export type EventBusTestSuiteSettings = {
|
|
|
24
24
|
* import type { StartedRedisContainer } from "@testcontainers/redis";
|
|
25
25
|
* import { RedisContainer } from "@testcontainers/redis";
|
|
26
26
|
* import Redis from "ioredis";
|
|
27
|
-
* import {
|
|
27
|
+
* import { SuperJsonSerde, TimeSpan, RedisPubSubEventBusAdapter, eventBusTestSuite } from "@daiso-tech/core";
|
|
28
28
|
*
|
|
29
29
|
* const timeout = TimeSpan.fromMinutes(2);
|
|
30
30
|
* describe("class: EventBus", () => {
|
|
31
31
|
* let dispatcherClient: Redis;
|
|
32
32
|
* let listenerClient: Redis;
|
|
33
33
|
* let startedContainer: StartedRedisContainer;
|
|
34
|
-
* const
|
|
34
|
+
* const serde = new SuperJsonSerde();
|
|
35
35
|
* beforeEach(async () => {
|
|
36
36
|
* startedContainer = await new RedisContainer().start();
|
|
37
37
|
* dispatcherClient = new Redis(startedContainer.getConnectionUrl());
|
|
@@ -45,21 +45,21 @@ export type EventBusTestSuiteSettings = {
|
|
|
45
45
|
* eventBusTestSuite({
|
|
46
46
|
* createEventBusA: () =>
|
|
47
47
|
* new EventBus(
|
|
48
|
-
* new
|
|
48
|
+
* new RedisPubSubEventBusAdapter({
|
|
49
49
|
* dispatcherClient,
|
|
50
50
|
* listenerClient,
|
|
51
|
-
*
|
|
51
|
+
* serde,
|
|
52
52
|
* }),
|
|
53
|
-
* {
|
|
53
|
+
* { rootGroup: "@a" }
|
|
54
54
|
* ),
|
|
55
55
|
* createEventBusB: () =>
|
|
56
56
|
* new EventBus(
|
|
57
|
-
* new
|
|
57
|
+
* new RedisPubSubEventBusAdapter({
|
|
58
58
|
* dispatcherClient,
|
|
59
59
|
* listenerClient,
|
|
60
|
-
*
|
|
60
|
+
* serde,
|
|
61
61
|
* }),
|
|
62
|
-
* {
|
|
62
|
+
* { rootGroup: "@b" }
|
|
63
63
|
* ),
|
|
64
64
|
* test,
|
|
65
65
|
* beforeEach,
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from "../../../event-bus/implementations/adapters/memory-event-bus-adapter/_module";
|
|
2
2
|
export * from "../../../event-bus/implementations/adapters/no-op-event-bus-adapter/_module";
|
|
3
|
-
export * from "../../../event-bus/implementations/adapters/redis-event-bus-adapter/_module";
|
|
3
|
+
export * from "../../../event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module EventBus
|
|
3
3
|
*/
|
|
4
|
+
import { type OneOrMore } from "../../../../utilities/_module";
|
|
4
5
|
import type { IBaseEvent, IEventBusAdapter, Listener } from "../../../../event-bus/contracts/_module";
|
|
5
6
|
import { EventEmitter } from "node:events";
|
|
6
7
|
/**
|
|
@@ -19,13 +20,17 @@ import { EventEmitter } from "node:events";
|
|
|
19
20
|
* import { EventEmitter } from "node:events";
|
|
20
21
|
*
|
|
21
22
|
* const eventEmitter = new EventEmitter();
|
|
22
|
-
* const eventBusAdapter = new MemoryCacheAdapter(eventEmitter);
|
|
23
|
+
* const eventBusAdapter = new MemoryCacheAdapter("@global", eventEmitter);
|
|
23
24
|
* ```
|
|
24
25
|
*/
|
|
25
26
|
export declare class MemoryEventBusAdapter implements IEventBusAdapter {
|
|
26
27
|
private readonly eventEmiter;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
private readonly group;
|
|
29
|
+
constructor(defaultGroup: OneOrMore<string>, eventEmiter?: EventEmitter<[never]>);
|
|
30
|
+
getGroup(): string;
|
|
31
|
+
withGroup(group: OneOrMore<string>): IEventBusAdapter;
|
|
32
|
+
private withPrefix;
|
|
33
|
+
addListener(eventName: string, listener: Listener<IBaseEvent>): Promise<void>;
|
|
34
|
+
removeListener(eventName: string, listener: Listener<IBaseEvent>): Promise<void>;
|
|
35
|
+
dispatch(event: IBaseEvent): Promise<void>;
|
|
31
36
|
}
|