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,253 +0,0 @@
|
|
|
1
|
-
import { createUniqueId, headersToObject } from '../utils/api-helpers';
|
|
2
|
-
import { createHeaderContext } from '../utils/create-header-context';
|
|
3
|
-
import { createPrepareHeaders, prepareRequestHeaders } from '../utils/endpoint-headers';
|
|
4
|
-
import { fetchBaseQuery } from '../utils/fetch-base-query';
|
|
5
|
-
import { getCacheableHeaders } from '../utils/get-cacheable-headers';
|
|
6
|
-
export class EndpointClass {
|
|
7
|
-
name;
|
|
8
|
-
queryStorage;
|
|
9
|
-
configCurrentEndpoint;
|
|
10
|
-
cacheableHeaderKeys;
|
|
11
|
-
globalCacheConfig;
|
|
12
|
-
baseQueryConfig;
|
|
13
|
-
endpointSubscribers = new Set();
|
|
14
|
-
/** Сколько раз был вызван метод request */
|
|
15
|
-
fetchCounts = 0;
|
|
16
|
-
meta = {
|
|
17
|
-
cache: false,
|
|
18
|
-
invalidatesTags: [],
|
|
19
|
-
name: '',
|
|
20
|
-
tags: [],
|
|
21
|
-
};
|
|
22
|
-
queryFunction;
|
|
23
|
-
/** Массив заголовков, которые нужно включить в ключ кэширования */
|
|
24
|
-
cacheableHeaders;
|
|
25
|
-
prepareHeaders;
|
|
26
|
-
constructor(name, queryStorage, configCurrentEndpoint, cacheableHeaderKeys, globalCacheConfig, baseQueryConfig) {
|
|
27
|
-
this.name = name;
|
|
28
|
-
this.queryStorage = queryStorage;
|
|
29
|
-
this.configCurrentEndpoint = configCurrentEndpoint;
|
|
30
|
-
this.cacheableHeaderKeys = cacheableHeaderKeys;
|
|
31
|
-
this.globalCacheConfig = globalCacheConfig;
|
|
32
|
-
this.baseQueryConfig = baseQueryConfig;
|
|
33
|
-
// 1. Создаем функцию подготовки заголовков
|
|
34
|
-
this.prepareHeaders = createPrepareHeaders(baseQueryConfig.prepareHeaders, configCurrentEndpoint.prepareHeaders);
|
|
35
|
-
// 2. Создаем функцию исполнения запроса
|
|
36
|
-
this.queryFunction = fetchBaseQuery({
|
|
37
|
-
baseUrl: baseQueryConfig.baseUrl,
|
|
38
|
-
fetchFn: baseQueryConfig.fetchFn,
|
|
39
|
-
timeout: baseQueryConfig.timeout,
|
|
40
|
-
credentials: baseQueryConfig.credentials,
|
|
41
|
-
});
|
|
42
|
-
// 3. Создаем массив тех заголовков, которые нужно включить в ключ кэширования
|
|
43
|
-
this.cacheableHeaders = [...(cacheableHeaderKeys || []), ...(configCurrentEndpoint.includeCacheableHeaderKeys || [])].filter((key) => !configCurrentEndpoint.excludeCacheableHeaderKeys?.includes(key));
|
|
44
|
-
// 4. Сохраняем информацию в meta
|
|
45
|
-
this.meta.name = name;
|
|
46
|
-
this.meta.tags = configCurrentEndpoint.tags ?? this.meta.tags;
|
|
47
|
-
this.meta.invalidatesTags = configCurrentEndpoint.invalidatesTags ?? this.meta.invalidatesTags;
|
|
48
|
-
this.meta.cache = this.queryStorage.createCacheConfig(this.configCurrentEndpoint) ?? this.meta.cache;
|
|
49
|
-
}
|
|
50
|
-
request(params, options) {
|
|
51
|
-
// 1. Подготовка и инициализация
|
|
52
|
-
this.fetchCounts++;
|
|
53
|
-
const requestId = createUniqueId(this.name);
|
|
54
|
-
const controller = new AbortController();
|
|
55
|
-
const requestSubscribers = new Set();
|
|
56
|
-
const currentState = {
|
|
57
|
-
status: 'idle',
|
|
58
|
-
requestParams: params,
|
|
59
|
-
headers: {},
|
|
60
|
-
error: undefined,
|
|
61
|
-
data: undefined,
|
|
62
|
-
fromCache: false,
|
|
63
|
-
};
|
|
64
|
-
const headerContext = createHeaderContext({ requestParams: params }, options?.context || {});
|
|
65
|
-
// 2. Создаем функции для управления состоянием
|
|
66
|
-
const notifyRequestSubscribers = (newState) => {
|
|
67
|
-
Object.assign(currentState, newState);
|
|
68
|
-
requestSubscribers.forEach((cb) => {
|
|
69
|
-
cb({ ...currentState });
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
// 3. Создаем промис для метода wait()
|
|
73
|
-
const waitPromise = new Promise(async (resolve, reject) => {
|
|
74
|
-
try {
|
|
75
|
-
// Формируем заголовки
|
|
76
|
-
const headers = await prepareRequestHeaders(this.prepareHeaders, headerContext);
|
|
77
|
-
// Получаем заголовки для кэширования
|
|
78
|
-
const headersForCache = getCacheableHeaders(headers, options?.cacheableHeaderKeys ? options.cacheableHeaderKeys : this.cacheableHeaders);
|
|
79
|
-
// Проверяем включено ли кэширование
|
|
80
|
-
const shouldCache = this.queryStorage.shouldCache(this.configCurrentEndpoint, options);
|
|
81
|
-
// Формируем ключ кэша
|
|
82
|
-
const [cacheKey, cacheParams] = this.queryStorage.createCacheKey(this.name, { ...params, ...headersForCache });
|
|
83
|
-
// 4. Проверяем кэш до установки loading
|
|
84
|
-
let cachedResult;
|
|
85
|
-
if (shouldCache) {
|
|
86
|
-
cachedResult = await this.queryStorage.getCachedResult(cacheKey);
|
|
87
|
-
}
|
|
88
|
-
if (cachedResult) {
|
|
89
|
-
// Есть данные в кэше - сразу переходим к success
|
|
90
|
-
notifyRequestSubscribers({
|
|
91
|
-
fromCache: true,
|
|
92
|
-
status: 'success',
|
|
93
|
-
data: cachedResult.data,
|
|
94
|
-
error: undefined,
|
|
95
|
-
headers: cachedResult.headers,
|
|
96
|
-
requestParams: params,
|
|
97
|
-
});
|
|
98
|
-
resolve({
|
|
99
|
-
...cachedResult,
|
|
100
|
-
fromCache: true,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
// Нет данных в кэше - устанавливаем loading и делаем запрос
|
|
105
|
-
notifyRequestSubscribers({
|
|
106
|
-
fromCache: false,
|
|
107
|
-
status: 'loading',
|
|
108
|
-
});
|
|
109
|
-
// 5. Выполняем запрос
|
|
110
|
-
const requestDefinition = this.configCurrentEndpoint.request(params, options?.context);
|
|
111
|
-
const mergedOptions = { ...options, signal: controller.signal };
|
|
112
|
-
const response = await this.queryFunction(requestDefinition, mergedOptions, headers);
|
|
113
|
-
// 6. Обрабатываем результат запроса
|
|
114
|
-
if (response.ok) {
|
|
115
|
-
const { headers, ...restResponse } = response;
|
|
116
|
-
// Сохраняем в кэш, если нужно
|
|
117
|
-
if (shouldCache) {
|
|
118
|
-
const currentCacheConfig = this.queryStorage.createCacheConfig(this.configCurrentEndpoint);
|
|
119
|
-
await this.queryStorage.setCachedResult(cacheKey, { ...restResponse, headers: headersToObject(headers) }, currentCacheConfig, cacheParams ?? {}, this.configCurrentEndpoint.tags ?? [], this.configCurrentEndpoint.invalidatesTags ?? []);
|
|
120
|
-
}
|
|
121
|
-
// Оповещаем о success
|
|
122
|
-
notifyRequestSubscribers({
|
|
123
|
-
fromCache: false,
|
|
124
|
-
status: 'success',
|
|
125
|
-
data: response.data,
|
|
126
|
-
error: undefined,
|
|
127
|
-
headers: response.headers,
|
|
128
|
-
requestParams: params,
|
|
129
|
-
});
|
|
130
|
-
// Уведомляем подписчиков эндпоинта
|
|
131
|
-
this.endpointSubscribers.forEach((cb) => {
|
|
132
|
-
const endpointState = {
|
|
133
|
-
status: 'success',
|
|
134
|
-
fetchCounts: this.fetchCounts,
|
|
135
|
-
meta: this.meta,
|
|
136
|
-
cacheableHeaders: this.cacheableHeaders,
|
|
137
|
-
error: undefined,
|
|
138
|
-
};
|
|
139
|
-
cb(endpointState);
|
|
140
|
-
});
|
|
141
|
-
resolve({
|
|
142
|
-
...response,
|
|
143
|
-
fromCache: false,
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
// Оповещаем об ошибке
|
|
148
|
-
notifyRequestSubscribers({
|
|
149
|
-
fromCache: false,
|
|
150
|
-
status: 'error',
|
|
151
|
-
data: undefined,
|
|
152
|
-
error: response.error,
|
|
153
|
-
headers: response.headers,
|
|
154
|
-
requestParams: params,
|
|
155
|
-
});
|
|
156
|
-
// Уведомляем подписчиков эндпоинта
|
|
157
|
-
this.endpointSubscribers.forEach((cb) => {
|
|
158
|
-
const endpointState = {
|
|
159
|
-
status: 'error',
|
|
160
|
-
fetchCounts: this.fetchCounts,
|
|
161
|
-
meta: this.meta,
|
|
162
|
-
cacheableHeaders: this.cacheableHeaders,
|
|
163
|
-
error: response.error,
|
|
164
|
-
};
|
|
165
|
-
cb(endpointState);
|
|
166
|
-
});
|
|
167
|
-
reject(response.error);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
catch (error) {
|
|
172
|
-
// Обрабатываем неожиданные ошибки
|
|
173
|
-
notifyRequestSubscribers({
|
|
174
|
-
fromCache: false,
|
|
175
|
-
status: 'error',
|
|
176
|
-
data: undefined,
|
|
177
|
-
error: error,
|
|
178
|
-
headers: undefined,
|
|
179
|
-
requestParams: params,
|
|
180
|
-
});
|
|
181
|
-
reject(error);
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
// 4. Возвращаем объект с методами управления запросом
|
|
185
|
-
return {
|
|
186
|
-
id: requestId,
|
|
187
|
-
subscribe(listener, options = {}) {
|
|
188
|
-
const { autoUnsubscribe = true } = options;
|
|
189
|
-
requestSubscribers.add(listener);
|
|
190
|
-
listener(currentState);
|
|
191
|
-
const unsubscribe = () => requestSubscribers.delete(listener);
|
|
192
|
-
if (autoUnsubscribe) {
|
|
193
|
-
waitPromise.finally(() => {
|
|
194
|
-
unsubscribe();
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
return unsubscribe;
|
|
198
|
-
},
|
|
199
|
-
wait: () => waitPromise,
|
|
200
|
-
waitWithCallbacks(handlers = {}) {
|
|
201
|
-
const { idle, loading, success, error } = handlers;
|
|
202
|
-
this.subscribe((state) => {
|
|
203
|
-
switch (state.status) {
|
|
204
|
-
case 'idle':
|
|
205
|
-
idle?.(state);
|
|
206
|
-
break;
|
|
207
|
-
case 'loading':
|
|
208
|
-
loading?.(state);
|
|
209
|
-
break;
|
|
210
|
-
case 'success':
|
|
211
|
-
success?.(state.data, state);
|
|
212
|
-
break;
|
|
213
|
-
case 'error':
|
|
214
|
-
error?.(state.error, state);
|
|
215
|
-
break;
|
|
216
|
-
}
|
|
217
|
-
}, { autoUnsubscribe: true });
|
|
218
|
-
return waitPromise;
|
|
219
|
-
},
|
|
220
|
-
abort: () => {
|
|
221
|
-
if (controller && !controller.signal.aborted) {
|
|
222
|
-
controller.abort();
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
then: (onfulfilled, onrejected) => waitPromise.then(onfulfilled, onrejected),
|
|
226
|
-
catch: (onrejected) => waitPromise.catch(onrejected),
|
|
227
|
-
finally: (onfinally) => waitPromise.finally(onfinally),
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
subscribe(cb) {
|
|
231
|
-
this.endpointSubscribers.add(cb);
|
|
232
|
-
// Создаем объект с текущей статистикой, соответствующий интерфейсу EndpointState
|
|
233
|
-
const currentState = {
|
|
234
|
-
status: 'idle',
|
|
235
|
-
fetchCounts: this.fetchCounts,
|
|
236
|
-
meta: this.meta,
|
|
237
|
-
cacheableHeaders: this.cacheableHeaders,
|
|
238
|
-
error: undefined,
|
|
239
|
-
};
|
|
240
|
-
// Вызываем callback с текущим состоянием
|
|
241
|
-
cb(currentState);
|
|
242
|
-
// Возвращаем функцию отписки
|
|
243
|
-
return () => this.endpointSubscribers.delete(cb);
|
|
244
|
-
}
|
|
245
|
-
reset() {
|
|
246
|
-
this.fetchCounts = 0;
|
|
247
|
-
return Promise.resolve();
|
|
248
|
-
}
|
|
249
|
-
destroy() {
|
|
250
|
-
this.endpointSubscribers.clear();
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
//# sourceMappingURL=endpoint.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/api/components/endpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { IStorage, StorageKeyType } from '../../core/storage';
|
|
2
|
-
import { CacheConfig, CreateApiClientOptions } from '../types/api.interface';
|
|
3
|
-
import { EndpointConfig } from '../types/endpoint.interface';
|
|
4
|
-
import { QueryOptions } from '../types/query.interface';
|
|
5
|
-
/**
|
|
6
|
-
* Менеджер хранилища для API
|
|
7
|
-
* Объединяет в себе функционал хранилища и управления кэшем
|
|
8
|
-
*/
|
|
9
|
-
export declare class QueryStorage {
|
|
10
|
-
private readonly storageExternal;
|
|
11
|
-
private readonly globalCacheConfig;
|
|
12
|
-
/** Экземпляр хранилища */
|
|
13
|
-
private storage;
|
|
14
|
-
private cleanupInterval;
|
|
15
|
-
/** Настройки кэша по умолчанию */
|
|
16
|
-
private defaultCacheOptions;
|
|
17
|
-
constructor(storageExternal: CreateApiClientOptions['storage'], globalCacheConfig: CreateApiClientOptions['cache']);
|
|
18
|
-
initialize(): Promise<this>;
|
|
19
|
-
private createStorage;
|
|
20
|
-
private startCleanupInterval;
|
|
21
|
-
/**
|
|
22
|
-
* Получает экземпляр хранилища
|
|
23
|
-
*/
|
|
24
|
-
getStorage(): IStorage | null;
|
|
25
|
-
/**
|
|
26
|
-
* Создает ключ кэша для запроса с учетом заголовков
|
|
27
|
-
* @param endpoint Имя эндпоинта
|
|
28
|
-
* @param params Параметры запроса (все что посчитаем нужным)
|
|
29
|
-
*/
|
|
30
|
-
createCacheKey<CacheParams extends Record<string, any>>(endpoint: string, params: CacheParams): [StorageKeyType, Record<string, any> | undefined];
|
|
31
|
-
/**
|
|
32
|
-
* Получает результат запроса из кэша
|
|
33
|
-
*/
|
|
34
|
-
getCachedResult<T>(cacheKey: StorageKeyType): Promise<T | undefined>;
|
|
35
|
-
/**
|
|
36
|
-
* Сохраняет результат запроса в кэш
|
|
37
|
-
* @param cacheKey Ключ кэша
|
|
38
|
-
* @param data Данные для кэширования
|
|
39
|
-
* @param cacheOptions Метаданные
|
|
40
|
-
* @param cacheParams Параметры которые влияли на созадние ключа
|
|
41
|
-
* @param tags Тэги эндпоинта
|
|
42
|
-
* @param invalidatesTags Тэги которые нужно инвалидировать
|
|
43
|
-
*/
|
|
44
|
-
setCachedResult<T, CacheParams extends Record<string, any>>(cacheKey: StorageKeyType, data: T, cacheOptions: Exclude<CacheConfig, boolean>, cacheParams: CacheParams, tags: string[], invalidatesTags: string[]): Promise<void>;
|
|
45
|
-
/**
|
|
46
|
-
* Проверяет, должен ли запрос быть кэширован
|
|
47
|
-
* @param endpointConfig Конфигурация эндпоинта
|
|
48
|
-
* @param options Опции запроса
|
|
49
|
-
* @returns true если запрос должен кэшироваться
|
|
50
|
-
*/
|
|
51
|
-
shouldCache(endpointConfig?: EndpointConfig, options?: QueryOptions): boolean;
|
|
52
|
-
/**
|
|
53
|
-
* Создает итоговую конфигурацию кэширования для конкретного эндпоинта
|
|
54
|
-
* Объединяет глабальный конфиг с текущим
|
|
55
|
-
* @param endpointConfig Конфигурация эндпоинта
|
|
56
|
-
*/
|
|
57
|
-
createCacheConfig(endpointConfig?: EndpointConfig): {
|
|
58
|
-
ttl?: number;
|
|
59
|
-
cleanup?: {
|
|
60
|
-
enabled: boolean;
|
|
61
|
-
interval?: number;
|
|
62
|
-
};
|
|
63
|
-
invalidateOnError?: boolean;
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Инвалидирует кэш по тегам
|
|
67
|
-
* @param tags Теги для инвалидации
|
|
68
|
-
*/
|
|
69
|
-
invalidateCacheByTags(tags: string[]): Promise<void>;
|
|
70
|
-
/**
|
|
71
|
-
* Инвалидирует кэш по ключу
|
|
72
|
-
* @param cacheKey Ключ кэша
|
|
73
|
-
*/
|
|
74
|
-
invalidateCache(cacheKey: StorageKeyType): Promise<void>;
|
|
75
|
-
/**
|
|
76
|
-
* Выполняет очистку всех просроченных записей кэша
|
|
77
|
-
*/
|
|
78
|
-
cleanup(): Promise<void>;
|
|
79
|
-
/**
|
|
80
|
-
* Уничтожает хранилище и освобождает ресурсы
|
|
81
|
-
*/
|
|
82
|
-
destroy(): Promise<void>;
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=query-storage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-storage.d.ts","sourceRoot":"","sources":["../../../src/api/components/query-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,QAAQ,EAA+B,cAAc,EAAe,MAAM,oBAAoB,CAAA;AAEzH,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD;;;GAGG;AACH,qBAAa,YAAY;IAiBrB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAjBpC,0BAA0B;IAC1B,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,eAAe,CAAuC;IAE9D,kCAAkC;IAClC,OAAO,CAAC,mBAAmB,CAO1B;gBAGkB,eAAe,EAAE,sBAAsB,CAAC,SAAS,CAAC,EAClD,iBAAiB,EAAE,sBAAsB,CAAC,OAAO,CAAC;IAGxD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAS1B,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;IAsBjF;;;;;;;;OAQG;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,EACd,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,IAAI,CAAC;IAqBhB;;;;;OAKG;IACI,WAAW,CAAC,cAAc,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY;IAe1E;;;;OAIG;IACI,iBAAiB,CAAC,cAAc,CAAC,EAAE,cAAc;;;;oBAlJpB,CAAA;;;;IAuKpC;;;OAGG;IACU,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjE;;;OAGG;IACU,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAcrC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAatC"}
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { CacheUtils } from '../../core/storage/utils/cache.util';
|
|
2
|
-
/**
|
|
3
|
-
* Менеджер хранилища для API
|
|
4
|
-
* Объединяет в себе функционал хранилища и управления кэшем
|
|
5
|
-
*/
|
|
6
|
-
export class QueryStorage {
|
|
7
|
-
storageExternal;
|
|
8
|
-
globalCacheConfig;
|
|
9
|
-
/** Экземпляр хранилища */
|
|
10
|
-
storage = null;
|
|
11
|
-
cleanupInterval = null;
|
|
12
|
-
/** Настройки кэша по умолчанию */
|
|
13
|
-
defaultCacheOptions = {
|
|
14
|
-
ttl: 5 * 60 * 1000, // 5 минут по умолчанию
|
|
15
|
-
cleanup: {
|
|
16
|
-
enabled: true,
|
|
17
|
-
interval: 10 * 60 * 1000, // 10 минут
|
|
18
|
-
},
|
|
19
|
-
invalidateOnError: true,
|
|
20
|
-
};
|
|
21
|
-
constructor(storageExternal, globalCacheConfig) {
|
|
22
|
-
this.storageExternal = storageExternal;
|
|
23
|
-
this.globalCacheConfig = globalCacheConfig;
|
|
24
|
-
}
|
|
25
|
-
async initialize() {
|
|
26
|
-
// 1. Создаем хранилище
|
|
27
|
-
await this.createStorage();
|
|
28
|
-
// 2. Запускаем периодическую очистку, если это указано в настройках
|
|
29
|
-
this.startCleanupInterval();
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
async createStorage() {
|
|
33
|
-
try {
|
|
34
|
-
const s = this.storageExternal;
|
|
35
|
-
await s.initialize();
|
|
36
|
-
this.storage = s;
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
console.error('Ошибка инициализации хранилища', error);
|
|
40
|
-
throw error;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
startCleanupInterval() {
|
|
44
|
-
if (this.cleanupInterval) {
|
|
45
|
-
clearInterval(this.cleanupInterval);
|
|
46
|
-
this.cleanupInterval = null;
|
|
47
|
-
}
|
|
48
|
-
// Получаем настройки очистки
|
|
49
|
-
const cleanupConfig = typeof this.globalCacheConfig === 'object' ? this.globalCacheConfig.cleanup : this.defaultCacheOptions.cleanup;
|
|
50
|
-
// Запускаем интервал очистки, если он включен
|
|
51
|
-
if (cleanupConfig?.enabled && cleanupConfig.interval) {
|
|
52
|
-
this.cleanupInterval = setInterval(() => {
|
|
53
|
-
this.cleanup().catch((err) => console.error('Ошибка при очистке кэша:', err));
|
|
54
|
-
}, cleanupConfig.interval);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Получает экземпляр хранилища
|
|
59
|
-
*/
|
|
60
|
-
getStorage() {
|
|
61
|
-
return this.storage;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Создает ключ кэша для запроса с учетом заголовков
|
|
65
|
-
* @param endpoint Имя эндпоинта
|
|
66
|
-
* @param params Параметры запроса (все что посчитаем нужным)
|
|
67
|
-
*/
|
|
68
|
-
createCacheKey(endpoint, params) {
|
|
69
|
-
return CacheUtils.createApiKey(endpoint, params);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Получает результат запроса из кэша
|
|
73
|
-
*/
|
|
74
|
-
async getCachedResult(cacheKey) {
|
|
75
|
-
if (!this.storage)
|
|
76
|
-
throw new Error('Хранилище не инициализировано');
|
|
77
|
-
const cachedEntry = await this.storage.get(cacheKey);
|
|
78
|
-
if (!cachedEntry)
|
|
79
|
-
return undefined;
|
|
80
|
-
// Проверяем срок годности кэша
|
|
81
|
-
if (CacheUtils.isExpired(cachedEntry.metadata)) {
|
|
82
|
-
await this.storage.delete(cacheKey);
|
|
83
|
-
return undefined;
|
|
84
|
-
}
|
|
85
|
-
// Обновляем метаданные кэша (счетчик доступа, время обновления)
|
|
86
|
-
const updatedEntry = {
|
|
87
|
-
...cachedEntry,
|
|
88
|
-
metadata: CacheUtils.updateMetadata(cachedEntry.metadata),
|
|
89
|
-
};
|
|
90
|
-
await this.storage.set(cacheKey, updatedEntry);
|
|
91
|
-
return cachedEntry.data;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Сохраняет результат запроса в кэш
|
|
95
|
-
* @param cacheKey Ключ кэша
|
|
96
|
-
* @param data Данные для кэширования
|
|
97
|
-
* @param cacheOptions Метаданные
|
|
98
|
-
* @param cacheParams Параметры которые влияли на созадние ключа
|
|
99
|
-
* @param tags Тэги эндпоинта
|
|
100
|
-
* @param invalidatesTags Тэги которые нужно инвалидировать
|
|
101
|
-
*/
|
|
102
|
-
async setCachedResult(cacheKey, data, cacheOptions, cacheParams, tags, invalidatesTags) {
|
|
103
|
-
if (!this.storage)
|
|
104
|
-
throw new Error('Хранилище не инициализировано');
|
|
105
|
-
// Проверяем, нужно ли инвалидировать другие кэши по тегам
|
|
106
|
-
if (invalidatesTags?.length) {
|
|
107
|
-
await this.invalidateCacheByTags(invalidatesTags);
|
|
108
|
-
}
|
|
109
|
-
// Создаем метаданные кэша
|
|
110
|
-
const cacheMetadata = CacheUtils.createMetadata(cacheOptions.ttl, tags);
|
|
111
|
-
// Создаем запись кэша
|
|
112
|
-
const cacheEntry = {
|
|
113
|
-
data,
|
|
114
|
-
metadata: cacheMetadata,
|
|
115
|
-
params: cacheParams,
|
|
116
|
-
};
|
|
117
|
-
await this.storage.set(cacheKey, cacheEntry);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Проверяет, должен ли запрос быть кэширован
|
|
121
|
-
* @param endpointConfig Конфигурация эндпоинта
|
|
122
|
-
* @param options Опции запроса
|
|
123
|
-
* @returns true если запрос должен кэшироваться
|
|
124
|
-
*/
|
|
125
|
-
shouldCache(endpointConfig, options) {
|
|
126
|
-
// Если глобальный кэш отключен, возвращаем false
|
|
127
|
-
if (this.globalCacheConfig === false)
|
|
128
|
-
return false;
|
|
129
|
-
// Если эндпоинт явно отключает кэш, возвращаем false
|
|
130
|
-
if (endpointConfig?.cache === false)
|
|
131
|
-
return false;
|
|
132
|
-
// Если по какой то причине указали время кэша 0
|
|
133
|
-
if (typeof endpointConfig?.cache === 'object' && endpointConfig?.cache.ttl === 0)
|
|
134
|
-
return false;
|
|
135
|
-
// Если при вызове самого запроса явно указали НЕ кэшировать
|
|
136
|
-
if (options?.disableCache === true)
|
|
137
|
-
return false;
|
|
138
|
-
// Если настройки нигде не указаны - по умолчанию НЕ кэшируем
|
|
139
|
-
if (this.globalCacheConfig === undefined && endpointConfig?.cache === undefined)
|
|
140
|
-
return false;
|
|
141
|
-
return true;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Создает итоговую конфигурацию кэширования для конкретного эндпоинта
|
|
145
|
-
* Объединяет глабальный конфиг с текущим
|
|
146
|
-
* @param endpointConfig Конфигурация эндпоинта
|
|
147
|
-
*/
|
|
148
|
-
createCacheConfig(endpointConfig) {
|
|
149
|
-
// Создаем опции по умолчанию
|
|
150
|
-
let resultConfig = this.defaultCacheOptions;
|
|
151
|
-
// Если в глобальном конфиге кэш передан как объект а не boolean - по умолчанию станет он
|
|
152
|
-
if (typeof this.globalCacheConfig === 'object') {
|
|
153
|
-
resultConfig = this.globalCacheConfig;
|
|
154
|
-
}
|
|
155
|
-
// Если в настройках эндпоинта кэш как объект - дополняем этими параметрами итоговый объект кэша
|
|
156
|
-
if (typeof endpointConfig?.cache === 'object') {
|
|
157
|
-
const endpointCache = endpointConfig.cache;
|
|
158
|
-
resultConfig = {
|
|
159
|
-
// @ts-ignore
|
|
160
|
-
...resultConfig,
|
|
161
|
-
...endpointCache,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
return resultConfig;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Инвалидирует кэш по тегам
|
|
168
|
-
* @param tags Теги для инвалидации
|
|
169
|
-
*/
|
|
170
|
-
async invalidateCacheByTags(tags) {
|
|
171
|
-
if (!this.storage)
|
|
172
|
-
throw new Error('Хранилище не инициализировано');
|
|
173
|
-
const keys = await this.storage.keys();
|
|
174
|
-
for (const key of keys) {
|
|
175
|
-
const cachedEntry = await this.storage.get(key);
|
|
176
|
-
if (cachedEntry && CacheUtils.hasAnyTag(cachedEntry.metadata, tags)) {
|
|
177
|
-
await this.storage.delete(key);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Инвалидирует кэш по ключу
|
|
183
|
-
* @param cacheKey Ключ кэша
|
|
184
|
-
*/
|
|
185
|
-
async invalidateCache(cacheKey) {
|
|
186
|
-
if (!this.storage)
|
|
187
|
-
throw new Error('Хранилище не инициализировано');
|
|
188
|
-
await this.storage.delete(cacheKey);
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Выполняет очистку всех просроченных записей кэша
|
|
192
|
-
*/
|
|
193
|
-
async cleanup() {
|
|
194
|
-
if (!this.storage) {
|
|
195
|
-
throw new Error('Хранилище не инициализировано');
|
|
196
|
-
}
|
|
197
|
-
const keys = await this.storage.keys();
|
|
198
|
-
for (const key of keys) {
|
|
199
|
-
const value = await this.storage.get(key);
|
|
200
|
-
if (value && CacheUtils.isExpired(value.metadata)) {
|
|
201
|
-
await this.storage.delete(key);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Уничтожает хранилище и освобождает ресурсы
|
|
207
|
-
*/
|
|
208
|
-
async destroy() {
|
|
209
|
-
// Останавливаем интервал очистки
|
|
210
|
-
if (this.cleanupInterval) {
|
|
211
|
-
window.clearInterval(this.cleanupInterval);
|
|
212
|
-
this.cleanupInterval = null;
|
|
213
|
-
}
|
|
214
|
-
// Очищаем хранилище
|
|
215
|
-
if (this.storage) {
|
|
216
|
-
await this.storage.destroy();
|
|
217
|
-
this.storage = null;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
//# sourceMappingURL=query-storage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-storage.js","sourceRoot":"","sources":["../../../src/api/components/query-storage.ts"],"names":[],"mappings":"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"}
|