synapse-storage 3.0.1 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/dist/api.cjs +891 -0
  2. package/dist/api.cjs.map +1 -0
  3. package/dist/api.d.cts +365 -0
  4. package/dist/api.d.ts +365 -0
  5. package/dist/api.js +860 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/core.cjs +2389 -0
  8. package/dist/core.cjs.map +1 -0
  9. package/dist/core.d.cts +397 -0
  10. package/dist/{core/storage/modules/plugin/plugin.interface.d.ts → core.d.ts} +203 -7
  11. package/dist/core.js +2356 -0
  12. package/dist/core.js.map +1 -0
  13. package/dist/dispatcher.module-CdpmkplA.d.cts +363 -0
  14. package/dist/dispatcher.module-jd8U_ZEs.d.ts +363 -0
  15. package/dist/index.cjs +4148 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.cts +10 -0
  18. package/dist/index.d.ts +10 -10
  19. package/dist/index.js +4092 -13
  20. package/dist/index.js.map +1 -1
  21. package/dist/react.cjs +268 -0
  22. package/dist/react.cjs.map +1 -0
  23. package/dist/react.d.cts +74 -0
  24. package/dist/react.d.ts +74 -0
  25. package/dist/react.js +239 -0
  26. package/dist/react.js.map +1 -0
  27. package/dist/reactive.cjs +643 -0
  28. package/dist/reactive.cjs.map +1 -0
  29. package/dist/reactive.d.cts +35 -0
  30. package/dist/reactive.d.ts +35 -0
  31. package/dist/reactive.js +604 -0
  32. package/dist/reactive.js.map +1 -0
  33. package/dist/{core/selector/selector.interface.d.ts → selector.interface-CA5y-kD_.d.cts} +7 -35
  34. package/dist/selector.interface-CA5y-kD_.d.ts +63 -0
  35. package/dist/storage.interface-Dl8SLUd1.d.cts +128 -0
  36. package/dist/storage.interface-Dl8SLUd1.d.ts +128 -0
  37. package/dist/utils.cjs +601 -0
  38. package/dist/utils.cjs.map +1 -0
  39. package/dist/utils.d.cts +92 -0
  40. package/dist/utils.d.ts +92 -0
  41. package/dist/utils.js +574 -0
  42. package/dist/utils.js.map +1 -0
  43. package/package.json +54 -17
  44. package/dist/_utils/chunk.util.d.ts +0 -8
  45. package/dist/_utils/chunk.util.d.ts.map +0 -1
  46. package/dist/_utils/chunk.util.js +0 -21
  47. package/dist/_utils/chunk.util.js.map +0 -1
  48. package/dist/_utils/deepMerge.util.d.ts +0 -2
  49. package/dist/_utils/deepMerge.util.d.ts.map +0 -1
  50. package/dist/_utils/deepMerge.util.js +0 -16
  51. package/dist/_utils/deepMerge.util.js.map +0 -1
  52. package/dist/_utils/flatMap.util.d.ts +0 -10
  53. package/dist/_utils/flatMap.util.d.ts.map +0 -1
  54. package/dist/_utils/flatMap.util.js +0 -23
  55. package/dist/_utils/flatMap.util.js.map +0 -1
  56. package/dist/_utils/index.d.ts +0 -4
  57. package/dist/_utils/index.d.ts.map +0 -1
  58. package/dist/_utils/index.js +0 -4
  59. package/dist/_utils/index.js.map +0 -1
  60. package/dist/api/api.module.d.ts +0 -38
  61. package/dist/api/api.module.d.ts.map +0 -1
  62. package/dist/api/api.module.js +0 -82
  63. package/dist/api/api.module.js.map +0 -1
  64. package/dist/api/components/endpoint.d.ts +0 -26
  65. package/dist/api/components/endpoint.d.ts.map +0 -1
  66. package/dist/api/components/endpoint.js +0 -253
  67. package/dist/api/components/endpoint.js.map +0 -1
  68. package/dist/api/components/query-storage.d.ts +0 -84
  69. package/dist/api/components/query-storage.d.ts.map +0 -1
  70. package/dist/api/components/query-storage.js +0 -221
  71. package/dist/api/components/query-storage.js.map +0 -1
  72. package/dist/api/example.d.ts +0 -83
  73. package/dist/api/example.d.ts.map +0 -1
  74. package/dist/api/example.js +0 -85
  75. package/dist/api/example.js.map +0 -1
  76. package/dist/api/index.d.ts +0 -4
  77. package/dist/api/index.d.ts.map +0 -1
  78. package/dist/api/index.js +0 -6
  79. package/dist/api/index.js.map +0 -1
  80. package/dist/api/types/api.interface.d.ts +0 -108
  81. package/dist/api/types/api.interface.d.ts.map +0 -1
  82. package/dist/api/types/api.interface.js +0 -19
  83. package/dist/api/types/api.interface.js.map +0 -1
  84. package/dist/api/types/endpoint.interface.d.ts +0 -116
  85. package/dist/api/types/endpoint.interface.d.ts.map +0 -1
  86. package/dist/api/types/endpoint.interface.js +0 -2
  87. package/dist/api/types/endpoint.interface.js.map +0 -1
  88. package/dist/api/types/query.interface.d.ts +0 -87
  89. package/dist/api/types/query.interface.d.ts.map +0 -1
  90. package/dist/api/types/query.interface.js +0 -2
  91. package/dist/api/types/query.interface.js.map +0 -1
  92. package/dist/api/utils/api-helpers.d.ts +0 -22
  93. package/dist/api/utils/api-helpers.d.ts.map +0 -1
  94. package/dist/api/utils/api-helpers.js +0 -44
  95. package/dist/api/utils/api-helpers.js.map +0 -1
  96. package/dist/api/utils/create-header-context.d.ts +0 -10
  97. package/dist/api/utils/create-header-context.d.ts.map +0 -1
  98. package/dist/api/utils/create-header-context.js +0 -36
  99. package/dist/api/utils/create-header-context.js.map +0 -1
  100. package/dist/api/utils/endpoint-headers.d.ts +0 -23
  101. package/dist/api/utils/endpoint-headers.d.ts.map +0 -1
  102. package/dist/api/utils/endpoint-headers.js +0 -57
  103. package/dist/api/utils/endpoint-headers.js.map +0 -1
  104. package/dist/api/utils/fetch-base-query.d.ts +0 -9
  105. package/dist/api/utils/fetch-base-query.d.ts.map +0 -1
  106. package/dist/api/utils/fetch-base-query.js +0 -181
  107. package/dist/api/utils/fetch-base-query.js.map +0 -1
  108. package/dist/api/utils/file-utils.d.ts +0 -43
  109. package/dist/api/utils/file-utils.d.ts.map +0 -1
  110. package/dist/api/utils/file-utils.js +0 -108
  111. package/dist/api/utils/file-utils.js.map +0 -1
  112. package/dist/api/utils/get-cacheable-headers.d.ts +0 -8
  113. package/dist/api/utils/get-cacheable-headers.d.ts.map +0 -1
  114. package/dist/api/utils/get-cacheable-headers.js +0 -21
  115. package/dist/api/utils/get-cacheable-headers.js.map +0 -1
  116. package/dist/core/index.d.ts +0 -3
  117. package/dist/core/index.d.ts.map +0 -1
  118. package/dist/core/index.js +0 -3
  119. package/dist/core/index.js.map +0 -1
  120. package/dist/core/selector/index.d.ts +0 -3
  121. package/dist/core/selector/index.d.ts.map +0 -1
  122. package/dist/core/selector/index.js +0 -2
  123. package/dist/core/selector/index.js.map +0 -1
  124. package/dist/core/selector/selector.interface.d.ts.map +0 -1
  125. package/dist/core/selector/selector.interface.js +0 -2
  126. package/dist/core/selector/selector.interface.js.map +0 -1
  127. package/dist/core/selector/selector.module.d.ts +0 -29
  128. package/dist/core/selector/selector.module.d.ts.map +0 -1
  129. package/dist/core/selector/selector.module.js +0 -467
  130. package/dist/core/selector/selector.module.js.map +0 -1
  131. package/dist/core/storage/adapters/base-storage.service.d.ts +0 -65
  132. package/dist/core/storage/adapters/base-storage.service.d.ts.map +0 -1
  133. package/dist/core/storage/adapters/base-storage.service.js +0 -660
  134. package/dist/core/storage/adapters/base-storage.service.js.map +0 -1
  135. package/dist/core/storage/adapters/indexed-DB.service.d.ts +0 -63
  136. package/dist/core/storage/adapters/indexed-DB.service.d.ts.map +0 -1
  137. package/dist/core/storage/adapters/indexed-DB.service.js +0 -595
  138. package/dist/core/storage/adapters/indexed-DB.service.js.map +0 -1
  139. package/dist/core/storage/adapters/indexed-DB.service.old.d.ts +0 -38
  140. package/dist/core/storage/adapters/indexed-DB.service.old.d.ts.map +0 -1
  141. package/dist/core/storage/adapters/indexed-DB.service.old.js +0 -318
  142. package/dist/core/storage/adapters/indexed-DB.service.old.js.map +0 -1
  143. package/dist/core/storage/adapters/local-storage.service.d.ts +0 -21
  144. package/dist/core/storage/adapters/local-storage.service.d.ts.map +0 -1
  145. package/dist/core/storage/adapters/local-storage.service.js +0 -99
  146. package/dist/core/storage/adapters/local-storage.service.js.map +0 -1
  147. package/dist/core/storage/adapters/memory-storage.service.d.ts +0 -22
  148. package/dist/core/storage/adapters/memory-storage.service.d.ts.map +0 -1
  149. package/dist/core/storage/adapters/memory-storage.service.js +0 -99
  150. package/dist/core/storage/adapters/memory-storage.service.js.map +0 -1
  151. package/dist/core/storage/adapters/path.utils.d.ts +0 -5
  152. package/dist/core/storage/adapters/path.utils.d.ts.map +0 -1
  153. package/dist/core/storage/adapters/path.utils.js +0 -35
  154. package/dist/core/storage/adapters/path.utils.js.map +0 -1
  155. package/dist/core/storage/index.d.ts +0 -11
  156. package/dist/core/storage/index.d.ts.map +0 -1
  157. package/dist/core/storage/index.js +0 -12
  158. package/dist/core/storage/index.js.map +0 -1
  159. package/dist/core/storage/middlewares/broadcast.middleware.d.ts +0 -9
  160. package/dist/core/storage/middlewares/broadcast.middleware.d.ts.map +0 -1
  161. package/dist/core/storage/middlewares/broadcast.middleware.js +0 -115
  162. package/dist/core/storage/middlewares/broadcast.middleware.js.map +0 -1
  163. package/dist/core/storage/middlewares/index.d.ts +0 -4
  164. package/dist/core/storage/middlewares/index.d.ts.map +0 -1
  165. package/dist/core/storage/middlewares/index.js +0 -3
  166. package/dist/core/storage/middlewares/index.js.map +0 -1
  167. package/dist/core/storage/middlewares/storage-batching.middleware.d.ts +0 -7
  168. package/dist/core/storage/middlewares/storage-batching.middleware.d.ts.map +0 -1
  169. package/dist/core/storage/middlewares/storage-batching.middleware.js +0 -36
  170. package/dist/core/storage/middlewares/storage-batching.middleware.js.map +0 -1
  171. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts +0 -7
  172. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts.map +0 -1
  173. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js +0 -46
  174. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js.map +0 -1
  175. package/dist/core/storage/modules/plugin/plugin.interface.d.ts.map +0 -1
  176. package/dist/core/storage/modules/plugin/plugin.interface.js +0 -2
  177. package/dist/core/storage/modules/plugin/plugin.interface.js.map +0 -1
  178. package/dist/core/storage/modules/plugin/plugin.service.d.ts +0 -25
  179. package/dist/core/storage/modules/plugin/plugin.service.d.ts.map +0 -1
  180. package/dist/core/storage/modules/plugin/plugin.service.js +0 -186
  181. package/dist/core/storage/modules/plugin/plugin.service.js.map +0 -1
  182. package/dist/core/storage/storage.interface.d.ts +0 -70
  183. package/dist/core/storage/storage.interface.d.ts.map +0 -1
  184. package/dist/core/storage/storage.interface.js +0 -10
  185. package/dist/core/storage/storage.interface.js.map +0 -1
  186. package/dist/core/storage/utils/batch.utils.d.ts +0 -33
  187. package/dist/core/storage/utils/batch.utils.d.ts.map +0 -1
  188. package/dist/core/storage/utils/batch.utils.js +0 -88
  189. package/dist/core/storage/utils/batch.utils.js.map +0 -1
  190. package/dist/core/storage/utils/broadcast.util.d.ts +0 -48
  191. package/dist/core/storage/utils/broadcast.util.d.ts.map +0 -1
  192. package/dist/core/storage/utils/broadcast.util.js +0 -162
  193. package/dist/core/storage/utils/broadcast.util.js.map +0 -1
  194. package/dist/core/storage/utils/cache.util.d.ts +0 -33
  195. package/dist/core/storage/utils/cache.util.d.ts.map +0 -1
  196. package/dist/core/storage/utils/cache.util.js +0 -47
  197. package/dist/core/storage/utils/cache.util.js.map +0 -1
  198. package/dist/core/storage/utils/middleware-module.d.ts +0 -46
  199. package/dist/core/storage/utils/middleware-module.d.ts.map +0 -1
  200. package/dist/core/storage/utils/middleware-module.js +0 -109
  201. package/dist/core/storage/utils/middleware-module.js.map +0 -1
  202. package/dist/core/storage/utils/storage-key.d.ts +0 -11
  203. package/dist/core/storage/utils/storage-key.d.ts.map +0 -1
  204. package/dist/core/storage/utils/storage-key.js +0 -21
  205. package/dist/core/storage/utils/storage-key.js.map +0 -1
  206. package/dist/core/storage/utils/storage.utils.d.ts +0 -17
  207. package/dist/core/storage/utils/storage.utils.d.ts.map +0 -1
  208. package/dist/core/storage/utils/storage.utils.js +0 -57
  209. package/dist/core/storage/utils/storage.utils.js.map +0 -1
  210. package/dist/index.d.ts.map +0 -1
  211. package/dist/react/hooks/index.d.ts +0 -3
  212. package/dist/react/hooks/index.d.ts.map +0 -1
  213. package/dist/react/hooks/index.js +0 -3
  214. package/dist/react/hooks/index.js.map +0 -1
  215. package/dist/react/hooks/useSelector.d.ts +0 -22
  216. package/dist/react/hooks/useSelector.d.ts.map +0 -1
  217. package/dist/react/hooks/useSelector.js +0 -104
  218. package/dist/react/hooks/useSelector.js.map +0 -1
  219. package/dist/react/hooks/useStorageSubscribe.d.ts +0 -12
  220. package/dist/react/hooks/useStorageSubscribe.d.ts.map +0 -1
  221. package/dist/react/hooks/useStorageSubscribe.js +0 -49
  222. package/dist/react/hooks/useStorageSubscribe.js.map +0 -1
  223. package/dist/react/index.d.ts +0 -3
  224. package/dist/react/index.d.ts.map +0 -1
  225. package/dist/react/index.js +0 -3
  226. package/dist/react/index.js.map +0 -1
  227. package/dist/react/utils/createSynapseCtx.d.ts +0 -40
  228. package/dist/react/utils/createSynapseCtx.d.ts.map +0 -1
  229. package/dist/react/utils/createSynapseCtx.js +0 -125
  230. package/dist/react/utils/createSynapseCtx.js.map +0 -1
  231. package/dist/react/utils/index.d.ts +0 -2
  232. package/dist/react/utils/index.d.ts.map +0 -1
  233. package/dist/react/utils/index.js +0 -2
  234. package/dist/react/utils/index.js.map +0 -1
  235. package/dist/reactive/dispatcher/dispatcher.module.d.ts +0 -195
  236. package/dist/reactive/dispatcher/dispatcher.module.d.ts.map +0 -1
  237. package/dist/reactive/dispatcher/dispatcher.module.js +0 -288
  238. package/dist/reactive/dispatcher/dispatcher.module.js.map +0 -1
  239. package/dist/reactive/dispatcher/index.d.ts +0 -3
  240. package/dist/reactive/dispatcher/index.d.ts.map +0 -1
  241. package/dist/reactive/dispatcher/index.js +0 -3
  242. package/dist/reactive/dispatcher/index.js.map +0 -1
  243. package/dist/reactive/dispatcher/middlewares/index.d.ts +0 -2
  244. package/dist/reactive/dispatcher/middlewares/index.d.ts.map +0 -1
  245. package/dist/reactive/dispatcher/middlewares/index.js +0 -2
  246. package/dist/reactive/dispatcher/middlewares/index.js.map +0 -1
  247. package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts +0 -31
  248. package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts.map +0 -1
  249. package/dist/reactive/dispatcher/middlewares/logger.middleware.js +0 -126
  250. package/dist/reactive/dispatcher/middlewares/logger.middleware.js.map +0 -1
  251. package/dist/reactive/effects/effects.module.d.ts +0 -150
  252. package/dist/reactive/effects/effects.module.d.ts.map +0 -1
  253. package/dist/reactive/effects/effects.module.js +0 -277
  254. package/dist/reactive/effects/effects.module.js.map +0 -1
  255. package/dist/reactive/effects/index.d.ts +0 -2
  256. package/dist/reactive/effects/index.d.ts.map +0 -1
  257. package/dist/reactive/effects/index.js +0 -2
  258. package/dist/reactive/effects/index.js.map +0 -1
  259. package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts +0 -12
  260. package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts.map +0 -1
  261. package/dist/reactive/effects/utils/chunkRequestConsistent.js +0 -16
  262. package/dist/reactive/effects/utils/chunkRequestConsistent.js.map +0 -1
  263. package/dist/reactive/effects/utils/chunkRequestParallel.d.ts +0 -12
  264. package/dist/reactive/effects/utils/chunkRequestParallel.d.ts.map +0 -1
  265. package/dist/reactive/effects/utils/chunkRequestParallel.js +0 -13
  266. package/dist/reactive/effects/utils/chunkRequestParallel.js.map +0 -1
  267. package/dist/reactive/effects/utils/index.d.ts +0 -3
  268. package/dist/reactive/effects/utils/index.d.ts.map +0 -1
  269. package/dist/reactive/effects/utils/index.js +0 -3
  270. package/dist/reactive/effects/utils/index.js.map +0 -1
  271. package/dist/reactive/index.d.ts +0 -3
  272. package/dist/reactive/index.d.ts.map +0 -1
  273. package/dist/reactive/index.js +0 -3
  274. package/dist/reactive/index.js.map +0 -1
  275. package/dist/utils/createSynapse.d.ts +0 -92
  276. package/dist/utils/createSynapse.d.ts.map +0 -1
  277. package/dist/utils/createSynapse.js +0 -79
  278. package/dist/utils/createSynapse.js.map +0 -1
  279. package/dist/utils/index.d.ts +0 -2
  280. package/dist/utils/index.d.ts.map +0 -1
  281. package/dist/utils/index.js +0 -2
  282. 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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"}