synapse-storage 3.0.19 → 4.0.1
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 +28 -168
- 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 +19 -0
- package/dist/_utils/deepMerge.util.js.map +1 -0
- package/dist/_utils/error-handling.util.d.ts +50 -0
- package/dist/_utils/error-handling.util.d.ts.map +1 -0
- package/dist/_utils/error-handling.util.js +67 -0
- package/dist/_utils/error-handling.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 +6 -0
- package/dist/_utils/index.d.ts.map +1 -0
- package/dist/_utils/index.js +13 -0
- package/dist/_utils/index.js.map +1 -0
- package/dist/_utils/logger-console.util.d.ts +9 -0
- package/dist/_utils/logger-console.util.d.ts.map +1 -0
- package/dist/_utils/logger-console.util.js +14 -0
- package/dist/_utils/logger-console.util.js.map +1 -0
- package/dist/api/api.module.d.ts +46 -0
- package/dist/api/api.module.d.ts.map +1 -0
- package/dist/api/api.module.js +121 -0
- package/dist/api/api.module.js.map +1 -0
- package/dist/api/components/endpoint.d.ts +57 -0
- package/dist/api/components/endpoint.d.ts.map +1 -0
- package/dist/api/components/endpoint.js +385 -0
- package/dist/api/components/endpoint.js.map +1 -0
- package/dist/api/components/query-storage.d.ts +100 -0
- package/dist/api/components/query-storage.d.ts.map +1 -0
- package/dist/api/components/query-storage.js +293 -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 +90 -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 +11 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/types/api.interface.d.ts +126 -0
- package/dist/api/types/api.interface.d.ts.map +1 -0
- package/dist/api/types/api.interface.js +15 -0
- package/dist/api/types/api.interface.js.map +1 -0
- package/dist/api/types/endpoint.interface.d.ts +118 -0
- package/dist/api/types/endpoint.interface.d.ts.map +1 -0
- package/dist/api/types/endpoint.interface.js +6 -0
- package/dist/api/types/endpoint.interface.js.map +1 -0
- package/dist/api/types/query.interface.d.ts +85 -0
- package/dist/api/types/query.interface.d.ts.map +1 -0
- package/dist/api/types/query.interface.js +6 -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 +40 -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 +61 -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 +242 -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 +102 -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 +23 -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 +7 -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 +5 -0
- package/dist/core/selector/index.js.map +1 -0
- package/dist/{selector.interface-CA5y-kD_.d.ts → core/selector/selector.interface.d.ts} +41 -8
- package/dist/core/selector/selector.interface.d.ts.map +1 -0
- package/dist/core/selector/selector.interface.js +7 -0
- package/dist/core/selector/selector.interface.js.map +1 -0
- package/dist/core/selector/selector.module.d.ts +36 -0
- package/dist/core/selector/selector.module.d.ts.map +1 -0
- package/dist/core/selector/selector.module.js +412 -0
- package/dist/core/selector/selector.module.js.map +1 -0
- package/dist/core/storage/adapters/async-base-storage.service.d.ts +49 -0
- package/dist/core/storage/adapters/async-base-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/async-base-storage.service.js +505 -0
- package/dist/core/storage/adapters/async-base-storage.service.js.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service.d.ts +89 -0
- package/dist/core/storage/adapters/indexed-DB.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service.js +596 -0
- package/dist/core/storage/adapters/indexed-DB.service.js.map +1 -0
- package/dist/core/storage/adapters/local-storage.service.d.ts +23 -0
- package/dist/core/storage/adapters/local-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/local-storage.service.js +111 -0
- package/dist/core/storage/adapters/local-storage.service.js.map +1 -0
- package/dist/core/storage/adapters/memory-storage.service.d.ts +24 -0
- package/dist/core/storage/adapters/memory-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/memory-storage.service.js +110 -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 +42 -0
- package/dist/core/storage/adapters/path.utils.js.map +1 -0
- package/dist/core/storage/adapters/storage-core.d.ts +61 -0
- package/dist/core/storage/adapters/storage-core.d.ts.map +1 -0
- package/dist/core/storage/adapters/storage-core.js +221 -0
- package/dist/core/storage/adapters/storage-core.js.map +1 -0
- package/dist/core/storage/adapters/sync-base-storage.service.d.ts +56 -0
- package/dist/core/storage/adapters/sync-base-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/sync-base-storage.service.js +481 -0
- package/dist/core/storage/adapters/sync-base-storage.service.js.map +1 -0
- package/dist/core/storage/index.d.ts +16 -0
- package/dist/core/storage/index.d.ts.map +1 -0
- package/dist/core/storage/index.js +38 -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 +197 -0
- package/dist/core/storage/middlewares/broadcast.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/index.d.ts +9 -0
- package/dist/core/storage/middlewares/index.d.ts.map +1 -0
- package/dist/core/storage/middlewares/index.js +17 -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 +108 -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 +43 -0
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/sync-broadcast.middleware.d.ts +9 -0
- package/dist/core/storage/middlewares/sync-broadcast.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/sync-broadcast.middleware.js +177 -0
- package/dist/core/storage/middlewares/sync-broadcast.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/sync-storage-batching.middleware.d.ts +6 -0
- package/dist/core/storage/middlewares/sync-storage-batching.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/sync-storage-batching.middleware.js +56 -0
- package/dist/core/storage/middlewares/sync-storage-batching.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.d.ts +7 -0
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.js +39 -0
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.js.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.interface.d.ts +101 -0
- package/dist/core/storage/modules/plugin/plugin.interface.d.ts.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.interface.js +8 -0
- package/dist/core/storage/modules/plugin/plugin.interface.js.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.service.d.ts +49 -0
- package/dist/core/storage/modules/plugin/plugin.service.d.ts.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.service.js +406 -0
- package/dist/core/storage/modules/plugin/plugin.service.js.map +1 -0
- package/dist/core/storage/modules/singleton/mixin.util.d.ts +6 -0
- package/dist/core/storage/modules/singleton/mixin.util.d.ts.map +1 -0
- package/dist/core/storage/modules/singleton/mixin.util.js +30 -0
- package/dist/core/storage/modules/singleton/mixin.util.js.map +1 -0
- package/dist/core/storage/modules/singleton/models.d.ts +143 -0
- package/dist/core/storage/modules/singleton/models.d.ts.map +1 -0
- package/dist/core/storage/modules/singleton/models.js +60 -0
- package/dist/core/storage/modules/singleton/models.js.map +1 -0
- package/dist/core/storage/modules/singleton/singleton.util.d.ts +36 -0
- package/dist/core/storage/modules/singleton/singleton.util.d.ts.map +1 -0
- package/dist/core/storage/modules/singleton/singleton.util.js +216 -0
- package/dist/core/storage/modules/singleton/singleton.util.js.map +1 -0
- package/dist/core/storage/storage.interface.d.ts +168 -0
- package/dist/core/storage/storage.interface.d.ts.map +1 -0
- package/dist/core/storage/storage.interface.js +23 -0
- package/dist/core/storage/storage.interface.js.map +1 -0
- package/dist/core/storage/utils/broadcast.util.d.ts +49 -0
- package/dist/core/storage/utils/broadcast.util.d.ts.map +1 -0
- package/dist/core/storage/utils/broadcast.util.js +141 -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 +54 -0
- package/dist/core/storage/utils/cache.util.js.map +1 -0
- package/dist/core/storage/utils/middleware-module.d.ts +94 -0
- package/dist/core/storage/utils/middleware-module.d.ts.map +1 -0
- package/dist/core/storage/utils/middleware-module.js +258 -0
- package/dist/core/storage/utils/middleware-module.js.map +1 -0
- package/dist/core/storage/utils/path-selector.util.d.ts +15 -0
- package/dist/core/storage/utils/path-selector.util.d.ts.map +1 -0
- package/dist/core/storage/utils/path-selector.util.js +58 -0
- package/dist/core/storage/utils/path-selector.util.js.map +1 -0
- package/dist/core/storage/utils/state-diff.util.d.ts +14 -0
- package/dist/core/storage/utils/state-diff.util.d.ts.map +1 -0
- package/dist/core/storage/utils/state-diff.util.js +88 -0
- package/dist/core/storage/utils/state-diff.util.js.map +1 -0
- package/dist/core/storage/utils/storage-factory.util.d.ts +21 -0
- package/dist/core/storage/utils/storage-factory.util.d.ts.map +1 -0
- package/dist/core/storage/utils/storage-factory.util.js +40 -0
- package/dist/core/storage/utils/storage-factory.util.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 +24 -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/index.d.ts +10 -12
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -0
- package/dist/react/hooks/index.d.ts +5 -0
- package/dist/react/hooks/index.d.ts.map +1 -0
- package/dist/react/hooks/index.js +11 -0
- package/dist/react/hooks/index.js.map +1 -0
- package/dist/react/hooks/useCreateStorage.d.ts +39 -0
- package/dist/react/hooks/useCreateStorage.d.ts.map +1 -0
- package/dist/react/hooks/useCreateStorage.js +137 -0
- package/dist/react/hooks/useCreateStorage.js.map +1 -0
- package/dist/react/hooks/useSelector.d.ts +21 -0
- package/dist/react/hooks/useSelector.d.ts.map +1 -0
- package/dist/react/hooks/useSelector.js +56 -0
- package/dist/react/hooks/useSelector.js.map +1 -0
- package/dist/react/hooks/useStorage.d.ts +39 -0
- package/dist/react/hooks/useStorage.d.ts.map +1 -0
- package/dist/react/hooks/useStorage.js +78 -0
- package/dist/react/hooks/useStorage.js.map +1 -0
- package/dist/react/hooks/useStorageSubscribe.d.ts +16 -0
- package/dist/react/hooks/useStorageSubscribe.d.ts.map +1 -0
- package/dist/react/hooks/useStorageSubscribe.js +55 -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 +7 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/utils/awaitSynapse.d.ts +34 -0
- package/dist/react/utils/awaitSynapse.d.ts.map +1 -0
- package/dist/react/utils/awaitSynapse.js +87 -0
- package/dist/react/utils/awaitSynapse.js.map +1 -0
- package/dist/react/utils/createSynapseCtx.d.ts +33 -0
- package/dist/react/utils/createSynapseCtx.d.ts.map +1 -0
- package/dist/react/utils/createSynapseCtx.js +139 -0
- package/dist/react/utils/createSynapseCtx.js.map +1 -0
- package/dist/react/utils/index.d.ts +3 -0
- package/dist/react/utils/index.d.ts.map +1 -0
- package/dist/react/utils/index.js +9 -0
- package/dist/react/utils/index.js.map +1 -0
- package/dist/reactive/dispatcher/dispatcher.module.d.ts +216 -0
- package/dist/reactive/dispatcher/dispatcher.module.d.ts.map +1 -0
- package/dist/reactive/dispatcher/dispatcher.module.js +384 -0
- package/dist/reactive/dispatcher/dispatcher.module.js.map +1 -0
- package/dist/reactive/dispatcher/index.d.ts +4 -0
- package/dist/reactive/dispatcher/index.d.ts.map +1 -0
- package/dist/reactive/dispatcher/index.js +9 -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 +5 -0
- package/dist/reactive/dispatcher/middlewares/index.js.map +1 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts +37 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts.map +1 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.js +188 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.js.map +1 -0
- package/dist/reactive/dispatcher/standalone.d.ts +112 -0
- package/dist/reactive/dispatcher/standalone.d.ts.map +1 -0
- package/dist/reactive/dispatcher/standalone.js +142 -0
- package/dist/reactive/dispatcher/standalone.js.map +1 -0
- package/dist/reactive/effects/effects.module.d.ts +225 -0
- package/dist/reactive/effects/effects.module.d.ts.map +1 -0
- package/dist/reactive/effects/effects.module.js +356 -0
- package/dist/reactive/effects/effects.module.js.map +1 -0
- package/dist/reactive/effects/index.d.ts +4 -0
- package/dist/reactive/effects/index.d.ts.map +1 -0
- package/dist/reactive/effects/index.js +11 -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 +25 -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 +22 -0
- package/dist/reactive/effects/utils/chunkRequestParallel.js.map +1 -0
- package/dist/reactive/effects/utils/fromRequest.d.ts +40 -0
- package/dist/reactive/effects/utils/fromRequest.d.ts.map +1 -0
- package/dist/reactive/effects/utils/fromRequest.js +64 -0
- package/dist/reactive/effects/utils/fromRequest.js.map +1 -0
- package/dist/reactive/effects/utils/index.d.ts +5 -0
- package/dist/reactive/effects/utils/index.d.ts.map +1 -0
- package/dist/reactive/effects/utils/index.js +11 -0
- package/dist/reactive/effects/utils/index.js.map +1 -0
- package/dist/reactive/effects/utils/toObservable.d.ts +23 -0
- package/dist/reactive/effects/utils/toObservable.d.ts.map +1 -0
- package/dist/reactive/effects/utils/toObservable.js +39 -0
- package/dist/reactive/effects/utils/toObservable.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 +7 -0
- package/dist/reactive/index.js.map +1 -0
- package/dist/utils/createEventBus.d.ts +87 -0
- package/dist/utils/createEventBus.d.ts.map +1 -0
- package/dist/utils/createEventBus.js +215 -0
- package/dist/utils/createEventBus.js.map +1 -0
- package/dist/utils/createSynapse/createSynapse.d.ts +9 -0
- package/dist/utils/createSynapse/createSynapse.d.ts.map +1 -0
- package/dist/utils/createSynapse/createSynapse.js +103 -0
- package/dist/utils/createSynapse/createSynapse.js.map +1 -0
- package/dist/utils/createSynapse/index.d.ts +3 -0
- package/dist/utils/createSynapse/index.d.ts.map +1 -0
- package/dist/utils/createSynapse/index.js +6 -0
- package/dist/utils/createSynapse/index.js.map +1 -0
- package/dist/utils/createSynapse/types.d.ts +93 -0
- package/dist/utils/createSynapse/types.d.ts.map +1 -0
- package/dist/utils/createSynapse/types.js +6 -0
- package/dist/utils/createSynapse/types.js.map +1 -0
- package/dist/utils/createSynapse/validate.d.ts +2 -0
- package/dist/utils/createSynapse/validate.d.ts.map +1 -0
- package/dist/utils/createSynapse/validate.js +76 -0
- package/dist/utils/createSynapse/validate.js.map +1 -0
- package/dist/utils/createSynapse/waitForDependencies.d.ts +3 -0
- package/dist/utils/createSynapse/waitForDependencies.d.ts.map +1 -0
- package/dist/utils/createSynapse/waitForDependencies.js +40 -0
- package/dist/utils/createSynapse/waitForDependencies.js.map +1 -0
- package/dist/utils/createSynapseAwaiter.d.ts +46 -0
- package/dist/utils/createSynapseAwaiter.d.ts.map +1 -0
- package/dist/utils/createSynapseAwaiter.js +102 -0
- package/dist/utils/createSynapseAwaiter.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 +12 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +17 -21
- package/dist/api.d.ts +0 -365
- package/dist/api.js +0 -1
- package/dist/core.d.ts +0 -106
- package/dist/core.js +0 -1
- package/dist/createSynapse-vkfKjRob.d.ts +0 -97
- package/dist/dispatcher.module-BOsMHbD5.d.ts +0 -360
- package/dist/react.d.ts +0 -119
- package/dist/react.js +0 -1
- package/dist/reactive.d.ts +0 -35
- package/dist/reactive.js +0 -1
- package/dist/storage.interface-BA_ktyDz.d.ts +0 -591
- package/dist/utils.d.ts +0 -139
- package/dist/utils.js +0 -1
|
@@ -1,591 +0,0 @@
|
|
|
1
|
-
declare class StorageKey {
|
|
2
|
-
private readonly value;
|
|
3
|
-
private readonly isRawKey;
|
|
4
|
-
constructor(value: string, isRawKey?: boolean);
|
|
5
|
-
toString(): string;
|
|
6
|
-
toJSON(): string;
|
|
7
|
-
valueOf(): string;
|
|
8
|
-
isUnparseable(): boolean;
|
|
9
|
-
}
|
|
10
|
-
type StorageKeyType = string | StorageKey;
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Контекст выполнения для плагинов
|
|
14
|
-
* Содержит информацию о текущей операции и хранилище
|
|
15
|
-
*/
|
|
16
|
-
interface PluginContext {
|
|
17
|
-
/** Имя хранилища, к которому применяется плагин */
|
|
18
|
-
storageName: string;
|
|
19
|
-
/** Временная метка выполнения операции (timestamp) */
|
|
20
|
-
timestamp: number;
|
|
21
|
-
/** Дополнительные метаданные операции (могут быть предоставлены хранилищем или другими плагинами) */
|
|
22
|
-
metadata?: Record<string, any>;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Базовый интерфейс для всех плагинов
|
|
26
|
-
* Определяет основные свойства и методы жизненного цикла
|
|
27
|
-
*/
|
|
28
|
-
interface IPlugin {
|
|
29
|
-
/** Уникальное имя плагина */
|
|
30
|
-
name: string;
|
|
31
|
-
/**
|
|
32
|
-
* Метод инициализации плагина
|
|
33
|
-
* Вызывается при добавлении плагина в хранилище или при инициализации хранилища
|
|
34
|
-
*/
|
|
35
|
-
initialize?(): Promise<void>;
|
|
36
|
-
/**
|
|
37
|
-
* Метод уничтожения плагина
|
|
38
|
-
* Вызывается при удалении плагина из хранилища или при уничтожении хранилища
|
|
39
|
-
* Используется для освобождения ресурсов и очистки состояния
|
|
40
|
-
*/
|
|
41
|
-
destroy?(): Promise<void>;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Интерфейс плагина для хранилища данных
|
|
45
|
-
* Определяет хуки для различных операций хранилища
|
|
46
|
-
*/
|
|
47
|
-
interface IStoragePlugin extends IPlugin {
|
|
48
|
-
/**
|
|
49
|
-
* Вызывается перед установкой значения в хранилище
|
|
50
|
-
* Позволяет изменить значение до его сохранения
|
|
51
|
-
*
|
|
52
|
-
* @param value Значение, которое будет сохранено
|
|
53
|
-
* @param context Контекст выполнения операции
|
|
54
|
-
* @returns Модифицированное значение для сохранения
|
|
55
|
-
*/
|
|
56
|
-
onBeforeSet?<T>(value: T, context: PluginContext): Promise<T>;
|
|
57
|
-
/**
|
|
58
|
-
* Вызывается после установки значения в хранилище
|
|
59
|
-
* Позволяет выполнить дополнительные действия или модифицировать результат
|
|
60
|
-
*
|
|
61
|
-
* @param key Ключ, по которому было сохранено значение
|
|
62
|
-
* @param value Сохраненное значение
|
|
63
|
-
* @param context Контекст выполнения операции
|
|
64
|
-
* @returns Финальное значение (может быть модифицировано)
|
|
65
|
-
*/
|
|
66
|
-
onAfterSet?<T>(key: StorageKeyType, value: T, context: PluginContext): Promise<T>;
|
|
67
|
-
/**
|
|
68
|
-
* Вызывается перед получением значения из хранилища
|
|
69
|
-
* Позволяет модифицировать запрашиваемый ключ
|
|
70
|
-
*
|
|
71
|
-
* @param key Ключ, по которому запрашивается значение
|
|
72
|
-
* @param context Контекст выполнения операции
|
|
73
|
-
* @returns Возможно модифицированный ключ для запроса
|
|
74
|
-
*/
|
|
75
|
-
onBeforeGet?(key: StorageKeyType, context: PluginContext): Promise<StorageKeyType>;
|
|
76
|
-
/**
|
|
77
|
-
* Вызывается после получения значения из хранилища
|
|
78
|
-
* Позволяет модифицировать полученное значение
|
|
79
|
-
*
|
|
80
|
-
* @param key Ключ, по которому было запрошено значение
|
|
81
|
-
* @param value Полученное значение (undefined, если значение не найдено)
|
|
82
|
-
* @param context Контекст выполнения операции
|
|
83
|
-
* @returns Финальное значение (может быть модифицировано)
|
|
84
|
-
*/
|
|
85
|
-
onAfterGet?<T>(key: StorageKeyType, value: T | undefined, context: PluginContext): Promise<T | undefined>;
|
|
86
|
-
/**
|
|
87
|
-
* Вызывается перед удалением значения из хранилища
|
|
88
|
-
* Позволяет разрешить или запретить удаление
|
|
89
|
-
*
|
|
90
|
-
* @param key Ключ, по которому будет удалено значение
|
|
91
|
-
* @param context Контекст выполнения операции
|
|
92
|
-
* @returns Булево значение, разрешающее (true) или запрещающее (false) удаление
|
|
93
|
-
*/
|
|
94
|
-
onBeforeDelete?(key: StorageKeyType, context: PluginContext): Promise<boolean>;
|
|
95
|
-
/**
|
|
96
|
-
* Вызывается после удаления значения из хранилища
|
|
97
|
-
* Позволяет выполнить дополнительные действия после удаления
|
|
98
|
-
*
|
|
99
|
-
* @param key Ключ, по которому было удалено значение
|
|
100
|
-
* @param context Контекст выполнения операции
|
|
101
|
-
*/
|
|
102
|
-
onAfterDelete?(key: StorageKeyType, context: PluginContext): Promise<void>;
|
|
103
|
-
/**
|
|
104
|
-
* Вызывается перед очисткой хранилища
|
|
105
|
-
* Позволяет выполнить дополнительные действия перед удалением всех данных
|
|
106
|
-
*
|
|
107
|
-
* @param context Контекст выполнения операции
|
|
108
|
-
*/
|
|
109
|
-
onClear?(context: PluginContext): Promise<void>;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Исполнитель плагинов
|
|
113
|
-
* Отвечает за выполнение хуков плагинов в определенной последовательности
|
|
114
|
-
*/
|
|
115
|
-
interface IPluginExecutor {
|
|
116
|
-
/**
|
|
117
|
-
* Выполняет хуки onBeforeSet всех зарегистрированных плагинов
|
|
118
|
-
*
|
|
119
|
-
* @param value Исходное значение
|
|
120
|
-
* @param metadata Дополнительные метаданные
|
|
121
|
-
* @returns Модифицированное значение после прохождения всех плагинов
|
|
122
|
-
*/
|
|
123
|
-
executeBeforeSet<T>(value: T, metadata?: Record<string, any>): Promise<T>;
|
|
124
|
-
/**
|
|
125
|
-
* Выполняет хуки onAfterSet всех зарегистрированных плагинов
|
|
126
|
-
*
|
|
127
|
-
* @param key Ключ, по которому было сохранено значение
|
|
128
|
-
* @param value Сохраненное значение
|
|
129
|
-
* @param metadata Дополнительные метаданные
|
|
130
|
-
* @returns Финальное значение после прохождения всех плагинов
|
|
131
|
-
*/
|
|
132
|
-
executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): Promise<T>;
|
|
133
|
-
/**
|
|
134
|
-
* Выполняет хуки onBeforeGet всех зарегистрированных плагинов
|
|
135
|
-
*
|
|
136
|
-
* @param key Исходный ключ
|
|
137
|
-
* @param metadata Дополнительные метаданные
|
|
138
|
-
* @returns Модифицированный ключ после прохождения всех плагинов
|
|
139
|
-
*/
|
|
140
|
-
executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): Promise<StorageKeyType>;
|
|
141
|
-
/**
|
|
142
|
-
* Выполняет хуки onAfterGet всех зарегистрированных плагинов
|
|
143
|
-
*
|
|
144
|
-
* @param key Ключ, по которому было запрошено значение
|
|
145
|
-
* @param value Полученное значение
|
|
146
|
-
* @param metadata Дополнительные метаданные
|
|
147
|
-
* @returns Финальное значение после прохождения всех плагинов
|
|
148
|
-
*/
|
|
149
|
-
executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): Promise<T | undefined>;
|
|
150
|
-
/**
|
|
151
|
-
* Выполняет хуки onBeforeDelete всех зарегистрированных плагинов
|
|
152
|
-
*
|
|
153
|
-
* @param key Ключ, по которому будет удалено значение
|
|
154
|
-
* @param metadata Дополнительные метаданные
|
|
155
|
-
* @returns Результат проверки всех плагинов (false если хотя бы один плагин запретил удаление)
|
|
156
|
-
*/
|
|
157
|
-
executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<boolean>;
|
|
158
|
-
/**
|
|
159
|
-
* Выполняет хуки onAfterDelete всех зарегистрированных плагинов
|
|
160
|
-
*
|
|
161
|
-
* @param key Ключ, по которому было удалено значение
|
|
162
|
-
* @param metadata Дополнительные метаданные
|
|
163
|
-
*/
|
|
164
|
-
executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<void>;
|
|
165
|
-
/**
|
|
166
|
-
* Выполняет хуки onClear всех зарегистрированных плагинов
|
|
167
|
-
*
|
|
168
|
-
* @param metadata Дополнительные метаданные
|
|
169
|
-
*/
|
|
170
|
-
executeOnClear(metadata?: Record<string, any>): Promise<void>;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Менеджер плагинов
|
|
174
|
-
* Отвечает за регистрацию, получение и удаление плагинов
|
|
175
|
-
*/
|
|
176
|
-
interface IPluginManager<T extends IPlugin> {
|
|
177
|
-
/**
|
|
178
|
-
* Добавляет плагин в менеджер
|
|
179
|
-
*
|
|
180
|
-
* @param plugin Экземпляр плагина
|
|
181
|
-
*/
|
|
182
|
-
add(plugin: T): Promise<void>;
|
|
183
|
-
/**
|
|
184
|
-
* Удаляет плагин из менеджера по имени
|
|
185
|
-
*
|
|
186
|
-
* @param name Имя плагина
|
|
187
|
-
*/
|
|
188
|
-
remove(name: string): Promise<void>;
|
|
189
|
-
/**
|
|
190
|
-
* Получает плагин по имени
|
|
191
|
-
*
|
|
192
|
-
* @param name Имя плагина
|
|
193
|
-
* @returns Экземпляр плагина или undefined, если плагин не найден
|
|
194
|
-
*/
|
|
195
|
-
get(name: string): T | undefined;
|
|
196
|
-
/**
|
|
197
|
-
* Получает все зарегистрированные плагины
|
|
198
|
-
*
|
|
199
|
-
* @returns Массив всех плагинов
|
|
200
|
-
*/
|
|
201
|
-
getAll(): T[];
|
|
202
|
-
/**
|
|
203
|
-
* Инициализирует все зарегистрированные плагины
|
|
204
|
-
*/
|
|
205
|
-
initialize(): Promise<void>;
|
|
206
|
-
/**
|
|
207
|
-
* Уничтожает все зарегистрированные плагины
|
|
208
|
-
*/
|
|
209
|
-
destroy(): Promise<void>;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
type PathSelector<T, R> = (state: T) => R;
|
|
213
|
-
declare abstract class BaseStorage<T extends Record<string, any>> implements IStorage<T> {
|
|
214
|
-
protected readonly config: StorageSingletonConfig<T>;
|
|
215
|
-
protected readonly pluginExecutor?: IPluginExecutor | undefined;
|
|
216
|
-
protected readonly eventEmitter?: IEventEmitter | undefined;
|
|
217
|
-
protected readonly logger?: ILogger | undefined;
|
|
218
|
-
protected static readonly GLOBAL_SUBSCRIPTION_KEY = "*";
|
|
219
|
-
protected static readonly STORAGE_TYPE: StorageType;
|
|
220
|
-
name: string;
|
|
221
|
-
private _initStatus;
|
|
222
|
-
private statusSubscribers;
|
|
223
|
-
private selectorPathCache;
|
|
224
|
-
private middlewareModule;
|
|
225
|
-
private initializedMiddlewares;
|
|
226
|
-
protected subscribers: Map<StorageKeyType, Set<(value: any) => void>>;
|
|
227
|
-
constructor(config: StorageSingletonConfig<T>, pluginExecutor?: IPluginExecutor | undefined, eventEmitter?: IEventEmitter | undefined, logger?: ILogger | undefined);
|
|
228
|
-
get initStatus(): StorageInitStatus;
|
|
229
|
-
waitForReady(): Promise<this>;
|
|
230
|
-
onStatusChange(callback: (status: StorageInitStatus) => void): VoidFunction;
|
|
231
|
-
private updateInitStatus;
|
|
232
|
-
initialize(): Promise<this>;
|
|
233
|
-
protected abstract doInitialize(): Promise<this>;
|
|
234
|
-
private ensureReady;
|
|
235
|
-
protected initializeMiddlewares(): void;
|
|
236
|
-
protected getDefaultMiddleware(): DefaultMiddlewares;
|
|
237
|
-
protected initializeWithMiddlewares(): Promise<void>;
|
|
238
|
-
protected abstract doGet(key: StorageKeyType): Promise<any>;
|
|
239
|
-
protected abstract doSet(key: StorageKeyType, value: any): Promise<void>;
|
|
240
|
-
protected abstract doUpdate(updates: Array<{
|
|
241
|
-
key: StorageKeyType;
|
|
242
|
-
value: any;
|
|
243
|
-
}>): Promise<void>;
|
|
244
|
-
protected abstract doDelete(key: StorageKeyType): Promise<boolean>;
|
|
245
|
-
protected abstract doClear(): Promise<void>;
|
|
246
|
-
protected abstract doKeys(): Promise<string[]>;
|
|
247
|
-
protected abstract doHas(key: StorageKeyType): Promise<boolean>;
|
|
248
|
-
protected abstract doDestroy(): Promise<void>;
|
|
249
|
-
get<R>(key: StorageKeyType): Promise<R | undefined>;
|
|
250
|
-
set<R>(key: StorageKeyType, value: R): Promise<void>;
|
|
251
|
-
update(updater: (state: T) => void): Promise<void>;
|
|
252
|
-
delete(key: StorageKeyType): Promise<void>;
|
|
253
|
-
clear(): Promise<void>;
|
|
254
|
-
keys(): Promise<string[]>;
|
|
255
|
-
has(key: StorageKeyType): Promise<boolean>;
|
|
256
|
-
getState(): Promise<T>;
|
|
257
|
-
subscribeToAll(callback: (event: {
|
|
258
|
-
type: string;
|
|
259
|
-
key?: StorageKeyType[] | StorageKeyType;
|
|
260
|
-
value?: any;
|
|
261
|
-
changedPaths?: string[];
|
|
262
|
-
}) => void): VoidFunction;
|
|
263
|
-
subscribe(key: string, callback: (value: any) => void): VoidFunction;
|
|
264
|
-
subscribe<R>(pathSelector: PathSelector<T, R>, callback: (value: R) => void): VoidFunction;
|
|
265
|
-
destroy(): Promise<void>;
|
|
266
|
-
private subscribeByKey;
|
|
267
|
-
private createDummyState;
|
|
268
|
-
private isEqual;
|
|
269
|
-
/**
|
|
270
|
-
* Возвращает полный путь, а не только корневой ключ
|
|
271
|
-
*/
|
|
272
|
-
private extractPath;
|
|
273
|
-
protected notifySubscribers(key: StorageKeyType, value: any): void;
|
|
274
|
-
/**
|
|
275
|
-
* Метод для определения изменившихся путей между двумя объектами
|
|
276
|
-
*/
|
|
277
|
-
private findChangedPaths;
|
|
278
|
-
private subscribeBySelector;
|
|
279
|
-
protected emitEvent(event: StorageEvent): Promise<void>;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
interface IndexedDBConfig {
|
|
283
|
-
dbName?: string;
|
|
284
|
-
dbVersion: number;
|
|
285
|
-
}
|
|
286
|
-
declare class IndexedDBStorage<T extends Record<string, any>> extends BaseStorage<T> {
|
|
287
|
-
protected static readonly STORAGE_TYPE: StorageType;
|
|
288
|
-
private readonly DB_NAME;
|
|
289
|
-
private readonly STORE_NAME;
|
|
290
|
-
private readonly DB_VERSION;
|
|
291
|
-
private dbManager;
|
|
292
|
-
constructor(config: IndexedDBStorageConfig<T>, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger);
|
|
293
|
-
protected getStorageType(): StorageType;
|
|
294
|
-
static create<T extends Record<string, any>>(config: IndexedDBStorageConfig, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger): IndexedDBStorage<T>;
|
|
295
|
-
protected doInitialize(): Promise<this>;
|
|
296
|
-
static getCurrentDBVersion(dbName: string): Promise<number>;
|
|
297
|
-
static createStorages<S extends Record<string, any>>(dbName: string, configs: {
|
|
298
|
-
[K in keyof S]: {
|
|
299
|
-
name: string;
|
|
300
|
-
initialState?: S[K];
|
|
301
|
-
middlewares?: ConfigureMiddlewares;
|
|
302
|
-
pluginExecutor?: IPluginExecutor;
|
|
303
|
-
eventEmitter?: IEventEmitter;
|
|
304
|
-
};
|
|
305
|
-
}, logger?: ILogger): Promise<{
|
|
306
|
-
[K in keyof S]: IndexedDBStorage<S[K]>;
|
|
307
|
-
}>;
|
|
308
|
-
private getTransaction;
|
|
309
|
-
private getObjectStore;
|
|
310
|
-
protected doGet(key: StorageKeyType): Promise<any>;
|
|
311
|
-
protected doSet(key: StorageKeyType, value: any): Promise<void>;
|
|
312
|
-
private putValueInStore;
|
|
313
|
-
protected doUpdate(updates: Array<{
|
|
314
|
-
key: string | StorageKey;
|
|
315
|
-
value: any;
|
|
316
|
-
}>): Promise<void>;
|
|
317
|
-
protected doDelete(key: StorageKeyType): Promise<boolean>;
|
|
318
|
-
protected doClear(): Promise<void>;
|
|
319
|
-
protected doKeys(): Promise<string[]>;
|
|
320
|
-
protected doHas(key: StorageKeyType): Promise<boolean>;
|
|
321
|
-
protected doDestroy(): Promise<void>;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
type StorageActionType = 'get' | 'set' | 'delete' | 'clear' | 'init' | 'keys' | 'update';
|
|
325
|
-
type StorageAction = {
|
|
326
|
-
type: StorageActionType;
|
|
327
|
-
key?: StorageKeyType;
|
|
328
|
-
value?: any;
|
|
329
|
-
metadata?: Record<string, any>;
|
|
330
|
-
source?: string;
|
|
331
|
-
timestamp?: number;
|
|
332
|
-
};
|
|
333
|
-
type MiddlewareAPI = {
|
|
334
|
-
dispatch: (action: StorageAction) => Promise<any>;
|
|
335
|
-
getState: () => Promise<Record<string, any>>;
|
|
336
|
-
storage: {
|
|
337
|
-
doGet: (key: StorageKeyType) => Promise<any>;
|
|
338
|
-
doSet: (key: StorageKeyType, value: any) => Promise<void>;
|
|
339
|
-
doUpdate: (updates: Array<{
|
|
340
|
-
key: StorageKeyType;
|
|
341
|
-
value: any;
|
|
342
|
-
}>) => Promise<void>;
|
|
343
|
-
doDelete: (key: StorageKeyType) => Promise<boolean>;
|
|
344
|
-
doClear: () => Promise<void>;
|
|
345
|
-
doKeys: () => Promise<string[]>;
|
|
346
|
-
notifySubscribers: (key: StorageKeyType, value: any) => void;
|
|
347
|
-
};
|
|
348
|
-
};
|
|
349
|
-
type NextFunction = (action: StorageAction) => Promise<any>;
|
|
350
|
-
type SetupEventsFunction = (api: MiddlewareAPI) => void;
|
|
351
|
-
type Middleware = {
|
|
352
|
-
name: string;
|
|
353
|
-
setup?: SetupEventsFunction;
|
|
354
|
-
cleanup?: () => Promise<void> | void;
|
|
355
|
-
reducer: (api: MiddlewareAPI) => (next: NextFunction) => (action: StorageAction) => Promise<any>;
|
|
356
|
-
};
|
|
357
|
-
|
|
358
|
-
interface BatchingMiddlewareOptions {
|
|
359
|
-
batchSize?: number;
|
|
360
|
-
batchDelay?: number;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
interface ShallowCompareMiddlewareOptions {
|
|
364
|
-
segments?: string[];
|
|
365
|
-
comparator?: <T>(prev: T, next: T) => boolean;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* @example
|
|
370
|
-
* ```typescript
|
|
371
|
-
* // Строгая проверка - выбросит ошибку при любых различиях
|
|
372
|
-
* const storage1 = new MemoryStorage({
|
|
373
|
-
* name: 'user',
|
|
374
|
-
* singleton: {
|
|
375
|
-
* enabled: true,
|
|
376
|
-
* mergeStrategy: ConfigMergeStrategy.STRICT
|
|
377
|
-
* },
|
|
378
|
-
* initialState: { name: 'John' }
|
|
379
|
-
* })
|
|
380
|
-
*
|
|
381
|
-
* // Глубокое слияние - объединит объекты
|
|
382
|
-
* const storage2 = new MemoryStorage({
|
|
383
|
-
* name: 'settings',
|
|
384
|
-
* singleton: {
|
|
385
|
-
* enabled: true,
|
|
386
|
-
* mergeStrategy: ConfigMergeStrategy.DEEP_MERGE
|
|
387
|
-
* },
|
|
388
|
-
* initialState: { theme: 'dark', notifications: { email: true } }
|
|
389
|
-
* })
|
|
390
|
-
* ```
|
|
391
|
-
*/
|
|
392
|
-
declare enum ConfigMergeStrategy {
|
|
393
|
-
/**
|
|
394
|
-
* Строгая проверка - выбрасывает ошибку при любых отличиях в конфигурации
|
|
395
|
-
*
|
|
396
|
-
* Используйте когда требуется абсолютная идентичность конфигураций
|
|
397
|
-
* для обеспечения предсказуемого поведения
|
|
398
|
-
*/
|
|
399
|
-
STRICT = "strict",
|
|
400
|
-
/**
|
|
401
|
-
* Первая конфигурация побеждает - игнорирует последующие конфигурации
|
|
402
|
-
*
|
|
403
|
-
* **По умолчанию**. Безопасная стратегия, которая использует настройки
|
|
404
|
-
* первого созданного экземпляра и игнорирует все последующие
|
|
405
|
-
*/
|
|
406
|
-
FIRST_WINS = "first_wins",
|
|
407
|
-
/**
|
|
408
|
-
* Глубокое слияние объектов - рекурсивно объединяет initialState
|
|
409
|
-
*
|
|
410
|
-
* Полезно когда разные компоненты должны дополнять начальное состояние.
|
|
411
|
-
* Примитивные значения из первой конфигурации сохраняются
|
|
412
|
-
*/
|
|
413
|
-
DEEP_MERGE = "deep_merge",
|
|
414
|
-
/**
|
|
415
|
-
* Последняя конфигурация перезаписывает предыдущие (кроме name)
|
|
416
|
-
*
|
|
417
|
-
* **Осторожно!** Может привести к непредсказуемому поведению,
|
|
418
|
-
* так как результат зависит от порядка создания компонентов
|
|
419
|
-
*/
|
|
420
|
-
OVERRIDE = "override",
|
|
421
|
-
/**
|
|
422
|
-
* Предупреждение в консоли + использование первой конфигурации
|
|
423
|
-
*
|
|
424
|
-
* Как FIRST_WINS, но с подробными предупреждениями в консоли
|
|
425
|
-
* о конфликтующих настройках. Полезно для отладки
|
|
426
|
-
*/
|
|
427
|
-
WARN_AND_USE_FIRST = "warn_and_use_first"
|
|
428
|
-
}
|
|
429
|
-
/**
|
|
430
|
-
* Позволяет переиспользовать экземпляры хранилищ между компонентами
|
|
431
|
-
* по имени, что особенно полезно в React при частых ре-рендерах
|
|
432
|
-
*
|
|
433
|
-
* @example
|
|
434
|
-
* ```typescript
|
|
435
|
-
* // Базовое использование
|
|
436
|
-
* const storage = new MemoryStorage({
|
|
437
|
-
* name: 'user-preferences',
|
|
438
|
-
* singleton: { enabled: true },
|
|
439
|
-
* initialState: { theme: 'light' }
|
|
440
|
-
* })
|
|
441
|
-
*
|
|
442
|
-
* // Продвинутые настройки
|
|
443
|
-
* const storage = new MemoryStorage({
|
|
444
|
-
* name: 'shared-state',
|
|
445
|
-
* singleton: {
|
|
446
|
-
* enabled: true,
|
|
447
|
-
* mergeStrategy: ConfigMergeStrategy.DEEP_MERGE,
|
|
448
|
-
* warnOnConflict: true,
|
|
449
|
-
* key: 'custom-singleton-key'
|
|
450
|
-
* },
|
|
451
|
-
* initialState: { user: null, settings: {} }
|
|
452
|
-
* })
|
|
453
|
-
* ```
|
|
454
|
-
*
|
|
455
|
-
* @see {@link ConfigMergeStrategy} для стратегий разрешения конфликтов
|
|
456
|
-
*/
|
|
457
|
-
interface SingletonOptions {
|
|
458
|
-
/**
|
|
459
|
-
* Включить Singleton Pattern для данного хранилища
|
|
460
|
-
*
|
|
461
|
-
* При `true` хранилища с одинаковым именем (или ключом) будут
|
|
462
|
-
* возвращать один и тот же экземпляр вместо создания нового
|
|
463
|
-
*
|
|
464
|
-
* @default false
|
|
465
|
-
*/
|
|
466
|
-
enabled: boolean;
|
|
467
|
-
/**
|
|
468
|
-
* Стратегия разрешения конфликтов при различающихся конфигурациях
|
|
469
|
-
*
|
|
470
|
-
* Определяет как поступать, когда singleton с тем же именем
|
|
471
|
-
* создается с отличающимися параметрами (initialState, middlewares и т.д.)
|
|
472
|
-
*
|
|
473
|
-
* @default ConfigMergeStrategy.FIRST_WINS
|
|
474
|
-
* @see {@link ConfigMergeStrategy}
|
|
475
|
-
*/
|
|
476
|
-
mergeStrategy?: ConfigMergeStrategy;
|
|
477
|
-
/**
|
|
478
|
-
* Выводить предупреждения при обнаружении конфликтов конфигурации
|
|
479
|
-
*
|
|
480
|
-
* При `true` будет логировать в консоль информацию о различиях
|
|
481
|
-
* в конфигурациях между экземплярами singleton (кроме стратегии STRICT)
|
|
482
|
-
*
|
|
483
|
-
* @default true
|
|
484
|
-
*/
|
|
485
|
-
warnOnConflict?: boolean;
|
|
486
|
-
/**
|
|
487
|
-
* Кастомный ключ для идентификации singleton экземпляра
|
|
488
|
-
*
|
|
489
|
-
* По умолчанию используется комбинация `{StorageType}_{name}`,
|
|
490
|
-
* но можно задать собственный ключ для более тонкого контроля
|
|
491
|
-
*
|
|
492
|
-
* @example
|
|
493
|
-
* ```typescript
|
|
494
|
-
* // Разные хранилища с одним именем, но разными ключами
|
|
495
|
-
* const userCache = new MemoryStorage({
|
|
496
|
-
* name: 'user',
|
|
497
|
-
* singleton: { enabled: true, key: 'user-cache' }
|
|
498
|
-
* })
|
|
499
|
-
*
|
|
500
|
-
* const userSettings = new LocalStorage({
|
|
501
|
-
* name: 'user', // То же имя!
|
|
502
|
-
* singleton: { enabled: true, key: 'user-settings' } // Но разный ключ
|
|
503
|
-
* })
|
|
504
|
-
* ```
|
|
505
|
-
*
|
|
506
|
-
* @default `${StorageType}_${name}`
|
|
507
|
-
*/
|
|
508
|
-
key?: string;
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
declare enum StorageStatus {
|
|
512
|
-
IDLE = "idle",// Не инициализировано
|
|
513
|
-
LOADING = "loading",// В процессе инициализации
|
|
514
|
-
READY = "ready",// Успешно инициализировано
|
|
515
|
-
ERROR = "error"
|
|
516
|
-
}
|
|
517
|
-
interface StorageInitStatus {
|
|
518
|
-
status: StorageStatus;
|
|
519
|
-
error?: Error;
|
|
520
|
-
}
|
|
521
|
-
interface IStorage<T extends Record<string, any> = any> {
|
|
522
|
-
name: string;
|
|
523
|
-
get<R>(key: StorageKeyType): Promise<R | undefined>;
|
|
524
|
-
getState(): Promise<T>;
|
|
525
|
-
set<R>(key: StorageKeyType, value: R): Promise<void>;
|
|
526
|
-
update(updater: (state: T) => void): Promise<void>;
|
|
527
|
-
has(key: StorageKeyType): Promise<boolean>;
|
|
528
|
-
delete(key: StorageKeyType): Promise<void>;
|
|
529
|
-
clear(): Promise<void>;
|
|
530
|
-
keys(): Promise<string[]>;
|
|
531
|
-
destroy(): Promise<void>;
|
|
532
|
-
subscribeToAll(callback: (event: {
|
|
533
|
-
type: string;
|
|
534
|
-
changedPaths?: string[];
|
|
535
|
-
key?: StorageKeyType[] | StorageKeyType;
|
|
536
|
-
value?: any;
|
|
537
|
-
}) => void): VoidFunction;
|
|
538
|
-
initialize(): Promise<this>;
|
|
539
|
-
subscribe(key: StorageKeyType, callback: (value: any) => void): VoidFunction;
|
|
540
|
-
subscribe<R>(pathSelector: (state: T) => R, callback: (value: R) => void): VoidFunction;
|
|
541
|
-
onStatusChange(callback: (status: StorageInitStatus) => void): VoidFunction;
|
|
542
|
-
waitForReady(): Promise<this>;
|
|
543
|
-
}
|
|
544
|
-
declare enum StorageEvents {
|
|
545
|
-
STORAGE_UPDATE = "storage:update",
|
|
546
|
-
STORAGE_DELETE = "storage:delete",
|
|
547
|
-
STORAGE_PATCH = "storage:patch",
|
|
548
|
-
STORAGE_SELECT = "storage:select",
|
|
549
|
-
STORAGE_CLEAR = "storage:clear",
|
|
550
|
-
STORAGE_DESTROY = "storage:destroy"
|
|
551
|
-
}
|
|
552
|
-
interface StorageEvent<T = any> {
|
|
553
|
-
type: string;
|
|
554
|
-
payload?: T;
|
|
555
|
-
metadata?: Record<string, any>;
|
|
556
|
-
}
|
|
557
|
-
interface IEventEmitter {
|
|
558
|
-
emit(event: StorageEvent): Promise<void>;
|
|
559
|
-
}
|
|
560
|
-
interface ILogger {
|
|
561
|
-
debug(message: string, meta?: Record<string, any>): void;
|
|
562
|
-
info(message: string, meta?: Record<string, any>): void;
|
|
563
|
-
warn(message: string, meta?: Record<string, any>): void;
|
|
564
|
-
error(message: string, meta?: Record<string, any>): void;
|
|
565
|
-
}
|
|
566
|
-
interface DefaultMiddlewares {
|
|
567
|
-
batching: (options?: BatchingMiddlewareOptions) => Middleware;
|
|
568
|
-
shallowCompare: (options?: ShallowCompareMiddlewareOptions) => Middleware;
|
|
569
|
-
}
|
|
570
|
-
type GetDefaultMiddleware = () => DefaultMiddlewares;
|
|
571
|
-
type ConfigureMiddlewares = (getDefaultMiddleware: GetDefaultMiddleware) => Middleware[];
|
|
572
|
-
interface StorageConfig<T extends Record<string, any> = Record<string, any>> {
|
|
573
|
-
name: string;
|
|
574
|
-
initialState?: Partial<T>;
|
|
575
|
-
middlewares?: ConfigureMiddlewares;
|
|
576
|
-
}
|
|
577
|
-
interface StorageSingletonConfig<T extends Record<string, any> = Record<string, any>> extends StorageConfig<T> {
|
|
578
|
-
singleton?: SingletonOptions;
|
|
579
|
-
}
|
|
580
|
-
type StorageType = 'memory' | 'localStorage' | 'indexedDB';
|
|
581
|
-
type MemoryStorageConfig<T extends Record<string, any> = Record<string, any>> = StorageSingletonConfig<T>;
|
|
582
|
-
type LocalStorageConfig<T extends Record<string, any> = Record<string, any>> = StorageSingletonConfig<T>;
|
|
583
|
-
interface IndexedDBStorageConfig<T extends Record<string, any> = Record<string, any>> extends StorageSingletonConfig<T> {
|
|
584
|
-
options: IndexedDBConfig;
|
|
585
|
-
}
|
|
586
|
-
interface UniversalStorageConfig<T extends Record<string, any> = Record<string, any>> extends StorageSingletonConfig<T> {
|
|
587
|
-
type: StorageType;
|
|
588
|
-
options?: IndexedDBConfig;
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
export { type BatchingMiddlewareOptions as B, ConfigMergeStrategy as C, type DefaultMiddlewares as D, type GetDefaultMiddleware as G, IndexedDBStorage as I, type LocalStorageConfig as L, type Middleware as M, type NextFunction as N, type PluginContext as P, type ShallowCompareMiddlewareOptions as S, type UniversalStorageConfig as U, type MiddlewareAPI as a, type StorageAction as b, type StorageKeyType as c, type IPlugin as d, type IStoragePlugin as e, type IPluginExecutor as f, type IPluginManager as g, StorageStatus as h, type StorageInitStatus as i, type IStorage as j, StorageEvents as k, type StorageEvent as l, type IEventEmitter as m, type ILogger as n, type ConfigureMiddlewares as o, type StorageConfig as p, type StorageSingletonConfig as q, type StorageType as r, type MemoryStorageConfig as s, type IndexedDBStorageConfig as t, BaseStorage as u };
|