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
package/dist/api.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var chunk22J2S57D_cjs=require('./chunk-22J2S57D.cjs');require('./chunk-635Q6YJZ.cjs');Object.defineProperty(exports,"ApiClient",{enumerable:true,get:function(){return chunk22J2S57D_cjs.e}});Object.defineProperty(exports,"ResponseFormat",{enumerable:true,get:function(){return chunk22J2S57D_cjs.d}});Object.defineProperty(exports,"apiLogger",{enumerable:true,get:function(){return chunk22J2S57D_cjs.a}});Object.defineProperty(exports,"createUniqueId",{enumerable:true,get:function(){return chunk22J2S57D_cjs.b}});Object.defineProperty(exports,"headersToObject",{enumerable:true,get:function(){return chunk22J2S57D_cjs.c}});
|
package/dist/api.d.cts
ADDED
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import { I as IStorage } from './storage.interface-Dl8SLUd1.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Тип для функции отписки от событий
|
|
5
|
+
*/
|
|
6
|
+
type Unsubscribe = VoidFunction;
|
|
7
|
+
/**
|
|
8
|
+
* Опции для выполнения запроса
|
|
9
|
+
*/
|
|
10
|
+
interface QueryOptions {
|
|
11
|
+
/** Отключить кэширование для этого запроса */
|
|
12
|
+
disableCache?: boolean;
|
|
13
|
+
/** Signal для отмены запроса */
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
/** Таймаут в миллисекундах (переопределяет глобальный) */
|
|
16
|
+
timeout?: number;
|
|
17
|
+
/** Дополнительные заголовки */
|
|
18
|
+
headers?: Headers;
|
|
19
|
+
/** Пользовательский контекст */
|
|
20
|
+
context?: Record<string, any>;
|
|
21
|
+
/** Ключи заголовков, влияющие на кэш (для конкретного запроса) */
|
|
22
|
+
cacheableHeaderKeys?: string[];
|
|
23
|
+
/** Формат ответа (переопределяет формат из RequestDefinition) */
|
|
24
|
+
responseFormat?: ResponseFormat;
|
|
25
|
+
/** Название файла при скачивании (переопределяет fileName из RequestDefinition) */
|
|
26
|
+
fileName?: string;
|
|
27
|
+
/** Тип файла при скачивании (переопределяет fileType из RequestDefinition) */
|
|
28
|
+
fileType?: string;
|
|
29
|
+
/** Автоматически скачать файл после получения */
|
|
30
|
+
downloadFile?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Функция для повторного выполнения запроса
|
|
33
|
+
*/
|
|
34
|
+
retry?: <T = any, R = any>(params: T, options?: QueryOptions) => Promise<R>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Метаданные для файла
|
|
38
|
+
*/
|
|
39
|
+
interface FileMetadata {
|
|
40
|
+
/** Имя файла */
|
|
41
|
+
fileName: string;
|
|
42
|
+
/** Тип файла (MIME-тип) */
|
|
43
|
+
fileType: string;
|
|
44
|
+
/** Размер файла в байтах */
|
|
45
|
+
size?: number;
|
|
46
|
+
/** Дата создания файла */
|
|
47
|
+
createdAt?: Date | string;
|
|
48
|
+
/** Дата изменения файла */
|
|
49
|
+
updatedAt?: Date | string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Результат скачивания файла
|
|
53
|
+
*/
|
|
54
|
+
interface FileDownloadResult<T = Blob | ArrayBuffer> {
|
|
55
|
+
/** Данные файла */
|
|
56
|
+
data: T;
|
|
57
|
+
/** Метаданные файла */
|
|
58
|
+
metadata: FileMetadata;
|
|
59
|
+
/** HTTP-статус */
|
|
60
|
+
status: number;
|
|
61
|
+
/** Текст статуса */
|
|
62
|
+
statusText: string;
|
|
63
|
+
/** Заголовки ответа */
|
|
64
|
+
headers: Headers;
|
|
65
|
+
/** Успешна ли загрузка */
|
|
66
|
+
ok: boolean;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Результат выполнения запроса
|
|
70
|
+
*/
|
|
71
|
+
interface QueryResult<T = any, E = Error> {
|
|
72
|
+
/** Данные ответа (при успешном запросе) */
|
|
73
|
+
data?: T;
|
|
74
|
+
/** Ошибка (при неуспешном запросе) */
|
|
75
|
+
error?: E;
|
|
76
|
+
/** Флаг успешности запроса */
|
|
77
|
+
ok: boolean;
|
|
78
|
+
/** HTTP-статус */
|
|
79
|
+
status: number;
|
|
80
|
+
/** Текстовое описание статуса */
|
|
81
|
+
statusText: string;
|
|
82
|
+
/** Заголовки ответа */
|
|
83
|
+
headers: Headers;
|
|
84
|
+
/** Результат скачивания файла (если responseFormat - Blob или ArrayBuffer) */
|
|
85
|
+
fileDownloadResult?: FileDownloadResult;
|
|
86
|
+
fromCache?: boolean;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Конфигурация эндпоинта
|
|
91
|
+
*/
|
|
92
|
+
interface EndpointConfig<RequestParams extends Record<string, any> = any, RequestResult = any> {
|
|
93
|
+
/** Функция для создания определения запроса из параметров */
|
|
94
|
+
request: (params: RequestParams, context?: Record<string, any>) => RequestDefinition<RequestParams>;
|
|
95
|
+
/** Настройки кэша для эндпоинта */
|
|
96
|
+
cache?: CacheConfig;
|
|
97
|
+
/** Теги эндпоинта для группировки в кэше */
|
|
98
|
+
tags?: string[];
|
|
99
|
+
/** Теги, которые инвалидируются при успешном запросе */
|
|
100
|
+
invalidatesTags?: string[];
|
|
101
|
+
/** Функция для подготовки заголовков (дополняет глобальную) */
|
|
102
|
+
prepareHeaders?: (headers: Headers, context: ApiContext<RequestParams>) => Promise<Headers>;
|
|
103
|
+
/** Добавить ключи заголовков, влияющие на кэш (Дополняет глобавльные ключи) */
|
|
104
|
+
includeCacheableHeaderKeys?: string[];
|
|
105
|
+
/** Исключить ключи заголовков, влияющие на кэш (Дополняет глобавльные ключи) */
|
|
106
|
+
excludeCacheableHeaderKeys?: string[];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Состояние эндпоинта
|
|
110
|
+
* Содержит информацию о текущем состоянии запроса и данные
|
|
111
|
+
*/
|
|
112
|
+
interface EndpointState {
|
|
113
|
+
/** Статус запроса */
|
|
114
|
+
status: 'idle' | 'loading' | 'success' | 'error';
|
|
115
|
+
/** Ошибка (при неуспешном запросе) */
|
|
116
|
+
error?: Error;
|
|
117
|
+
/** Количество вызовов */
|
|
118
|
+
fetchCounts: number;
|
|
119
|
+
/** Метаданные эндпоинта */
|
|
120
|
+
meta: Endpoint['meta'];
|
|
121
|
+
/** Какие заголовки участвовали в формировании ключа кэша (итоговые) */
|
|
122
|
+
cacheableHeaders: string[];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Состояние самого запроса
|
|
126
|
+
*/
|
|
127
|
+
interface RequestState<ResponseData = any, RequestParams extends Record<string, any> = any, E = Error> {
|
|
128
|
+
status: 'loading' | 'success' | 'error' | 'idle';
|
|
129
|
+
data?: ResponseData;
|
|
130
|
+
error?: E;
|
|
131
|
+
headers: Record<string, any> | Headers;
|
|
132
|
+
requestParams: RequestParams;
|
|
133
|
+
fromCache: boolean;
|
|
134
|
+
}
|
|
135
|
+
interface SubscribeOptions {
|
|
136
|
+
/** Автоматически отписаться после завершения запроса */
|
|
137
|
+
autoUnsubscribe?: boolean;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Дополнительные методы для request
|
|
141
|
+
*/
|
|
142
|
+
interface RequestResponseModify<T, P extends Record<string, any> = any> {
|
|
143
|
+
id: string;
|
|
144
|
+
/**
|
|
145
|
+
* Подписка на изменения состояния запроса
|
|
146
|
+
*/
|
|
147
|
+
subscribe: (listener: (state: RequestState<T, P>) => void, options?: SubscribeOptions) => VoidFunction;
|
|
148
|
+
/**
|
|
149
|
+
* Ожидание завершения запроса
|
|
150
|
+
* @returns Promise с результатом запроса
|
|
151
|
+
*/
|
|
152
|
+
wait: () => Promise<QueryResult<T, Error>>;
|
|
153
|
+
waitWithCallbacks: (handlers: {
|
|
154
|
+
idle?: (request: RequestState<T, P>) => void;
|
|
155
|
+
loading?: (request: RequestState<T, P>) => void;
|
|
156
|
+
success?: (data: T | undefined, request: RequestState<T, P>) => void;
|
|
157
|
+
error?: (error: Error | undefined, request: RequestState<T, P>) => void;
|
|
158
|
+
}) => Promise<QueryResult<T, Error>>;
|
|
159
|
+
/**
|
|
160
|
+
* Отменить запрос
|
|
161
|
+
*/
|
|
162
|
+
abort: VoidFunction;
|
|
163
|
+
then<TResult1 = QueryResult<T, Error>, TResult2 = never>(onfulfilled?: ((value: QueryResult<T, Error>) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: Error) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
|
|
164
|
+
catch<TResult = never>(onrejected?: ((reason: Error) => TResult | PromiseLike<TResult>) | undefined | null): Promise<QueryResult<T, Error> | TResult>;
|
|
165
|
+
finally(onfinally?: VoidFunction | undefined | null): Promise<QueryResult<T, Error>>;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Структура эндпоинта
|
|
169
|
+
*
|
|
170
|
+
* Эндпоинт - это всего лишь определение того6 как будет вызван метод
|
|
171
|
+
* Эндпоинт может быть вызван в разных частях приложения с разными параметрами
|
|
172
|
+
* По этому нет смысла хранить ответы так как они будут перезаписываться
|
|
173
|
+
* метод subscribe больше нужен для мониторинга
|
|
174
|
+
* meta - метаинформация по эндпоинту (то как он сконфигурирован)
|
|
175
|
+
*/
|
|
176
|
+
interface Endpoint<RequestParams extends Record<string, any> = any, ResponseData = any> {
|
|
177
|
+
/** Счетчик вызова конкретного эндпоинта в проекте */
|
|
178
|
+
fetchCounts: number;
|
|
179
|
+
/** Выполнить запрос с параметрами */
|
|
180
|
+
request: (params: RequestParams, options?: QueryOptions) => RequestResponseModify<ResponseData>;
|
|
181
|
+
/** Подписаться на изменения состояния эндпоинта (в основном для сбора статистики) */
|
|
182
|
+
subscribe: (callback: (state: EndpointState) => void) => Unsubscribe;
|
|
183
|
+
/** Сбросить состояние */
|
|
184
|
+
reset: () => Promise<void>;
|
|
185
|
+
/** Метаданные эндпоинта */
|
|
186
|
+
meta: {
|
|
187
|
+
/** Имя эндпоинта */
|
|
188
|
+
name: string;
|
|
189
|
+
/** Теги эндпоинта */
|
|
190
|
+
tags: string[];
|
|
191
|
+
/** Теги, которые инвалидируются */
|
|
192
|
+
invalidatesTags: string[];
|
|
193
|
+
/** Настройки кэша */
|
|
194
|
+
cache: CacheConfig;
|
|
195
|
+
};
|
|
196
|
+
destroy: VoidFunction;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Функция для создания типизированных эндпоинтов
|
|
200
|
+
*/
|
|
201
|
+
type CreateEndpoint = <RequestParams extends Record<string, any>, RequestResult>(config: EndpointConfig<RequestParams, RequestResult>) => EndpointConfig<RequestParams, RequestResult>;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Форматы ответа от сервера
|
|
205
|
+
*/
|
|
206
|
+
declare enum ResponseFormat {
|
|
207
|
+
/** JSON-объект (по умолчанию) */
|
|
208
|
+
Json = "json",
|
|
209
|
+
/** Blob-объект для файлов */
|
|
210
|
+
Blob = "blob",
|
|
211
|
+
/** ArrayBuffer для бинарных данных */
|
|
212
|
+
ArrayBuffer = "arrayBuffer",
|
|
213
|
+
/** Текстовый формат */
|
|
214
|
+
Text = "text",
|
|
215
|
+
/** FormData для форм */
|
|
216
|
+
FormData = "formData",
|
|
217
|
+
/** Без преобразования - возвращает сырой ответ */
|
|
218
|
+
Raw = "raw"
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Настройки кэша
|
|
222
|
+
* Может быть объектом с параметрами или boolean (true для кэширования с настройками по умолчанию, false для отключения)
|
|
223
|
+
*/
|
|
224
|
+
type CacheConfig = boolean | {
|
|
225
|
+
/** Время жизни кэша в миллисекундах */
|
|
226
|
+
ttl?: number;
|
|
227
|
+
/** Настройки периодической очистки */
|
|
228
|
+
cleanup?: {
|
|
229
|
+
/** Включить периодическую очистку */
|
|
230
|
+
enabled: boolean;
|
|
231
|
+
/** Интервал очистки в миллисекундах */
|
|
232
|
+
interval?: number;
|
|
233
|
+
};
|
|
234
|
+
/** Инвалидировать кэш при ошибке */
|
|
235
|
+
invalidateOnError?: boolean;
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Определение запроса
|
|
239
|
+
* Содержит всю необходимую информацию для выполнения HTTP-запроса
|
|
240
|
+
*/
|
|
241
|
+
interface RequestDefinition<RequestParams extends Record<string, any>> {
|
|
242
|
+
/** Путь запроса (относительный или абсолютный URL) */
|
|
243
|
+
path: string;
|
|
244
|
+
/** HTTP-метод */
|
|
245
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
246
|
+
/** Тело запроса (автоматически сериализуется) */
|
|
247
|
+
body?: any;
|
|
248
|
+
/** Параметры запроса (автоматически добавляются в URL) */
|
|
249
|
+
query?: RequestParams;
|
|
250
|
+
/** HTTP-заголовки */
|
|
251
|
+
headers?: Record<string, string>;
|
|
252
|
+
/** Формат ответа (по умолчанию json) */
|
|
253
|
+
responseFormat?: ResponseFormat;
|
|
254
|
+
/** Имя файла для автоматического скачивания */
|
|
255
|
+
fileName?: string;
|
|
256
|
+
/** Тип контента для автоматического скачивания */
|
|
257
|
+
fileType?: string;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Контекст API для использования в prepareHeaders и других функциях
|
|
261
|
+
* Содержит вспомогательные методы и информацию о запросе
|
|
262
|
+
*/
|
|
263
|
+
interface ApiContext<RequestParams extends Record<string, any> = any> {
|
|
264
|
+
/** Параметры запроса */
|
|
265
|
+
requestParams?: RequestParams;
|
|
266
|
+
/** Получить значение из localStorage */
|
|
267
|
+
getFromStorage: <T>(key: string) => T | undefined;
|
|
268
|
+
/** Получить значение cookie */
|
|
269
|
+
getCookie: (name: string) => string | undefined;
|
|
270
|
+
/** Поддержка для дополнительных свойств */
|
|
271
|
+
[key: string]: any;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Аргументы для создания fetch-запроса
|
|
275
|
+
*/
|
|
276
|
+
interface FetchBaseQueryArgs {
|
|
277
|
+
/** Базовый URL для всех запросов */
|
|
278
|
+
baseUrl: string;
|
|
279
|
+
/** Функция для подготовки заголовков, может быть асинхронной */
|
|
280
|
+
prepareHeaders?: (headers: Headers, context: ApiContext) => Promise<Headers>;
|
|
281
|
+
/** Таймаут запроса в миллисекундах */
|
|
282
|
+
timeout?: number;
|
|
283
|
+
/** Пользовательская fetch-функция */
|
|
284
|
+
fetchFn?: typeof fetch;
|
|
285
|
+
credentials?: RequestCredentials;
|
|
286
|
+
}
|
|
287
|
+
interface CreateApiClientOptions<T extends Record<string, EndpointConfig<any, any>> = Record<string, EndpointConfig<any, any>>> {
|
|
288
|
+
storage: IStorage;
|
|
289
|
+
/** Настройки кэша
|
|
290
|
+
* если явно указан false - значит ни один запрос НЕ будет кэшироваться, даже если в эндпоинтах указаны параметры
|
|
291
|
+
* */
|
|
292
|
+
cache?: CacheConfig;
|
|
293
|
+
/** Базовый запрос или его настройки */
|
|
294
|
+
baseQuery: FetchBaseQueryArgs;
|
|
295
|
+
/** Функция для создания эндпоинтов */
|
|
296
|
+
endpoints?: (create: CreateEndpoint) => Promise<T>;
|
|
297
|
+
/** Глобальные заголовки, влияющие на кэш */
|
|
298
|
+
cacheableHeaderKeys?: string[];
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Извлечение типа параметров из конфигурации эндпоинта
|
|
302
|
+
*/
|
|
303
|
+
type ExtractParamsType<T> = T extends EndpointConfig<infer P, any> ? P : never;
|
|
304
|
+
/**
|
|
305
|
+
* Извлечение типа результата из конфигурации эндпоинта
|
|
306
|
+
*/
|
|
307
|
+
type ExtractResultType<T> = T extends EndpointConfig<any, infer R> ? R : never;
|
|
308
|
+
|
|
309
|
+
type EndpointsResult<F> = F extends (create: any) => Promise<infer R> ? R : never;
|
|
310
|
+
declare class ApiClient<EndpointsFn extends (create: CreateEndpoint) => Promise<Record<string, EndpointConfig<any, any>>>> {
|
|
311
|
+
/** Хранилище запросов */
|
|
312
|
+
private queryStorage;
|
|
313
|
+
private readonly cacheableHeaderKeys;
|
|
314
|
+
private readonly globalCacheConfig;
|
|
315
|
+
private readonly baseQueryConfig;
|
|
316
|
+
private readonly storageExternal;
|
|
317
|
+
private readonly createEndpoints;
|
|
318
|
+
/** Реестр эндпоинтов */
|
|
319
|
+
private endpoints;
|
|
320
|
+
constructor(options: Omit<CreateApiClientOptions, 'endpoints'> & {
|
|
321
|
+
endpoints: EndpointsFn;
|
|
322
|
+
});
|
|
323
|
+
init(): Promise<this>;
|
|
324
|
+
private initializeEndpoints;
|
|
325
|
+
/**
|
|
326
|
+
* Получает все эндпоинты с улучшенной типизацией
|
|
327
|
+
* @returns Типизированный объект эндпоинтов
|
|
328
|
+
*/
|
|
329
|
+
getEndpoints(): {
|
|
330
|
+
[K in keyof EndpointsResult<EndpointsFn>]: Endpoint<ExtractParamsType<EndpointsResult<EndpointsFn>[K]>, ExtractResultType<EndpointsResult<EndpointsFn>[K]>>;
|
|
331
|
+
};
|
|
332
|
+
/**
|
|
333
|
+
* Выполняет запрос к API с типизацией и обработкой ошибок
|
|
334
|
+
* @param endpointName Имя эндпоинта (с подсказками TypeScript)
|
|
335
|
+
* @param params Параметры запроса (с типизацией)
|
|
336
|
+
* @param options Опции запроса
|
|
337
|
+
* @returns Promise с типизированным результатом запроса
|
|
338
|
+
*/
|
|
339
|
+
request<K extends keyof EndpointsResult<EndpointsFn> & string>(endpointName: K, params: ExtractParamsType<EndpointsResult<EndpointsFn>[K]>, options?: QueryOptions): Promise<QueryResult<ExtractResultType<EndpointsResult<EndpointsFn>[K]>, Error>>;
|
|
340
|
+
destroy(): Promise<void>;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Логгер для API
|
|
345
|
+
*/
|
|
346
|
+
declare const apiLogger: {
|
|
347
|
+
debug: (message: string, ...args: any[]) => void;
|
|
348
|
+
log: (message: string, ...args: any[]) => void;
|
|
349
|
+
info: (message: string, ...args: any[]) => void;
|
|
350
|
+
warn: (message: string, ...args: any[]) => void;
|
|
351
|
+
error: (message: string, ...args: any[]) => void;
|
|
352
|
+
};
|
|
353
|
+
/**
|
|
354
|
+
* Создает уникальный идентификатор
|
|
355
|
+
* @returns Строка с уникальным идентификатором
|
|
356
|
+
*/
|
|
357
|
+
declare function createUniqueId(name?: string): string;
|
|
358
|
+
/**
|
|
359
|
+
* Преобразует объект Headers в обычный объект
|
|
360
|
+
* @param headers Объект Headers
|
|
361
|
+
* @returns Обычный объект с заголовками
|
|
362
|
+
*/
|
|
363
|
+
declare function headersToObject(headers: Headers): Record<string, string>;
|
|
364
|
+
|
|
365
|
+
export { ApiClient, ResponseFormat, apiLogger, createUniqueId, headersToObject };
|