synapse-storage 3.0.2 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.cjs +1 -0
- package/dist/api.d.cts +365 -0
- package/dist/api.d.ts +365 -0
- package/dist/api.js +1 -0
- package/dist/chunk-22J2S57D.cjs +1 -0
- package/dist/chunk-4USKKL5R.js +1 -0
- package/dist/chunk-5X65PSGD.js +1 -0
- package/dist/chunk-635Q6YJZ.cjs +1 -0
- package/dist/chunk-6RNZVHSR.js +1 -0
- package/dist/chunk-FW5NGLPP.cjs +1 -0
- package/dist/chunk-IPUPRMZK.js +1 -0
- package/dist/chunk-NMDHQXMS.cjs +1 -0
- package/dist/chunk-S7X7IDBT.js +1 -0
- package/dist/chunk-UFBCZ25Y.cjs +1 -0
- package/dist/chunk-VSIVOWZF.cjs +1 -0
- package/dist/chunk-WC5TDS6C.cjs +1 -0
- package/dist/chunk-WQNH3LVB.js +1 -0
- package/dist/chunk-ZE2EJX2Y.js +1 -0
- package/dist/core.cjs +1 -0
- package/dist/core.d.cts +397 -0
- package/dist/{core/storage/modules/plugin/plugin.interface.d.ts → core.d.ts} +203 -7
- package/dist/core.js +1 -0
- package/dist/dispatcher.module-CdpmkplA.d.cts +363 -0
- package/dist/dispatcher.module-jd8U_ZEs.d.ts +363 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +10 -0
- package/dist/index.d.ts +10 -10
- package/dist/index.js +1 -14
- package/dist/react.cjs +1 -0
- package/dist/react.d.cts +74 -0
- package/dist/react.d.ts +74 -0
- package/dist/react.js +1 -0
- package/dist/reactive.cjs +1 -0
- package/dist/reactive.d.cts +35 -0
- package/dist/reactive.d.ts +35 -0
- package/dist/reactive.js +1 -0
- package/dist/{core/selector/selector.interface.d.ts → selector.interface-CA5y-kD_.d.cts} +7 -35
- package/dist/selector.interface-CA5y-kD_.d.ts +63 -0
- package/dist/storage.interface-Dl8SLUd1.d.cts +128 -0
- package/dist/storage.interface-Dl8SLUd1.d.ts +128 -0
- package/dist/utils.cjs +1 -0
- package/dist/utils.d.cts +92 -0
- package/dist/utils.d.ts +92 -0
- package/dist/utils.js +1 -0
- package/package.json +54 -17
- package/dist/_utils/chunk.util.d.ts +0 -8
- package/dist/_utils/chunk.util.d.ts.map +0 -1
- package/dist/_utils/chunk.util.js +0 -21
- package/dist/_utils/chunk.util.js.map +0 -1
- package/dist/_utils/deepMerge.util.d.ts +0 -2
- package/dist/_utils/deepMerge.util.d.ts.map +0 -1
- package/dist/_utils/deepMerge.util.js +0 -16
- package/dist/_utils/deepMerge.util.js.map +0 -1
- package/dist/_utils/flatMap.util.d.ts +0 -10
- package/dist/_utils/flatMap.util.d.ts.map +0 -1
- package/dist/_utils/flatMap.util.js +0 -23
- package/dist/_utils/flatMap.util.js.map +0 -1
- package/dist/_utils/index.d.ts +0 -4
- package/dist/_utils/index.d.ts.map +0 -1
- package/dist/_utils/index.js +0 -4
- package/dist/_utils/index.js.map +0 -1
- package/dist/api/api.module.d.ts +0 -38
- package/dist/api/api.module.d.ts.map +0 -1
- package/dist/api/api.module.js +0 -82
- package/dist/api/api.module.js.map +0 -1
- package/dist/api/components/endpoint.d.ts +0 -26
- package/dist/api/components/endpoint.d.ts.map +0 -1
- package/dist/api/components/endpoint.js +0 -253
- package/dist/api/components/endpoint.js.map +0 -1
- package/dist/api/components/query-storage.d.ts +0 -84
- package/dist/api/components/query-storage.d.ts.map +0 -1
- package/dist/api/components/query-storage.js +0 -221
- package/dist/api/components/query-storage.js.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 -85
- package/dist/api/example.js.map +0 -1
- package/dist/api/index.d.ts +0 -4
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -6
- package/dist/api/index.js.map +0 -1
- package/dist/api/types/api.interface.d.ts +0 -108
- package/dist/api/types/api.interface.d.ts.map +0 -1
- package/dist/api/types/api.interface.js +0 -19
- package/dist/api/types/api.interface.js.map +0 -1
- package/dist/api/types/endpoint.interface.d.ts +0 -116
- package/dist/api/types/endpoint.interface.d.ts.map +0 -1
- package/dist/api/types/endpoint.interface.js +0 -2
- package/dist/api/types/endpoint.interface.js.map +0 -1
- package/dist/api/types/query.interface.d.ts +0 -87
- package/dist/api/types/query.interface.d.ts.map +0 -1
- package/dist/api/types/query.interface.js +0 -2
- package/dist/api/types/query.interface.js.map +0 -1
- package/dist/api/utils/api-helpers.d.ts +0 -22
- package/dist/api/utils/api-helpers.d.ts.map +0 -1
- package/dist/api/utils/api-helpers.js +0 -44
- package/dist/api/utils/api-helpers.js.map +0 -1
- package/dist/api/utils/create-header-context.d.ts +0 -10
- package/dist/api/utils/create-header-context.d.ts.map +0 -1
- package/dist/api/utils/create-header-context.js +0 -36
- package/dist/api/utils/create-header-context.js.map +0 -1
- package/dist/api/utils/endpoint-headers.d.ts +0 -23
- package/dist/api/utils/endpoint-headers.d.ts.map +0 -1
- package/dist/api/utils/endpoint-headers.js +0 -57
- package/dist/api/utils/endpoint-headers.js.map +0 -1
- package/dist/api/utils/fetch-base-query.d.ts +0 -9
- package/dist/api/utils/fetch-base-query.d.ts.map +0 -1
- package/dist/api/utils/fetch-base-query.js +0 -181
- package/dist/api/utils/fetch-base-query.js.map +0 -1
- package/dist/api/utils/file-utils.d.ts +0 -43
- package/dist/api/utils/file-utils.d.ts.map +0 -1
- package/dist/api/utils/file-utils.js +0 -108
- package/dist/api/utils/file-utils.js.map +0 -1
- package/dist/api/utils/get-cacheable-headers.d.ts +0 -8
- package/dist/api/utils/get-cacheable-headers.d.ts.map +0 -1
- package/dist/api/utils/get-cacheable-headers.js +0 -21
- package/dist/api/utils/get-cacheable-headers.js.map +0 -1
- package/dist/core/index.d.ts +0 -3
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -3
- package/dist/core/index.js.map +0 -1
- package/dist/core/selector/index.d.ts +0 -3
- package/dist/core/selector/index.d.ts.map +0 -1
- package/dist/core/selector/index.js +0 -2
- package/dist/core/selector/index.js.map +0 -1
- package/dist/core/selector/selector.interface.d.ts.map +0 -1
- package/dist/core/selector/selector.interface.js +0 -2
- package/dist/core/selector/selector.interface.js.map +0 -1
- package/dist/core/selector/selector.module.d.ts +0 -29
- package/dist/core/selector/selector.module.d.ts.map +0 -1
- package/dist/core/selector/selector.module.js +0 -467
- package/dist/core/selector/selector.module.js.map +0 -1
- package/dist/core/storage/adapters/base-storage.service.d.ts +0 -65
- package/dist/core/storage/adapters/base-storage.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/base-storage.service.js +0 -660
- package/dist/core/storage/adapters/base-storage.service.js.map +0 -1
- package/dist/core/storage/adapters/indexed-DB.service.d.ts +0 -63
- package/dist/core/storage/adapters/indexed-DB.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/indexed-DB.service.js +0 -595
- package/dist/core/storage/adapters/indexed-DB.service.js.map +0 -1
- package/dist/core/storage/adapters/indexed-DB.service.old.d.ts +0 -38
- package/dist/core/storage/adapters/indexed-DB.service.old.d.ts.map +0 -1
- package/dist/core/storage/adapters/indexed-DB.service.old.js +0 -318
- package/dist/core/storage/adapters/indexed-DB.service.old.js.map +0 -1
- package/dist/core/storage/adapters/local-storage.service.d.ts +0 -21
- package/dist/core/storage/adapters/local-storage.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/local-storage.service.js +0 -99
- package/dist/core/storage/adapters/local-storage.service.js.map +0 -1
- package/dist/core/storage/adapters/memory-storage.service.d.ts +0 -22
- package/dist/core/storage/adapters/memory-storage.service.d.ts.map +0 -1
- package/dist/core/storage/adapters/memory-storage.service.js +0 -99
- package/dist/core/storage/adapters/memory-storage.service.js.map +0 -1
- package/dist/core/storage/adapters/path.utils.d.ts +0 -5
- package/dist/core/storage/adapters/path.utils.d.ts.map +0 -1
- package/dist/core/storage/adapters/path.utils.js +0 -35
- package/dist/core/storage/adapters/path.utils.js.map +0 -1
- package/dist/core/storage/index.d.ts +0 -11
- package/dist/core/storage/index.d.ts.map +0 -1
- package/dist/core/storage/index.js +0 -12
- package/dist/core/storage/index.js.map +0 -1
- package/dist/core/storage/middlewares/broadcast.middleware.d.ts +0 -9
- package/dist/core/storage/middlewares/broadcast.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/broadcast.middleware.js +0 -115
- package/dist/core/storage/middlewares/broadcast.middleware.js.map +0 -1
- package/dist/core/storage/middlewares/index.d.ts +0 -4
- package/dist/core/storage/middlewares/index.d.ts.map +0 -1
- package/dist/core/storage/middlewares/index.js +0 -3
- package/dist/core/storage/middlewares/index.js.map +0 -1
- package/dist/core/storage/middlewares/storage-batching.middleware.d.ts +0 -7
- package/dist/core/storage/middlewares/storage-batching.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/storage-batching.middleware.js +0 -36
- package/dist/core/storage/middlewares/storage-batching.middleware.js.map +0 -1
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts +0 -7
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts.map +0 -1
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js +0 -46
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.interface.d.ts.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.interface.js +0 -2
- package/dist/core/storage/modules/plugin/plugin.interface.js.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.service.d.ts +0 -25
- package/dist/core/storage/modules/plugin/plugin.service.d.ts.map +0 -1
- package/dist/core/storage/modules/plugin/plugin.service.js +0 -186
- package/dist/core/storage/modules/plugin/plugin.service.js.map +0 -1
- package/dist/core/storage/storage.interface.d.ts +0 -70
- package/dist/core/storage/storage.interface.d.ts.map +0 -1
- package/dist/core/storage/storage.interface.js +0 -10
- package/dist/core/storage/storage.interface.js.map +0 -1
- package/dist/core/storage/utils/batch.utils.d.ts +0 -33
- package/dist/core/storage/utils/batch.utils.d.ts.map +0 -1
- package/dist/core/storage/utils/batch.utils.js +0 -88
- package/dist/core/storage/utils/batch.utils.js.map +0 -1
- package/dist/core/storage/utils/broadcast.util.d.ts +0 -48
- package/dist/core/storage/utils/broadcast.util.d.ts.map +0 -1
- package/dist/core/storage/utils/broadcast.util.js +0 -162
- package/dist/core/storage/utils/broadcast.util.js.map +0 -1
- package/dist/core/storage/utils/cache.util.d.ts +0 -33
- package/dist/core/storage/utils/cache.util.d.ts.map +0 -1
- package/dist/core/storage/utils/cache.util.js +0 -47
- package/dist/core/storage/utils/cache.util.js.map +0 -1
- package/dist/core/storage/utils/middleware-module.d.ts +0 -46
- package/dist/core/storage/utils/middleware-module.d.ts.map +0 -1
- package/dist/core/storage/utils/middleware-module.js +0 -109
- package/dist/core/storage/utils/middleware-module.js.map +0 -1
- package/dist/core/storage/utils/storage-key.d.ts +0 -11
- package/dist/core/storage/utils/storage-key.d.ts.map +0 -1
- package/dist/core/storage/utils/storage-key.js +0 -21
- package/dist/core/storage/utils/storage-key.js.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/index.js.map +0 -1
- package/dist/react/hooks/index.d.ts +0 -3
- package/dist/react/hooks/index.d.ts.map +0 -1
- package/dist/react/hooks/index.js +0 -3
- package/dist/react/hooks/index.js.map +0 -1
- package/dist/react/hooks/useSelector.d.ts +0 -22
- package/dist/react/hooks/useSelector.d.ts.map +0 -1
- package/dist/react/hooks/useSelector.js +0 -104
- package/dist/react/hooks/useSelector.js.map +0 -1
- package/dist/react/hooks/useStorageSubscribe.d.ts +0 -12
- package/dist/react/hooks/useStorageSubscribe.d.ts.map +0 -1
- package/dist/react/hooks/useStorageSubscribe.js +0 -49
- package/dist/react/hooks/useStorageSubscribe.js.map +0 -1
- package/dist/react/index.d.ts +0 -3
- package/dist/react/index.d.ts.map +0 -1
- package/dist/react/index.js +0 -3
- package/dist/react/index.js.map +0 -1
- package/dist/react/utils/createSynapseCtx.d.ts +0 -40
- package/dist/react/utils/createSynapseCtx.d.ts.map +0 -1
- package/dist/react/utils/createSynapseCtx.js +0 -125
- package/dist/react/utils/createSynapseCtx.js.map +0 -1
- package/dist/react/utils/index.d.ts +0 -2
- package/dist/react/utils/index.d.ts.map +0 -1
- package/dist/react/utils/index.js +0 -2
- package/dist/react/utils/index.js.map +0 -1
- package/dist/reactive/dispatcher/dispatcher.module.d.ts +0 -195
- package/dist/reactive/dispatcher/dispatcher.module.d.ts.map +0 -1
- package/dist/reactive/dispatcher/dispatcher.module.js +0 -288
- package/dist/reactive/dispatcher/dispatcher.module.js.map +0 -1
- package/dist/reactive/dispatcher/index.d.ts +0 -3
- package/dist/reactive/dispatcher/index.d.ts.map +0 -1
- package/dist/reactive/dispatcher/index.js +0 -3
- package/dist/reactive/dispatcher/index.js.map +0 -1
- package/dist/reactive/dispatcher/middlewares/index.d.ts +0 -2
- package/dist/reactive/dispatcher/middlewares/index.d.ts.map +0 -1
- package/dist/reactive/dispatcher/middlewares/index.js +0 -2
- package/dist/reactive/dispatcher/middlewares/index.js.map +0 -1
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts +0 -31
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts.map +0 -1
- package/dist/reactive/dispatcher/middlewares/logger.middleware.js +0 -126
- package/dist/reactive/dispatcher/middlewares/logger.middleware.js.map +0 -1
- package/dist/reactive/effects/effects.module.d.ts +0 -150
- package/dist/reactive/effects/effects.module.d.ts.map +0 -1
- package/dist/reactive/effects/effects.module.js +0 -277
- package/dist/reactive/effects/effects.module.js.map +0 -1
- package/dist/reactive/effects/index.d.ts +0 -2
- package/dist/reactive/effects/index.d.ts.map +0 -1
- package/dist/reactive/effects/index.js +0 -2
- package/dist/reactive/effects/index.js.map +0 -1
- package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts +0 -12
- package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts.map +0 -1
- package/dist/reactive/effects/utils/chunkRequestConsistent.js +0 -16
- package/dist/reactive/effects/utils/chunkRequestConsistent.js.map +0 -1
- package/dist/reactive/effects/utils/chunkRequestParallel.d.ts +0 -12
- package/dist/reactive/effects/utils/chunkRequestParallel.d.ts.map +0 -1
- package/dist/reactive/effects/utils/chunkRequestParallel.js +0 -13
- package/dist/reactive/effects/utils/chunkRequestParallel.js.map +0 -1
- package/dist/reactive/effects/utils/index.d.ts +0 -3
- package/dist/reactive/effects/utils/index.d.ts.map +0 -1
- package/dist/reactive/effects/utils/index.js +0 -3
- package/dist/reactive/effects/utils/index.js.map +0 -1
- package/dist/reactive/index.d.ts +0 -3
- package/dist/reactive/index.d.ts.map +0 -1
- package/dist/reactive/index.js +0 -3
- package/dist/reactive/index.js.map +0 -1
- package/dist/utils/createSynapse.d.ts +0 -92
- package/dist/utils/createSynapse.d.ts.map +0 -1
- package/dist/utils/createSynapse.js +0 -79
- package/dist/utils/createSynapse.js.map +0 -1
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -2
- package/dist/utils/index.js.map +0 -1
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useContext, useEffect, useRef, useState } from 'react';
|
|
3
|
-
import { deepMerge } from '../../_utils';
|
|
4
|
-
const ERROR_HOOK_MESSAGE = 'useSynapseActions необходимо использовать внутри компонента contextSynapse';
|
|
5
|
-
const ERROR_CONTEXT_INIT = 'Ошибка при инициализации контекста:';
|
|
6
|
-
// Основная реализация
|
|
7
|
-
export function createSynapseCtx(synapseStorePromise, options) {
|
|
8
|
-
const { loadingComponent = null, mergeFn = deepMerge } = options || {};
|
|
9
|
-
// Храним ссылку на store
|
|
10
|
-
let synapseStore = null;
|
|
11
|
-
// Флаг готовности хранилища
|
|
12
|
-
let storeReady = false;
|
|
13
|
-
// Если передан Promise, начинаем его обработку
|
|
14
|
-
const initPromise = (async () => {
|
|
15
|
-
try {
|
|
16
|
-
synapseStore = await (synapseStorePromise instanceof Promise ? synapseStorePromise : Promise.resolve(synapseStorePromise));
|
|
17
|
-
storeReady = true;
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
20
|
-
console.error('Ошибка инициализации хранилища Synapse:', error);
|
|
21
|
-
}
|
|
22
|
-
})();
|
|
23
|
-
const SynapseContext = createContext(null);
|
|
24
|
-
const useSynapseStorage = () => {
|
|
25
|
-
const context = useContext(SynapseContext);
|
|
26
|
-
if (!context)
|
|
27
|
-
throw new Error(ERROR_HOOK_MESSAGE);
|
|
28
|
-
return context.storage;
|
|
29
|
-
};
|
|
30
|
-
const useSynapseSelectors = () => {
|
|
31
|
-
const context = useContext(SynapseContext);
|
|
32
|
-
if (!context)
|
|
33
|
-
throw new Error(ERROR_HOOK_MESSAGE);
|
|
34
|
-
return context.selectors;
|
|
35
|
-
};
|
|
36
|
-
// Условный хук для actions (только если есть dispatcher)
|
|
37
|
-
const useSynapseActions = () => {
|
|
38
|
-
const context = useContext(SynapseContext);
|
|
39
|
-
if (!context)
|
|
40
|
-
throw new Error(ERROR_HOOK_MESSAGE);
|
|
41
|
-
if ('actions' in context) {
|
|
42
|
-
return context.actions;
|
|
43
|
-
}
|
|
44
|
-
throw new Error('useSynapseActions: actions недоступны для этого типа хранилища. Убедитесь, что передана функция createDispatcherFn при создании хранилища.');
|
|
45
|
-
};
|
|
46
|
-
// Условный хук для state$ (только если есть effects)
|
|
47
|
-
const useSynapseState$ = () => {
|
|
48
|
-
const context = useContext(SynapseContext);
|
|
49
|
-
if (!context)
|
|
50
|
-
throw new Error(ERROR_HOOK_MESSAGE);
|
|
51
|
-
if ('state$' in context) {
|
|
52
|
-
return context.state$;
|
|
53
|
-
}
|
|
54
|
-
throw new Error('useSynapseState$: state$ недоступен для этого типа хранилища. Убедитесь, что переданы функции createDispatcherFn и createEffectConfig при создании хранилища.');
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Декоратор для обертывания компонентов в контекст Synapse
|
|
58
|
-
*/
|
|
59
|
-
function contextSynapse(Component) {
|
|
60
|
-
function WrappedComponent({ contextProps, ...props }) {
|
|
61
|
-
const [initialized, setInitialized] = useState(false);
|
|
62
|
-
const [storeInitialized, setStoreInitialized] = useState(storeReady);
|
|
63
|
-
const debugIdRef = useRef(`synapse-${synapseStore?.storage.name || 'initializing'}`);
|
|
64
|
-
// Отслеживаем инициализацию хранилища, если оно еще не готово
|
|
65
|
-
useEffect(() => {
|
|
66
|
-
if (!storeReady) {
|
|
67
|
-
initPromise.then(() => {
|
|
68
|
-
setStoreInitialized(true);
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}, []);
|
|
72
|
-
// Инициализируем контекст при монтировании компонента
|
|
73
|
-
useEffect(() => {
|
|
74
|
-
// Не начинаем инициализацию контекста, пока хранилище не готово
|
|
75
|
-
if (!storeInitialized)
|
|
76
|
-
return;
|
|
77
|
-
let mounted = true;
|
|
78
|
-
const initializeContext = async () => {
|
|
79
|
-
try {
|
|
80
|
-
if (synapseStore && contextProps && Object.keys(contextProps).length > 0) {
|
|
81
|
-
await synapseStore.storage.update((state) => {
|
|
82
|
-
mergeFn(state, contextProps);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
if (mounted) {
|
|
86
|
-
setInitialized(true);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
console.error(`[${debugIdRef.current}] ${ERROR_CONTEXT_INIT}`, error);
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
initializeContext();
|
|
94
|
-
return () => {
|
|
95
|
-
mounted = false;
|
|
96
|
-
};
|
|
97
|
-
}, [contextProps, storeInitialized]);
|
|
98
|
-
// Проверяем инициализацию хранилища и контекста
|
|
99
|
-
if (!storeInitialized) {
|
|
100
|
-
return loadingComponent || _jsx("div", { children: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430..." });
|
|
101
|
-
}
|
|
102
|
-
if (!initialized) {
|
|
103
|
-
return loadingComponent || _jsx("div", { children: "\u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430..." });
|
|
104
|
-
}
|
|
105
|
-
return (_jsx(SynapseContext.Provider, { value: synapseStore, children: _jsx(Component, { ...props }) }));
|
|
106
|
-
}
|
|
107
|
-
// Устанавливаем отображаемое имя для отладки
|
|
108
|
-
const componentName = Component.displayName || Component.name || 'Component';
|
|
109
|
-
WrappedComponent.displayName = `SynapseContext(${componentName})`;
|
|
110
|
-
return WrappedComponent;
|
|
111
|
-
}
|
|
112
|
-
const cleanupSynapse = async () => {
|
|
113
|
-
await initPromise; // Ждем завершения инициализации
|
|
114
|
-
return synapseStore?.destroy() || Promise.resolve();
|
|
115
|
-
};
|
|
116
|
-
return {
|
|
117
|
-
contextSynapse,
|
|
118
|
-
useSynapseStorage,
|
|
119
|
-
useSynapseSelectors,
|
|
120
|
-
useSynapseActions,
|
|
121
|
-
useSynapseState$,
|
|
122
|
-
cleanupSynapse,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=createSynapseCtx.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createSynapseCtx.js","sourceRoot":"","sources":["../../../src/react/utils/createSynapseCtx.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import type { IStorage } from '../../core';
|
|
3
|
-
import { TypedAction } from '../effects';
|
|
4
|
-
/**
|
|
5
|
-
* Расширенное API для middleware
|
|
6
|
-
*/
|
|
7
|
-
export interface EnhancedMiddlewareAPI<T extends Record<string, any>> {
|
|
8
|
-
getState: () => Promise<T>;
|
|
9
|
-
dispatch: (action: Action) => Promise<any>;
|
|
10
|
-
storage: IStorage<T>;
|
|
11
|
-
actions$: Observable<Action>;
|
|
12
|
-
actions: Record<string, DispatchFunction<any, any>>;
|
|
13
|
-
watchers: Record<string, WatcherFunction<any>>;
|
|
14
|
-
findActionByType: (actionType: string) => DispatchFunction<any, any> | undefined;
|
|
15
|
-
findWatcherByType: (actionType: string) => WatcherFunction<any> | undefined;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Расширенное определение middleware
|
|
19
|
-
*/
|
|
20
|
-
export interface EnhancedMiddleware<T extends Record<string, any> = any> {
|
|
21
|
-
(api: EnhancedMiddlewareAPI<T>): (next: (action: Action) => Promise<any>) => (action: Action) => Promise<any>;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Базовая структура действия
|
|
25
|
-
*/
|
|
26
|
-
export interface Action<T = unknown> {
|
|
27
|
-
type: string;
|
|
28
|
-
payload?: T;
|
|
29
|
-
meta?: Record<string, any>;
|
|
30
|
-
}
|
|
31
|
-
interface ActionExecutionOptions {
|
|
32
|
-
worker?: Worker;
|
|
33
|
-
memoize?: (currentArgs: any[], previousArgs: any[], previousResult: any) => boolean;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Параметры для создания действия
|
|
37
|
-
*/
|
|
38
|
-
export interface ActionDefinition<TParams, TResult> {
|
|
39
|
-
/** Тип действия для идентификации в потоке и эффектах */
|
|
40
|
-
type: string;
|
|
41
|
-
/** Функция, выполняющая действие и возвращающая результат (payload) */
|
|
42
|
-
action: (params: TParams) => Promise<TResult> | TResult;
|
|
43
|
-
/** Дополнительные метаданные (опционально) */
|
|
44
|
-
meta?: Record<string, any>;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Определение типа для watcher'а
|
|
48
|
-
*/
|
|
49
|
-
interface WatcherDefinition<T, R> {
|
|
50
|
-
type: string;
|
|
51
|
-
selector: (state: T) => R;
|
|
52
|
-
meta?: Record<string, any>;
|
|
53
|
-
shouldTrigger?: (prev: R | undefined, current: R) => boolean;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Тип для функции watcher
|
|
57
|
-
*/
|
|
58
|
-
export interface WatcherFunction<R> {
|
|
59
|
-
(): Observable<TypedAction<R>>;
|
|
60
|
-
actionType: string;
|
|
61
|
-
meta?: Record<string, any>;
|
|
62
|
-
unsubscribe: VoidFunction;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Расширенный тип для функции настройки действий с поддержкой дополнительных утилит
|
|
66
|
-
*/
|
|
67
|
-
export type ActionsSetupWithUtils<T extends Record<string, unknown>> = (storage: IStorage<T>, utils: {
|
|
68
|
-
createAction: ActionCreatorFactory;
|
|
69
|
-
createWatcher: <R>(config: WatcherDefinition<T, R>) => WatcherFunction<R>;
|
|
70
|
-
}) => Record<string, DispatchFunction<any, any> | WatcherFunction<any>>;
|
|
71
|
-
/**
|
|
72
|
-
* Расширенная функция диспетчеризации
|
|
73
|
-
*/
|
|
74
|
-
export interface DispatchFunction<TParams, TResult> {
|
|
75
|
-
/** Функция для вызова действия с параметрами */
|
|
76
|
-
(params: TParams): Promise<TResult>;
|
|
77
|
-
/** Тип действия для использования в эффектах */
|
|
78
|
-
actionType: string;
|
|
79
|
-
/** Метаданные действия */
|
|
80
|
-
meta?: Record<string, any>;
|
|
81
|
-
/** Внутренний тип для идентификации */
|
|
82
|
-
_type?: 'dispatch' | 'watchers';
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Тип для фабрики создателей действий
|
|
86
|
-
*/
|
|
87
|
-
type ActionCreatorFactory = <TParams, TResult>(config: ActionDefinition<TParams, TResult>, executionOptions?: ActionExecutionOptions) => DispatchFunction<TParams, TResult>;
|
|
88
|
-
/**
|
|
89
|
-
* Тип для функции настройки действий
|
|
90
|
-
*/
|
|
91
|
-
export type ActionsSetup<T extends Record<string, unknown>> = (create: ActionCreatorFactory, storage: IStorage<T>) => Record<string, DispatchFunction<any, any>>;
|
|
92
|
-
/**
|
|
93
|
-
* Извлекает тип результата из функции диспетчера
|
|
94
|
-
*/
|
|
95
|
-
export type ExtractResultType<T> = T extends DispatchFunction<any, infer R> ? R : never;
|
|
96
|
-
/**
|
|
97
|
-
* Извлекает типы из функции настройки действий
|
|
98
|
-
*/
|
|
99
|
-
export type ActionsResult<F> = F extends (create: ActionCreatorFactory, storage: any, ...args: any[]) => infer R ? R : Record<string, DispatchFunction<any, any>>;
|
|
100
|
-
/**
|
|
101
|
-
* Типизированный объект действий
|
|
102
|
-
*/
|
|
103
|
-
export type DispatchActions<T> = {
|
|
104
|
-
[K in keyof T]: T[K] extends DispatchFunction<any, any> ? T[K] : never;
|
|
105
|
-
};
|
|
106
|
-
/**
|
|
107
|
-
* Типизированный объект watchers
|
|
108
|
-
*/
|
|
109
|
-
export type WatcherActions<T> = {
|
|
110
|
-
[K in keyof T]: T[K] extends WatcherFunction<any> ? T[K] : never;
|
|
111
|
-
};
|
|
112
|
-
/**
|
|
113
|
-
* Параметры для Dispatcher
|
|
114
|
-
*/
|
|
115
|
-
interface DispatcherOptions<T extends Record<string, any>> {
|
|
116
|
-
storage: IStorage<T>;
|
|
117
|
-
worker?: Worker;
|
|
118
|
-
middlewares?: EnhancedMiddleware<T>[];
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Интерфейс для API middleware
|
|
122
|
-
*/
|
|
123
|
-
export interface DispatcherMiddlewareAPI<T extends Record<string, any>> {
|
|
124
|
-
getState: () => Promise<T>;
|
|
125
|
-
dispatch: (action: Action) => Promise<any>;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Интерфейс для middleware
|
|
129
|
-
*/
|
|
130
|
-
export interface DispatcherMiddleware<T extends Record<string, any> = any> {
|
|
131
|
-
(api: DispatcherMiddlewareAPI<T>): (next: (action: Action) => Promise<any>) => (action: Action) => Promise<any>;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Класс Dispatcher для интеграции хранилищ с реактивной системой
|
|
135
|
-
*/
|
|
136
|
-
export declare class Dispatcher<T extends Record<string, any>, TActionsFn extends ActionsSetupWithUtils<T> = ActionsSetupWithUtils<T>> {
|
|
137
|
-
private options;
|
|
138
|
-
private actions$;
|
|
139
|
-
readonly actions: Observable<Action>;
|
|
140
|
-
dispatch: Record<string, DispatchFunction<any, any>>;
|
|
141
|
-
watchers: Record<string, WatcherFunction<any>>;
|
|
142
|
-
private storage;
|
|
143
|
-
private middlewareFunctions;
|
|
144
|
-
private middlewareAPI;
|
|
145
|
-
/**
|
|
146
|
-
* Создает новый экземпляр Dispatcher
|
|
147
|
-
*/
|
|
148
|
-
constructor(options: DispatcherOptions<T>);
|
|
149
|
-
/**
|
|
150
|
-
* Добавляет middleware в цепочку обработки
|
|
151
|
-
*/
|
|
152
|
-
use(...middlewares: EnhancedMiddleware<T>[]): this;
|
|
153
|
-
/**
|
|
154
|
-
* Получает все действия с улучшенной типизацией
|
|
155
|
-
*/
|
|
156
|
-
getActions(): ActionsResult<TActionsFn>;
|
|
157
|
-
/**
|
|
158
|
-
* Получает типизированные действия диспетчера
|
|
159
|
-
*/
|
|
160
|
-
getTypedDispatch<A extends Record<string, any>>(): DispatchActions<A>;
|
|
161
|
-
/**
|
|
162
|
-
* Получает типизированные watcher'ы
|
|
163
|
-
*/
|
|
164
|
-
getTypedWatchers<A extends Record<string, any>>(): WatcherActions<A>;
|
|
165
|
-
/**
|
|
166
|
-
* Находит действие по типу
|
|
167
|
-
*/
|
|
168
|
-
findActionByType(actionType: string): DispatchFunction<any, any> | undefined;
|
|
169
|
-
/**
|
|
170
|
-
* Находит наблюдатель по типу
|
|
171
|
-
*/
|
|
172
|
-
findWatcherByType(actionType: string): WatcherFunction<any> | undefined;
|
|
173
|
-
/**
|
|
174
|
-
* Создает действие
|
|
175
|
-
*/
|
|
176
|
-
createAction<TParams, TResult>(actionConfig: ActionDefinition<TParams, TResult>, executionOptions?: ActionExecutionOptions): DispatchFunction<TParams, TResult>;
|
|
177
|
-
/**
|
|
178
|
-
* Создает watcher для отслеживания изменений в хранилище
|
|
179
|
-
*/
|
|
180
|
-
createWatcher<R>(config: WatcherDefinition<T, R>): WatcherFunction<R>;
|
|
181
|
-
/**
|
|
182
|
-
* Выполняет действие в worker
|
|
183
|
-
*/
|
|
184
|
-
private executeInWorker;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Функция для создания типизированного диспетчера
|
|
188
|
-
*/
|
|
189
|
-
export declare function createDispatcher<TState extends Record<string, any>, TActions extends ActionsSetupWithUtils<TState>>(options: DispatcherOptions<TState>, actionsSetup: TActions): Dispatcher<TState, TActions> & {
|
|
190
|
-
dispatch: DispatchActions<ReturnType<TActions>>;
|
|
191
|
-
watchers: WatcherActions<ReturnType<TActions>>;
|
|
192
|
-
};
|
|
193
|
-
export type CreateDispatcherType = ReturnType<typeof createDispatcher>;
|
|
194
|
-
export {};
|
|
195
|
-
//# sourceMappingURL=dispatcher.module.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.module.d.ts","sourceRoot":"","sources":["../../../src/reactive/dispatcher/dispatcher.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
2
|
-
/**
|
|
3
|
-
* Класс Dispatcher для интеграции хранилищ с реактивной системой
|
|
4
|
-
*/
|
|
5
|
-
export class Dispatcher {
|
|
6
|
-
options;
|
|
7
|
-
// Поток действий
|
|
8
|
-
actions$ = new Subject();
|
|
9
|
-
// Публичный Observable для действий
|
|
10
|
-
actions = this.actions$.asObservable();
|
|
11
|
-
// Методы диспетчеризации действий с типизацией
|
|
12
|
-
dispatch = {};
|
|
13
|
-
// Watcher'ы для реактивной подписки на изменения
|
|
14
|
-
watchers = {};
|
|
15
|
-
// Ссылка на хранилище
|
|
16
|
-
storage;
|
|
17
|
-
// Только один массив для хранения инициализированных middleware
|
|
18
|
-
middlewareFunctions = [];
|
|
19
|
-
// API для инициализации middleware
|
|
20
|
-
middlewareAPI;
|
|
21
|
-
/**
|
|
22
|
-
* Создает новый экземпляр Dispatcher
|
|
23
|
-
*/
|
|
24
|
-
constructor(options) {
|
|
25
|
-
this.options = options;
|
|
26
|
-
this.storage = options.storage;
|
|
27
|
-
// Создаем API для middleware сразу
|
|
28
|
-
this.middlewareAPI = {
|
|
29
|
-
getState: () => this.storage.getState(),
|
|
30
|
-
dispatch: async (action) => {
|
|
31
|
-
this.actions$.next(action);
|
|
32
|
-
return action.payload;
|
|
33
|
-
},
|
|
34
|
-
storage: this.storage,
|
|
35
|
-
actions$: this.actions,
|
|
36
|
-
actions: this.dispatch,
|
|
37
|
-
watchers: this.watchers,
|
|
38
|
-
findActionByType: (type) => this.findActionByType(type),
|
|
39
|
-
findWatcherByType: (type) => this.findWatcherByType(type),
|
|
40
|
-
};
|
|
41
|
-
// Если есть middleware в options, добавляем их
|
|
42
|
-
if (options.middlewares && options.middlewares.length > 0) {
|
|
43
|
-
this.use(...options.middlewares);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Добавляет middleware в цепочку обработки
|
|
48
|
-
*/
|
|
49
|
-
use(...middlewares) {
|
|
50
|
-
// Инициализируем каждый middleware и добавляем только инициализированную версию
|
|
51
|
-
for (let i = 0; i < middlewares.length; i++) {
|
|
52
|
-
try {
|
|
53
|
-
// Инициализируем middleware с API
|
|
54
|
-
const initializedMiddleware = middlewares[i](this.middlewareAPI);
|
|
55
|
-
this.middlewareFunctions.push(initializedMiddleware);
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
console.error(`Error initializing middleware [${i}]:`, error);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
return this;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Получает все действия с улучшенной типизацией
|
|
65
|
-
*/
|
|
66
|
-
getActions() {
|
|
67
|
-
return this.dispatch;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Получает типизированные действия диспетчера
|
|
71
|
-
*/
|
|
72
|
-
getTypedDispatch() {
|
|
73
|
-
return this.dispatch;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Получает типизированные watcher'ы
|
|
77
|
-
*/
|
|
78
|
-
getTypedWatchers() {
|
|
79
|
-
return this.watchers;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Находит действие по типу
|
|
83
|
-
*/
|
|
84
|
-
findActionByType(actionType) {
|
|
85
|
-
return Object.values(this.dispatch).find((action) => {
|
|
86
|
-
return action.actionType.split(`[${this.storage.name}]`)[1] === actionType;
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Находит наблюдатель по типу
|
|
91
|
-
*/
|
|
92
|
-
findWatcherByType(actionType) {
|
|
93
|
-
return Object.values(this.watchers).find((watcher) => watcher.actionType === actionType);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Создает действие
|
|
97
|
-
*/
|
|
98
|
-
createAction(actionConfig, executionOptions) {
|
|
99
|
-
const actionType = `[${this.storage.name}]${actionConfig.type}`;
|
|
100
|
-
// Для мемоизации храним последние аргументы и результат
|
|
101
|
-
let lastArgs = null;
|
|
102
|
-
let lastResult = null;
|
|
103
|
-
// Создаем функцию диспетчеризации
|
|
104
|
-
const dispatchFn = async (params) => {
|
|
105
|
-
const args = [params];
|
|
106
|
-
// Проверяем мемоизацию
|
|
107
|
-
if (executionOptions?.memoize && lastArgs && lastResult) {
|
|
108
|
-
if (executionOptions.memoize(args, lastArgs, lastResult)) {
|
|
109
|
-
return lastResult;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Создаем объект действия
|
|
113
|
-
const actionObject = {
|
|
114
|
-
type: actionType,
|
|
115
|
-
meta: actionConfig.meta,
|
|
116
|
-
};
|
|
117
|
-
// Применяем middleware цепочку
|
|
118
|
-
let result;
|
|
119
|
-
if (this.middlewareFunctions.length > 0) {
|
|
120
|
-
// Базовая функция выполнения действия
|
|
121
|
-
// Строим цепочку middleware в обратном порядке
|
|
122
|
-
let chain = async (action) => {
|
|
123
|
-
if (executionOptions?.worker) {
|
|
124
|
-
return this.executeInWorker(executionOptions.worker, actionType, args, actionConfig.action);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
return Promise.resolve(actionConfig.action(params));
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
// Проходим по middleware в обратном порядке
|
|
131
|
-
// Важно: сначала создаем всю цепочку, затем выполняем
|
|
132
|
-
for (let i = this.middlewareFunctions.length - 1; i >= 0; i--) {
|
|
133
|
-
const currentMiddleware = this.middlewareFunctions[i];
|
|
134
|
-
const nextChain = chain; // Сохраняем предыдущую цепочку
|
|
135
|
-
// Создаем новую цепочку, которая вызывает текущий middleware,
|
|
136
|
-
// передавая предыдущую цепочку как функцию next
|
|
137
|
-
chain = async (action) => {
|
|
138
|
-
// Создаем функцию next для передачи в middleware
|
|
139
|
-
const next = async (nextAction) => nextChain(nextAction);
|
|
140
|
-
// Получаем обработчик действия и сразу вызываем его
|
|
141
|
-
return currentMiddleware(next)(action);
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
// Выполняем действие через цепочку middleware
|
|
145
|
-
result = await chain(actionObject);
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
// Выполняем действие напрямую без middleware
|
|
149
|
-
if (executionOptions?.worker) {
|
|
150
|
-
result = await this.executeInWorker(executionOptions.worker, actionType, args, actionConfig.action);
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
result = await actionConfig.action(params);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
// Обновляем объект действия результатом
|
|
157
|
-
actionObject.payload = result;
|
|
158
|
-
// Сохраняем аргументы и результат для мемоизации
|
|
159
|
-
lastArgs = [...args];
|
|
160
|
-
lastResult = result;
|
|
161
|
-
// Отправляем информацию о действии в поток
|
|
162
|
-
this.actions$.next(actionObject);
|
|
163
|
-
return result;
|
|
164
|
-
};
|
|
165
|
-
dispatchFn._type = 'dispatch';
|
|
166
|
-
// Добавляем тип действия как свойство функции
|
|
167
|
-
Object.defineProperty(dispatchFn, 'actionType', {
|
|
168
|
-
value: actionType,
|
|
169
|
-
writable: false,
|
|
170
|
-
enumerable: true,
|
|
171
|
-
});
|
|
172
|
-
// Добавляем метаданные, если они есть
|
|
173
|
-
if (actionConfig.meta) {
|
|
174
|
-
Object.defineProperty(dispatchFn, 'meta', {
|
|
175
|
-
value: actionConfig.meta,
|
|
176
|
-
writable: false,
|
|
177
|
-
enumerable: true,
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
return dispatchFn;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Создает watcher для отслеживания изменений в хранилище
|
|
184
|
-
*/
|
|
185
|
-
createWatcher(config) {
|
|
186
|
-
// Логика остается без изменений
|
|
187
|
-
const actionType = `[${this.storage.name}]${config.type}`;
|
|
188
|
-
// Создаем Subject для этого watcher'а
|
|
189
|
-
const subject = new Subject();
|
|
190
|
-
// Предыдущее значение для сравнения
|
|
191
|
-
let prevValue;
|
|
192
|
-
// Подписываемся на изменения состояния
|
|
193
|
-
const unsubscribe = this.storage.subscribe(config.selector, (value) => {
|
|
194
|
-
// Проверяем, нужно ли генерировать событие
|
|
195
|
-
if (!config.shouldTrigger || config.shouldTrigger(prevValue, value)) {
|
|
196
|
-
// Создаем действие
|
|
197
|
-
const action = {
|
|
198
|
-
type: actionType,
|
|
199
|
-
payload: value,
|
|
200
|
-
meta: config.meta,
|
|
201
|
-
};
|
|
202
|
-
// Отправляем в основной поток действий
|
|
203
|
-
this.actions$.next(action);
|
|
204
|
-
// Отправляем в поток этого watcher'а
|
|
205
|
-
subject.next(action);
|
|
206
|
-
// Обновляем предыдущее значение
|
|
207
|
-
prevValue = value;
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
// Создаем функцию watcher'а
|
|
211
|
-
const watcherFn = () => subject.asObservable();
|
|
212
|
-
watcherFn._type = 'watchers';
|
|
213
|
-
// Добавляем свойства
|
|
214
|
-
Object.defineProperty(watcherFn, 'actionType', {
|
|
215
|
-
value: actionType,
|
|
216
|
-
writable: false,
|
|
217
|
-
enumerable: true,
|
|
218
|
-
});
|
|
219
|
-
if (config.meta) {
|
|
220
|
-
Object.defineProperty(watcherFn, 'meta', {
|
|
221
|
-
value: config.meta,
|
|
222
|
-
writable: false,
|
|
223
|
-
enumerable: true,
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
// Добавляем метод для отписки
|
|
227
|
-
Object.defineProperty(watcherFn, 'unsubscribe', {
|
|
228
|
-
value: unsubscribe,
|
|
229
|
-
writable: false,
|
|
230
|
-
enumerable: true,
|
|
231
|
-
});
|
|
232
|
-
//@ts-ignore
|
|
233
|
-
return watcherFn;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Выполняет действие в worker
|
|
237
|
-
*/
|
|
238
|
-
async executeInWorker(worker, actionType, args, fallbackAction) {
|
|
239
|
-
// Логика остается без изменений
|
|
240
|
-
return new Promise((resolve, reject) => {
|
|
241
|
-
const requestId = `${actionType}_${Date.now()}_${Math.random()}`;
|
|
242
|
-
const handleMessage = (event) => {
|
|
243
|
-
if (event.data.requestId === requestId) {
|
|
244
|
-
worker.removeEventListener('message', handleMessage);
|
|
245
|
-
if (event.data.error) {
|
|
246
|
-
reject(new Error(event.data.error));
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
resolve(event.data.result);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
};
|
|
253
|
-
worker.addEventListener('message', handleMessage);
|
|
254
|
-
worker.postMessage({
|
|
255
|
-
type: actionType,
|
|
256
|
-
args,
|
|
257
|
-
requestId,
|
|
258
|
-
});
|
|
259
|
-
// Опционально: таймаут
|
|
260
|
-
setTimeout(() => {
|
|
261
|
-
worker.removeEventListener('message', handleMessage);
|
|
262
|
-
reject(new Error(`Worker execution timeout for action: ${actionType}`));
|
|
263
|
-
}, 30000); // 30 секунд таймаут
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Функция для создания типизированного диспетчера
|
|
269
|
-
*/
|
|
270
|
-
export function createDispatcher(options, actionsSetup) {
|
|
271
|
-
// Создаем экземпляр диспетчера
|
|
272
|
-
const dispatcher = new Dispatcher(options);
|
|
273
|
-
// Вызываем функцию настройки действий с обновленной структурой аргументов
|
|
274
|
-
const actions = actionsSetup(options.storage, {
|
|
275
|
-
createAction: (actionConfig, executionOptions) => dispatcher.createAction(actionConfig, executionOptions),
|
|
276
|
-
createWatcher: (config) => dispatcher.createWatcher(config),
|
|
277
|
-
});
|
|
278
|
-
// Регистрируем все созданные объекты в соответствующих коллекциях
|
|
279
|
-
for (const [key, fn] of Object.entries(actions)) {
|
|
280
|
-
if (typeof fn === 'function') {
|
|
281
|
-
const type = fn._type;
|
|
282
|
-
// @ts-ignore
|
|
283
|
-
dispatcher[type][key] = fn;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
return dispatcher;
|
|
287
|
-
}
|
|
288
|
-
//# sourceMappingURL=dispatcher.module.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.module.js","sourceRoot":"","sources":["../../../src/reactive/dispatcher/dispatcher.module.ts"],"names":[],"mappings":"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"}
|