synapse-storage 2.1.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/README.md +1038 -0
- package/dist/_examples/_example5.d.ts +1 -0
- package/dist/_examples/_example5.d.ts.map +1 -0
- package/dist/_examples/_example5.js +184 -0
- package/dist/_examples/_example5.js.map +1 -0
- package/dist/_examples/_example6.d.ts +1 -0
- package/dist/_examples/_example6.d.ts.map +1 -0
- package/dist/_examples/_example6.js +168 -0
- package/dist/_examples/_example6.js.map +1 -0
- package/dist/_examples/example1.d.ts +1 -0
- package/dist/_examples/example1.d.ts.map +1 -0
- package/dist/_examples/example1.js +240 -0
- package/dist/_examples/example1.js.map +1 -0
- package/dist/_examples/example2.d.ts +1 -0
- package/dist/_examples/example2.d.ts.map +1 -0
- package/dist/_examples/example2.js +81 -0
- package/dist/_examples/example2.js.map +1 -0
- package/dist/_examples/example3.d.ts +1 -0
- package/dist/_examples/example3.d.ts.map +1 -0
- package/dist/_examples/example3.js +99 -0
- package/dist/_examples/example3.js.map +1 -0
- package/dist/_examples/example4.d.ts +1 -0
- package/dist/_examples/example4.d.ts.map +1 -0
- package/dist/_examples/example4.js +172 -0
- package/dist/_examples/example4.js.map +1 -0
- package/dist/_examples/example5.d.ts +1 -0
- package/dist/_examples/example5.d.ts.map +1 -0
- package/dist/_examples/example5.js +184 -0
- package/dist/_examples/example5.js.map +1 -0
- package/dist/_examples/example6.d.ts +1 -0
- package/dist/_examples/example6.d.ts.map +1 -0
- package/dist/_examples/example6.js +168 -0
- package/dist/_examples/example6.js.map +1 -0
- package/dist/_examples/plugins.d.ts +1 -0
- package/dist/_examples/plugins.d.ts.map +1 -0
- package/dist/_examples/plugins.js +176 -0
- package/dist/_examples/plugins.js.map +1 -0
- package/dist/_examples/pokemons/PokemonList.d.ts +5 -0
- package/dist/_examples/pokemons/PokemonList.d.ts.map +1 -0
- package/dist/_examples/pokemons/PokemonList.js +166 -0
- package/dist/_examples/pokemons/PokemonList.js.map +1 -0
- package/dist/_examples/pokemons/api.d.ts +8 -0
- package/dist/_examples/pokemons/api.d.ts.map +1 -0
- package/dist/_examples/pokemons/api.js +45 -0
- package/dist/_examples/pokemons/api.js.map +1 -0
- package/dist/_examples/pokemons/app.config.d.ts +15 -0
- package/dist/_examples/pokemons/app.config.d.ts.map +1 -0
- package/dist/_examples/pokemons/app.config.js +15 -0
- package/dist/_examples/pokemons/app.config.js.map +1 -0
- package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.d.ts +9 -0
- package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.d.ts.map +1 -0
- package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.js +122 -0
- package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.js.map +1 -0
- package/dist/_examples/pokemons/effects/pokemon.effects.d.ts +16 -0
- package/dist/_examples/pokemons/effects/pokemon.effects.d.ts.map +1 -0
- package/dist/_examples/pokemons/effects/pokemon.effects.js +39 -0
- package/dist/_examples/pokemons/effects/pokemon.effects.js.map +1 -0
- package/dist/_examples/pokemons/middlewares/pokenon.middlewares.d.ts +4 -0
- package/dist/_examples/pokemons/middlewares/pokenon.middlewares.d.ts.map +1 -0
- package/dist/_examples/pokemons/middlewares/pokenon.middlewares.js +27 -0
- package/dist/_examples/pokemons/middlewares/pokenon.middlewares.js.map +1 -0
- package/dist/_examples/pokemons/pokemon.dispatcher.d.ts +9 -0
- package/dist/_examples/pokemons/pokemon.dispatcher.d.ts.map +1 -0
- package/dist/_examples/pokemons/pokemon.dispatcher.js +122 -0
- package/dist/_examples/pokemons/pokemon.dispatcher.js.map +1 -0
- package/dist/_examples/pokemons/pokemon.effects.d.ts +5 -0
- package/dist/_examples/pokemons/pokemon.effects.d.ts.map +1 -0
- package/dist/_examples/pokemons/pokemon.effects.js +39 -0
- package/dist/_examples/pokemons/pokemon.effects.js.map +1 -0
- package/dist/_examples/pokemons/pokemon.selectors.d.ts +5 -0
- package/dist/_examples/pokemons/pokemon.selectors.d.ts.map +1 -0
- package/dist/_examples/pokemons/pokemon.selectors.js +10 -0
- package/dist/_examples/pokemons/pokemon.selectors.js.map +1 -0
- package/dist/_examples/pokemons/pokemon.storage.d.ts +3 -0
- package/dist/_examples/pokemons/pokemon.storage.d.ts.map +1 -0
- package/dist/_examples/pokemons/pokemon.storage.js +14 -0
- package/dist/_examples/pokemons/pokemon.storage.js.map +1 -0
- package/dist/_examples/pokemons/pokemon1.selectors.d.ts +5 -0
- package/dist/_examples/pokemons/pokemon1.selectors.d.ts.map +1 -0
- package/dist/_examples/pokemons/pokemon1.selectors.js +8 -0
- package/dist/_examples/pokemons/pokemon1.selectors.js.map +1 -0
- package/dist/_examples/pokemons/pokenon.middlewares.d.ts +4 -0
- package/dist/_examples/pokemons/pokenon.middlewares.d.ts.map +1 -0
- package/dist/_examples/pokemons/pokenon.middlewares.js +27 -0
- package/dist/_examples/pokemons/pokenon.middlewares.js.map +1 -0
- package/dist/_examples/pokemons/selectors/pokemon.selectors.d.ts +5 -0
- package/dist/_examples/pokemons/selectors/pokemon.selectors.d.ts.map +1 -0
- package/dist/_examples/pokemons/selectors/pokemon.selectors.js +10 -0
- package/dist/_examples/pokemons/selectors/pokemon.selectors.js.map +1 -0
- package/dist/_examples/pokemons/selectors/pokemon1.selectors.d.ts +5 -0
- package/dist/_examples/pokemons/selectors/pokemon1.selectors.d.ts.map +1 -0
- package/dist/_examples/pokemons/selectors/pokemon1.selectors.js +8 -0
- package/dist/_examples/pokemons/selectors/pokemon1.selectors.js.map +1 -0
- package/dist/_examples/pokemons/storages/pokemon.storage.d.ts +3 -0
- package/dist/_examples/pokemons/storages/pokemon.storage.d.ts.map +1 -0
- package/dist/_examples/pokemons/storages/pokemon.storage.js +14 -0
- package/dist/_examples/pokemons/storages/pokemon.storage.js.map +1 -0
- package/dist/_examples/pokemons/store.d.ts +1 -0
- package/dist/_examples/pokemons/store.d.ts.map +1 -0
- package/dist/_examples/pokemons/store.js +2 -0
- package/dist/_examples/pokemons/store.js.map +1 -0
- package/dist/_examples/pokemons/store1.d.ts +23 -0
- package/dist/_examples/pokemons/store1.d.ts.map +1 -0
- package/dist/_examples/pokemons/store1.js +35 -0
- package/dist/_examples/pokemons/store1.js.map +1 -0
- package/dist/_examples/pokemons/store2.d.ts +23 -0
- package/dist/_examples/pokemons/store2.d.ts.map +1 -0
- package/dist/_examples/pokemons/store2.js +34 -0
- package/dist/_examples/pokemons/store2.js.map +1 -0
- package/dist/_examples/pokemons/types.d.ts +26 -0
- package/dist/_examples/pokemons/types.d.ts.map +1 -0
- package/dist/_examples/pokemons/types.js +2 -0
- package/dist/_examples/pokemons/types.js.map +1 -0
- package/dist/_utils/chunk.util.d.ts +8 -0
- package/dist/_utils/chunk.util.d.ts.map +1 -0
- package/dist/_utils/chunk.util.js +21 -0
- package/dist/_utils/chunk.util.js.map +1 -0
- package/dist/_utils/deepMerge.util.d.ts +2 -0
- package/dist/_utils/deepMerge.util.d.ts.map +1 -0
- package/dist/_utils/deepMerge.util.js +16 -0
- package/dist/_utils/deepMerge.util.js.map +1 -0
- package/dist/_utils/flatMap.util.d.ts +10 -0
- package/dist/_utils/flatMap.util.d.ts.map +1 -0
- package/dist/_utils/flatMap.util.js +23 -0
- package/dist/_utils/flatMap.util.js.map +1 -0
- package/dist/_utils/index.d.ts +4 -0
- package/dist/_utils/index.d.ts.map +1 -0
- package/dist/_utils/index.js +4 -0
- package/dist/_utils/index.js.map +1 -0
- package/dist/api/api.module.d.ts +38 -0
- package/dist/api/api.module.d.ts.map +1 -0
- package/dist/api/api.module.js +82 -0
- package/dist/api/api.module.js.map +1 -0
- package/dist/api/components/endpoint.d.ts +26 -0
- package/dist/api/components/endpoint.d.ts.map +1 -0
- package/dist/api/components/endpoint.js +253 -0
- package/dist/api/components/endpoint.js.map +1 -0
- package/dist/api/components/query-storage.d.ts +84 -0
- package/dist/api/components/query-storage.d.ts.map +1 -0
- package/dist/api/components/query-storage.js +221 -0
- package/dist/api/components/query-storage.js.map +1 -0
- package/dist/api/example.d.ts +83 -0
- package/dist/api/example.d.ts.map +1 -0
- package/dist/api/example.js +85 -0
- package/dist/api/example.js.map +1 -0
- package/dist/api/index.d.ts +4 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +6 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/types/api.interface.d.ts +108 -0
- package/dist/api/types/api.interface.d.ts.map +1 -0
- package/dist/api/types/api.interface.js +19 -0
- package/dist/api/types/api.interface.js.map +1 -0
- package/dist/api/types/endpoint.interface.d.ts +116 -0
- package/dist/api/types/endpoint.interface.d.ts.map +1 -0
- package/dist/api/types/endpoint.interface.js +2 -0
- package/dist/api/types/endpoint.interface.js.map +1 -0
- package/dist/api/types/query.interface.d.ts +87 -0
- package/dist/api/types/query.interface.d.ts.map +1 -0
- package/dist/api/types/query.interface.js +2 -0
- package/dist/api/types/query.interface.js.map +1 -0
- package/dist/api/utils/api-helpers.d.ts +22 -0
- package/dist/api/utils/api-helpers.d.ts.map +1 -0
- package/dist/api/utils/api-helpers.js +44 -0
- package/dist/api/utils/api-helpers.js.map +1 -0
- package/dist/api/utils/create-header-context.d.ts +10 -0
- package/dist/api/utils/create-header-context.d.ts.map +1 -0
- package/dist/api/utils/create-header-context.js +36 -0
- package/dist/api/utils/create-header-context.js.map +1 -0
- package/dist/api/utils/endpoint-headers.d.ts +23 -0
- package/dist/api/utils/endpoint-headers.d.ts.map +1 -0
- package/dist/api/utils/endpoint-headers.js +57 -0
- package/dist/api/utils/endpoint-headers.js.map +1 -0
- package/dist/api/utils/fetch-base-query.d.ts +9 -0
- package/dist/api/utils/fetch-base-query.d.ts.map +1 -0
- package/dist/api/utils/fetch-base-query.js +181 -0
- package/dist/api/utils/fetch-base-query.js.map +1 -0
- package/dist/api/utils/file-utils.d.ts +43 -0
- package/dist/api/utils/file-utils.d.ts.map +1 -0
- package/dist/api/utils/file-utils.js +108 -0
- package/dist/api/utils/file-utils.js.map +1 -0
- package/dist/api/utils/get-cacheable-headers.d.ts +8 -0
- package/dist/api/utils/get-cacheable-headers.d.ts.map +1 -0
- package/dist/api/utils/get-cacheable-headers.js +21 -0
- package/dist/api/utils/get-cacheable-headers.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/selector/index.d.ts +3 -0
- package/dist/core/selector/index.d.ts.map +1 -0
- package/dist/core/selector/index.js +2 -0
- package/dist/core/selector/index.js.map +1 -0
- package/dist/core/selector/selector.interface.d.ts +91 -0
- package/dist/core/selector/selector.interface.d.ts.map +1 -0
- package/dist/core/selector/selector.interface.js +2 -0
- package/dist/core/selector/selector.interface.js.map +1 -0
- package/dist/core/selector/selector.module.d.ts +29 -0
- package/dist/core/selector/selector.module.d.ts.map +1 -0
- package/dist/core/selector/selector.module.js +467 -0
- package/dist/core/selector/selector.module.js.map +1 -0
- package/dist/core/storage/adapters/base-storage.service.d.ts +65 -0
- package/dist/core/storage/adapters/base-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/base-storage.service.js +660 -0
- package/dist/core/storage/adapters/base-storage.service.js.map +1 -0
- package/dist/core/storage/adapters/idb.d.ts +52 -0
- package/dist/core/storage/adapters/idb.d.ts.map +1 -0
- package/dist/core/storage/adapters/idb.js +528 -0
- package/dist/core/storage/adapters/idb.js.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service.d.ts +63 -0
- package/dist/core/storage/adapters/indexed-DB.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service.js +595 -0
- package/dist/core/storage/adapters/indexed-DB.service.js.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service.old.d.ts +38 -0
- package/dist/core/storage/adapters/indexed-DB.service.old.d.ts.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service.old.js +318 -0
- package/dist/core/storage/adapters/indexed-DB.service.old.js.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service1.d.ts +38 -0
- package/dist/core/storage/adapters/indexed-DB.service1.d.ts.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service1.js +318 -0
- package/dist/core/storage/adapters/indexed-DB.service1.js.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service2.d.ts +61 -0
- package/dist/core/storage/adapters/indexed-DB.service2.d.ts.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service2.js +596 -0
- package/dist/core/storage/adapters/indexed-DB.service2.js.map +1 -0
- package/dist/core/storage/adapters/local-storage.service.d.ts +21 -0
- package/dist/core/storage/adapters/local-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/local-storage.service.js +99 -0
- package/dist/core/storage/adapters/local-storage.service.js.map +1 -0
- package/dist/core/storage/adapters/memory-storage.service.d.ts +22 -0
- package/dist/core/storage/adapters/memory-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/memory-storage.service.js +99 -0
- package/dist/core/storage/adapters/memory-storage.service.js.map +1 -0
- package/dist/core/storage/adapters/path.utils.d.ts +5 -0
- package/dist/core/storage/adapters/path.utils.d.ts.map +1 -0
- package/dist/core/storage/adapters/path.utils.js +35 -0
- package/dist/core/storage/adapters/path.utils.js.map +1 -0
- package/dist/core/storage/factory/createSynapseStorage.factory.d.ts +1 -0
- package/dist/core/storage/factory/createSynapseStorage.factory.d.ts.map +1 -0
- package/dist/core/storage/factory/createSynapseStorage.factory.js +2 -0
- package/dist/core/storage/factory/createSynapseStorage.factory.js.map +1 -0
- package/dist/core/storage/factory/index.d.ts +2 -0
- package/dist/core/storage/factory/index.d.ts.map +1 -0
- package/dist/core/storage/factory/index.js +2 -0
- package/dist/core/storage/factory/index.js.map +1 -0
- package/dist/core/storage/index.d.ts +11 -0
- package/dist/core/storage/index.d.ts.map +1 -0
- package/dist/core/storage/index.js +12 -0
- package/dist/core/storage/index.js.map +1 -0
- package/dist/core/storage/middlewares/broadcast.middleware.d.ts +9 -0
- package/dist/core/storage/middlewares/broadcast.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/broadcast.middleware.js +115 -0
- package/dist/core/storage/middlewares/broadcast.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/index.d.ts +4 -0
- package/dist/core/storage/middlewares/index.d.ts.map +1 -0
- package/dist/core/storage/middlewares/index.js +3 -0
- package/dist/core/storage/middlewares/index.js.map +1 -0
- package/dist/core/storage/middlewares/storage-batching.middleware.d.ts +7 -0
- package/dist/core/storage/middlewares/storage-batching.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/storage-batching.middleware.js +36 -0
- package/dist/core/storage/middlewares/storage-batching.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts +7 -0
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js +46 -0
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.interface.d.ts +201 -0
- package/dist/core/storage/modules/plugin/plugin.interface.d.ts.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.interface.js +2 -0
- package/dist/core/storage/modules/plugin/plugin.interface.js.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.service.d.ts +25 -0
- package/dist/core/storage/modules/plugin/plugin.service.d.ts.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.service.js +186 -0
- package/dist/core/storage/modules/plugin/plugin.service.js.map +1 -0
- package/dist/core/storage/storage.interface.d.ts +70 -0
- package/dist/core/storage/storage.interface.d.ts.map +1 -0
- package/dist/core/storage/storage.interface.js +10 -0
- package/dist/core/storage/storage.interface.js.map +1 -0
- package/dist/core/storage/utils/batch.utils.d.ts +33 -0
- package/dist/core/storage/utils/batch.utils.d.ts.map +1 -0
- package/dist/core/storage/utils/batch.utils.js +88 -0
- package/dist/core/storage/utils/batch.utils.js.map +1 -0
- package/dist/core/storage/utils/broadcast.util.d.ts +48 -0
- package/dist/core/storage/utils/broadcast.util.d.ts.map +1 -0
- package/dist/core/storage/utils/broadcast.util.js +162 -0
- package/dist/core/storage/utils/broadcast.util.js.map +1 -0
- package/dist/core/storage/utils/cache.util.d.ts +33 -0
- package/dist/core/storage/utils/cache.util.d.ts.map +1 -0
- package/dist/core/storage/utils/cache.util.js +47 -0
- package/dist/core/storage/utils/cache.util.js.map +1 -0
- package/dist/core/storage/utils/middleware-module.d.ts +46 -0
- package/dist/core/storage/utils/middleware-module.d.ts.map +1 -0
- package/dist/core/storage/utils/middleware-module.js +109 -0
- package/dist/core/storage/utils/middleware-module.js.map +1 -0
- package/dist/core/storage/utils/storage-key.d.ts +11 -0
- package/dist/core/storage/utils/storage-key.d.ts.map +1 -0
- package/dist/core/storage/utils/storage-key.js +21 -0
- package/dist/core/storage/utils/storage-key.js.map +1 -0
- package/dist/core/storage/utils/storage.utils.d.ts +17 -0
- package/dist/core/storage/utils/storage.utils.d.ts.map +1 -0
- package/dist/core/storage/utils/storage.utils.js +57 -0
- package/dist/core/storage/utils/storage.utils.js.map +1 -0
- package/dist/examples/_example5.d.ts +1 -0
- package/dist/examples/_example5.d.ts.map +1 -0
- package/dist/examples/_example5.js +184 -0
- package/dist/examples/_example5.js.map +1 -0
- package/dist/examples/_example6.d.ts +1 -0
- package/dist/examples/_example6.d.ts.map +1 -0
- package/dist/examples/_example6.js +168 -0
- package/dist/examples/_example6.js.map +1 -0
- package/dist/examples/plugins.d.ts +1 -0
- package/dist/examples/plugins.d.ts.map +1 -0
- package/dist/examples/plugins.js +176 -0
- package/dist/examples/plugins.js.map +1 -0
- package/dist/examples/pokemons/PokemonList.d.ts +2 -0
- package/dist/examples/pokemons/PokemonList.d.ts.map +1 -0
- package/dist/examples/pokemons/PokemonList.js +110 -0
- package/dist/examples/pokemons/PokemonList.js.map +1 -0
- package/dist/examples/pokemons/api.d.ts +22 -0
- package/dist/examples/pokemons/api.d.ts.map +1 -0
- package/dist/examples/pokemons/api.js +43 -0
- package/dist/examples/pokemons/api.js.map +1 -0
- package/dist/examples/pokemons/app.config.d.ts +15 -0
- package/dist/examples/pokemons/app.config.d.ts.map +1 -0
- package/dist/examples/pokemons/app.config.js +15 -0
- package/dist/examples/pokemons/app.config.js.map +1 -0
- package/dist/examples/pokemons/dispatchers/pokemon.dispatcher.js +128 -0
- package/dist/examples/pokemons/dispatchers/pokemon.dispatcher.js.map +1 -0
- package/dist/examples/pokemons/effects/pokemon.effects.d.ts +16 -0
- package/dist/examples/pokemons/effects/pokemon.effects.d.ts.map +1 -0
- package/dist/examples/pokemons/effects/pokemon.effects.js +51 -0
- package/dist/examples/pokemons/effects/pokemon.effects.js.map +1 -0
- package/dist/examples/pokemons/middlewares/pokenon.middlewares.d.ts +4 -0
- package/dist/examples/pokemons/middlewares/pokenon.middlewares.d.ts.map +1 -0
- package/dist/examples/pokemons/middlewares/pokenon.middlewares.js +28 -0
- package/dist/examples/pokemons/middlewares/pokenon.middlewares.js.map +1 -0
- package/dist/examples/pokemons/selectors/pokemon.selectors.d.ts +13 -0
- package/dist/examples/pokemons/selectors/pokemon.selectors.d.ts.map +1 -0
- package/dist/examples/pokemons/selectors/pokemon.selectors.js +7 -0
- package/dist/examples/pokemons/selectors/pokemon.selectors.js.map +1 -0
- package/dist/examples/pokemons/storages/pokemon.storage.d.ts +5 -0
- package/dist/examples/pokemons/storages/pokemon.storage.d.ts.map +1 -0
- package/dist/examples/pokemons/storages/pokemon.storage.js +13 -0
- package/dist/examples/pokemons/storages/pokemon.storage.js.map +1 -0
- package/dist/examples/pokemons/store.d.ts +35 -0
- package/dist/examples/pokemons/store.d.ts.map +1 -0
- package/dist/examples/pokemons/store.js +21 -0
- package/dist/examples/pokemons/store.js.map +1 -0
- package/dist/examples/pokemons/types.d.ts +26 -0
- package/dist/examples/pokemons/types.d.ts.map +1 -0
- package/dist/examples/pokemons/types.js +2 -0
- package/dist/examples/pokemons/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/react/hooks/index.d.ts +3 -0
- package/dist/react/hooks/index.d.ts.map +1 -0
- package/dist/react/hooks/index.js +3 -0
- package/dist/react/hooks/index.js.map +1 -0
- package/dist/react/hooks/useSelector.d.ts +22 -0
- package/dist/react/hooks/useSelector.d.ts.map +1 -0
- package/dist/react/hooks/useSelector.js +104 -0
- package/dist/react/hooks/useSelector.js.map +1 -0
- package/dist/react/hooks/useStorageSubscribe.d.ts +12 -0
- package/dist/react/hooks/useStorageSubscribe.d.ts.map +1 -0
- package/dist/react/hooks/useStorageSubscribe.js +49 -0
- package/dist/react/hooks/useStorageSubscribe.js.map +1 -0
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +3 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/utils/createSynapse.d.ts +47 -0
- package/dist/react/utils/createSynapse.d.ts.map +1 -0
- package/dist/react/utils/createSynapse.js +83 -0
- package/dist/react/utils/createSynapse.js.map +1 -0
- package/dist/react/utils/createSynapseContext.d.ts +29 -0
- package/dist/react/utils/createSynapseContext.d.ts.map +1 -0
- package/dist/react/utils/createSynapseContext.js +112 -0
- package/dist/react/utils/createSynapseContext.js.map +1 -0
- package/dist/react/utils/createSynapseCtx.d.ts +30 -0
- package/dist/react/utils/createSynapseCtx.d.ts.map +1 -0
- package/dist/react/utils/createSynapseCtx.js +124 -0
- package/dist/react/utils/createSynapseCtx.js.map +1 -0
- package/dist/react/utils/index.d.ts +2 -0
- package/dist/react/utils/index.d.ts.map +1 -0
- package/dist/react/utils/index.js +2 -0
- package/dist/react/utils/index.js.map +1 -0
- package/dist/reactive/dispatcher/dispatcher.module.d.ts +195 -0
- package/dist/reactive/dispatcher/dispatcher.module.d.ts.map +1 -0
- package/dist/reactive/dispatcher/dispatcher.module.js +288 -0
- package/dist/reactive/dispatcher/dispatcher.module.js.map +1 -0
- package/dist/reactive/dispatcher/index.d.ts +3 -0
- package/dist/reactive/dispatcher/index.d.ts.map +1 -0
- package/dist/reactive/dispatcher/index.js +3 -0
- package/dist/reactive/dispatcher/index.js.map +1 -0
- package/dist/reactive/dispatcher/middlewares/index.d.ts +2 -0
- package/dist/reactive/dispatcher/middlewares/index.d.ts.map +1 -0
- package/dist/reactive/dispatcher/middlewares/index.js +2 -0
- package/dist/reactive/dispatcher/middlewares/index.js.map +1 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts +31 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts.map +1 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.js +126 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.js.map +1 -0
- package/dist/reactive/effects/effects.module.d.ts +140 -0
- package/dist/reactive/effects/effects.module.d.ts.map +1 -0
- package/dist/reactive/effects/effects.module.js +263 -0
- package/dist/reactive/effects/effects.module.js.map +1 -0
- package/dist/reactive/effects/index.d.ts +2 -0
- package/dist/reactive/effects/index.d.ts.map +1 -0
- package/dist/reactive/effects/index.js +2 -0
- package/dist/reactive/effects/index.js.map +1 -0
- package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts +12 -0
- package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts.map +1 -0
- package/dist/reactive/effects/utils/chunkRequestConsistent.js +16 -0
- package/dist/reactive/effects/utils/chunkRequestConsistent.js.map +1 -0
- package/dist/reactive/effects/utils/chunkRequestParallel.d.ts +12 -0
- package/dist/reactive/effects/utils/chunkRequestParallel.d.ts.map +1 -0
- package/dist/reactive/effects/utils/chunkRequestParallel.js +13 -0
- package/dist/reactive/effects/utils/chunkRequestParallel.js.map +1 -0
- package/dist/reactive/effects/utils/index.d.ts +3 -0
- package/dist/reactive/effects/utils/index.d.ts.map +1 -0
- package/dist/reactive/effects/utils/index.js +3 -0
- package/dist/reactive/effects/utils/index.js.map +1 -0
- package/dist/reactive/index.d.ts +3 -0
- package/dist/reactive/index.d.ts.map +1 -0
- package/dist/reactive/index.js +3 -0
- package/dist/reactive/index.js.map +1 -0
- package/dist/utils/chunk.util.d.ts +8 -0
- package/dist/utils/chunk.util.d.ts.map +1 -0
- package/dist/utils/chunk.util.js +21 -0
- package/dist/utils/chunk.util.js.map +1 -0
- package/dist/utils/createSynapse.d.ts +52 -0
- package/dist/utils/createSynapse.d.ts.map +1 -0
- package/dist/utils/createSynapse.js +87 -0
- package/dist/utils/createSynapse.js.map +1 -0
- package/dist/utils/deepMerge.util.d.ts +2 -0
- package/dist/utils/deepMerge.util.d.ts.map +1 -0
- package/dist/utils/deepMerge.util.js +16 -0
- package/dist/utils/deepMerge.util.js.map +1 -0
- package/dist/utils/flatMap.util.d.ts +10 -0
- package/dist/utils/flatMap.util.d.ts.map +1 -0
- package/dist/utils/flatMap.util.js +23 -0
- package/dist/utils/flatMap.util.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +111 -0
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
/**
|
|
3
|
+
* Класс Dispatcher для интеграции хранилищ с реактивной системой
|
|
4
|
+
*/
|
|
5
|
+
export class Dispatcher {
|
|
6
|
+
options;
|
|
7
|
+
// Поток действий
|
|
8
|
+
actions$ = new Subject();
|
|
9
|
+
// Публичный Observable для действий
|
|
10
|
+
actions = this.actions$.asObservable();
|
|
11
|
+
// Методы диспетчеризации действий с типизацией
|
|
12
|
+
dispatch = {};
|
|
13
|
+
// Watcher'ы для реактивной подписки на изменения
|
|
14
|
+
watchers = {};
|
|
15
|
+
// Ссылка на хранилище
|
|
16
|
+
storage;
|
|
17
|
+
// Только один массив для хранения инициализированных middleware
|
|
18
|
+
middlewareFunctions = [];
|
|
19
|
+
// API для инициализации middleware
|
|
20
|
+
middlewareAPI;
|
|
21
|
+
/**
|
|
22
|
+
* Создает новый экземпляр Dispatcher
|
|
23
|
+
*/
|
|
24
|
+
constructor(options) {
|
|
25
|
+
this.options = options;
|
|
26
|
+
this.storage = options.storage;
|
|
27
|
+
// Создаем API для middleware сразу
|
|
28
|
+
this.middlewareAPI = {
|
|
29
|
+
getState: () => this.storage.getState(),
|
|
30
|
+
dispatch: async (action) => {
|
|
31
|
+
this.actions$.next(action);
|
|
32
|
+
return action.payload;
|
|
33
|
+
},
|
|
34
|
+
storage: this.storage,
|
|
35
|
+
actions$: this.actions,
|
|
36
|
+
actions: this.dispatch,
|
|
37
|
+
watchers: this.watchers,
|
|
38
|
+
findActionByType: (type) => this.findActionByType(type),
|
|
39
|
+
findWatcherByType: (type) => this.findWatcherByType(type),
|
|
40
|
+
};
|
|
41
|
+
// Если есть middleware в options, добавляем их
|
|
42
|
+
if (options.middlewares && options.middlewares.length > 0) {
|
|
43
|
+
this.use(...options.middlewares);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Добавляет middleware в цепочку обработки
|
|
48
|
+
*/
|
|
49
|
+
use(...middlewares) {
|
|
50
|
+
// Инициализируем каждый middleware и добавляем только инициализированную версию
|
|
51
|
+
for (let i = 0; i < middlewares.length; i++) {
|
|
52
|
+
try {
|
|
53
|
+
// Инициализируем middleware с API
|
|
54
|
+
const initializedMiddleware = middlewares[i](this.middlewareAPI);
|
|
55
|
+
this.middlewareFunctions.push(initializedMiddleware);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error(`Error initializing middleware [${i}]:`, error);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Получает все действия с улучшенной типизацией
|
|
65
|
+
*/
|
|
66
|
+
getActions() {
|
|
67
|
+
return this.dispatch;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Получает типизированные действия диспетчера
|
|
71
|
+
*/
|
|
72
|
+
getTypedDispatch() {
|
|
73
|
+
return this.dispatch;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Получает типизированные watcher'ы
|
|
77
|
+
*/
|
|
78
|
+
getTypedWatchers() {
|
|
79
|
+
return this.watchers;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Находит действие по типу
|
|
83
|
+
*/
|
|
84
|
+
findActionByType(actionType) {
|
|
85
|
+
return Object.values(this.dispatch).find((action) => {
|
|
86
|
+
return action.actionType.split(`[${this.storage.name}]`)[1] === actionType;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Находит наблюдатель по типу
|
|
91
|
+
*/
|
|
92
|
+
findWatcherByType(actionType) {
|
|
93
|
+
return Object.values(this.watchers).find((watcher) => watcher.actionType === actionType);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Создает действие
|
|
97
|
+
*/
|
|
98
|
+
createAction(actionConfig, executionOptions) {
|
|
99
|
+
const actionType = `[${this.storage.name}]${actionConfig.type}`;
|
|
100
|
+
// Для мемоизации храним последние аргументы и результат
|
|
101
|
+
let lastArgs = null;
|
|
102
|
+
let lastResult = null;
|
|
103
|
+
// Создаем функцию диспетчеризации
|
|
104
|
+
const dispatchFn = async (params) => {
|
|
105
|
+
const args = [params];
|
|
106
|
+
// Проверяем мемоизацию
|
|
107
|
+
if (executionOptions?.memoize && lastArgs && lastResult) {
|
|
108
|
+
if (executionOptions.memoize(args, lastArgs, lastResult)) {
|
|
109
|
+
return lastResult;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Создаем объект действия
|
|
113
|
+
const actionObject = {
|
|
114
|
+
type: actionType,
|
|
115
|
+
meta: actionConfig.meta,
|
|
116
|
+
};
|
|
117
|
+
// Применяем middleware цепочку
|
|
118
|
+
let result;
|
|
119
|
+
if (this.middlewareFunctions.length > 0) {
|
|
120
|
+
// Базовая функция выполнения действия
|
|
121
|
+
// Строим цепочку middleware в обратном порядке
|
|
122
|
+
let chain = async (action) => {
|
|
123
|
+
if (executionOptions?.worker) {
|
|
124
|
+
return this.executeInWorker(executionOptions.worker, actionType, args, actionConfig.action);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
return Promise.resolve(actionConfig.action(params));
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
// Проходим по middleware в обратном порядке
|
|
131
|
+
// Важно: сначала создаем всю цепочку, затем выполняем
|
|
132
|
+
for (let i = this.middlewareFunctions.length - 1; i >= 0; i--) {
|
|
133
|
+
const currentMiddleware = this.middlewareFunctions[i];
|
|
134
|
+
const nextChain = chain; // Сохраняем предыдущую цепочку
|
|
135
|
+
// Создаем новую цепочку, которая вызывает текущий middleware,
|
|
136
|
+
// передавая предыдущую цепочку как функцию next
|
|
137
|
+
chain = async (action) => {
|
|
138
|
+
// Создаем функцию next для передачи в middleware
|
|
139
|
+
const next = async (nextAction) => nextChain(nextAction);
|
|
140
|
+
// Получаем обработчик действия и сразу вызываем его
|
|
141
|
+
return currentMiddleware(next)(action);
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
// Выполняем действие через цепочку middleware
|
|
145
|
+
result = await chain(actionObject);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// Выполняем действие напрямую без middleware
|
|
149
|
+
if (executionOptions?.worker) {
|
|
150
|
+
result = await this.executeInWorker(executionOptions.worker, actionType, args, actionConfig.action);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
result = await actionConfig.action(params);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Обновляем объект действия результатом
|
|
157
|
+
actionObject.payload = result;
|
|
158
|
+
// Сохраняем аргументы и результат для мемоизации
|
|
159
|
+
lastArgs = [...args];
|
|
160
|
+
lastResult = result;
|
|
161
|
+
// Отправляем информацию о действии в поток
|
|
162
|
+
this.actions$.next(actionObject);
|
|
163
|
+
return result;
|
|
164
|
+
};
|
|
165
|
+
dispatchFn._type = 'dispatch';
|
|
166
|
+
// Добавляем тип действия как свойство функции
|
|
167
|
+
Object.defineProperty(dispatchFn, 'actionType', {
|
|
168
|
+
value: actionType,
|
|
169
|
+
writable: false,
|
|
170
|
+
enumerable: true,
|
|
171
|
+
});
|
|
172
|
+
// Добавляем метаданные, если они есть
|
|
173
|
+
if (actionConfig.meta) {
|
|
174
|
+
Object.defineProperty(dispatchFn, 'meta', {
|
|
175
|
+
value: actionConfig.meta,
|
|
176
|
+
writable: false,
|
|
177
|
+
enumerable: true,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return dispatchFn;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Создает watcher для отслеживания изменений в хранилище
|
|
184
|
+
*/
|
|
185
|
+
createWatcher(config) {
|
|
186
|
+
// Логика остается без изменений
|
|
187
|
+
const actionType = `[${this.storage.name}]${config.type}`;
|
|
188
|
+
// Создаем Subject для этого watcher'а
|
|
189
|
+
const subject = new Subject();
|
|
190
|
+
// Предыдущее значение для сравнения
|
|
191
|
+
let prevValue;
|
|
192
|
+
// Подписываемся на изменения состояния
|
|
193
|
+
const unsubscribe = this.storage.subscribe(config.selector, (value) => {
|
|
194
|
+
// Проверяем, нужно ли генерировать событие
|
|
195
|
+
if (!config.shouldTrigger || config.shouldTrigger(prevValue, value)) {
|
|
196
|
+
// Создаем действие
|
|
197
|
+
const action = {
|
|
198
|
+
type: actionType,
|
|
199
|
+
payload: value,
|
|
200
|
+
meta: config.meta,
|
|
201
|
+
};
|
|
202
|
+
// Отправляем в основной поток действий
|
|
203
|
+
this.actions$.next(action);
|
|
204
|
+
// Отправляем в поток этого watcher'а
|
|
205
|
+
subject.next(action);
|
|
206
|
+
// Обновляем предыдущее значение
|
|
207
|
+
prevValue = value;
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
// Создаем функцию watcher'а
|
|
211
|
+
const watcherFn = () => subject.asObservable();
|
|
212
|
+
watcherFn._type = 'watchers';
|
|
213
|
+
// Добавляем свойства
|
|
214
|
+
Object.defineProperty(watcherFn, 'actionType', {
|
|
215
|
+
value: actionType,
|
|
216
|
+
writable: false,
|
|
217
|
+
enumerable: true,
|
|
218
|
+
});
|
|
219
|
+
if (config.meta) {
|
|
220
|
+
Object.defineProperty(watcherFn, 'meta', {
|
|
221
|
+
value: config.meta,
|
|
222
|
+
writable: false,
|
|
223
|
+
enumerable: true,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
// Добавляем метод для отписки
|
|
227
|
+
Object.defineProperty(watcherFn, 'unsubscribe', {
|
|
228
|
+
value: unsubscribe,
|
|
229
|
+
writable: false,
|
|
230
|
+
enumerable: true,
|
|
231
|
+
});
|
|
232
|
+
//@ts-ignore
|
|
233
|
+
return watcherFn;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Выполняет действие в worker
|
|
237
|
+
*/
|
|
238
|
+
async executeInWorker(worker, actionType, args, fallbackAction) {
|
|
239
|
+
// Логика остается без изменений
|
|
240
|
+
return new Promise((resolve, reject) => {
|
|
241
|
+
const requestId = `${actionType}_${Date.now()}_${Math.random()}`;
|
|
242
|
+
const handleMessage = (event) => {
|
|
243
|
+
if (event.data.requestId === requestId) {
|
|
244
|
+
worker.removeEventListener('message', handleMessage);
|
|
245
|
+
if (event.data.error) {
|
|
246
|
+
reject(new Error(event.data.error));
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
resolve(event.data.result);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
worker.addEventListener('message', handleMessage);
|
|
254
|
+
worker.postMessage({
|
|
255
|
+
type: actionType,
|
|
256
|
+
args,
|
|
257
|
+
requestId,
|
|
258
|
+
});
|
|
259
|
+
// Опционально: таймаут
|
|
260
|
+
setTimeout(() => {
|
|
261
|
+
worker.removeEventListener('message', handleMessage);
|
|
262
|
+
reject(new Error(`Worker execution timeout for action: ${actionType}`));
|
|
263
|
+
}, 30000); // 30 секунд таймаут
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Функция для создания типизированного диспетчера
|
|
269
|
+
*/
|
|
270
|
+
export function createDispatcher(options, actionsSetup) {
|
|
271
|
+
// Создаем экземпляр диспетчера
|
|
272
|
+
const dispatcher = new Dispatcher(options);
|
|
273
|
+
// Вызываем функцию настройки действий с обновленной структурой аргументов
|
|
274
|
+
const actions = actionsSetup(options.storage, {
|
|
275
|
+
createAction: (actionConfig, executionOptions) => dispatcher.createAction(actionConfig, executionOptions),
|
|
276
|
+
createWatcher: (config) => dispatcher.createWatcher(config),
|
|
277
|
+
});
|
|
278
|
+
// Регистрируем все созданные объекты в соответствующих коллекциях
|
|
279
|
+
for (const [key, fn] of Object.entries(actions)) {
|
|
280
|
+
if (typeof fn === 'function') {
|
|
281
|
+
const type = fn._type;
|
|
282
|
+
// @ts-ignore
|
|
283
|
+
dispatcher[type][key] = fn;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return dispatcher;
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=dispatcher.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatcher.module.js","sourceRoot":"","sources":["../../../src/reactive/dispatcher/dispatcher.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactive/dispatcher/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reactive/dispatcher/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/reactive/dispatcher/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/reactive/dispatcher/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { EnhancedMiddleware } from '../dispatcher.module';
|
|
2
|
+
interface LoggerTranslations {
|
|
3
|
+
action: string;
|
|
4
|
+
prevState: string;
|
|
5
|
+
nextState: string;
|
|
6
|
+
duration: string;
|
|
7
|
+
error: string;
|
|
8
|
+
diff: string;
|
|
9
|
+
changesCount: string;
|
|
10
|
+
showFullState: string;
|
|
11
|
+
}
|
|
12
|
+
interface LoggerColors {
|
|
13
|
+
title: string;
|
|
14
|
+
prevState: string;
|
|
15
|
+
fullState: string;
|
|
16
|
+
action: string;
|
|
17
|
+
nextState: string;
|
|
18
|
+
error: string;
|
|
19
|
+
diff: string;
|
|
20
|
+
}
|
|
21
|
+
interface LoggerOptions {
|
|
22
|
+
collapsed?: boolean;
|
|
23
|
+
duration?: boolean;
|
|
24
|
+
diff?: boolean;
|
|
25
|
+
showFullState?: boolean;
|
|
26
|
+
translations?: Partial<LoggerTranslations>;
|
|
27
|
+
colors?: Partial<LoggerColors>;
|
|
28
|
+
}
|
|
29
|
+
export declare const loggerDispatcherMiddleware: <State extends Record<string, any>>(options?: LoggerOptions) => EnhancedMiddleware<State>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=logger.middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.middleware.d.ts","sourceRoot":"","sources":["../../../../src/reactive/dispatcher/middlewares/logger.middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC/B;AA4CD,eAAO,MAAM,0BAA0B,GAAI,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAS,aAAkB,KAAG,kBAAkB,CAAC,KAAK,CAuGnI,CAAA"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// Функция для вычисления разницы между двумя объектами состояния
|
|
2
|
+
function getStateDiff(prevState, nextState) {
|
|
3
|
+
const diff = {};
|
|
4
|
+
// Проверяем изменения в свойствах верхнего уровня
|
|
5
|
+
const allKeys = [...new Set([...Object.keys(prevState), ...Object.keys(nextState)])];
|
|
6
|
+
allKeys.forEach((key) => {
|
|
7
|
+
// Если ключ существует в обоих состояниях
|
|
8
|
+
if (key in prevState && key in nextState) {
|
|
9
|
+
// Если это объекты, рекурсивно проверяем их
|
|
10
|
+
if (typeof prevState[key] === 'object' &&
|
|
11
|
+
prevState[key] !== null &&
|
|
12
|
+
typeof nextState[key] === 'object' &&
|
|
13
|
+
nextState[key] !== null &&
|
|
14
|
+
!Array.isArray(prevState[key]) &&
|
|
15
|
+
!Array.isArray(nextState[key])) {
|
|
16
|
+
const nestedDiff = getStateDiff(prevState[key], nextState[key]);
|
|
17
|
+
if (Object.keys(nestedDiff).length > 0) {
|
|
18
|
+
diff[key] = nestedDiff;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// Для массивов и примитивов просто сравниваем значения
|
|
22
|
+
else if (JSON.stringify(prevState[key]) !== JSON.stringify(nextState[key])) {
|
|
23
|
+
diff[key] = { PREV: prevState[key], NEXT: nextState[key] };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Если ключ существует только в предыдущем состоянии
|
|
27
|
+
else if (key in prevState) {
|
|
28
|
+
diff[key] = { PREV: prevState[key], NEXT: undefined };
|
|
29
|
+
}
|
|
30
|
+
// Если ключ существует только в новом состоянии
|
|
31
|
+
else {
|
|
32
|
+
diff[key] = { PREV: undefined, NEXT: nextState[key] };
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return diff;
|
|
36
|
+
}
|
|
37
|
+
export const loggerDispatcherMiddleware = (options = {}) => {
|
|
38
|
+
const defaultTranslations = {
|
|
39
|
+
action: 'Действие',
|
|
40
|
+
prevState: 'Предыдущее состояние',
|
|
41
|
+
nextState: 'Следующее состояние',
|
|
42
|
+
duration: 'Длительность',
|
|
43
|
+
error: 'Ошибка в действии',
|
|
44
|
+
diff: 'Изменения',
|
|
45
|
+
changesCount: 'Количество изменений',
|
|
46
|
+
showFullState: 'Полное состояние',
|
|
47
|
+
};
|
|
48
|
+
const defaultOptions = {
|
|
49
|
+
collapsed: false,
|
|
50
|
+
duration: true,
|
|
51
|
+
diff: false,
|
|
52
|
+
showFullState: true, // Показывать полное состояние по умолчанию
|
|
53
|
+
translations: defaultTranslations,
|
|
54
|
+
colors: {
|
|
55
|
+
title: '#3498db',
|
|
56
|
+
prevState: '#9E9E9E',
|
|
57
|
+
fullState: '#008a15',
|
|
58
|
+
action: '#03A9F4',
|
|
59
|
+
nextState: '#4CAF50',
|
|
60
|
+
error: '#F20404',
|
|
61
|
+
diff: '#9C27B0',
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
// Объединяем пользовательские настройки с настройками по умолчанию
|
|
65
|
+
const mergedOptions = {
|
|
66
|
+
...defaultOptions,
|
|
67
|
+
...options,
|
|
68
|
+
// Объединяем переводы отдельно, чтобы позволить частичное переопределение
|
|
69
|
+
translations: {
|
|
70
|
+
...defaultTranslations,
|
|
71
|
+
...(options.translations || {}),
|
|
72
|
+
},
|
|
73
|
+
// Объединяем цвета отдельно, чтобы позволить частичное переопределение
|
|
74
|
+
colors: {
|
|
75
|
+
...defaultOptions.colors,
|
|
76
|
+
...(options.colors || {}),
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
const { collapsed, duration, colors, translations } = mergedOptions;
|
|
80
|
+
return (api) => (next) => async (action) => {
|
|
81
|
+
// Собираем информацию перед выполнением
|
|
82
|
+
const started = Date.now();
|
|
83
|
+
const prevState = await api.getState();
|
|
84
|
+
// Выполняем действие без группировки логов
|
|
85
|
+
try {
|
|
86
|
+
// Выполняем действие
|
|
87
|
+
const result = await next(action);
|
|
88
|
+
// Собираем информацию после выполнения
|
|
89
|
+
const nextState = await api.getState();
|
|
90
|
+
const ended = Date.now();
|
|
91
|
+
const time = ended - started;
|
|
92
|
+
// Теперь выводим всю информацию в группе
|
|
93
|
+
const title = `${action.type}`;
|
|
94
|
+
const groupMethod = collapsed ? console.groupCollapsed : console.group;
|
|
95
|
+
groupMethod(`%c ${title}`, `color: ${colors.title}; font-weight: bold`);
|
|
96
|
+
// Выводим информацию о действии
|
|
97
|
+
console.log(`%c ${translations.action}:`, `color: ${colors.action}; font-weight: bold`, action);
|
|
98
|
+
// Если включена опция diff, вычисляем и показываем изменения
|
|
99
|
+
if (mergedOptions.diff) {
|
|
100
|
+
const stateDiff = getStateDiff(prevState, nextState);
|
|
101
|
+
const changesCount = Object.keys(stateDiff).length;
|
|
102
|
+
console.log(`%c ${translations.diff} (${translations.changesCount}: ${changesCount}):`, `color: ${colors.diff}; font-weight: bold`, stateDiff);
|
|
103
|
+
}
|
|
104
|
+
// Если showFullState включен, показываем полные состояния
|
|
105
|
+
if (mergedOptions.showFullState) {
|
|
106
|
+
// Создаем подгруппу для полного состояния
|
|
107
|
+
console.groupCollapsed(`%c ${translations.showFullState}`, `color: ${colors.fullState}; font-weight: bold`);
|
|
108
|
+
console.log(`%c ${translations.prevState}:`, `color: ${colors.prevState}; font-weight: bold`, prevState);
|
|
109
|
+
console.log(`%c ${translations.nextState}:`, `color: ${colors.nextState}; font-weight: bold`, nextState);
|
|
110
|
+
console.groupEnd();
|
|
111
|
+
}
|
|
112
|
+
if (duration) {
|
|
113
|
+
console.log(`%c ${translations.duration}: %c ${time}ms`, 'font-weight: bold', 'color: #4CAF50');
|
|
114
|
+
}
|
|
115
|
+
console.groupEnd();
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
// В случае ошибки логируем её отдельно, не в группе
|
|
120
|
+
console.error(`%c ${translations.error}:`, `color: ${colors.error}; font-weight: bold`, action.type, error);
|
|
121
|
+
// Пробрасываем ошибку дальше
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=logger.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.middleware.js","sourceRoot":"","sources":["../../../../src/reactive/dispatcher/middlewares/logger.middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { Observable, OperatorFunction } from 'rxjs';
|
|
2
|
+
import { IStorage } from '../../core';
|
|
3
|
+
import { Action, ActionsResult, Dispatcher, DispatchFunction, ExtractResultType, WatcherFunction } from '../dispatcher';
|
|
4
|
+
import { ChunkRequestConsistent, ChunkRequestParallel } from './utils';
|
|
5
|
+
/**
|
|
6
|
+
* Тип действия с типизированным payload
|
|
7
|
+
*/
|
|
8
|
+
export interface TypedAction<P> extends Action<P> {
|
|
9
|
+
type: string;
|
|
10
|
+
payload: P;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Тип для внешних состояний
|
|
14
|
+
*/
|
|
15
|
+
export type ExternalStates = Record<string, Observable<any>>;
|
|
16
|
+
/**
|
|
17
|
+
* Тип для базового эффекта без доступа к состоянию
|
|
18
|
+
*/
|
|
19
|
+
export type EffectBase<TDispatchers extends Record<string, Dispatcher<any, any>> = Record<string, never>, TServices extends Record<string, any> = Record<string, never>> = (action$: Observable<Action>, dispatchers: TDispatchers, services: TServices) => Observable<unknown>;
|
|
20
|
+
/**
|
|
21
|
+
* Тип для эффекта с доступом к состоянию и конфигурации - это основной тип, который используется по умолчанию
|
|
22
|
+
*/
|
|
23
|
+
export type Effect<TState extends Record<string, any> = any, TDispatchers extends Record<string, Dispatcher<any, any>> = Record<string, never>, TServices extends Record<string, any> = Record<string, never>, TConfig extends Record<string, any> = Record<string, never>, TExternalStates extends ExternalStates = Record<string, never>> = (action$: Observable<Action>, state$: Observable<TState>, externalStates: TExternalStates, dispatchers: TDispatchers, services: TServices, config: TConfig) => Observable<unknown>;
|
|
24
|
+
/**
|
|
25
|
+
* Тип для получения типов действий диспетчера
|
|
26
|
+
*/
|
|
27
|
+
export type DispatcherActions<T> = T extends Dispatcher<any, infer A> ? ActionsResult<A> : Record<string, DispatchFunction<any, any>>;
|
|
28
|
+
/**
|
|
29
|
+
* Конфигурация для валидации в validateMap
|
|
30
|
+
*/
|
|
31
|
+
export interface ValidateConfig {
|
|
32
|
+
conditions: boolean[];
|
|
33
|
+
skipAction: (() => any) | any | ((() => any) | any)[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Утилиты для запросов в validateMap
|
|
37
|
+
*/
|
|
38
|
+
export interface ValidateMapRequestUtils {
|
|
39
|
+
chunkRequest: ChunkRequestParallel;
|
|
40
|
+
chunkRequestConsistent: ChunkRequestConsistent;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Оператор для фильтрации действий по типу с сохранением типа payload
|
|
44
|
+
*/
|
|
45
|
+
export declare function ofType<T extends DispatchFunction<any, any> | WatcherFunction<any>>(actionFn: T): OperatorFunction<Action, TypedAction<T extends WatcherFunction<infer R> ? R : ExtractResultType<T>>>;
|
|
46
|
+
/**
|
|
47
|
+
* Оператор для фильтрации действий по нескольким типам с объединением типов payload
|
|
48
|
+
* @param actionFns Массив функций действий
|
|
49
|
+
*/
|
|
50
|
+
export declare function ofTypes<T extends DispatchFunction<any, any>[]>(actionFns: [...T]): OperatorFunction<Action, TypedAction<ExtractResultType<T[number]>>>;
|
|
51
|
+
/**
|
|
52
|
+
* Оператор для ожидания выполнения всех указанных действий
|
|
53
|
+
* @param actionFns Массив функций действий
|
|
54
|
+
*/
|
|
55
|
+
export declare function ofTypesWaitAll<T extends DispatchFunction<any, any>[]>(actionFns: [...T]): (source$: Observable<Action>) => Observable<{ [K in keyof T]: TypedAction<ExtractResultType<T[K]>>; }>;
|
|
56
|
+
/**
|
|
57
|
+
* Оператор selectorMap для выбора частей состояния с помощью селекторов
|
|
58
|
+
* @param state$ Поток состояния
|
|
59
|
+
* @param selectors Селекторы для выбора частей состояния
|
|
60
|
+
*/
|
|
61
|
+
export declare function selectorMap<TAction, TState, TResults extends any[]>(state$: Observable<TState>, ...selectors: {
|
|
62
|
+
[K in keyof TResults]: (state: TState) => TResults[K];
|
|
63
|
+
}): OperatorFunction<TAction, [TAction, TResults]>;
|
|
64
|
+
/**
|
|
65
|
+
* Оператор validateMap для валидации данных и условного вызова API
|
|
66
|
+
*/
|
|
67
|
+
export declare function validateMap<T, TResult = any>({ validator, apiCall, }: {
|
|
68
|
+
validator?: (value: T) => ValidateConfig;
|
|
69
|
+
apiCall: (value: T, utils: ValidateMapRequestUtils) => Observable<TResult>;
|
|
70
|
+
}): OperatorFunction<T, any>;
|
|
71
|
+
/**
|
|
72
|
+
* Класс для управления эффектами с поддержкой доступа к состоянию и конфигурации
|
|
73
|
+
* Основной класс, который следует использовать
|
|
74
|
+
*/
|
|
75
|
+
export declare class EffectsModule<TState extends Record<string, any> = any, TDispatchers extends Record<string, Dispatcher<any, any>> = Record<string, never>, TServices extends Record<string, any> = Record<string, never>, TConfig extends Record<string, any> = Record<string, never>, TExternalStates extends ExternalStates = Record<string, never>> {
|
|
76
|
+
private storage;
|
|
77
|
+
private externalStates;
|
|
78
|
+
private dispatchers;
|
|
79
|
+
private services;
|
|
80
|
+
private config;
|
|
81
|
+
private effects;
|
|
82
|
+
private subscriptions;
|
|
83
|
+
private running;
|
|
84
|
+
private action$;
|
|
85
|
+
/**
|
|
86
|
+
* Поток состояния
|
|
87
|
+
*/
|
|
88
|
+
readonly state$: Observable<TState>;
|
|
89
|
+
/**
|
|
90
|
+
* Создает модуль эффектов с доступом к состоянию, внешним состояниям и конфигурации
|
|
91
|
+
* @param storage Хранилище состояния
|
|
92
|
+
* @param externalStates Внешние состояния
|
|
93
|
+
* @param dispatchers Объект с диспетчерами
|
|
94
|
+
* @param services Объект с сервисами
|
|
95
|
+
* @param config Глобальная конфигурация для всех эффектов
|
|
96
|
+
*/
|
|
97
|
+
constructor(storage: IStorage<TState>, externalStates: TExternalStates | undefined, dispatchers: TDispatchers, services?: TServices, config?: TConfig);
|
|
98
|
+
/**
|
|
99
|
+
* Подписывается на действия от всех диспетчеров
|
|
100
|
+
*/
|
|
101
|
+
private subscribeToDispatchers;
|
|
102
|
+
add(effect: Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>): this;
|
|
103
|
+
/**
|
|
104
|
+
* Добавляет несколько эффектов
|
|
105
|
+
* @param effects Эффекты для добавления
|
|
106
|
+
* @returns Текущий модуль
|
|
107
|
+
*/
|
|
108
|
+
addEffects(effects: Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>[]): this;
|
|
109
|
+
/**
|
|
110
|
+
* Запускает все эффекты
|
|
111
|
+
* @returns Текущий модуль
|
|
112
|
+
*/
|
|
113
|
+
start(): this;
|
|
114
|
+
/**
|
|
115
|
+
* Останавливает все эффекты
|
|
116
|
+
* @returns Текущий модуль
|
|
117
|
+
*/
|
|
118
|
+
stop(): this;
|
|
119
|
+
/**
|
|
120
|
+
* Подписывается на конкретный эффект
|
|
121
|
+
* @param effect Эффект для подписки
|
|
122
|
+
*/
|
|
123
|
+
private subscribeToEffect;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Вспомогательная функция для создания типизированного эффекта без состояния
|
|
127
|
+
* @deprecated Используйте createEffect вместо этого
|
|
128
|
+
*/
|
|
129
|
+
export declare function createEffectBase<TDispatchers extends Record<string, Dispatcher<any, any>>, TServices extends Record<string, any>>(effect: EffectBase<TDispatchers, TServices>): EffectBase<TDispatchers, TServices>;
|
|
130
|
+
/**
|
|
131
|
+
* Вспомогательная функция для создания типизированного эффекта с состоянием и конфигурацией
|
|
132
|
+
*/
|
|
133
|
+
export declare function createEffect<TState extends Record<string, any>, TDispatchers extends Record<string, Dispatcher<any, any>>, TServices extends Record<string, any>, TConfig extends Record<string, any> = Record<string, never>, TExternalStates extends ExternalStates = Record<string, never>>(effect: Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>): Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>;
|
|
134
|
+
/**
|
|
135
|
+
* Объединяет несколько эффектов в один
|
|
136
|
+
* @param effects Эффекты для объединения
|
|
137
|
+
* @returns Объединенный эффект
|
|
138
|
+
*/
|
|
139
|
+
export declare function combineEffects<TState extends Record<string, any>, TDispatchers extends Record<string, Dispatcher<any, any>>, TServices extends Record<string, any>, TConfig extends Record<string, any> = Record<string, never>, TExternalStates extends ExternalStates = Record<string, never>>(...effects: Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>[]): Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>;
|
|
140
|
+
//# sourceMappingURL=effects.module.d.ts.map
|