@daiso-tech/core 0.15.0 → 0.17.4
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/_module.js +1 -1
- package/dist/cjs/async/_module.js.map +1 -1
- package/dist/cjs/async/backof-policies/_module.js +1 -0
- package/dist/cjs/async/backof-policies/_module.js.map +1 -1
- package/dist/cjs/async/utilities/_module.js +3 -0
- package/dist/cjs/async/utilities/_module.js.map +1 -1
- package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js +21 -12
- package/dist/cjs/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
- package/dist/cjs/cache/contracts/cache.events.js +168 -0
- package/dist/cjs/cache/contracts/cache.events.js.map +1 -1
- package/dist/cjs/cache/implementations/_shared/_module.js +1 -0
- package/dist/cjs/cache/implementations/_shared/_module.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 +63 -20
- 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/_module.js +2 -1
- package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +56 -0
- package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +1 -0
- package/dist/cjs/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +30 -16
- 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/_module.js +1 -0
- package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +26 -0
- package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +1 -0
- package/dist/cjs/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +66 -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/_module.js +2 -1
- package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +44 -0
- package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +1 -0
- package/dist/cjs/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +78 -28
- 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/_module.js +1 -0
- package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +32 -0
- package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +1 -0
- package/dist/cjs/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +55 -23
- 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/_module.js +1 -0
- package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
- package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +56 -0
- package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +1 -0
- package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +31 -17
- package/dist/cjs/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
- package/dist/cjs/cache/implementations/derivables/_module.js +3 -2
- package/dist/cjs/cache/implementations/derivables/_module.js.map +1 -1
- package/dist/cjs/cache/implementations/derivables/cache-factory-settings.js +65 -0
- package/dist/cjs/cache/implementations/derivables/cache-factory-settings.js.map +1 -0
- package/dist/cjs/cache/implementations/derivables/cache-factory.js +29 -18
- package/dist/cjs/cache/implementations/derivables/cache-factory.js.map +1 -1
- package/dist/cjs/cache/implementations/derivables/cache-settings.js +56 -0
- package/dist/cjs/cache/implementations/derivables/cache-settings.js.map +1 -0
- package/dist/cjs/cache/implementations/derivables/cache.js +334 -79
- 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/_shared/async-retry-iterable.js +1 -1
- package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js.map +1 -1
- package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js +1 -1
- package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js.map +1 -1
- package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js +1 -1
- package/dist/cjs/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js.map +1 -1
- package/dist/cjs/collection/implementations/async-iterable-collection/async-iterable-collection.js +62 -41
- 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/contracts/_module.js +2 -2
- package/dist/cjs/event-bus/contracts/_module.js.map +1 -1
- package/dist/cjs/event-bus/contracts/_shared.js +7 -0
- package/dist/cjs/event-bus/contracts/_shared.js.map +1 -1
- package/dist/cjs/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +98 -38
- 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 +197 -125
- 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/_module.js +2 -1
- package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
- package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +26 -0
- package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +1 -0
- package/dist/cjs/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +29 -11
- 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 +9 -3
- package/dist/cjs/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js.map +1 -1
- package/dist/cjs/{serializer/implementations/_shared/test-utilities → event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter}/_module.js +2 -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-settings.js +38 -0
- package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +1 -0
- package/dist/cjs/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +56 -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/_module.js +3 -1
- package/dist/cjs/event-bus/implementations/derivables/_module.js.map +1 -1
- package/dist/cjs/event-bus/implementations/derivables/event-bus-factory-settings.js +59 -0
- package/dist/cjs/event-bus/implementations/derivables/event-bus-factory-settings.js.map +1 -0
- package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js +28 -17
- package/dist/cjs/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
- package/dist/cjs/event-bus/implementations/derivables/event-bus-settings.js +56 -0
- package/dist/cjs/event-bus/implementations/derivables/event-bus-settings.js.map +1 -0
- package/dist/cjs/event-bus/implementations/derivables/event-bus.js +106 -37
- package/dist/cjs/event-bus/implementations/derivables/event-bus.js.map +1 -1
- package/dist/cjs/serde/contracts/_module.js +23 -0
- package/dist/cjs/serde/contracts/_module.js.map +1 -0
- package/dist/cjs/serde/contracts/deserializer.contract.js +3 -0
- package/dist/cjs/serde/contracts/deserializer.contract.js.map +1 -0
- package/dist/cjs/serde/contracts/flexible-serde.contract.js +3 -0
- package/dist/cjs/serde/contracts/flexible-serde.contract.js.map +1 -0
- package/dist/cjs/serde/contracts/serde.contract.js +3 -0
- 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/serde/contracts/serializable.contract.js +3 -0
- package/dist/cjs/serde/contracts/serializable.contract.js.map +1 -0
- package/dist/cjs/serde/contracts/serializer.contract.js.map +1 -0
- package/dist/cjs/{serializer → serde}/implementations/_module.js +6 -5
- package/dist/cjs/serde/implementations/_module.js.map +1 -0
- package/dist/cjs/{serializer/contracts → serde/implementations/_shared/test-utilities}/_module.js +2 -2
- package/dist/cjs/serde/implementations/_shared/test-utilities/_module.js.map +1 -0
- package/dist/cjs/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js +53 -0
- package/dist/cjs/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js.map +1 -0
- package/dist/cjs/{serializer/implementations/_shared/test-utilities/serializer.test-suite.js → serde/implementations/_shared/test-utilities/serde.test-suite.js} +68 -93
- 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/no-op-serde}/_module.js +1 -1
- package/dist/cjs/serde/implementations/no-op-serde/_module.js.map +1 -0
- package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js +16 -0
- package/dist/cjs/serde/implementations/no-op-serde/no-op-serde.js.map +1 -0
- package/dist/cjs/{serializer/implementations/mongodb-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/{event-bus/implementations/adapters/redis-event-bus-adapter → serde/implementations/sql-serde}/_module.js +1 -1
- 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} +77 -100
- package/dist/cjs/serde/implementations/super-json-serde/super-json-serde.js.map +1 -0
- package/dist/cjs/utilities/contracts/_module.js +1 -0
- package/dist/cjs/utilities/contracts/_module.js.map +1 -1
- package/dist/cjs/utilities/contracts/buildable.contract.js +3 -0
- package/dist/cjs/utilities/contracts/buildable.contract.js.map +1 -0
- package/dist/cjs/utilities/errors.js +10 -10
- package/dist/cjs/utilities/errors.js.map +1 -1
- package/dist/cjs/utilities/functions.js +9 -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/_module.js +1 -1
- package/dist/esm/async/_module.js.map +1 -1
- package/dist/esm/async/backof-policies/_module.js +1 -0
- package/dist/esm/async/backof-policies/_module.js.map +1 -1
- package/dist/esm/async/utilities/_module.js +3 -0
- package/dist/esm/async/utilities/_module.js.map +1 -1
- package/dist/esm/async/utilities/lazy-promise/lazy-promise.js +21 -12
- package/dist/esm/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
- package/dist/esm/cache/contracts/cache.events.js +158 -0
- package/dist/esm/cache/contracts/cache.events.js.map +1 -1
- package/dist/esm/cache/implementations/_shared/_module.js +1 -0
- package/dist/esm/cache/implementations/_shared/_module.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 +64 -21
- 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/_module.js +2 -1
- package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js +52 -0
- package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.js.map +1 -0
- package/dist/esm/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +29 -15
- 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/_module.js +1 -0
- package/dist/esm/cache/implementations/adapters/memory-cache-adapter/_module.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js +22 -0
- package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.js.map +1 -0
- package/dist/esm/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js +66 -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/_module.js +2 -1
- package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/_module.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js +40 -0
- package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.js.map +1 -0
- package/dist/esm/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +78 -25
- 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/_module.js +1 -0
- package/dist/esm/cache/implementations/adapters/redis-cache-adapter/_module.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js +28 -0
- package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.js.map +1 -0
- package/dist/esm/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +55 -23
- 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/_module.js +1 -0
- package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +1 -1
- package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js +52 -0
- package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.js.map +1 -0
- package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +29 -15
- package/dist/esm/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
- package/dist/esm/cache/implementations/derivables/_module.js +3 -2
- package/dist/esm/cache/implementations/derivables/_module.js.map +1 -1
- package/dist/esm/cache/implementations/derivables/cache-factory-settings.js +61 -0
- package/dist/esm/cache/implementations/derivables/cache-factory-settings.js.map +1 -0
- package/dist/esm/cache/implementations/derivables/cache-factory.js +30 -19
- package/dist/esm/cache/implementations/derivables/cache-factory.js.map +1 -1
- package/dist/esm/cache/implementations/derivables/cache-settings.js +52 -0
- package/dist/esm/cache/implementations/derivables/cache-settings.js.map +1 -0
- package/dist/esm/cache/implementations/derivables/cache.js +333 -78
- 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/_shared/async-retry-iterable.js +1 -1
- package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.js.map +1 -1
- package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js +1 -1
- package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-abort-iterable.js.map +1 -1
- package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js +1 -1
- package/dist/esm/collection/implementations/async-iterable-collection/_shared/async-take-until-timeout-iterable.js.map +1 -1
- package/dist/esm/collection/implementations/async-iterable-collection/async-iterable-collection.js +62 -41
- 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/contracts/_module.js +2 -2
- package/dist/esm/event-bus/contracts/_module.js.map +1 -1
- package/dist/esm/event-bus/contracts/_shared.js +5 -0
- package/dist/esm/event-bus/contracts/_shared.js.map +1 -1
- package/dist/esm/event-bus/implementations/_shared/event-bus-adapter.test-suite.js +96 -36
- 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 +195 -123
- 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/_module.js +2 -1
- package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/_module.js.map +1 -1
- package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js +22 -0
- package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.js.map +1 -0
- package/dist/esm/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +29 -11
- 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 +9 -3
- 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 +3 -0
- 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-settings.js +34 -0
- package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.js.map +1 -0
- package/dist/esm/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +52 -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/_module.js +3 -1
- package/dist/esm/event-bus/implementations/derivables/_module.js.map +1 -1
- package/dist/esm/event-bus/implementations/derivables/event-bus-factory-settings.js +55 -0
- package/dist/esm/event-bus/implementations/derivables/event-bus-factory-settings.js.map +1 -0
- package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js +29 -18
- package/dist/esm/event-bus/implementations/derivables/event-bus-factory.js.map +1 -1
- package/dist/esm/event-bus/implementations/derivables/event-bus-settings.js +52 -0
- package/dist/esm/event-bus/implementations/derivables/event-bus-settings.js.map +1 -0
- package/dist/esm/event-bus/implementations/derivables/event-bus.js +108 -39
- package/dist/esm/event-bus/implementations/derivables/event-bus.js.map +1 -1
- package/dist/esm/serde/contracts/_module.js +7 -0
- package/dist/esm/serde/contracts/_module.js.map +1 -0
- package/dist/esm/serde/contracts/deserializer.contract.js +1 -0
- package/dist/esm/serde/contracts/deserializer.contract.js.map +1 -0
- package/dist/esm/serde/contracts/flexible-serde.contract.js +1 -0
- package/dist/esm/serde/contracts/flexible-serde.contract.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/contracts/serializable.contract.js +1 -0
- package/dist/esm/serde/contracts/serializable.contract.js.map +1 -0
- package/dist/esm/serde/contracts/serializer.contract.js.map +1 -0
- package/dist/esm/serde/implementations/_module.js +7 -0
- package/dist/esm/serde/implementations/_module.js.map +1 -0
- package/dist/esm/serde/implementations/_shared/test-utilities/_module.js +3 -0
- package/dist/esm/serde/implementations/_shared/test-utilities/_module.js.map +1 -0
- package/dist/esm/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js +50 -0
- package/dist/esm/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.js.map +1 -0
- package/dist/esm/{serializer/implementations/_shared/test-utilities/serializer.test-suite.js → serde/implementations/_shared/test-utilities/serde.test-suite.js} +67 -92
- 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/no-op-serde/_module.js +2 -0
- package/dist/esm/serde/implementations/no-op-serde/_module.js.map +1 -0
- package/dist/esm/serde/implementations/no-op-serde/no-op-serde.js +12 -0
- package/dist/esm/serde/implementations/no-op-serde/no-op-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} +55 -55
- package/dist/esm/serde/implementations/super-json-serde/super-json-serde.js.map +1 -0
- package/dist/esm/utilities/contracts/_module.js +1 -0
- package/dist/esm/utilities/contracts/_module.js.map +1 -1
- package/dist/esm/utilities/contracts/buildable.contract.js +1 -0
- package/dist/esm/utilities/contracts/buildable.contract.js.map +1 -0
- package/dist/esm/utilities/errors.js +7 -7
- package/dist/esm/utilities/errors.js.map +1 -1
- package/dist/esm/utilities/functions.js +7 -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/_module.d.ts +1 -1
- package/dist/types/async/backof-policies/_module.d.ts +1 -1
- package/dist/types/async/utilities/_module.d.ts +3 -0
- package/dist/types/async/utilities/lazy-promise/lazy-promise.d.ts +66 -39
- package/dist/types/cache/contracts/cache-adapter.contract.d.ts +20 -6
- package/dist/types/cache/contracts/cache-factory.contract.d.ts +12 -25
- package/dist/types/cache/contracts/cache.contract.d.ts +382 -22
- package/dist/types/cache/contracts/cache.events.d.ts +156 -42
- package/dist/types/cache/implementations/_shared/_module.d.ts +1 -0
- package/dist/types/cache/implementations/_shared/cache-adapter.test-suite.d.ts +21 -12
- package/dist/types/cache/implementations/_shared/cache.test-suite.d.ts +21 -15
- package/dist/types/cache/implementations/adapters/kysely-sqlite-cache-adapter/kysely-sqlite-cache-adapter.d.ts +15 -8
- package/dist/types/cache/implementations/adapters/libsql-cache-adapter/_module.d.ts +2 -1
- package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter-settings.d.ts +48 -0
- package/dist/types/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +54 -36
- package/dist/types/cache/implementations/adapters/memory-cache-adapter/_module.d.ts +1 -0
- package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter-settings.d.ts +27 -0
- package/dist/types/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +50 -20
- package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/_module.d.ts +2 -1
- package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-settings.d.ts +51 -0
- package/dist/types/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +66 -41
- package/dist/types/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +6 -3
- package/dist/types/cache/implementations/adapters/redis-cache-adapter/_module.d.ts +1 -0
- package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-settings.d.ts +32 -0
- package/dist/types/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +51 -29
- package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/_module.d.ts +1 -0
- package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter-settings.d.ts +48 -0
- package/dist/types/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +54 -34
- package/dist/types/cache/implementations/derivables/_module.d.ts +3 -2
- package/dist/types/cache/implementations/derivables/cache-factory-settings.d.ts +77 -0
- package/dist/types/cache/implementations/derivables/cache-factory.d.ts +59 -45
- package/dist/types/cache/implementations/derivables/cache-settings.d.ts +68 -0
- package/dist/types/cache/implementations/derivables/cache.d.ts +83 -62
- package/dist/types/collection/contracts/async-collection.contract.d.ts +1247 -666
- package/dist/types/collection/contracts/collection.contract.d.ts +1195 -638
- package/dist/types/collection/implementations/async-iterable-collection/_shared/async-merge-iterable.d.ts +4 -5
- package/dist/types/collection/implementations/async-iterable-collection/_shared/async-retry-iterable.d.ts +1 -1
- package/dist/types/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +194 -3
- 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 +141 -1
- package/dist/types/collection/implementations/list-collection/list-collection.d.ts +141 -1
- package/dist/types/event-bus/contracts/_module.d.ts +2 -2
- package/dist/types/event-bus/contracts/_shared.d.ts +11 -0
- package/dist/types/event-bus/contracts/event-bus-adapter.contract.d.ts +9 -8
- package/dist/types/event-bus/contracts/event-bus-factory.contract.d.ts +38 -32
- package/dist/types/event-bus/contracts/event-bus.contract.d.ts +52 -37
- package/dist/types/event-bus/implementations/_shared/event-bus-adapter.test-suite.d.ts +22 -10
- package/dist/types/event-bus/implementations/_shared/event-bus.test-suite.d.ts +16 -13
- package/dist/types/event-bus/implementations/adapters/_module.d.ts +1 -1
- package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/_module.d.ts +2 -1
- package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings.d.ts +28 -0
- package/dist/types/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +53 -22
- package/dist/types/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +7 -4
- package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/_module.d.ts +2 -0
- package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter-settings.d.ts +36 -0
- package/dist/types/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +62 -0
- package/dist/types/event-bus/implementations/derivables/_module.d.ts +3 -1
- package/dist/types/event-bus/implementations/derivables/event-bus-factory-settings.d.ts +70 -0
- package/dist/types/event-bus/implementations/derivables/event-bus-factory.d.ts +40 -24
- package/dist/types/event-bus/implementations/derivables/event-bus-settings.d.ts +58 -0
- package/dist/types/event-bus/implementations/derivables/event-bus.d.ts +31 -45
- package/dist/types/serde/contracts/_module.d.ts +6 -0
- package/dist/types/serde/contracts/deserializer.contract.d.ts +13 -0
- package/dist/types/serde/contracts/flexible-serde.contract.d.ts +56 -0
- package/dist/types/serde/contracts/serde.contract.d.ts +10 -0
- package/dist/types/{serializer/contracts/serializer.errors.d.ts → serde/contracts/serde.errors.d.ts} +4 -4
- package/dist/types/serde/contracts/serializable.contract.d.ts +10 -0
- package/dist/types/serde/contracts/serializer.contract.d.ts +10 -0
- package/dist/types/serde/implementations/_module.d.ts +6 -0
- package/dist/types/serde/implementations/_shared/test-utilities/_module.d.ts +2 -0
- package/dist/types/serde/implementations/_shared/test-utilities/flexible-serde.test-suite.d.ts +17 -0
- package/dist/types/serde/implementations/_shared/test-utilities/serde.test-suite.d.ts +17 -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/no-op-serde/_module.d.ts +1 -0
- package/dist/types/serde/implementations/no-op-serde/no-op-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/contracts/_module.d.ts +1 -0
- package/dist/types/utilities/contracts/buildable.contract.d.ts +9 -0
- package/dist/types/utilities/errors.d.ts +3 -3
- package/dist/types/utilities/functions.d.ts +5 -1
- package/dist/types/utilities/time-span/time-span.d.ts +10 -1
- package/dist/types/utilities/types.d.ts +0 -1
- 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.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 +0 -2
- 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.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/_module.d.ts +0 -1
- 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/{serializer → serde}/contracts/serializer.contract.js +0 -0
- /package/dist/esm/{serializer → serde}/contracts/serializer.contract.js +0 -0
|
@@ -1,53 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module EventBus
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
4
|
+
import type { IGroupableEventBus } from "../../event-bus/contracts/event-bus.contract";
|
|
5
|
+
import type { BaseEvent } from "../../event-bus/contracts/_shared";
|
|
5
6
|
/**
|
|
6
|
-
* The <i>IEventBusFactory</i> contract makes it easy to configure and switch between different <i>{@link
|
|
7
|
+
* The <i>IEventBusFactory</i> contract makes it easy to configure and switch between different <i>{@link IGroupableEventBus}</i> dynamically.
|
|
7
8
|
* @group Contracts
|
|
8
9
|
*/
|
|
9
|
-
export type IEventBusFactory<
|
|
10
|
+
export type IEventBusFactory<TAdapters extends string = string> = {
|
|
10
11
|
/**
|
|
11
|
-
* The <i>use</i> method will throw an error if you provide it unregisted
|
|
12
|
-
* If no default
|
|
13
|
-
* @throws {
|
|
14
|
-
* @throws {
|
|
12
|
+
* The <i>use</i> method will throw an error if you provide it unregisted adapter.
|
|
13
|
+
* If no default adapter is defined an error will be thrown by <i>use</i> method.
|
|
14
|
+
* @throws {UnregisteredAdapterError} {@link UnregisteredAdapterError}
|
|
15
|
+
* @throws {DefaultAdapterNotDefinedError} {@link DefaultAdapterNotDefinedError}
|
|
15
16
|
* @example
|
|
16
17
|
* ```ts
|
|
17
18
|
* import { type IEventBusFactory } from "@daiso-tech/core";
|
|
18
19
|
*
|
|
20
|
+
* type SerializedAddEvent = {
|
|
21
|
+
* a: number;
|
|
22
|
+
* b: number;
|
|
23
|
+
* };
|
|
24
|
+
*
|
|
25
|
+
* class AddEvent extends BaseEvent<SerializedAddEvent> {
|
|
26
|
+
* // This needed for adapters that need to deserialize like the redis dapter.
|
|
27
|
+
* static override deserialize({ a, b }: SerializedAddEvent): AddEvent {
|
|
28
|
+
* return new AddEvent(a, b);
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* constructor(public readonly a: number, public readonly b: number) {
|
|
32
|
+
* super();
|
|
33
|
+
* }
|
|
34
|
+
*
|
|
35
|
+
* // This needed for adapters that need to serialize like the redis adapter.
|
|
36
|
+
* override serialize(): SerializedAddEvent {
|
|
37
|
+
* return {
|
|
38
|
+
* a: this.a,
|
|
39
|
+
* b: this.b
|
|
40
|
+
* };
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
*
|
|
44
|
+
* // Asume the inputed eventFactory has registered both a memory and Redis IEventBusAdapter.
|
|
45
|
+
* // The memory IEventBusAdapter adapter is the default.
|
|
19
46
|
* async function main(eventFactory: IEventBusFactory): Promise<void> {
|
|
20
|
-
* // Will dispatch envent using the default
|
|
47
|
+
* // Will dispatch envent using the default adapter
|
|
21
48
|
* await eventBusFactory
|
|
22
49
|
* .use()
|
|
23
|
-
* .dispatch(
|
|
50
|
+
* .dispatch(new AddEvent(1, 2));
|
|
24
51
|
* // Will dispatch envent using the redis addapter
|
|
25
52
|
* await eventBusFactory
|
|
26
53
|
* .use("redis")
|
|
27
|
-
* .dispatch(
|
|
28
|
-
* }
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
use(driverName?: TDrivers): INamespacedEventBus<TEvents>;
|
|
32
|
-
/**
|
|
33
|
-
* The <i>withTypes</i> method is used to set the event types of the <i>{@link IEventBus}</i>.
|
|
34
|
-
* @example
|
|
35
|
-
* ```ts
|
|
36
|
-
* import { type IEventBusFactory } from "@daiso-tech/core";
|
|
37
|
-
*
|
|
38
|
-
* async function main(eventBusFactory: IEventBusFactory): Promise<void> {
|
|
39
|
-
* type AddEvent = {
|
|
40
|
-
* type: "add";
|
|
41
|
-
* a: number;
|
|
42
|
-
* b: number;
|
|
43
|
-
* };
|
|
44
|
-
* await eventBusFactory
|
|
45
|
-
* .withTypes<AddEvent>()
|
|
46
|
-
* .use()
|
|
47
|
-
* // You will se an typescript error
|
|
48
|
-
* .dispatch({ type: "add" });
|
|
54
|
+
* .dispatch(new AddEvent(1, 2));
|
|
49
55
|
* }
|
|
50
56
|
* ```
|
|
51
57
|
*/
|
|
52
|
-
|
|
58
|
+
use<TEvents extends BaseEvent = BaseEvent>(adapterName?: TAdapters): IGroupableEventBus<TEvents>;
|
|
53
59
|
};
|
|
@@ -1,119 +1,134 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module EventBus
|
|
3
3
|
*/
|
|
4
|
-
import type { OneOrMore
|
|
4
|
+
import type { OneOrMore } from "../../utilities/_module";
|
|
5
5
|
import type { LazyPromise } from "../../async/_module";
|
|
6
|
-
import type { Listener } from "../../event-bus/contracts/_shared";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
import type { BaseEvent, Listener } from "../../event-bus/contracts/_shared";
|
|
7
|
+
/**
|
|
8
|
+
* @group Contracts
|
|
9
|
+
*/
|
|
10
|
+
export type EventClass<TEvents extends BaseEvent> = {
|
|
11
|
+
new (...arguments_: any[]): TEvents;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* @group Contracts
|
|
15
|
+
*/
|
|
16
|
+
export type EventInstance<TEventClass extends EventClass<BaseEvent>> = TEventClass extends {
|
|
17
|
+
new (...arguments_: any[]): infer TInstance;
|
|
18
|
+
} ? TInstance : never;
|
|
19
|
+
/**
|
|
20
|
+
* @group Contracts
|
|
21
|
+
*/
|
|
18
22
|
export type Unsubscribe = () => LazyPromise<void>;
|
|
19
23
|
/**
|
|
20
|
-
* The <i>
|
|
24
|
+
* The <i>IEventListener</i> contract defines a way listening to events independent of underlying technology
|
|
21
25
|
* @group Contracts
|
|
22
26
|
*/
|
|
23
|
-
export type
|
|
27
|
+
export type IEventListener<TEvents extends BaseEvent = BaseEvent> = {
|
|
24
28
|
/**
|
|
25
29
|
* The <i>addListener</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i>.
|
|
26
30
|
* 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.
|
|
27
31
|
* @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
|
|
28
32
|
*/
|
|
29
|
-
addListener<
|
|
33
|
+
addListener<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
|
|
30
34
|
/**
|
|
31
35
|
* The <i>addListenerMany</i> method is used for adding multiple <i>{@link Listener | listeners}</i> for certain <i>events</i>.
|
|
32
36
|
* 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.
|
|
33
37
|
* @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
|
|
34
38
|
*/
|
|
35
|
-
addListenerMany<
|
|
39
|
+
addListenerMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
|
|
36
40
|
/**
|
|
37
41
|
* The <i>removeListener</i> method is used for removing <i>{@link Listener | listener}</i> for certain <i>event</i>.
|
|
38
42
|
* Removing unadded listener will have no effect and nothing will occur.
|
|
39
43
|
* @throws {RemoveListenerEventBusError} {@link RemoveListenerEventBusError}
|
|
40
44
|
*/
|
|
41
|
-
removeListener<
|
|
45
|
+
removeListener<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
|
|
42
46
|
/**
|
|
43
47
|
* The <i>removeListener</i> method is used for removing multiple <i>{@link Listener | listeners}</i> for certain <i>event</i>.
|
|
44
48
|
* Removing unadded listener will have no effect and nothing will occur.
|
|
45
49
|
* @throws {RemoveListenerEventBusError} {@link RemoveListenerEventBusError}
|
|
46
50
|
*/
|
|
47
|
-
removeListenerMany<
|
|
51
|
+
removeListenerMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* The <i>listenOnce</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i> that is trigged only once.
|
|
54
|
+
* @throws {AddListenerEventBusError} {@link AddListenerEventBusError}
|
|
55
|
+
*/
|
|
56
|
+
listenOnce<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<void>;
|
|
48
57
|
/**
|
|
49
58
|
* The <i>subscribe</i> method is used for adding <i>{@link Listener | listener}</i> for certain <i>event</i>.
|
|
50
59
|
* 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.
|
|
51
60
|
*/
|
|
52
|
-
subscribe<
|
|
61
|
+
subscribe<TEventClass extends EventClass<TEvents>>(event: TEventClass, listener: Listener<EventInstance<TEventClass>>): LazyPromise<Unsubscribe>;
|
|
53
62
|
/**
|
|
54
63
|
* The <i>subscribeMany</i> method is used for adding <i>{@link Listener | listener}</i> for multiple <i>events</i>.
|
|
55
64
|
* 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.
|
|
56
65
|
*/
|
|
57
|
-
subscribeMany<
|
|
66
|
+
subscribeMany<TEventClass extends EventClass<TEvents>>(events: TEventClass[], listener: Listener<EventInstance<TEventClass>>): LazyPromise<Unsubscribe>;
|
|
58
67
|
};
|
|
59
68
|
/**
|
|
60
|
-
* The <i>
|
|
69
|
+
* The <i>IEventDispatcher</i> contract defines a way for dispatching to events independent of underlying technology.
|
|
61
70
|
* @group Contracts
|
|
62
71
|
*/
|
|
63
|
-
export type
|
|
72
|
+
export type IEventDispatcher<TEvents extends BaseEvent = BaseEvent> = {
|
|
73
|
+
/**
|
|
74
|
+
* The <i>dispatch</i> method is used for dispatching a <i>event</i>.
|
|
75
|
+
|
|
76
|
+
* @throws {DispatchEventBusError} {@link DispatchEventBusError}
|
|
77
|
+
*/
|
|
78
|
+
dispatch(event: TEvents): LazyPromise<void>;
|
|
64
79
|
/**
|
|
65
|
-
* The <i>
|
|
80
|
+
* The <i>dispatchMany</i> method is used for dispatching multiple <i>event</i>.
|
|
66
81
|
|
|
67
82
|
* @throws {DispatchEventBusError} {@link DispatchEventBusError}
|
|
68
83
|
*/
|
|
69
|
-
|
|
84
|
+
dispatchMany(events: TEvents[]): LazyPromise<void>;
|
|
70
85
|
};
|
|
71
86
|
/**
|
|
72
87
|
* The <i>IEventBus</i> contract defines a way for dispatching and listening to events independent of underlying technology.
|
|
73
88
|
* It commes with more convient methods compared to <i>IEventBusAdapter</i>.
|
|
74
89
|
* @group Contracts
|
|
75
90
|
*/
|
|
76
|
-
export type IEventBus<TEvents extends
|
|
91
|
+
export type IEventBus<TEvents extends BaseEvent = BaseEvent> = IEventListener<TEvents> & IEventDispatcher<TEvents> & {
|
|
77
92
|
/**
|
|
78
|
-
* The <i>
|
|
93
|
+
* The <i>getGroup</i> method returns the complete group.
|
|
79
94
|
* @example
|
|
80
95
|
* ```ts
|
|
81
96
|
* import { type IEventBus } from "@daiso-tech/core";
|
|
82
97
|
*
|
|
83
98
|
* async function main(eventBus: IEventBus): Promise<void> {
|
|
84
99
|
* // Will be "@root"
|
|
85
|
-
* console.log(eventBus.
|
|
100
|
+
* console.log(eventBus.getGroup())
|
|
86
101
|
*
|
|
87
|
-
* const eventBusA = eventBus.
|
|
102
|
+
* const eventBusA = eventBus.withGroup("a");
|
|
88
103
|
*
|
|
89
104
|
* // Will be "@root/a"
|
|
90
|
-
* console.log(eventBusA.
|
|
105
|
+
* console.log(eventBusA.getGroup())
|
|
91
106
|
* }
|
|
92
107
|
* ```
|
|
93
108
|
*/
|
|
94
|
-
|
|
109
|
+
getGroup(): string;
|
|
95
110
|
};
|
|
96
111
|
/**
|
|
97
|
-
* The <i>
|
|
112
|
+
* The <i>IGroupableEventBus</i> contract defines a way for dispatching and listening to events independent of underlying technology.
|
|
98
113
|
* It commes with one extra method which is useful for multitennat applications compared to <i>IEventBus</i>.
|
|
99
114
|
* @group Contracts
|
|
100
115
|
*/
|
|
101
|
-
export type
|
|
116
|
+
export type IGroupableEventBus<TEvents extends BaseEvent = BaseEvent> = IEventBus<TEvents> & {
|
|
102
117
|
/**
|
|
103
|
-
* The <i>
|
|
118
|
+
* 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
119
|
* This useful for multitennat applications.
|
|
105
120
|
* @example
|
|
106
121
|
* ```ts
|
|
107
122
|
* import { type IEventBus } from "@daiso-tech/core";
|
|
108
123
|
*
|
|
109
124
|
* async function main(eventBus: IEventBus): Promise<void> {
|
|
110
|
-
* const eventBusA = eventBus.
|
|
125
|
+
* const eventBusA = eventBus.withGroup("a");
|
|
111
126
|
* await eventBusA.subscribe("add", (event) => {
|
|
112
127
|
* // This will be logged
|
|
113
128
|
* console.log("eventBusA:", event);
|
|
114
129
|
* });
|
|
115
130
|
*
|
|
116
|
-
* const eventBusB = eventBus.
|
|
131
|
+
* const eventBusB = eventBus.withGroup("b");
|
|
117
132
|
* await eventBusB.subscribe("add", (event) => {
|
|
118
133
|
* // This will never be logged
|
|
119
134
|
* console.log("eventBusB:", event);
|
|
@@ -127,5 +142,5 @@ export type INamespacedEventBus<TEvents extends BaseEvents = BaseEvents> = IEven
|
|
|
127
142
|
* }
|
|
128
143
|
* ```
|
|
129
144
|
*/
|
|
130
|
-
|
|
145
|
+
withGroup(group: OneOrMore<string>): IEventBus<TEvents>;
|
|
131
146
|
};
|
|
@@ -4,15 +4,18 @@
|
|
|
4
4
|
import { type TestAPI, type SuiteAPI, type ExpectStatic, type beforeEach } from "vitest";
|
|
5
5
|
import type { IEventBusAdapter } from "../../../event-bus/contracts/_module";
|
|
6
6
|
import { type Promisable } from "../../../utilities/_module";
|
|
7
|
+
import type { IFlexibleSerde } from "../../../serde/contracts/_module";
|
|
7
8
|
/**
|
|
8
9
|
* @group Utilities
|
|
9
10
|
*/
|
|
10
11
|
export type EventBusAdapterTestSuiteSettings = {
|
|
11
12
|
expect: ExpectStatic;
|
|
13
|
+
serde?: IFlexibleSerde;
|
|
12
14
|
test: TestAPI;
|
|
13
15
|
describe: SuiteAPI;
|
|
14
16
|
beforeEach: typeof beforeEach;
|
|
15
|
-
|
|
17
|
+
createAdapterA: () => Promisable<IEventBusAdapter>;
|
|
18
|
+
createAdapterB: () => Promisable<IEventBusAdapter>;
|
|
16
19
|
};
|
|
17
20
|
/**
|
|
18
21
|
* The <i>eventBusAdapterTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IEventBusAdapter}</i> with vitest.
|
|
@@ -23,31 +26,40 @@ export type EventBusAdapterTestSuiteSettings = {
|
|
|
23
26
|
* import type { StartedRedisContainer } from "@testcontainers/redis";
|
|
24
27
|
* import { RedisContainer } from "@testcontainers/redis";
|
|
25
28
|
* import Redis from "ioredis";
|
|
26
|
-
* import {
|
|
29
|
+
* import { SuperJsonSerde, TimeSpan, RedisPubSubEventBusAdapter, eventBusAdapterTestSuite } from "@daiso-tech/core";
|
|
27
30
|
*
|
|
28
|
-
* const
|
|
29
|
-
* describe("class:
|
|
31
|
+
* const TIMEOUT = TimeSpan.fromMinutes(2);
|
|
32
|
+
* describe("class: RedisPubSubEventBusAdapter", () => {
|
|
30
33
|
* let dispatcherClient: Redis;
|
|
31
34
|
* let listenerClient: Redis;
|
|
32
35
|
* let startedContainer: StartedRedisContainer;
|
|
33
|
-
* const
|
|
36
|
+
* const serde = new SuperJsonSerde();
|
|
34
37
|
* beforeEach(async () => {
|
|
35
38
|
* startedContainer = await new RedisContainer().start();
|
|
36
39
|
* dispatcherClient = new Redis(startedContainer.getConnectionUrl());
|
|
37
40
|
* listenerClient = new Redis(startedContainer.getConnectionUrl());
|
|
38
|
-
* },
|
|
41
|
+
* }, TIMEOUT.toMilliseconds());
|
|
39
42
|
* afterEach(async () => {
|
|
40
43
|
* await dispatcherClient.quit();
|
|
41
44
|
* await listenerClient.quit();
|
|
42
45
|
* await startedContainer.stop();
|
|
43
|
-
* },
|
|
46
|
+
* }, TIMEOUT.toMilliseconds());
|
|
44
47
|
* eventBusAdapterTestSuite({
|
|
45
|
-
*
|
|
46
|
-
* new
|
|
48
|
+
* createAdapterA: () =>
|
|
49
|
+
* new RedisPubSubEventBusAdapter({
|
|
47
50
|
* dispatcherClient,
|
|
48
51
|
* listenerClient,
|
|
49
|
-
*
|
|
52
|
+
* serde,
|
|
53
|
+
* rootGroup: "@global"
|
|
50
54
|
* }),
|
|
55
|
+
* createAdapterB: () =>
|
|
56
|
+
* new RedisPubSubEventBusAdapter({
|
|
57
|
+
* dispatcherClient,
|
|
58
|
+
* listenerClient,
|
|
59
|
+
* serde,
|
|
60
|
+
* rootGroup: "@global"
|
|
61
|
+
* }),
|
|
62
|
+
* serde,
|
|
51
63
|
* test,
|
|
52
64
|
* beforeEach,
|
|
53
65
|
* expect,
|
|
@@ -2,13 +2,15 @@
|
|
|
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
|
+
import type { IFlexibleSerde } from "../../../serde/contracts/_module";
|
|
7
8
|
/**
|
|
8
9
|
* @group Utilities
|
|
9
10
|
*/
|
|
10
11
|
export type EventBusTestSuiteSettings = {
|
|
11
12
|
expect: ExpectStatic;
|
|
13
|
+
serde?: IFlexibleSerde;
|
|
12
14
|
test: TestAPI;
|
|
13
15
|
describe: SuiteAPI;
|
|
14
16
|
beforeEach: typeof beforeEach;
|
|
@@ -24,43 +26,44 @@ export type EventBusTestSuiteSettings = {
|
|
|
24
26
|
* import type { StartedRedisContainer } from "@testcontainers/redis";
|
|
25
27
|
* import { RedisContainer } from "@testcontainers/redis";
|
|
26
28
|
* import Redis from "ioredis";
|
|
27
|
-
* import {
|
|
29
|
+
* import { SuperJsonSerde, TimeSpan, RedisPubSubEventBusAdapter, eventBusTestSuite, serde } from "@daiso-tech/core";
|
|
28
30
|
*
|
|
29
|
-
* const
|
|
31
|
+
* const TIMEOUT = TimeSpan.fromMinutes(2);
|
|
30
32
|
* describe("class: EventBus", () => {
|
|
31
33
|
* let dispatcherClient: Redis;
|
|
32
34
|
* let listenerClient: Redis;
|
|
33
35
|
* let startedContainer: StartedRedisContainer;
|
|
34
|
-
* const
|
|
36
|
+
* const serde = new SuperJsonSerde();
|
|
35
37
|
* beforeEach(async () => {
|
|
36
38
|
* startedContainer = await new RedisContainer().start();
|
|
37
39
|
* dispatcherClient = new Redis(startedContainer.getConnectionUrl());
|
|
38
40
|
* listenerClient = new Redis(startedContainer.getConnectionUrl());
|
|
39
|
-
* },
|
|
41
|
+
* }, TIMEOUT.toMilliseconds());
|
|
40
42
|
* afterEach(async () => {
|
|
41
43
|
* await dispatcherClient.quit();
|
|
42
44
|
* await listenerClient.quit();
|
|
43
45
|
* await startedContainer.stop();
|
|
44
|
-
* },
|
|
46
|
+
* }, TIMEOUT.toMilliseconds());
|
|
45
47
|
* eventBusTestSuite({
|
|
46
48
|
* createEventBusA: () =>
|
|
47
49
|
* new EventBus(
|
|
48
|
-
* new
|
|
50
|
+
* new RedisPubSubEventBusAdapter({
|
|
49
51
|
* dispatcherClient,
|
|
50
52
|
* listenerClient,
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
53
|
+
* serde,
|
|
54
|
+
* rootGroup: "@global"
|
|
55
|
+
* })
|
|
54
56
|
* ),
|
|
55
57
|
* createEventBusB: () =>
|
|
56
58
|
* new EventBus(
|
|
57
|
-
* new
|
|
59
|
+
* new RedisPubSubEventBusAdapter({
|
|
58
60
|
* dispatcherClient,
|
|
59
61
|
* listenerClient,
|
|
60
|
-
*
|
|
62
|
+
* serde,
|
|
63
|
+
* rootGroup: "@global"
|
|
61
64
|
* }),
|
|
62
|
-
* { rootNamespace: "@b" }
|
|
63
65
|
* ),
|
|
66
|
+
* serde,
|
|
64
67
|
* test,
|
|
65
68
|
* beforeEach,
|
|
66
69
|
* expect,
|
|
@@ -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 +1,2 @@
|
|
|
1
|
-
export * from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/
|
|
1
|
+
export * from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings";
|
|
2
|
+
export * from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module EventBus
|
|
3
|
+
*/
|
|
4
|
+
import type { IBuildable } from "../../../../utilities/_module";
|
|
5
|
+
import type { OneOrMore } from "../../../../utilities/_module";
|
|
6
|
+
import type { EventEmitter } from "node:events";
|
|
7
|
+
/**
|
|
8
|
+
* @group Adapters
|
|
9
|
+
*/
|
|
10
|
+
export type MemoryEventBusAdapterSettings = {
|
|
11
|
+
rootGroup: OneOrMore<string>;
|
|
12
|
+
eventEmitter?: EventEmitter;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The <i>MemoryEventBusAdapterSettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
|
|
16
|
+
* @group Adapters
|
|
17
|
+
*/
|
|
18
|
+
export declare class MemoryEventBusAdapterSettingsBuilder<TSettings extends Partial<MemoryEventBusAdapterSettings>> implements IBuildable<MemoryEventBusAdapterSettings> {
|
|
19
|
+
private readonly settings;
|
|
20
|
+
constructor(settings?: TSettings);
|
|
21
|
+
setEventEmitter(eventEmitter: EventEmitter): MemoryEventBusAdapterSettingsBuilder<TSettings & {
|
|
22
|
+
eventEmitter: EventEmitter<[never]>;
|
|
23
|
+
}>;
|
|
24
|
+
setRootGroup(group: OneOrMore<string>): MemoryEventBusAdapterSettingsBuilder<TSettings & {
|
|
25
|
+
rootGroup: OneOrMore<string>;
|
|
26
|
+
}>;
|
|
27
|
+
build(this: MemoryEventBusAdapterSettingsBuilder<MemoryEventBusAdapterSettings>): MemoryEventBusAdapterSettings;
|
|
28
|
+
}
|
|
@@ -1,31 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module EventBus
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
4
|
+
import { type OneOrMore } from "../../../../utilities/_module";
|
|
5
|
+
import type { BaseEvent, IEventBusAdapter, Listener } from "../../../../event-bus/contracts/_module";
|
|
6
|
+
import type { MemoryEventBusAdapterSettings } from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings";
|
|
7
|
+
import { MemoryEventBusAdapterSettingsBuilder } from "../../../../event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter-settings";
|
|
6
8
|
/**
|
|
7
9
|
* To utilize the <i>MemoryEventBusAdapter</i>, you must create instance of it.
|
|
8
10
|
* @group Adapters
|
|
9
|
-
* @example
|
|
10
|
-
* ```ts
|
|
11
|
-
* import { MemoryEventBusAdapter } from "@daiso-tech/core";
|
|
12
|
-
*
|
|
13
|
-
* const eventBusAdapter = new MemoryEventBusAdapter(client);
|
|
14
|
-
* ```
|
|
15
|
-
* You can also provide an <i>EVentEmitter</i>.
|
|
16
|
-
* @example
|
|
17
|
-
* ```ts
|
|
18
|
-
* import { MemoryCacheAdapter } from "@daiso-tech/core";
|
|
19
|
-
* import { EventEmitter } from "node:events";
|
|
20
|
-
*
|
|
21
|
-
* const eventEmitter = new EventEmitter();
|
|
22
|
-
* const eventBusAdapter = new MemoryCacheAdapter(eventEmitter);
|
|
23
|
-
* ```
|
|
24
11
|
*/
|
|
25
12
|
export declare class MemoryEventBusAdapter implements IEventBusAdapter {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
13
|
+
/**
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* import { MemoryEventBusAdapter, SuperJsonSerde } from "@daiso-tech/core";
|
|
17
|
+
* import { EventEmitter } from "node:events";
|
|
18
|
+
*
|
|
19
|
+
* const cacheAdapter = new MemoryEventBusAdapter(
|
|
20
|
+
* MemoryEventBusAdapter
|
|
21
|
+
* .settings()
|
|
22
|
+
* .setEventEmitter(new EventEmitter())
|
|
23
|
+
* .setRootGroup("@global")
|
|
24
|
+
* .build()
|
|
25
|
+
* );
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
static settings<TSettings extends Partial<MemoryEventBusAdapterSettings>>(): MemoryEventBusAdapterSettingsBuilder<TSettings>;
|
|
29
|
+
private readonly group;
|
|
30
|
+
private readonly eventEmitter;
|
|
31
|
+
/**
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* import { MemoryEventBusAdapter } from "@daiso-tech/core";
|
|
35
|
+
* import { EventEmitter } from "node:events";
|
|
36
|
+
*
|
|
37
|
+
* const eventEmitter = new EventEmitter();
|
|
38
|
+
* const eventBusAdapter = new MemoryEventBusAdapter({
|
|
39
|
+
* eventEmitter
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
* You can also provide an <i>EVentEmitter</i>.
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* import { MemoryCacheAdapter } from "@daiso-tech/core";
|
|
46
|
+
* import { EventEmitter } from "node:events";
|
|
47
|
+
*
|
|
48
|
+
* const eventEmitter = new EventEmitter();
|
|
49
|
+
* const eventBusAdapter = new MemoryEventBusAdapter({
|
|
50
|
+
* rootGroup: "@global",
|
|
51
|
+
* eventEmitter
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
constructor(settings: MemoryEventBusAdapterSettings);
|
|
56
|
+
getGroup(): string;
|
|
57
|
+
withGroup(group: OneOrMore<string>): IEventBusAdapter;
|
|
58
|
+
private withPrefix;
|
|
59
|
+
addListener(eventName: string, listener: Listener<BaseEvent>): Promise<void>;
|
|
60
|
+
removeListener(eventName: string, listener: Listener<BaseEvent>): Promise<void>;
|
|
61
|
+
dispatch(eventName: string, eventData: BaseEvent): Promise<void>;
|
|
31
62
|
}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module EventBus
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
4
|
+
import type { OneOrMore } from "../../../../utilities/_module";
|
|
5
|
+
import type { BaseEvent, Listener } from "../../../../event-bus/contracts/_module";
|
|
5
6
|
import type { IEventBusAdapter } from "../../../../event-bus/contracts/_module";
|
|
6
7
|
/**
|
|
7
8
|
* This <i>NoOpEventBusAdapter</i> will do nothing and is used for easily mocking {@link IEventBus} for testing.
|
|
8
9
|
* @group Adapters
|
|
9
10
|
*/
|
|
10
11
|
export declare class NoOpEventBusAdapter implements IEventBusAdapter {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
getGroup(): string;
|
|
13
|
+
withGroup(_group: OneOrMore<string>): IEventBusAdapter;
|
|
14
|
+
addListener(_eventName: string, _listener: Listener<BaseEvent>): PromiseLike<void>;
|
|
15
|
+
removeListener(_eventName: string, _listener: Listener<BaseEvent>): PromiseLike<void>;
|
|
16
|
+
dispatch(_eventName: string, _eventData: BaseEvent): PromiseLike<void>;
|
|
14
17
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module EventBus
|
|
3
|
+
*/
|
|
4
|
+
import { type ISerde } from "../../../../serde/contracts/_module";
|
|
5
|
+
import type Redis from "ioredis";
|
|
6
|
+
import type { IBuildable, OneOrMore } from "../../../../utilities/_module";
|
|
7
|
+
/**
|
|
8
|
+
* @group Adapters
|
|
9
|
+
*/
|
|
10
|
+
export type RedisPubSubEventBusAdapterSettings = {
|
|
11
|
+
dispatcherClient: Redis;
|
|
12
|
+
listenerClient: Redis;
|
|
13
|
+
serde: ISerde<string>;
|
|
14
|
+
rootGroup: OneOrMore<string>;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* The <i>RedisPubSubEventBusAdapterSettingsBuilder</i> is an immutable builder class, meaning that each method invocation creates a new instance.
|
|
18
|
+
* @group Adapters
|
|
19
|
+
*/
|
|
20
|
+
export declare class RedisPubSubEventBusAdapterSettingsBuilder<TSettings extends Partial<RedisPubSubEventBusAdapterSettings>> implements IBuildable<RedisPubSubEventBusAdapterSettings> {
|
|
21
|
+
private readonly settings;
|
|
22
|
+
constructor(settings?: TSettings);
|
|
23
|
+
setDispatcherClient(client: Redis): RedisPubSubEventBusAdapterSettingsBuilder<TSettings & {
|
|
24
|
+
dispatcherClient: Redis;
|
|
25
|
+
}>;
|
|
26
|
+
setListenerClient(client: Redis): RedisPubSubEventBusAdapterSettingsBuilder<TSettings & {
|
|
27
|
+
listenerClient: Redis;
|
|
28
|
+
}>;
|
|
29
|
+
setSerde(serde: ISerde<string>): RedisPubSubEventBusAdapterSettingsBuilder<TSettings & {
|
|
30
|
+
serde: ISerde<string>;
|
|
31
|
+
}>;
|
|
32
|
+
setRootGroup(group: OneOrMore<string>): RedisPubSubEventBusAdapterSettingsBuilder<TSettings & {
|
|
33
|
+
rootGroup: OneOrMore<string>;
|
|
34
|
+
}>;
|
|
35
|
+
build(this: RedisPubSubEventBusAdapterSettingsBuilder<RedisPubSubEventBusAdapterSettings>): RedisPubSubEventBusAdapterSettings;
|
|
36
|
+
}
|