synapse-storage 4.1.2 → 5.0.3
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 +142 -12
- package/dist/_utils/chunk.util.d.ts +0 -1
- package/dist/_utils/deepMerge.util.d.ts +0 -1
- package/dist/_utils/error-handling.util.d.ts +0 -1
- package/dist/_utils/flatMap.util.d.ts +0 -1
- package/dist/_utils/index.d.ts +0 -1
- package/dist/_utils/logger-console.util.d.ts +0 -1
- package/dist/api/api.module.d.ts +0 -1
- package/dist/api/components/endpoint.d.ts +11 -12
- package/dist/api/components/endpoint.js.map +1 -1
- package/dist/api/components/query-storage.d.ts +0 -1
- package/dist/api/components/query-storage.js +1 -1
- package/dist/api/components/query-storage.js.map +1 -1
- package/dist/api/index.d.ts +0 -1
- package/dist/api/types/api.interface.d.ts +0 -1
- package/dist/api/types/endpoint.interface.d.ts +0 -1
- package/dist/api/types/query.interface.d.ts +0 -1
- package/dist/api/utils/api-helpers.d.ts +0 -1
- package/dist/{core/storage → api}/utils/cache.util.d.ts +3 -6
- package/dist/{core/storage → api}/utils/cache.util.js +4 -7
- package/dist/api/utils/cache.util.js.map +1 -0
- package/dist/api/utils/create-header-context.d.ts +0 -1
- package/dist/api/utils/endpoint-headers.d.ts +0 -1
- package/dist/api/utils/fetch-base-query.d.ts +0 -1
- package/dist/api/utils/file-utils.d.ts +0 -1
- package/dist/api/utils/get-cacheable-headers.d.ts +0 -1
- package/dist/core/index.d.ts +0 -1
- package/dist/core/selector/index.d.ts +1 -1
- package/dist/core/selector/index.js +2 -0
- package/dist/core/selector/index.js.map +1 -1
- package/dist/core/selector/selector.interface.d.ts +15 -30
- package/dist/core/selector/selector.interface.js +2 -2
- package/dist/core/selector/selector.interface.js.map +1 -1
- package/dist/core/selector/selector.module.d.ts +16 -1
- package/dist/core/selector/selector.module.js +82 -20
- package/dist/core/selector/selector.module.js.map +1 -1
- package/dist/core/selector/selectors.base.d.ts +56 -0
- package/dist/core/selector/selectors.base.js +118 -0
- package/dist/core/selector/selectors.base.js.map +1 -0
- package/dist/core/storage/adapters/async-base-storage.service.d.ts +15 -4
- package/dist/core/storage/adapters/async-base-storage.service.js +106 -36
- package/dist/core/storage/adapters/async-base-storage.service.js.map +1 -1
- package/dist/core/storage/adapters/indexed-DB.service.d.ts +4 -5
- package/dist/core/storage/adapters/indexed-DB.service.js +66 -14
- package/dist/core/storage/adapters/indexed-DB.service.js.map +1 -1
- package/dist/core/storage/adapters/local-storage.service.d.ts +9 -4
- package/dist/core/storage/adapters/local-storage.service.js +25 -5
- package/dist/core/storage/adapters/local-storage.service.js.map +1 -1
- package/dist/core/storage/adapters/memory-storage.service.d.ts +2 -4
- package/dist/core/storage/adapters/memory-storage.service.js +5 -5
- package/dist/core/storage/adapters/memory-storage.service.js.map +1 -1
- package/dist/core/storage/adapters/path.utils.d.ts +0 -1
- package/dist/core/storage/adapters/storage-core.d.ts +6 -2
- package/dist/core/storage/adapters/storage-core.js +6 -3
- package/dist/core/storage/adapters/storage-core.js.map +1 -1
- package/dist/core/storage/adapters/sync-base-storage.service.d.ts +20 -4
- package/dist/core/storage/adapters/sync-base-storage.service.js +110 -35
- package/dist/core/storage/adapters/sync-base-storage.service.js.map +1 -1
- package/dist/core/storage/index.d.ts +2 -5
- package/dist/core/storage/index.js +1 -5
- package/dist/core/storage/index.js.map +1 -1
- package/dist/core/storage/middlewares/broadcast.middleware.d.ts +0 -1
- package/dist/core/storage/middlewares/index.d.ts +3 -1
- package/dist/core/storage/middlewares/index.js +6 -0
- package/dist/core/storage/middlewares/index.js.map +1 -1
- package/dist/core/storage/middlewares/storage-batching.middleware.d.ts +0 -1
- package/dist/core/storage/middlewares/storage-logger.middleware.d.ts +20 -0
- package/dist/core/storage/middlewares/storage-logger.middleware.js +53 -0
- package/dist/core/storage/middlewares/storage-logger.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts +0 -1
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js +4 -10
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js.map +1 -1
- package/dist/core/storage/middlewares/sync-broadcast.middleware.d.ts +0 -1
- package/dist/core/storage/middlewares/sync-storage-batching.middleware.d.ts +0 -1
- package/dist/core/storage/middlewares/sync-storage-logger.middleware.d.ts +7 -0
- package/dist/core/storage/middlewares/sync-storage-logger.middleware.js +48 -0
- package/dist/core/storage/middlewares/sync-storage-logger.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.d.ts +0 -1
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.js +4 -10
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.js.map +1 -1
- package/dist/core/storage/modules/singleton/mixin.util.d.ts +0 -1
- package/dist/core/storage/modules/singleton/models.d.ts +0 -1
- package/dist/core/storage/modules/singleton/singleton.util.d.ts +0 -1
- package/dist/core/storage/storage.interface.d.ts +59 -4
- package/dist/core/storage/storage.interface.js +0 -2
- package/dist/core/storage/storage.interface.js.map +1 -1
- package/dist/core/storage/utils/broadcast.util.d.ts +0 -1
- package/dist/core/storage/utils/middleware-module.d.ts +0 -3
- package/dist/core/storage/utils/middleware-module.js +0 -8
- package/dist/core/storage/utils/middleware-module.js.map +1 -1
- package/dist/core/storage/utils/migration.util.d.ts +38 -0
- package/dist/core/storage/utils/migration.util.js +48 -0
- package/dist/core/storage/utils/migration.util.js.map +1 -0
- package/dist/core/storage/utils/path-selector.util.d.ts +0 -1
- package/dist/core/storage/utils/state-diff.util.d.ts +8 -1
- package/dist/core/storage/utils/state-diff.util.js +17 -1
- package/dist/core/storage/utils/state-diff.util.js.map +1 -1
- package/dist/core/storage/utils/storage-factory.util.d.ts +7 -9
- package/dist/core/storage/utils/storage-factory.util.js +10 -10
- package/dist/core/storage/utils/storage-factory.util.js.map +1 -1
- package/dist/core/storage/utils/storage-key.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/react/hooks/index.d.ts +2 -1
- package/dist/react/hooks/index.js +4 -0
- package/dist/react/hooks/index.js.map +1 -1
- package/dist/react/hooks/useCreateStorage.d.ts +5 -6
- package/dist/react/hooks/useCreateStorage.js +2 -2
- package/dist/react/hooks/useCreateStorage.js.map +1 -1
- package/dist/react/hooks/useObservable.d.ts +17 -0
- package/dist/react/hooks/useObservable.js +38 -0
- package/dist/react/hooks/useObservable.js.map +1 -0
- package/dist/react/hooks/useSelector.d.ts +0 -1
- package/dist/react/hooks/useSelector.js +5 -2
- package/dist/react/hooks/useSelector.js.map +1 -1
- package/dist/react/hooks/useStorage.d.ts +0 -1
- package/dist/react/hooks/useStorageSubscribe.d.ts +0 -1
- package/dist/react/hooks/useSubscription.d.ts +13 -0
- package/dist/react/hooks/useSubscription.js +23 -0
- package/dist/react/hooks/useSubscription.js.map +1 -0
- package/dist/react/index.d.ts +0 -1
- package/dist/react/utils/awaitSynapse.d.ts +9 -10
- package/dist/react/utils/awaitSynapse.js +3 -2
- package/dist/react/utils/awaitSynapse.js.map +1 -1
- package/dist/react/utils/createSynapseCtx.d.ts +18 -23
- package/dist/react/utils/createSynapseCtx.js +64 -39
- package/dist/react/utils/createSynapseCtx.js.map +1 -1
- package/dist/react/utils/index.d.ts +0 -1
- package/dist/reactive/dispatcher/dispatcher.base.d.ts +122 -0
- package/dist/reactive/dispatcher/dispatcher.base.js +294 -0
- package/dist/reactive/dispatcher/dispatcher.base.js.map +1 -0
- package/dist/reactive/dispatcher/dispatcher.module.d.ts +12 -67
- package/dist/reactive/dispatcher/dispatcher.module.js +13 -72
- package/dist/reactive/dispatcher/dispatcher.module.js.map +1 -1
- package/dist/reactive/dispatcher/index.d.ts +1 -1
- package/dist/reactive/dispatcher/index.js +2 -0
- package/dist/reactive/dispatcher/index.js.map +1 -1
- package/dist/reactive/dispatcher/middlewares/index.d.ts +0 -1
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts +0 -1
- package/dist/reactive/dispatcher/path.util.d.ts +15 -0
- package/dist/reactive/dispatcher/path.util.js +34 -0
- package/dist/reactive/dispatcher/path.util.js.map +1 -0
- package/dist/reactive/dispatcher/standalone.d.ts +1 -150
- package/dist/reactive/dispatcher/standalone.js +6 -217
- package/dist/reactive/dispatcher/standalone.js.map +1 -1
- package/dist/reactive/effects/effects.base.d.ts +62 -0
- package/dist/reactive/effects/effects.base.js +90 -0
- package/dist/reactive/effects/effects.base.js.map +1 -0
- package/dist/reactive/effects/effects.module.d.ts +122 -11
- package/dist/reactive/effects/effects.module.js +129 -17
- package/dist/reactive/effects/effects.module.js.map +1 -1
- package/dist/reactive/effects/index.d.ts +1 -1
- package/dist/reactive/effects/index.js +2 -0
- package/dist/reactive/effects/index.js.map +1 -1
- package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts +0 -1
- package/dist/reactive/effects/utils/chunkRequestParallel.d.ts +0 -1
- package/dist/reactive/effects/utils/fromRequest.d.ts +0 -1
- package/dist/reactive/effects/utils/index.d.ts +0 -1
- package/dist/reactive/effects/utils/toObservable.d.ts +0 -1
- package/dist/reactive/index.d.ts +0 -1
- package/dist/utils/createEventBus.d.ts +47 -46
- package/dist/utils/createEventBus.js +152 -174
- package/dist/utils/createEventBus.js.map +1 -1
- package/dist/utils/createSynapse/createSynapse.d.ts +25 -7
- package/dist/utils/createSynapse/createSynapse.js +28 -98
- package/dist/utils/createSynapse/createSynapse.js.map +1 -1
- package/dist/utils/createSynapse/factory.d.ts +6 -0
- package/dist/utils/createSynapse/factory.js +256 -0
- package/dist/utils/createSynapse/factory.js.map +1 -0
- package/dist/utils/createSynapse/index.d.ts +2 -2
- package/dist/utils/createSynapse/index.js.map +1 -1
- package/dist/utils/createSynapse/synapse.types.d.ts +87 -0
- package/dist/utils/createSynapse/synapse.types.js +11 -0
- package/dist/utils/createSynapse/synapse.types.js.map +1 -0
- package/dist/utils/createSynapse/types.d.ts +6 -85
- package/dist/utils/createSynapse/types.js +2 -1
- package/dist/utils/createSynapse/types.js.map +1 -1
- package/dist/utils/createSynapse/waitForDependencies.d.ts +0 -1
- package/dist/utils/createSynapse/waitForDependencies.js +1 -1
- package/dist/utils/createSynapse/waitForDependencies.js.map +1 -1
- package/dist/utils/createSynapseAwaiter.d.ts +13 -10
- package/dist/utils/createSynapseAwaiter.js +30 -3
- package/dist/utils/createSynapseAwaiter.js.map +1 -1
- package/dist/utils/dehydrateModule.d.ts +6 -0
- package/dist/utils/dehydrateModule.js +43 -0
- package/dist/utils/dehydrateModule.js.map +1 -0
- package/dist/utils/index.d.ts +3 -3
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +12 -2
- package/dist/_utils/chunk.util.d.ts.map +0 -1
- package/dist/_utils/deepMerge.util.d.ts.map +0 -1
- package/dist/_utils/error-handling.util.d.ts.map +0 -1
- package/dist/_utils/flatMap.util.d.ts.map +0 -1
- package/dist/_utils/index.d.ts.map +0 -1
- package/dist/_utils/logger-console.util.d.ts.map +0 -1
- package/dist/api/api.module.d.ts.map +0 -1
- package/dist/api/components/endpoint.d.ts.map +0 -1
- package/dist/api/components/query-storage.d.ts.map +0 -1
- package/dist/api/example.d.ts +0 -83
- package/dist/api/example.d.ts.map +0 -1
- package/dist/api/example.js +0 -90
- package/dist/api/example.js.map +0 -1
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/types/api.interface.d.ts.map +0 -1
- package/dist/api/types/endpoint.interface.d.ts.map +0 -1
- package/dist/api/types/query.interface.d.ts.map +0 -1
- package/dist/api/utils/api-helpers.d.ts.map +0 -1
- package/dist/api/utils/create-header-context.d.ts.map +0 -1
- package/dist/api/utils/endpoint-headers.d.ts.map +0 -1
- package/dist/api/utils/fetch-base-query.d.ts.map +0 -1
- package/dist/api/utils/file-utils.d.ts.map +0 -1
- package/dist/api/utils/get-cacheable-headers.d.ts.map +0 -1
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/selector/index.d.ts.map +0 -1
- package/dist/core/selector/selector.interface.d.ts.map +0 -1
- package/dist/core/selector/selector.module.d.ts.map +0 -1
- package/dist/core/storage/adapters/async-base-storage.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/indexed-DB.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/local-storage.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/memory-storage.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/path.utils.d.ts.map +0 -1
- package/dist/core/storage/adapters/storage-core.d.ts.map +0 -1
- package/dist/core/storage/adapters/sync-base-storage.service.d.ts.map +0 -1
- package/dist/core/storage/index.d.ts.map +0 -1
- package/dist/core/storage/middlewares/broadcast.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/index.d.ts.map +0 -1
- package/dist/core/storage/middlewares/storage-batching.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/sync-broadcast.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/sync-storage-batching.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.d.ts.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.interface.d.ts +0 -101
- package/dist/core/storage/modules/plugin/plugin.interface.d.ts.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.interface.js +0 -8
- package/dist/core/storage/modules/plugin/plugin.interface.js.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.service.d.ts +0 -49
- package/dist/core/storage/modules/plugin/plugin.service.d.ts.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.service.js +0 -406
- package/dist/core/storage/modules/plugin/plugin.service.js.map +0 -1
- package/dist/core/storage/modules/singleton/mixin.util.d.ts.map +0 -1
- package/dist/core/storage/modules/singleton/models.d.ts.map +0 -1
- package/dist/core/storage/modules/singleton/singleton.util.d.ts.map +0 -1
- package/dist/core/storage/storage.interface.d.ts.map +0 -1
- package/dist/core/storage/utils/broadcast.util.d.ts.map +0 -1
- package/dist/core/storage/utils/cache.util.d.ts.map +0 -1
- package/dist/core/storage/utils/cache.util.js.map +0 -1
- package/dist/core/storage/utils/middleware-module.d.ts.map +0 -1
- package/dist/core/storage/utils/path-selector.util.d.ts.map +0 -1
- package/dist/core/storage/utils/state-diff.util.d.ts.map +0 -1
- package/dist/core/storage/utils/storage-factory.util.d.ts.map +0 -1
- package/dist/core/storage/utils/storage-key.d.ts.map +0 -1
- package/dist/core/storage/utils/storage.utils.d.ts +0 -17
- package/dist/core/storage/utils/storage.utils.d.ts.map +0 -1
- package/dist/core/storage/utils/storage.utils.js +0 -57
- package/dist/core/storage/utils/storage.utils.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/react/hooks/index.d.ts.map +0 -1
- package/dist/react/hooks/useCreateStorage.d.ts.map +0 -1
- package/dist/react/hooks/useSelector.d.ts.map +0 -1
- package/dist/react/hooks/useStorage.d.ts.map +0 -1
- package/dist/react/hooks/useStorageSubscribe.d.ts.map +0 -1
- package/dist/react/index.d.ts.map +0 -1
- package/dist/react/utils/awaitSynapse.d.ts.map +0 -1
- package/dist/react/utils/createSynapseCtx.d.ts.map +0 -1
- package/dist/react/utils/index.d.ts.map +0 -1
- package/dist/reactive/dispatcher/dispatcher.module.d.ts.map +0 -1
- package/dist/reactive/dispatcher/index.d.ts.map +0 -1
- package/dist/reactive/dispatcher/middlewares/index.d.ts.map +0 -1
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts.map +0 -1
- package/dist/reactive/dispatcher/standalone.d.ts.map +0 -1
- package/dist/reactive/effects/effects.module.d.ts.map +0 -1
- package/dist/reactive/effects/index.d.ts.map +0 -1
- package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts.map +0 -1
- package/dist/reactive/effects/utils/chunkRequestParallel.d.ts.map +0 -1
- package/dist/reactive/effects/utils/fromRequest.d.ts.map +0 -1
- package/dist/reactive/effects/utils/index.d.ts.map +0 -1
- package/dist/reactive/effects/utils/toObservable.d.ts.map +0 -1
- package/dist/reactive/index.d.ts.map +0 -1
- package/dist/utils/createEventBus.d.ts.map +0 -1
- package/dist/utils/createSynapse/createSynapse.d.ts.map +0 -1
- package/dist/utils/createSynapse/index.d.ts.map +0 -1
- package/dist/utils/createSynapse/types.d.ts.map +0 -1
- package/dist/utils/createSynapse/validate.d.ts +0 -2
- package/dist/utils/createSynapse/validate.d.ts.map +0 -1
- package/dist/utils/createSynapse/validate.js +0 -76
- package/dist/utils/createSynapse/validate.js.map +0 -1
- package/dist/utils/createSynapse/waitForDependencies.d.ts.map +0 -1
- package/dist/utils/createSynapseAwaiter.d.ts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
|
@@ -1,93 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ISelectorModule, IStorage, IStorageBase } from '../../core';
|
|
3
|
-
import { Effect, ExternalStates } from '../../reactive';
|
|
1
|
+
import { IStorage, IStorageBase } from '../../core';
|
|
4
2
|
export type ExtractPromiseType<T> = T extends Promise<infer U> ? U : T;
|
|
5
3
|
export type ExtractStorageType<T> = T extends IStorageBase<infer U> ? U : never;
|
|
6
|
-
export type ExtractDispatchType<T> = T extends {
|
|
7
|
-
dispatch: infer D;
|
|
8
|
-
} ? D : never;
|
|
9
4
|
export type StorageCreatorFunction<T extends Record<string, any>> = () => Promise<IStorage<T>>;
|
|
10
5
|
export type SynapseDependency = {
|
|
11
6
|
storage: IStorageBase<any>;
|
|
12
7
|
};
|
|
13
|
-
/** Всё что можно передать в dependencies[]: raw storage, обёртка { storage }, или Promise от другого synapse */
|
|
14
|
-
export type DependencyInput = IStorageBase<any> | SynapseDependency | Promise<AnySynapseStore>;
|
|
15
8
|
/**
|
|
16
|
-
*
|
|
9
|
+
* Всё, что можно передать в `dependencies[]`: raw storage, обёртка `{ storage }`,
|
|
10
|
+
* или Promise/Handle другого synapse (любой объект с `.storage: IStorageBase`).
|
|
17
11
|
*/
|
|
18
|
-
export type
|
|
19
|
-
storage:
|
|
20
|
-
|
|
21
|
-
} | {
|
|
22
|
-
storage?: undefined;
|
|
23
|
-
createStorageFn: StorageCreatorFunction<TStore>;
|
|
24
|
-
}) & {
|
|
25
|
-
setup?: () => Promise<void> | void;
|
|
26
|
-
dependencies?: DependencyInput[];
|
|
27
|
-
dependencyTimeout?: number;
|
|
28
|
-
externalSelectors?: TExternalSelectors;
|
|
29
|
-
createSelectorsFn?: (selectorModule: ISelectorModule<TStore>, externalSelectors: TExternalSelectors) => TSelectors;
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* Конфигурация с dispatcher и effects
|
|
33
|
-
*/
|
|
34
|
-
export type CreateSynapseConfigWithEffects<TStore extends Record<string, any>, TSelectors = any, TDispatcher = any, TServices extends Record<string, any> = Record<string, never>, TConfig extends Record<string, any> = Record<string, never>, TExternalSelectors extends Record<string, any> = Record<string, any>> = BaseSynapseConfig<TStore, TSelectors, TExternalSelectors> & {
|
|
35
|
-
createDispatcherFn: (storage: IStorage<TStore>) => TDispatcher;
|
|
36
|
-
createEffectConfig: () => {
|
|
37
|
-
services?: TServices;
|
|
38
|
-
config?: TConfig;
|
|
39
|
-
externalDispatchers?: Record<string, any>;
|
|
40
|
-
externalStates?: ExternalStates;
|
|
41
|
-
};
|
|
42
|
-
effects?: Effect<TStore, any, TServices, TConfig, any, any>[];
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* Конфигурация только с dispatcher
|
|
46
|
-
*/
|
|
47
|
-
export type CreateSynapseConfigWithDispatcher<TStore extends Record<string, any>, TSelectors = any, TDispatcher = any, TExternalSelectors extends Record<string, any> = Record<string, any>> = BaseSynapseConfig<TStore, TSelectors, TExternalSelectors> & {
|
|
48
|
-
createDispatcherFn: (storage: IStorage<TStore>) => TDispatcher;
|
|
49
|
-
createEffectConfig?: never;
|
|
50
|
-
effects?: never;
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Конфигурация без dispatcher
|
|
54
|
-
*/
|
|
55
|
-
export type CreateSynapseConfigBasic<TStore extends Record<string, any>, TSelectors = any, TExternalSelectors extends Record<string, any> = Record<string, any>> = BaseSynapseConfig<TStore, TSelectors, TExternalSelectors> & {
|
|
56
|
-
createDispatcherFn?: never;
|
|
57
|
-
createEffectConfig?: never;
|
|
58
|
-
effects?: never;
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* Результат с dispatcher и effects
|
|
62
|
-
*/
|
|
63
|
-
export interface SynapseStoreWithEffects<TStore extends Record<string, any>, TStorage extends IStorageBase<TStore>, TSelectors, TActions> {
|
|
64
|
-
storage: TStorage;
|
|
65
|
-
selectors: TSelectors;
|
|
66
|
-
actions: TActions;
|
|
67
|
-
state$: Observable<TStore>;
|
|
68
|
-
dispatcher: any;
|
|
69
|
-
destroy: () => Promise<void>;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Результат только с dispatcher
|
|
73
|
-
*/
|
|
74
|
-
export interface SynapseStoreWithDispatcher<TStore extends Record<string, any>, TStorage extends IStorageBase<TStore>, TSelectors, TActions> {
|
|
75
|
-
storage: TStorage;
|
|
76
|
-
selectors: TSelectors;
|
|
77
|
-
actions: TActions;
|
|
78
|
-
dispatcher: any;
|
|
79
|
-
destroy: () => Promise<void>;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Результат без dispatcher
|
|
83
|
-
*/
|
|
84
|
-
export interface SynapseStoreBasic<TStore extends Record<string, any>, TStorage extends IStorageBase<TStore>, TSelectors> {
|
|
85
|
-
storage: TStorage;
|
|
86
|
-
selectors: TSelectors;
|
|
87
|
-
destroy: () => Promise<void>;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Union-тип для всех возможных результатов createSynapse
|
|
91
|
-
*/
|
|
92
|
-
export type AnySynapseStore<TStore extends Record<string, any> = any, TStorage extends IStorageBase<TStore> = IStorage<any>, TSelectors = any, TActions = any> = SynapseStoreWithEffects<TStore, TStorage, TSelectors, TActions> | SynapseStoreWithDispatcher<TStore, TStorage, TSelectors, TActions> | SynapseStoreBasic<TStore, TStorage, TSelectors>;
|
|
93
|
-
//# sourceMappingURL=types.d.ts.map
|
|
12
|
+
export type DependencyInput = IStorageBase<any> | SynapseDependency | PromiseLike<{
|
|
13
|
+
storage: IStorageBase<any>;
|
|
14
|
+
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/createSynapse/types.js","sources":["../../../src/utils/createSynapse/types.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"utils/createSynapse/types.js","sources":["../../../src/utils/createSynapse/types.ts"],"sourcesContent":["import { IStorage, IStorageBase } from '../../core'\n\n// Вспомогательные типы для извлечения типов из других типов\nexport type ExtractPromiseType<T> = T extends Promise<infer U> ? U : T\nexport type ExtractStorageType<T> = T extends IStorageBase<infer U> ? U : never\n\nexport type StorageCreatorFunction<T extends Record<string, any>> = () => Promise<IStorage<T>>\n\nexport type SynapseDependency = {\n storage: IStorageBase<any>\n}\n\n/**\n * Всё, что можно передать в `dependencies[]`: raw storage, обёртка `{ storage }`,\n * или Promise/Handle другого synapse (любой объект с `.storage: IStorageBase`).\n */\nexport type DependencyInput = IStorageBase<any> | SynapseDependency | PromiseLike<{ storage: IStorageBase<any> }>\n"],"names":[],"mappings":"AAYA;;;CAGC,GACgH"}
|
|
@@ -7,7 +7,7 @@ const DEFAULT_DEPENDENCY_TIMEOUT = 30000;
|
|
|
7
7
|
* Извлекает IStorageBase из любого формата зависимости:
|
|
8
8
|
* - IStorageBase напрямую (есть waitForReady)
|
|
9
9
|
* - { storage: IStorageBase } — обёртка
|
|
10
|
-
* -
|
|
10
|
+
* - готовый synapse — результат createSynapse (тоже имеет .storage)
|
|
11
11
|
*/ function extractStorage(dep) {
|
|
12
12
|
if (typeof dep.waitForReady === 'function') return dep;
|
|
13
13
|
if (dep.storage && typeof dep.storage.waitForReady === 'function') return dep.storage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/createSynapse/waitForDependencies.js","sources":["../../../src/utils/createSynapse/waitForDependencies.ts"],"sourcesContent":["import { handleOperationError, logError } from '../../_utils/error-handling.util'\nimport type { IStorageBase } from '../../core'\nimport type { DependencyInput } from './types'\n\nconst DEFAULT_DEPENDENCY_TIMEOUT = 30_000\n\n/**\n * Извлекает IStorageBase из любого формата зависимости:\n * - IStorageBase напрямую (есть waitForReady)\n * - { storage: IStorageBase } — обёртка\n * -
|
|
1
|
+
{"version":3,"file":"utils/createSynapse/waitForDependencies.js","sources":["../../../src/utils/createSynapse/waitForDependencies.ts"],"sourcesContent":["import { handleOperationError, logError } from '../../_utils/error-handling.util'\nimport type { IStorageBase } from '../../core'\nimport type { DependencyInput } from './types'\n\nconst DEFAULT_DEPENDENCY_TIMEOUT = 30_000\n\n/**\n * Извлекает IStorageBase из любого формата зависимости:\n * - IStorageBase напрямую (есть waitForReady)\n * - { storage: IStorageBase } — обёртка\n * - готовый synapse — результат createSynapse (тоже имеет .storage)\n */\nfunction extractStorage(dep: any): IStorageBase<any> {\n if (typeof dep.waitForReady === 'function') return dep\n if (dep.storage && typeof dep.storage.waitForReady === 'function') return dep.storage\n throw new Error('Invalid dependency: expected IStorageBase or { storage: IStorageBase }')\n}\n\nexport async function waitForDependencies(dependencies: DependencyInput[] = [], timeoutMs: number = DEFAULT_DEPENDENCY_TIMEOUT): Promise<void> {\n if (dependencies.length === 0) {\n return\n }\n\n logError(`Waiting for ${dependencies.length} dependencies to be ready...`, '', null, 'warn')\n\n await Promise.all(\n dependencies.map(async (dependencyOrPromise, index) => {\n try {\n const resolved = await dependencyOrPromise\n const storage = extractStorage(resolved)\n const name = storage.name || 'unnamed'\n\n // initialize() идемпотентен — повторный вызов безопасен\n await storage.initialize()\n\n await Promise.race([\n storage.waitForReady(),\n new Promise<never>((_, reject) =>\n globalThis.setTimeout(() => reject(new Error(`Dependency ${index} (\"${name}\") timed out after ${timeoutMs}ms. Check that it initializes correctly.`)), timeoutMs),\n ),\n ])\n } catch (error) {\n handleOperationError(`createSynapse: dependency ${index} failed to initialize`, error)\n }\n }),\n )\n}\n"],"names":["handleOperationError","logError","DEFAULT_DEPENDENCY_TIMEOUT","extractStorage","dep","Error","waitForDependencies","dependencies","timeoutMs","Promise","dependencyOrPromise","index","resolved","storage","name","_","reject","globalThis","error"],"mappings":";;;AAAiF;AAIjF,MAAME,0BAA0BA,GAAG;AAEnC;;;;;CAKC,GACD,SAASC,cAAcA,CAACC,GAAQ;IAC9B,IAAI,OAAOA,IAAI,YAAY,KAAK,YAAY,OAAOA;IACnD,IAAIA,IAAI,OAAO,IAAI,OAAOA,IAAI,OAAO,CAAC,YAAY,KAAK,YAAY,OAAOA,IAAI,OAAO;IACrF,MAAM,IAAIC,MAAM;AAClB;AAEO,eAAeC,mBAAmBA,CAACC,eAAkC,EAAE,EAAEC,YAAoBN,0BAA0B;IAC5H,IAAIK,aAAa,MAAM,KAAK,GAAG;QAC7B;IACF;IAEAN,QAAQA,CAAC,CAAC,YAAY,EAAEM,aAAa,MAAM,CAAC,4BAA4B,CAAC,EAAE,IAAI,MAAM;IAErF,MAAME,QAAQ,GAAG,CACfF,aAAa,GAAG,CAAC,OAAOG,qBAAqBC;QAC3C,IAAI;YACF,MAAMC,WAAW,MAAMF;YACvB,MAAMG,UAAUV,cAAcA,CAACS;YAC/B,MAAME,OAAOD,QAAQ,IAAI,IAAI;YAE7B,wDAAwD;YACxD,MAAMA,QAAQ,UAAU;YAExB,MAAMJ,QAAQ,IAAI,CAAC;gBACjBI,QAAQ,YAAY;gBACpB,IAAIJ,QAAe,CAACM,GAAGC,SACrBC,WAAW,UAAU,CAAC,IAAMD,OAAO,IAAIX,MAAM,CAAC,WAAW,EAAEM,MAAM,GAAG,EAAEG,KAAK,mBAAmB,EAAEN,UAAU,wCAAwC,CAAC,IAAIA;aAE1J;QACH,EAAE,OAAOU,OAAO;YACdlB,oBAAoBA,CAAC,CAAC,0BAA0B,EAAEW,MAAM,qBAAqB,CAAC,EAAEO;QAClF;IACF;AAEJ"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export interface
|
|
1
|
+
import { type IStorageBase } from '../core';
|
|
2
|
+
/** Минимальная форма готового synapse, нужная awaiter'у: доступ к storage. */
|
|
3
|
+
export interface AwaitableSynapse {
|
|
4
|
+
storage: IStorageBase<any>;
|
|
5
|
+
}
|
|
6
|
+
export interface SynapseAwaiter<TStore extends AwaitableSynapse> {
|
|
4
7
|
/**
|
|
5
8
|
* Возвращает Promise, который резолвится когда Synapse готов
|
|
6
9
|
*/
|
|
7
|
-
waitForReady(): Promise<
|
|
10
|
+
waitForReady(): Promise<TStore>;
|
|
8
11
|
/**
|
|
9
12
|
* Проверяет, готов ли Synapse прямо сейчас (синхронно)
|
|
10
13
|
*/
|
|
@@ -12,13 +15,13 @@ export interface SynapseAwaiter<TStore extends Record<string, any>, TStorage ext
|
|
|
12
15
|
/**
|
|
13
16
|
* Получает store если он готов, иначе undefined
|
|
14
17
|
*/
|
|
15
|
-
getStoreIfReady():
|
|
18
|
+
getStoreIfReady(): TStore | undefined;
|
|
16
19
|
/**
|
|
17
20
|
* Подписывается на событие готовности
|
|
18
21
|
* @param callback Функция, вызываемая когда store становится готов
|
|
19
22
|
* @returns Функция отписки
|
|
20
23
|
*/
|
|
21
|
-
onReady(callback: (store:
|
|
24
|
+
onReady(callback: (store: TStore) => void): VoidFunction;
|
|
22
25
|
/**
|
|
23
26
|
* Подписывается на ошибки инициализации
|
|
24
27
|
* @param callback Функция, вызываемая при ошибке
|
|
@@ -39,8 +42,8 @@ export interface SynapseAwaiter<TStore extends Record<string, any>, TStorage ext
|
|
|
39
42
|
destroy(): void;
|
|
40
43
|
}
|
|
41
44
|
/**
|
|
42
|
-
* Создает фреймворк-независимую утилиту для ожидания готовности Synapse
|
|
43
|
-
*
|
|
45
|
+
* Создает фреймворк-независимую утилиту для ожидания готовности Synapse.
|
|
46
|
+
* Принимает `SynapseModule`-handle (PromiseLike), Promise готового synapse либо сам
|
|
47
|
+
* готовый synapse. Работает в любом JS окружении: Node.js, браузер, React Native.
|
|
44
48
|
*/
|
|
45
|
-
export declare function createSynapseAwaiter<TStore extends
|
|
46
|
-
//# sourceMappingURL=createSynapseAwaiter.d.ts.map
|
|
49
|
+
export declare function createSynapseAwaiter<TStore extends AwaitableSynapse>(synapseStorePromise: PromiseLike<TStore> | TStore): SynapseAwaiter<TStore>;
|
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
import { handleCallbackError } from "../_utils/error-handling.util.js";
|
|
2
|
+
import { StorageStatus } from "../core/index.js";
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/** Похож ли вход на thenable (handle/Promise), а не на уже готовый synapse. */ const isThenable = (value)=>typeof value?.then === 'function';
|
|
9
|
+
/**
|
|
10
|
+
* Синхронно извлекает уже готовый synapse из входа, если это возможно:
|
|
11
|
+
* - `SynapseModule`-handle, уже собранный (`getSnapshot()` отдаёт synapse);
|
|
12
|
+
* - напрямую переданный synapse с уже инициализированным (READY) хранилищем.
|
|
13
|
+
* Иначе `undefined` — резолв уйдёт в async-ветку. Это и есть SSR sync-fast-path.
|
|
14
|
+
*/ const resolveSyncReady = (input)=>{
|
|
15
|
+
// Handle: синхронный снапшот уже собранного synapse (server после dehydrate / повторный mount).
|
|
16
|
+
const snapshot = input?.getSnapshot?.();
|
|
17
|
+
if (snapshot && snapshot.storage.initStatus.status === StorageStatus.READY) return snapshot;
|
|
18
|
+
// Напрямую переданный готовый synapse (не thenable) с READY-хранилищем.
|
|
19
|
+
if (!isThenable(input) && input.storage?.initStatus?.status === StorageStatus.READY) {
|
|
20
|
+
return input;
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
};
|
|
5
24
|
/**
|
|
6
|
-
* Создает фреймворк-независимую утилиту для ожидания готовности Synapse
|
|
7
|
-
*
|
|
25
|
+
* Создает фреймворк-независимую утилиту для ожидания готовности Synapse.
|
|
26
|
+
* Принимает `SynapseModule`-handle (PromiseLike), Promise готового synapse либо сам
|
|
27
|
+
* готовый synapse. Работает в любом JS окружении: Node.js, браузер, React Native.
|
|
8
28
|
*/ function createSynapseAwaiter(synapseStorePromise) {
|
|
9
29
|
let status = 'pending';
|
|
10
30
|
let store;
|
|
@@ -12,10 +32,17 @@ import { handleCallbackError } from "../_utils/error-handling.util.js";
|
|
|
12
32
|
let destroyed = false;
|
|
13
33
|
const readyCallbacks = new Set();
|
|
14
34
|
const errorCallbacks = new Set();
|
|
35
|
+
// SSR sync-fast-path: если стор уже готов синхронно — выставляем состояние ДО возврата,
|
|
36
|
+
// чтобы getStoreIfReady() отдавал его на первом синхронном рендере (сервер/гидрация).
|
|
37
|
+
const syncReady = resolveSyncReady(synapseStorePromise);
|
|
38
|
+
if (syncReady) {
|
|
39
|
+
store = syncReady;
|
|
40
|
+
status = 'ready';
|
|
41
|
+
}
|
|
15
42
|
// Создаем Promise для инициализации хранилища
|
|
16
43
|
const storeInitPromise = (async ()=>{
|
|
17
44
|
try {
|
|
18
|
-
const resolvedStore = await
|
|
45
|
+
const resolvedStore = await Promise.resolve(synapseStorePromise);
|
|
19
46
|
// Дополнительно ждем готовности хранилища
|
|
20
47
|
await resolvedStore.storage.waitForReady();
|
|
21
48
|
// Если awaiter был уничтожен во время инициализации — не обновляем состояние
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/createSynapseAwaiter.js","sources":["../../src/utils/createSynapseAwaiter.ts"],"sourcesContent":["import { handleCallbackError } from '../_utils/error-handling.util'\nimport {
|
|
1
|
+
{"version":3,"file":"utils/createSynapseAwaiter.js","sources":["../../src/utils/createSynapseAwaiter.ts"],"sourcesContent":["import { handleCallbackError } from '../_utils/error-handling.util'\nimport { type IStorageBase, StorageStatus } from '../core'\n\n/** Минимальная форма готового synapse, нужная awaiter'у: доступ к storage. */\nexport interface AwaitableSynapse {\n storage: IStorageBase<any>\n}\n\n/** Похож ли вход на thenable (handle/Promise), а не на уже готовый synapse. */\nconst isThenable = (value: unknown): value is PromiseLike<unknown> => typeof (value as { then?: unknown } | null)?.then === 'function'\n\n/**\n * Синхронно извлекает уже готовый synapse из входа, если это возможно:\n * - `SynapseModule`-handle, уже собранный (`getSnapshot()` отдаёт synapse);\n * - напрямую переданный synapse с уже инициализированным (READY) хранилищем.\n * Иначе `undefined` — резолв уйдёт в async-ветку. Это и есть SSR sync-fast-path.\n */\nconst resolveSyncReady = <TStore extends AwaitableSynapse>(input: PromiseLike<TStore> | TStore): TStore | undefined => {\n // Handle: синхронный снапшот уже собранного synapse (server после dehydrate / повторный mount).\n const snapshot = (input as { getSnapshot?: () => TStore | undefined } | null)?.getSnapshot?.()\n if (snapshot && snapshot.storage.initStatus.status === StorageStatus.READY) return snapshot\n\n // Напрямую переданный готовый synapse (не thenable) с READY-хранилищем.\n if (!isThenable(input) && (input as TStore).storage?.initStatus?.status === StorageStatus.READY) {\n return input as TStore\n }\n\n return undefined\n}\n\nexport interface SynapseAwaiter<TStore extends AwaitableSynapse> {\n /**\n * Возвращает Promise, который резолвится когда Synapse готов\n */\n waitForReady(): Promise<TStore>\n\n /**\n * Проверяет, готов ли Synapse прямо сейчас (синхронно)\n */\n isReady(): boolean\n\n /**\n * Получает store если он готов, иначе undefined\n */\n getStoreIfReady(): TStore | undefined\n\n /**\n * Подписывается на событие готовности\n * @param callback Функция, вызываемая когда store становится готов\n * @returns Функция отписки\n */\n onReady(callback: (store: TStore) => void): VoidFunction\n\n /**\n * Подписывается на ошибки инициализации\n * @param callback Функция, вызываемая при ошибке\n * @returns Функция отписки\n */\n onError(callback: (error: Error) => void): VoidFunction\n\n /**\n * Получает текущий статус\n */\n getStatus(): 'pending' | 'ready' | 'error'\n\n /**\n * Получает ошибку если есть\n */\n getError(): Error | null\n\n /**\n * Очищает ресурсы\n */\n destroy(): void\n}\n\n/**\n * Создает фреймворк-независимую утилиту для ожидания готовности Synapse.\n * Принимает `SynapseModule`-handle (PromiseLike), Promise готового synapse либо сам\n * готовый synapse. Работает в любом JS окружении: Node.js, браузер, React Native.\n */\nexport function createSynapseAwaiter<TStore extends AwaitableSynapse>(synapseStorePromise: PromiseLike<TStore> | TStore): SynapseAwaiter<TStore> {\n let status: 'pending' | 'ready' | 'error' = 'pending'\n let store: TStore | undefined\n let error: Error | null = null\n let destroyed = false\n\n const readyCallbacks = new Set<(store: TStore) => void>()\n const errorCallbacks = new Set<(error: Error) => void>()\n\n // SSR sync-fast-path: если стор уже готов синхронно — выставляем состояние ДО возврата,\n // чтобы getStoreIfReady() отдавал его на первом синхронном рендере (сервер/гидрация).\n const syncReady = resolveSyncReady(synapseStorePromise)\n if (syncReady) {\n store = syncReady\n status = 'ready'\n }\n\n // Создаем Promise для инициализации хранилища\n const storeInitPromise = (async () => {\n try {\n const resolvedStore = await Promise.resolve(synapseStorePromise)\n\n // Дополнительно ждем готовности хранилища\n await resolvedStore.storage.waitForReady()\n\n // Если awaiter был уничтожен во время инициализации — не обновляем состояние\n if (destroyed) return resolvedStore\n\n store = resolvedStore\n status = 'ready'\n\n // Уведомляем всех подписчиков о готовности\n readyCallbacks.forEach((callback) => {\n try {\n callback(store!)\n } catch (err) {\n handleCallbackError('SynapseAwaiter: error in ready callback', err)\n }\n })\n\n return resolvedStore\n } catch (err) {\n const errorObj = err instanceof Error ? err : new Error(String(err))\n\n // Если awaiter был уничтожен во время инициализации — не обновляем состояние\n if (destroyed) throw errorObj\n\n error = errorObj\n status = 'error'\n\n // Уведомляем всех подписчиков об ошибке\n errorCallbacks.forEach((callback) => {\n try {\n callback(errorObj)\n } catch (callbackErr) {\n handleCallbackError('SynapseAwaiter: error in error callback', callbackErr)\n }\n })\n\n throw errorObj\n }\n })()\n\n return {\n waitForReady: () => storeInitPromise,\n\n isReady: () => status === 'ready',\n\n getStoreIfReady: () => store,\n\n onReady: (callback) => {\n // Если уже готов, вызываем callback немедленно\n if (status === 'ready' && store) {\n try {\n callback(store)\n } catch (err) {\n handleCallbackError('SynapseAwaiter: error in immediate ready callback', err)\n }\n } else {\n // Иначе добавляем в список ожидания\n readyCallbacks.add(callback)\n }\n\n return () => {\n readyCallbacks.delete(callback)\n }\n },\n\n onError: (callback) => {\n // Если уже есть ошибка, вызываем callback немедленно\n if (status === 'error' && error) {\n try {\n callback(error)\n } catch (err) {\n handleCallbackError('SynapseAwaiter: error in immediate error callback', err)\n }\n } else {\n // Иначе добавляем в список ожидания\n errorCallbacks.add(callback)\n }\n\n return () => {\n errorCallbacks.delete(callback)\n }\n },\n\n getStatus: () => status,\n\n getError: () => error,\n\n destroy: () => {\n destroyed = true\n readyCallbacks.clear()\n errorCallbacks.clear()\n store = undefined\n error = null\n status = 'pending'\n },\n }\n}\n"],"names":["handleCallbackError","StorageStatus","isThenable","value","resolveSyncReady","input","snapshot","undefined","createSynapseAwaiter","synapseStorePromise","status","store","error","destroyed","readyCallbacks","Set","errorCallbacks","syncReady","storeInitPromise","resolvedStore","Promise","callback","err","errorObj","Error","String","callbackErr"],"mappings":";;;;;AAAmE;AACT;AAO1D,6EAA6E,GAC7E,MAAME,UAAUA,GAAG,CAACC,QAAkD,OAAQA,OAAqC,SAAS;AAE5H;;;;;CAKC,GACD,MAAMC,gBAAgBA,GAAG,CAAkCC;IACzD,gGAAgG;IAChG,MAAMC,WAAYD,OAA6D;IAC/E,IAAIC,YAAYA,SAAS,OAAO,CAAC,UAAU,CAAC,MAAM,KAAKL,mBAAmB,EAAE,OAAOK;IAEnF,wEAAwE;IACxE,IAAI,CAACJ,UAAUA,CAACG,UAAWA,MAAiB,OAAO,EAAE,YAAY,WAAWJ,mBAAmB,EAAE;QAC/F,OAAOI;IACT;IAEA,OAAOE;AACT;AAgDA;;;;CAIC,GACM,SAASC,oBAAoBA,CAAkCC,mBAAiD;IACrH,IAAIC,SAAwC;IAC5C,IAAIC;IACJ,IAAIC,QAAsB;IAC1B,IAAIC,YAAY;IAEhB,MAAMC,iBAAiB,IAAIC;IAC3B,MAAMC,iBAAiB,IAAID;IAE3B,wFAAwF;IACxF,sFAAsF;IACtF,MAAME,YAAYb,gBAAgBA,CAACK;IACnC,IAAIQ,WAAW;QACbN,QAAQM;QACRP,SAAS;IACX;IAEA,8CAA8C;IAC9C,MAAMQ,mBAAoB;QACxB,IAAI;YACF,MAAMC,gBAAgB,MAAMC,QAAQ,OAAO,CAACX;YAE5C,0CAA0C;YAC1C,MAAMU,cAAc,OAAO,CAAC,YAAY;YAExC,6EAA6E;YAC7E,IAAIN,WAAW,OAAOM;YAEtBR,QAAQQ;YACRT,SAAS;YAET,2CAA2C;YAC3CI,eAAe,OAAO,CAAC,CAACO;gBACtB,IAAI;oBACFA,SAASV;gBACX,EAAE,OAAOW,KAAK;oBACZtB,mBAAmBA,CAAC,2CAA2CsB;gBACjE;YACF;YAEA,OAAOH;QACT,EAAE,OAAOG,KAAK;YACZ,MAAMC,WAAWD,eAAeE,QAAQF,MAAM,IAAIE,MAAMC,OAAOH;YAE/D,6EAA6E;YAC7E,IAAIT,WAAW,MAAMU;YAErBX,QAAQW;YACRb,SAAS;YAET,wCAAwC;YACxCM,eAAe,OAAO,CAAC,CAACK;gBACtB,IAAI;oBACFA,SAASE;gBACX,EAAE,OAAOG,aAAa;oBACpB1B,mBAAmBA,CAAC,2CAA2C0B;gBACjE;YACF;YAEA,MAAMH;QACR;IACF;IAEA,OAAO;QACL,cAAc,IAAML;QAEpB,SAAS,IAAMR,WAAW;QAE1B,iBAAiB,IAAMC;QAEvB,SAAS,CAACU;YACR,+CAA+C;YAC/C,IAAIX,WAAW,WAAWC,OAAO;gBAC/B,IAAI;oBACFU,SAASV;gBACX,EAAE,OAAOW,KAAK;oBACZtB,mBAAmBA,CAAC,qDAAqDsB;gBAC3E;YACF,OAAO;gBACL,oCAAoC;gBACpCR,eAAe,GAAG,CAACO;YACrB;YAEA,OAAO;gBACLP,eAAe,MAAM,CAACO;YACxB;QACF;QAEA,SAAS,CAACA;YACR,qDAAqD;YACrD,IAAIX,WAAW,WAAWE,OAAO;gBAC/B,IAAI;oBACFS,SAAST;gBACX,EAAE,OAAOU,KAAK;oBACZtB,mBAAmBA,CAAC,qDAAqDsB;gBAC3E;YACF,OAAO;gBACL,oCAAoC;gBACpCN,eAAe,GAAG,CAACK;YACrB;YAEA,OAAO;gBACLL,eAAe,MAAM,CAACK;YACxB;QACF;QAEA,WAAW,IAAMX;QAEjB,UAAU,IAAME;QAEhB,SAAS;YACPC,YAAY;YACZC,eAAe,KAAK;YACpBE,eAAe,KAAK;YACpBL,QAAQJ;YACRK,QAAQ;YACRF,SAAS;QACX;IACF;AACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SynapseModule } from './createSynapse/index';
|
|
2
|
+
export interface DehydrateModuleOptions<TState extends Record<string, any>> {
|
|
3
|
+
state?: Partial<TState>;
|
|
4
|
+
ssr?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const dehydrateModule: <TState extends Record<string, any>, TDispatcher, TSelectors>(synapseModule: SynapseModule<TState, TDispatcher, TSelectors>, options?: DehydrateModuleOptions<TState>) => Promise<TState>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { StorageStatus } from "../core/index.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
// Server-safe дегидрация модуля: сериализуемый снапшот стора для пропа dehydratedState.
|
|
6
|
+
// В отличие от замыкания dehydrate из createSynapseCtx — без React-зависимостей, импортируется
|
|
7
|
+
// в серверный (RSC / 'server only') модуль.
|
|
8
|
+
const dehydrateModule = async (synapseModule, options)=>{
|
|
9
|
+
const { state, ssr = false } = options ?? {};
|
|
10
|
+
// Per-request форк: собственный стор, не пересекается с другими запросами.
|
|
11
|
+
// ready({ withEffects: false }) — собираем стор для снапшота БЕЗ запуска эффектов: на
|
|
12
|
+
// сервере они не нужны и потенциально вредны (см. ready()/buildSynapse withEffects).
|
|
13
|
+
const fork = synapseModule.fork();
|
|
14
|
+
const forked = await fork.ready({
|
|
15
|
+
withEffects: false
|
|
16
|
+
});
|
|
17
|
+
// hydrate заменяет состояние целиком, поэтому мерджим поверх текущего, иначе частичный
|
|
18
|
+
// state занулил бы непереданные поля. await покрывает и async-сторы (IndexedDB), иначе
|
|
19
|
+
// getStateSync() снял бы снапшот до завершения гидрации.
|
|
20
|
+
if (state) await forked.storage.hydrate({
|
|
21
|
+
...forked.storage.getStateSync(),
|
|
22
|
+
...state
|
|
23
|
+
});
|
|
24
|
+
const snapshot = forked.storage.getStateSync();
|
|
25
|
+
await fork.destroy();
|
|
26
|
+
if (ssr) {
|
|
27
|
+
// Прогрев main handle тоже через ready({ withEffects: false }): серверу нужны только
|
|
28
|
+
// READY-storage + state для resolveSyncReady → getStoreIfReady → seedHydration. Эффекты
|
|
29
|
+
// не стартуем — main handle при ssr живёт между запросами и не destroy-ится, его эффекты
|
|
30
|
+
// «висели» бы навсегда.
|
|
31
|
+
const main = await synapseModule.ready({
|
|
32
|
+
withEffects: false
|
|
33
|
+
});
|
|
34
|
+
if (main.storage.initStatus.status === StorageStatus.READY) {
|
|
35
|
+
await main.storage.hydrate(snapshot);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return snapshot;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export { dehydrateModule };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=dehydrateModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils/dehydrateModule.js","sources":["../../src/utils/dehydrateModule.ts"],"sourcesContent":["import { StorageStatus } from '../core'\nimport type { SynapseModule } from './createSynapse/index'\n\nexport interface DehydrateModuleOptions<TState extends Record<string, any>> {\n // Серверные данные под запрос. Накладываются поверх initialState форка shallow-мерджем\n // верхнего уровня, поэтому можно передавать только изменённые поля. Вложенные объекты\n // заменяются целиком: правишь подполе api.x — передавай весь api.\n state?: Partial<TState>\n // Прогреть основной handle снапшотом для синхронного SSR-рендера. Только для синхронно\n // готовых (READY) сторов (Memory/LocalStorage); у async-сторов (IndexedDB) синхронного\n // серверного рендера нет — прогрев пропускается.\n ssr?: boolean\n}\n\n// Server-safe дегидрация модуля: сериализуемый снапшот стора для пропа dehydratedState.\n// В отличие от замыкания dehydrate из createSynapseCtx — без React-зависимостей, импортируется\n// в серверный (RSC / 'server only') модуль.\nexport const dehydrateModule = async <TState extends Record<string, any>, TDispatcher, TSelectors>(\n synapseModule: SynapseModule<TState, TDispatcher, TSelectors>,\n options?: DehydrateModuleOptions<TState>,\n): Promise<TState> => {\n const { state, ssr = false } = options ?? {}\n\n // Per-request форк: собственный стор, не пересекается с другими запросами.\n // ready({ withEffects: false }) — собираем стор для снапшота БЕЗ запуска эффектов: на\n // сервере они не нужны и потенциально вредны (см. ready()/buildSynapse withEffects).\n const fork = synapseModule.fork()\n const forked = await fork.ready({ withEffects: false })\n // hydrate заменяет состояние целиком, поэтому мерджим поверх текущего, иначе частичный\n // state занулил бы непереданные поля. await покрывает и async-сторы (IndexedDB), иначе\n // getStateSync() снял бы снапшот до завершения гидрации.\n if (state) await forked.storage.hydrate({ ...forked.storage.getStateSync(), ...state })\n const snapshot = forked.storage.getStateSync()\n await fork.destroy()\n\n if (ssr) {\n // Прогрев main handle тоже через ready({ withEffects: false }): серверу нужны только\n // READY-storage + state для resolveSyncReady → getStoreIfReady → seedHydration. Эффекты\n // не стартуем — main handle при ssr живёт между запросами и не destroy-ится, его эффекты\n // «висели» бы навсегда.\n const main = await synapseModule.ready({ withEffects: false })\n if (main.storage.initStatus.status === StorageStatus.READY) {\n await main.storage.hydrate(snapshot)\n }\n }\n\n return snapshot\n}\n"],"names":["StorageStatus","dehydrateModule","synapseModule","options","state","ssr","fork","forked","snapshot","main"],"mappings":";;;AAAuC;AAcvC,wFAAwF;AACxF,+FAA+F;AAC/F,4CAA4C;AACrC,MAAMC,eAAeA,GAAG,OAC7BC,eACAC;IAEA,MAAM,EAAEC,KAAK,EAAEC,MAAM,KAAK,EAAE,GAAGF,WAAW,CAAC;IAE3C,2EAA2E;IAC3E,sFAAsF;IACtF,qFAAqF;IACrF,MAAMG,OAAOJ,cAAc,IAAI;IAC/B,MAAMK,SAAS,MAAMD,KAAK,KAAK,CAAC;QAAE,aAAa;IAAM;IACrD,uFAAuF;IACvF,uFAAuF;IACvF,yDAAyD;IACzD,IAAIF,OAAO,MAAMG,OAAO,OAAO,CAAC,OAAO,CAAC;QAAE,GAAGA,OAAO,OAAO,CAAC,YAAY,EAAE;QAAE,GAAGH,KAAK;IAAC;IACrF,MAAMI,WAAWD,OAAO,OAAO,CAAC,YAAY;IAC5C,MAAMD,KAAK,OAAO;IAElB,IAAID,KAAK;QACP,qFAAqF;QACrF,wFAAwF;QACxF,yFAAyF;QACzF,wBAAwB;QACxB,MAAMI,OAAO,MAAMP,cAAc,KAAK,CAAC;YAAE,aAAa;QAAM;QAC5D,IAAIO,KAAK,OAAO,CAAC,UAAU,CAAC,MAAM,KAAKT,mBAAmB,EAAE;YAC1D,MAAMS,KAAK,OAAO,CAAC,OAAO,CAACD;QAC7B;IACF;IAEA,OAAOA;AACT,EAAC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { createEventBus, type EventBusConfig, type EventBusEvent, type EventBusState } from './createEventBus';
|
|
2
|
-
export {
|
|
3
|
-
export { createSynapseAwaiter } from './createSynapseAwaiter';
|
|
4
|
-
|
|
2
|
+
export { createSynapse, type Synapse, type SynapseConfig, type SynapseModule } from './createSynapse/index';
|
|
3
|
+
export { type AwaitableSynapse, createSynapseAwaiter, type SynapseAwaiter } from './createSynapseAwaiter';
|
|
4
|
+
export { dehydrateModule, type DehydrateModuleOptions } from './dehydrateModule';
|
package/dist/utils/index.js
CHANGED
|
@@ -5,8 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
+
|
|
9
|
+
|
|
8
10
|
export { createEventBus } from "./createEventBus.js";
|
|
9
11
|
export { createSynapse } from "./createSynapse/index.js";
|
|
10
12
|
export { createSynapseAwaiter } from "./createSynapseAwaiter.js";
|
|
13
|
+
export { dehydrateModule } from "./dehydrateModule.js";
|
|
11
14
|
|
|
12
15
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/index.js","sources":["../../src/utils/index.ts"],"sourcesContent":["export { createEventBus, type EventBusConfig, type EventBusEvent, type EventBusState } from './createEventBus'\nexport {
|
|
1
|
+
{"version":3,"file":"utils/index.js","sources":["../../src/utils/index.ts"],"sourcesContent":["export { createEventBus, type EventBusConfig, type EventBusEvent, type EventBusState } from './createEventBus'\nexport { createSynapse, type Synapse, type SynapseConfig, type SynapseModule } from './createSynapse/index'\nexport { type AwaitableSynapse, createSynapseAwaiter, type SynapseAwaiter } from './createSynapseAwaiter'\nexport { dehydrateModule, type DehydrateModuleOptions } from './dehydrateModule'\n"],"names":["createEventBus","createSynapse","createSynapseAwaiter","dehydrateModule"],"mappings":";;;;AAA8G;AACH;AACF;AACzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "synapse-storage",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.3",
|
|
4
4
|
"description": "Набор инструментов для управления состоянием и апи-запросами",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -33,6 +33,9 @@
|
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "rslib build",
|
|
35
35
|
"watch": "rslib build --watch",
|
|
36
|
+
"test": "vitest run",
|
|
37
|
+
"test:watch": "vitest",
|
|
38
|
+
"test:coverage": "vitest run --coverage",
|
|
36
39
|
"lint": "eslint src --ext .ts",
|
|
37
40
|
"lint:fix": "eslint --config eslint.config.mjs src --ext .ts,.tsx --fix",
|
|
38
41
|
"format": "prettier --write \"src/**/*.ts\"",
|
|
@@ -91,6 +94,9 @@
|
|
|
91
94
|
"@eslint/js": "^9.27.0",
|
|
92
95
|
"@humanwhocodes/retry": "^0.4.3",
|
|
93
96
|
"@rslib/core": "0.21.5",
|
|
97
|
+
"@testing-library/dom": "^10.4.1",
|
|
98
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
99
|
+
"@testing-library/react": "^16.3.0",
|
|
94
100
|
"@types/node": "^22.15.18",
|
|
95
101
|
"@types/react": "^19.1.0",
|
|
96
102
|
"@types/react-dom": "^19.1.0",
|
|
@@ -101,11 +107,15 @@
|
|
|
101
107
|
"eslint-plugin-import": "^2.31.0",
|
|
102
108
|
"eslint-plugin-prettier": "^5.4.0",
|
|
103
109
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
110
|
+
"fake-indexeddb": "^6.0.1",
|
|
111
|
+
"jsdom": "^26.1.0",
|
|
104
112
|
"prettier": "^3.5.3",
|
|
105
113
|
"react": "^19.1.0",
|
|
106
114
|
"react-dom": "^19.1.0",
|
|
107
115
|
"rxjs": "^7.8.0",
|
|
108
116
|
"typescript": "^5.8.3",
|
|
109
|
-
"typescript-eslint": "^8.32.1"
|
|
117
|
+
"typescript-eslint": "^8.32.1",
|
|
118
|
+
"vitest": "^3.2.4",
|
|
119
|
+
"@vitest/coverage-v8": "^3.2.4"
|
|
110
120
|
}
|
|
111
121
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk.util.d.ts","sourceRoot":"","sources":["../../src/_utils/chunk.util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,GAAE,MAAU,GAAG,CAAC,EAAE,EAAE,CAe5D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deepMerge.util.d.ts","sourceRoot":"","sources":["../../src/_utils/deepMerge.util.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,GAAI,QAAQ,GAAG,EAAE,QAAQ,GAAG,QAcjD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-handling.util.d.ts","sourceRoot":"","sources":["../../src/_utils/error-handling.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAGhE;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,OAAO,CAAC,EAAE,MAAM;aAChB,KAAK,CAAC,EAAE,OAAO;gBAF/B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,KAAK,CAAC,EAAE,OAAO,YAAA;CAKlC;AAED;;;;;;;GAOG;AAEH,KAAK,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAEjC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,GAAE,SAAmB,GAAG,IAAI,CAOnH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,KAAK,CAGpG;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAElG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAEjG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,SAAS,CAOpG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAErG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flatMap.util.d.ts","sourceRoot":"","sources":["../../src/_utils/flatMap.util.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAczG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/_utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger-console.util.d.ts","sourceRoot":"","sources":["../../src/_utils/logger-console.util.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa;mBACT,GAAG,EAAE;oBACJ,GAAG,EAAE;qBACJ,GAAG,EAAE;qBACL,GAAG,EAAE;;8BAEI,GAAG,EAAE;CAChC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.module.d.ts","sourceRoot":"","sources":["../../src/api/api.module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACpG,OAAO,EAAE,cAAc,EAAE,QAAQ,IAAI,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AACrG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAInE,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAGjF,KAAK,YAAY,CAAC,WAAW,IAAI;KAC9B,CAAC,IAAI,MAAM,eAAe,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChK,CAAA;AAED,qBAAa,SAAS,CAAC,WAAW,SAAS,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACtH,yBAAyB;IACzB,OAAO,CAAC,YAAY,CAAe;IAEnC,qCAAqC;IACrC,OAAO,CAAC,YAAY,CAAQ;IAE5B,2EAA2E;IAC3E,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA+C;IAEnF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IAEnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IAErE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IAEnE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IAEnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAa;IAE7C,wBAAwB;IACxB,OAAO,CAAC,SAAS,CAEX;gBAEM,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC,GAAG;QAAE,SAAS,EAAE,WAAW,CAAA;KAAE;IAU9E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAQpB,OAAO;YAgBP,mBAAmB;IAqBjC,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;IACI,YAAY,IAAI,YAAY,CAAC,WAAW,CAAC;IAKhD;;;;;;OAMG;IACU,OAAO,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,WAAW,CAAC,GAAG,MAAM,EACxE,YAAY,EAAE,CAAC,EACf,MAAM,EAAE,iBAAiB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1D,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAmBrE,OAAO;CAerB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../../src/api/components/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAe,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,qBAAqB,EAAgB,MAAM,6BAA6B,CAAA;AAC1I,OAAO,EAAE,YAAY,EAAe,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAMjF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAK9C,MAAM,WAAW,oBAAoB,CAAC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,eAAe;IAC9F,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IACtD,mBAAmB,EAAE,sBAAsB,CAAC,qBAAqB,CAAC,CAAA;IAClE,iBAAiB,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAClD,iBAAiB,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAClD,eAAe,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAA;CACrD;AAED,qBAAa,aAAa,CAAC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,eAAe,CAAE,YAAW,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC;IAC5I,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA4C;IAEhF,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAI;IAEvB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAKzB;IAED,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;IACtF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA+C;IACnF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IACnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IAErE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IAEjE,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAE3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyC;IAExE,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkE;gBAEvF,OAAO,EAAE,oBAAoB,CAAC,aAAa,EAAE,eAAe,CAAC;IA4BlE,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,qBAAqB,CAAC,eAAe,CAAC;IA2FrG;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;YACW,cAAc;IA0H5B;;OAEG;YACW,YAAY;IAsC1B;;OAEG;YACW,cAAc;IA+C5B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAW1B,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,WAAW;IAepD,KAAK;IASX,OAAO;CAIf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-storage.d.ts","sourceRoot":"","sources":["../../../src/api/components/query-storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD;;;GAGG;AACH,qBAAa,YAAY;IA0BrB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IA1BpC,0BAA0B;IAC1B,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,eAAe,CAAuC;IAE9D,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAiC;IAEjD,kCAAkC;IAClC,OAAO,CAAC,mBAAmB,CAO1B;IAED,qCAAqC;IACrC,OAAO,CAAC,YAAY,CAAQ;IAE5B,mCAAmC;IACnC,OAAO,CAAC,YAAY,CAA6B;gBAG9B,eAAe,EAAE,aAAa,EAC9B,iBAAiB,EAAE,sBAAsB,CAAC,OAAO,CAAC;IAGxD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAQ1B,aAAa;YAiBb,aAAa;IAY3B,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACI,UAAU,IAAI,QAAQ,GAAG,IAAI;IAIpC;;;;OAIG;IACI,cAAc,CAAC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;IAIpG;;OAEG;IACU,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAuBjF;;;;;;;OAOG;IACU,eAAe,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrE,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,CAAC,EACP,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,EAC3C,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC;IA2BhB;;;;;;OAMG;IACI,WAAW,CAAC,cAAc,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM;IAiB3F;;;;OAIG;IACI,iBAAiB,CAAC,cAAc,CAAC,EAAE,cAAc;;;;oBAvLpD,CAAN;;;;IA2ME;;;OAGG;IACU,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBjE;;;OAGG;IACU,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrE;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAerC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBrC;;;OAGG;YACW,eAAe;IA4B7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAU9B"}
|
package/dist/api/example.d.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { ApiClient } from './api.module';
|
|
2
|
-
export interface PokemonListResponse {
|
|
3
|
-
count: number;
|
|
4
|
-
next: string | null;
|
|
5
|
-
previous: string | null;
|
|
6
|
-
results: {
|
|
7
|
-
name: string;
|
|
8
|
-
url: string;
|
|
9
|
-
}[];
|
|
10
|
-
}
|
|
11
|
-
export interface PokemonDetails {
|
|
12
|
-
id: number;
|
|
13
|
-
name: string;
|
|
14
|
-
height: number;
|
|
15
|
-
weight: number;
|
|
16
|
-
sprites: {
|
|
17
|
-
front_default: string;
|
|
18
|
-
back_default: string;
|
|
19
|
-
other?: {
|
|
20
|
-
'official-artwork'?: {
|
|
21
|
-
front_default: string;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
types: {
|
|
26
|
-
slot: number;
|
|
27
|
-
type: {
|
|
28
|
-
name: string;
|
|
29
|
-
url: string;
|
|
30
|
-
};
|
|
31
|
-
}[];
|
|
32
|
-
abilities: {
|
|
33
|
-
ability: {
|
|
34
|
-
name: string;
|
|
35
|
-
url: string;
|
|
36
|
-
};
|
|
37
|
-
is_hidden: boolean;
|
|
38
|
-
slot: number;
|
|
39
|
-
}[];
|
|
40
|
-
stats: {
|
|
41
|
-
base_stat: number;
|
|
42
|
-
effort: number;
|
|
43
|
-
stat: {
|
|
44
|
-
name: string;
|
|
45
|
-
url: string;
|
|
46
|
-
};
|
|
47
|
-
}[];
|
|
48
|
-
}
|
|
49
|
-
export interface PokemonSearchParams {
|
|
50
|
-
limit?: number;
|
|
51
|
-
offset?: number;
|
|
52
|
-
}
|
|
53
|
-
export declare const api: ApiClient<(create: import("./types/endpoint.interface").CreateEndpoint) => Promise<{
|
|
54
|
-
updatePokemonById: import("./types/endpoint.interface").EndpointConfig<{
|
|
55
|
-
id: number;
|
|
56
|
-
}, PokemonDetails>;
|
|
57
|
-
getPokemonById: import("./types/endpoint.interface").EndpointConfig<{
|
|
58
|
-
id: number;
|
|
59
|
-
}, PokemonDetails>;
|
|
60
|
-
getPokemonList: import("./types/endpoint.interface").EndpointConfig<PokemonSearchParams, PokemonListResponse>;
|
|
61
|
-
}>>;
|
|
62
|
-
export declare const pokemonApi: ApiClient<(create: import("./types/endpoint.interface").CreateEndpoint) => Promise<{
|
|
63
|
-
updatePokemonById: import("./types/endpoint.interface").EndpointConfig<{
|
|
64
|
-
id: number;
|
|
65
|
-
}, PokemonDetails>;
|
|
66
|
-
getPokemonById: import("./types/endpoint.interface").EndpointConfig<{
|
|
67
|
-
id: number;
|
|
68
|
-
}, PokemonDetails>;
|
|
69
|
-
getPokemonList: import("./types/endpoint.interface").EndpointConfig<PokemonSearchParams, PokemonListResponse>;
|
|
70
|
-
}>>;
|
|
71
|
-
export declare const pokemonEndpoints: {
|
|
72
|
-
updatePokemonById: import("./types/endpoint.interface").Endpoint<{
|
|
73
|
-
id: number;
|
|
74
|
-
}, PokemonDetails>;
|
|
75
|
-
getPokemonById: import("./types/endpoint.interface").Endpoint<{
|
|
76
|
-
id: number;
|
|
77
|
-
}, PokemonDetails>;
|
|
78
|
-
getPokemonList: import("./types/endpoint.interface").Endpoint<PokemonSearchParams, PokemonListResponse>;
|
|
79
|
-
};
|
|
80
|
-
export declare const getPokemonById: (params: {
|
|
81
|
-
id: number;
|
|
82
|
-
}, options?: import("./types/query.interface").QueryOptions) => import("./types/endpoint.interface").RequestResponseModify<PokemonDetails, any>;
|
|
83
|
-
//# sourceMappingURL=example.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"example.d.ts","sourceRoot":"","sources":["../../src/api/example.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAIxC,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,MAAM,CAAA;KACZ,EAAE,CAAA;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;QACpB,KAAK,CAAC,EAAE;YACN,kBAAkB,CAAC,EAAE;gBACnB,aAAa,EAAE,MAAM,CAAA;aACtB,CAAA;SACF,CAAA;KACF,CAAA;IACD,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAA;YACZ,GAAG,EAAE,MAAM,CAAA;SACZ,CAAA;KACF,EAAE,CAAA;IACH,SAAS,EAAE;QACT,OAAO,EAAE;YACP,IAAI,EAAE,MAAM,CAAA;YACZ,GAAG,EAAE,MAAM,CAAA;SACZ,CAAA;QACD,SAAS,EAAE,OAAO,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;KACb,EAAE,CAAA;IACH,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAA;YACZ,GAAG,EAAE,MAAM,CAAA;SACZ,CAAA;KACF,EAAE,CAAA;CACJ;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAkCD,eAAO,MAAM,GAAG;;YAmBoB,MAAM;;;YAQT,MAAM;;;GA2BrC,CAAA;AAEF,eAAO,MAAM,UAAU;;YArCa,MAAM;;;YAQT,MAAM;;;GA6BG,CAAA;AAC1C,eAAO,MAAM,gBAAgB;;YAtCO,MAAM;;;YAQT,MAAM;;;CA8BkB,CAAA;AACzD,eAAO,MAAM,cAAc;QA/BM,MAAM;+IA+B8B,CAAA"}
|