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
@@ -0,0 +1,397 @@
1
+ import { I as ISelectorModule, a as Selector, b as SelectorOptions, S as SelectorAPI } from './selector.interface-CA5y-kD_.cjs';
2
+ import { c as StorageKeyType, I as IStorage, h as StorageConfig, f as IEventEmitter, g as ILogger, D as DefaultMiddlewares, e as StorageEvent, i as StorageType, M as Middleware, C as ConfigureMiddlewares, l as StorageKey } from './storage.interface-Dl8SLUd1.cjs';
3
+ export { B as BatchingMiddlewareOptions, G as GetDefaultMiddleware, k as IndexedDBStorageConfig, L as LocalStorageConfig, j as MemoryStorageConfig, a as MiddlewareAPI, N as NextFunction, S as ShallowCompareMiddlewareOptions, b as StorageAction, d as StorageEvents } from './storage.interface-Dl8SLUd1.cjs';
4
+
5
+ /**
6
+ * Контекст выполнения для плагинов
7
+ * Содержит информацию о текущей операции и хранилище
8
+ */
9
+ interface PluginContext {
10
+ /** Имя хранилища, к которому применяется плагин */
11
+ storageName: string;
12
+ /** Временная метка выполнения операции (timestamp) */
13
+ timestamp: number;
14
+ /** Дополнительные метаданные операции (могут быть предоставлены хранилищем или другими плагинами) */
15
+ metadata?: Record<string, any>;
16
+ }
17
+ /**
18
+ * Базовый интерфейс для всех плагинов
19
+ * Определяет основные свойства и методы жизненного цикла
20
+ */
21
+ interface IPlugin {
22
+ /** Уникальное имя плагина */
23
+ name: string;
24
+ /**
25
+ * Метод инициализации плагина
26
+ * Вызывается при добавлении плагина в хранилище или при инициализации хранилища
27
+ */
28
+ initialize?(): Promise<void>;
29
+ /**
30
+ * Метод уничтожения плагина
31
+ * Вызывается при удалении плагина из хранилища или при уничтожении хранилища
32
+ * Используется для освобождения ресурсов и очистки состояния
33
+ */
34
+ destroy?(): Promise<void>;
35
+ }
36
+ /**
37
+ * Интерфейс плагина для хранилища данных
38
+ * Определяет хуки для различных операций хранилища
39
+ */
40
+ interface IStoragePlugin extends IPlugin {
41
+ /**
42
+ * Вызывается перед установкой значения в хранилище
43
+ * Позволяет изменить значение до его сохранения
44
+ *
45
+ * @param value Значение, которое будет сохранено
46
+ * @param context Контекст выполнения операции
47
+ * @returns Модифицированное значение для сохранения
48
+ */
49
+ onBeforeSet?<T>(value: T, context: PluginContext): Promise<T>;
50
+ /**
51
+ * Вызывается после установки значения в хранилище
52
+ * Позволяет выполнить дополнительные действия или модифицировать результат
53
+ *
54
+ * @param key Ключ, по которому было сохранено значение
55
+ * @param value Сохраненное значение
56
+ * @param context Контекст выполнения операции
57
+ * @returns Финальное значение (может быть модифицировано)
58
+ */
59
+ onAfterSet?<T>(key: StorageKeyType, value: T, context: PluginContext): Promise<T>;
60
+ /**
61
+ * Вызывается перед получением значения из хранилища
62
+ * Позволяет модифицировать запрашиваемый ключ
63
+ *
64
+ * @param key Ключ, по которому запрашивается значение
65
+ * @param context Контекст выполнения операции
66
+ * @returns Возможно модифицированный ключ для запроса
67
+ */
68
+ onBeforeGet?(key: StorageKeyType, context: PluginContext): Promise<StorageKeyType>;
69
+ /**
70
+ * Вызывается после получения значения из хранилища
71
+ * Позволяет модифицировать полученное значение
72
+ *
73
+ * @param key Ключ, по которому было запрошено значение
74
+ * @param value Полученное значение (undefined, если значение не найдено)
75
+ * @param context Контекст выполнения операции
76
+ * @returns Финальное значение (может быть модифицировано)
77
+ */
78
+ onAfterGet?<T>(key: StorageKeyType, value: T | undefined, context: PluginContext): Promise<T | undefined>;
79
+ /**
80
+ * Вызывается перед удалением значения из хранилища
81
+ * Позволяет разрешить или запретить удаление
82
+ *
83
+ * @param key Ключ, по которому будет удалено значение
84
+ * @param context Контекст выполнения операции
85
+ * @returns Булево значение, разрешающее (true) или запрещающее (false) удаление
86
+ */
87
+ onBeforeDelete?(key: StorageKeyType, context: PluginContext): Promise<boolean>;
88
+ /**
89
+ * Вызывается после удаления значения из хранилища
90
+ * Позволяет выполнить дополнительные действия после удаления
91
+ *
92
+ * @param key Ключ, по которому было удалено значение
93
+ * @param context Контекст выполнения операции
94
+ */
95
+ onAfterDelete?(key: StorageKeyType, context: PluginContext): Promise<void>;
96
+ /**
97
+ * Вызывается перед очисткой хранилища
98
+ * Позволяет выполнить дополнительные действия перед удалением всех данных
99
+ *
100
+ * @param context Контекст выполнения операции
101
+ */
102
+ onClear?(context: PluginContext): Promise<void>;
103
+ }
104
+ /**
105
+ * Исполнитель плагинов
106
+ * Отвечает за выполнение хуков плагинов в определенной последовательности
107
+ */
108
+ interface IPluginExecutor {
109
+ /**
110
+ * Выполняет хуки onBeforeSet всех зарегистрированных плагинов
111
+ *
112
+ * @param value Исходное значение
113
+ * @param metadata Дополнительные метаданные
114
+ * @returns Модифицированное значение после прохождения всех плагинов
115
+ */
116
+ executeBeforeSet<T>(value: T, metadata?: Record<string, any>): Promise<T>;
117
+ /**
118
+ * Выполняет хуки onAfterSet всех зарегистрированных плагинов
119
+ *
120
+ * @param key Ключ, по которому было сохранено значение
121
+ * @param value Сохраненное значение
122
+ * @param metadata Дополнительные метаданные
123
+ * @returns Финальное значение после прохождения всех плагинов
124
+ */
125
+ executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): Promise<T>;
126
+ /**
127
+ * Выполняет хуки onBeforeGet всех зарегистрированных плагинов
128
+ *
129
+ * @param key Исходный ключ
130
+ * @param metadata Дополнительные метаданные
131
+ * @returns Модифицированный ключ после прохождения всех плагинов
132
+ */
133
+ executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): Promise<StorageKeyType>;
134
+ /**
135
+ * Выполняет хуки onAfterGet всех зарегистрированных плагинов
136
+ *
137
+ * @param key Ключ, по которому было запрошено значение
138
+ * @param value Полученное значение
139
+ * @param metadata Дополнительные метаданные
140
+ * @returns Финальное значение после прохождения всех плагинов
141
+ */
142
+ executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): Promise<T | undefined>;
143
+ /**
144
+ * Выполняет хуки onBeforeDelete всех зарегистрированных плагинов
145
+ *
146
+ * @param key Ключ, по которому будет удалено значение
147
+ * @param metadata Дополнительные метаданные
148
+ * @returns Результат проверки всех плагинов (false если хотя бы один плагин запретил удаление)
149
+ */
150
+ executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<boolean>;
151
+ /**
152
+ * Выполняет хуки onAfterDelete всех зарегистрированных плагинов
153
+ *
154
+ * @param key Ключ, по которому было удалено значение
155
+ * @param metadata Дополнительные метаданные
156
+ */
157
+ executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<void>;
158
+ /**
159
+ * Выполняет хуки onClear всех зарегистрированных плагинов
160
+ *
161
+ * @param metadata Дополнительные метаданные
162
+ */
163
+ executeOnClear(metadata?: Record<string, any>): Promise<void>;
164
+ }
165
+ /**
166
+ * Менеджер плагинов
167
+ * Отвечает за регистрацию, получение и удаление плагинов
168
+ */
169
+ interface IPluginManager<T extends IPlugin> {
170
+ /**
171
+ * Добавляет плагин в менеджер
172
+ *
173
+ * @param plugin Экземпляр плагина
174
+ */
175
+ add(plugin: T): Promise<void>;
176
+ /**
177
+ * Удаляет плагин из менеджера по имени
178
+ *
179
+ * @param name Имя плагина
180
+ */
181
+ remove(name: string): Promise<void>;
182
+ /**
183
+ * Получает плагин по имени
184
+ *
185
+ * @param name Имя плагина
186
+ * @returns Экземпляр плагина или undefined, если плагин не найден
187
+ */
188
+ get(name: string): T | undefined;
189
+ /**
190
+ * Получает все зарегистрированные плагины
191
+ *
192
+ * @returns Массив всех плагинов
193
+ */
194
+ getAll(): T[];
195
+ /**
196
+ * Инициализирует все зарегистрированные плагины
197
+ */
198
+ initialize(): Promise<void>;
199
+ /**
200
+ * Уничтожает все зарегистрированные плагины
201
+ */
202
+ destroy(): Promise<void>;
203
+ }
204
+
205
+ type PathSelector<T, R> = (state: T) => R;
206
+ declare abstract class BaseStorage<T extends Record<string, any>> implements IStorage<T> {
207
+ protected readonly config: StorageConfig;
208
+ protected readonly pluginExecutor?: IPluginExecutor | undefined;
209
+ protected readonly eventEmitter?: IEventEmitter | undefined;
210
+ protected readonly logger?: ILogger | undefined;
211
+ protected static readonly GLOBAL_SUBSCRIPTION_KEY = "*";
212
+ name: string;
213
+ private selectorPathCache;
214
+ private middlewareModule;
215
+ private initializedMiddlewares;
216
+ protected subscribers: Map<StorageKeyType, Set<(value: any) => void>>;
217
+ constructor(config: StorageConfig, pluginExecutor?: IPluginExecutor | undefined, eventEmitter?: IEventEmitter | undefined, logger?: ILogger | undefined);
218
+ protected initializeMiddlewares(): void;
219
+ protected getDefaultMiddleware(): DefaultMiddlewares;
220
+ protected initializeWithMiddlewares(): Promise<void>;
221
+ abstract initialize(): Promise<this>;
222
+ protected abstract doGet(key: StorageKeyType): Promise<any>;
223
+ protected abstract doSet(key: StorageKeyType, value: any): Promise<void>;
224
+ protected abstract doUpdate(updates: Array<{
225
+ key: StorageKeyType;
226
+ value: any;
227
+ }>): Promise<void>;
228
+ protected abstract doDelete(key: StorageKeyType): Promise<boolean>;
229
+ protected abstract doClear(): Promise<void>;
230
+ protected abstract doKeys(): Promise<string[]>;
231
+ protected abstract doHas(key: StorageKeyType): Promise<boolean>;
232
+ protected abstract doDestroy(): Promise<void>;
233
+ get<R>(key: StorageKeyType): Promise<R | undefined>;
234
+ set<R>(key: StorageKeyType, value: R): Promise<void>;
235
+ update(updater: (state: T) => void): Promise<void>;
236
+ delete(key: StorageKeyType): Promise<void>;
237
+ clear(): Promise<void>;
238
+ keys(): Promise<string[]>;
239
+ has(key: StorageKeyType): Promise<boolean>;
240
+ getState(): Promise<T>;
241
+ subscribeToAll(callback: (event: {
242
+ type: string;
243
+ key?: StorageKeyType[] | StorageKeyType;
244
+ value?: any;
245
+ changedPaths?: string[];
246
+ }) => void): VoidFunction;
247
+ subscribe(key: string, callback: (value: any) => void): VoidFunction;
248
+ subscribe<R>(pathSelector: PathSelector<T, R>, callback: (value: R) => void): VoidFunction;
249
+ destroy(): Promise<void>;
250
+ private subscribeByKey;
251
+ private createDummyState;
252
+ private isEqual;
253
+ /**
254
+ * Возвращает полный путь, а не только корневой ключ
255
+ */
256
+ private extractPath;
257
+ protected notifySubscribers(key: StorageKeyType, value: any): void;
258
+ /**
259
+ * Метод для определения изменившихся путей между двумя объектами
260
+ */
261
+ private findChangedPaths;
262
+ private subscribeBySelector;
263
+ protected emitEvent(event: StorageEvent): Promise<void>;
264
+ }
265
+
266
+ interface SharedStateMiddlewareProps {
267
+ storageType: StorageType;
268
+ storageName: string;
269
+ }
270
+ declare const broadcastMiddleware: (props: SharedStateMiddlewareProps) => Middleware;
271
+
272
+ declare class StoragePluginModule implements IPluginManager<IStoragePlugin>, IPluginExecutor {
273
+ protected readonly parentExecutor?: IPluginExecutor | undefined;
274
+ protected readonly logger?: ILogger | undefined;
275
+ protected readonly storageName: string;
276
+ private plugins;
277
+ constructor(parentExecutor?: IPluginExecutor | undefined, logger?: ILogger | undefined, storageName?: string);
278
+ private createContext;
279
+ add(plugin: IStoragePlugin): Promise<void>;
280
+ remove(name: string): Promise<void>;
281
+ get(name: string): IStoragePlugin | undefined;
282
+ getAll(): IStoragePlugin[];
283
+ initialize(): Promise<void>;
284
+ destroy(): Promise<void>;
285
+ executeBeforeSet<T>(value: T, metadata?: Record<string, any>): Promise<T>;
286
+ executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): Promise<T>;
287
+ executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): Promise<StorageKeyType>;
288
+ executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): Promise<T | undefined>;
289
+ executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<boolean>;
290
+ executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<void>;
291
+ executeOnClear(metadata?: Record<string, any>): Promise<void>;
292
+ }
293
+
294
+ interface IndexedDBConfig {
295
+ dbName?: string;
296
+ dbVersion: number;
297
+ }
298
+ declare class IndexedDBStorage<T extends Record<string, any>> extends BaseStorage<T> {
299
+ private readonly DB_NAME;
300
+ private readonly STORE_NAME;
301
+ private readonly DB_VERSION;
302
+ private dbManager;
303
+ constructor(config: StorageConfig & {
304
+ options: IndexedDBConfig;
305
+ }, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger);
306
+ initialize(): Promise<this>;
307
+ static getCurrentDBVersion(dbName: string): Promise<number>;
308
+ static createStorages<S extends Record<string, any>>(dbName: string, configs: {
309
+ [K in keyof S]: {
310
+ name: string;
311
+ initialState?: S[K];
312
+ middlewares?: ConfigureMiddlewares;
313
+ pluginExecutor?: IPluginExecutor;
314
+ eventEmitter?: IEventEmitter;
315
+ };
316
+ }, logger?: ILogger): Promise<{
317
+ [K in keyof S]: IndexedDBStorage<S[K]>;
318
+ }>;
319
+ private getTransaction;
320
+ private getObjectStore;
321
+ protected doGet(key: StorageKeyType): Promise<any>;
322
+ protected doSet(key: StorageKeyType, value: any): Promise<void>;
323
+ private putValueInStore;
324
+ protected doUpdate(updates: Array<{
325
+ key: string | StorageKey;
326
+ value: any;
327
+ }>): Promise<void>;
328
+ protected doDelete(key: StorageKeyType): Promise<boolean>;
329
+ protected doClear(): Promise<void>;
330
+ protected doKeys(): Promise<string[]>;
331
+ protected doHas(key: StorageKeyType): Promise<boolean>;
332
+ protected doDestroy(): Promise<void>;
333
+ }
334
+
335
+ declare class LocalStorage<T extends Record<string, any>> extends BaseStorage<T> {
336
+ constructor(config: StorageConfig, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger);
337
+ initialize(): Promise<this>;
338
+ protected doGet(key: StorageKeyType): Promise<any>;
339
+ protected doSet(key: StorageKeyType, value: any): Promise<void>;
340
+ protected doDelete(key: StorageKeyType): Promise<boolean>;
341
+ protected doUpdate(updates: Array<{
342
+ key: StorageKeyType;
343
+ value: any;
344
+ }>): Promise<void>;
345
+ protected doClear(): Promise<void>;
346
+ protected doKeys(): Promise<string[]>;
347
+ protected doHas(key: StorageKeyType): Promise<boolean>;
348
+ private getAllKeys;
349
+ protected doDestroy(): Promise<void>;
350
+ }
351
+
352
+ declare class MemoryStorage<T extends Record<string, any>> extends BaseStorage<T> {
353
+ private storage;
354
+ constructor(config: StorageConfig, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger);
355
+ initialize(): Promise<this>;
356
+ protected doGet(key: StorageKeyType): Promise<any>;
357
+ protected doSet(key: StorageKeyType, value: any): Promise<void>;
358
+ protected doDelete(key: StorageKeyType): Promise<boolean>;
359
+ protected doUpdate(updates: Array<{
360
+ key: StorageKeyType;
361
+ value: any;
362
+ }>): Promise<void>;
363
+ protected doClear(): Promise<void>;
364
+ protected doKeys(): Promise<string[]>;
365
+ protected doHas(key: StorageKeyType): Promise<boolean>;
366
+ protected doDestroy(): Promise<void>;
367
+ private getAllKeys;
368
+ }
369
+
370
+ declare class SelectorModule<S extends Record<string, any>> implements ISelectorModule<S> {
371
+ private readonly source;
372
+ private readonly logger?;
373
+ storageName: string;
374
+ private subscriptions;
375
+ private cachedState?;
376
+ private localSelectorCache;
377
+ private batchUpdateInProgress;
378
+ private pendingUpdates;
379
+ constructor(source: IStorage<S>, logger?: ILogger | undefined);
380
+ /**
381
+ * Генерирует имя для селектора на основе его типа и функции
382
+ */
383
+ private generateName;
384
+ /**
385
+ * Обрабатывает отложенные обновления, чтобы избежать каскадных уведомлений
386
+ */
387
+ private processPendingUpdates;
388
+ createSelector<T>(selector: Selector<S, T>, options?: SelectorOptions<T>): SelectorAPI<T>;
389
+ createSelector<Deps extends unknown[], T>(dependencies: {
390
+ [K in keyof Deps]: SelectorAPI<Deps[K]>;
391
+ }, resultFn: (...args: Deps) => T, options?: SelectorOptions<T>): SelectorAPI<T>;
392
+ private createSimpleSelector;
393
+ private createCombinedSelector;
394
+ destroy(): void;
395
+ }
396
+
397
+ export { ConfigureMiddlewares, DefaultMiddlewares, IEventEmitter, ILogger, type IPlugin, type IPluginExecutor, type IPluginManager, ISelectorModule, IStorage, type IStoragePlugin, IndexedDBStorage, LocalStorage, MemoryStorage, Middleware, type PluginContext, SelectorAPI, SelectorModule, StorageConfig, StorageEvent, StorageKeyType, StoragePluginModule, StorageType, broadcastMiddleware };
@@ -1,9 +1,12 @@
1
- import { StorageKeyType } from '../../utils/storage-key';
1
+ import { I as ISelectorModule, a as Selector, b as SelectorOptions, S as SelectorAPI } from './selector.interface-CA5y-kD_.js';
2
+ import { c as StorageKeyType, I as IStorage, h as StorageConfig, f as IEventEmitter, g as ILogger, D as DefaultMiddlewares, e as StorageEvent, i as StorageType, M as Middleware, C as ConfigureMiddlewares, l as StorageKey } from './storage.interface-Dl8SLUd1.js';
3
+ export { B as BatchingMiddlewareOptions, G as GetDefaultMiddleware, k as IndexedDBStorageConfig, L as LocalStorageConfig, j as MemoryStorageConfig, a as MiddlewareAPI, N as NextFunction, S as ShallowCompareMiddlewareOptions, b as StorageAction, d as StorageEvents } from './storage.interface-Dl8SLUd1.js';
4
+
2
5
  /**
3
6
  * Контекст выполнения для плагинов
4
7
  * Содержит информацию о текущей операции и хранилище
5
8
  */
6
- export interface PluginContext {
9
+ interface PluginContext {
7
10
  /** Имя хранилища, к которому применяется плагин */
8
11
  storageName: string;
9
12
  /** Временная метка выполнения операции (timestamp) */
@@ -15,7 +18,7 @@ export interface PluginContext {
15
18
  * Базовый интерфейс для всех плагинов
16
19
  * Определяет основные свойства и методы жизненного цикла
17
20
  */
18
- export interface IPlugin {
21
+ interface IPlugin {
19
22
  /** Уникальное имя плагина */
20
23
  name: string;
21
24
  /**
@@ -34,7 +37,7 @@ export interface IPlugin {
34
37
  * Интерфейс плагина для хранилища данных
35
38
  * Определяет хуки для различных операций хранилища
36
39
  */
37
- export interface IStoragePlugin extends IPlugin {
40
+ interface IStoragePlugin extends IPlugin {
38
41
  /**
39
42
  * Вызывается перед установкой значения в хранилище
40
43
  * Позволяет изменить значение до его сохранения
@@ -102,7 +105,7 @@ export interface IStoragePlugin extends IPlugin {
102
105
  * Исполнитель плагинов
103
106
  * Отвечает за выполнение хуков плагинов в определенной последовательности
104
107
  */
105
- export interface IPluginExecutor {
108
+ interface IPluginExecutor {
106
109
  /**
107
110
  * Выполняет хуки onBeforeSet всех зарегистрированных плагинов
108
111
  *
@@ -163,7 +166,7 @@ export interface IPluginExecutor {
163
166
  * Менеджер плагинов
164
167
  * Отвечает за регистрацию, получение и удаление плагинов
165
168
  */
166
- export interface IPluginManager<T extends IPlugin> {
169
+ interface IPluginManager<T extends IPlugin> {
167
170
  /**
168
171
  * Добавляет плагин в менеджер
169
172
  *
@@ -198,4 +201,197 @@ export interface IPluginManager<T extends IPlugin> {
198
201
  */
199
202
  destroy(): Promise<void>;
200
203
  }
201
- //# sourceMappingURL=plugin.interface.d.ts.map
204
+
205
+ type PathSelector<T, R> = (state: T) => R;
206
+ declare abstract class BaseStorage<T extends Record<string, any>> implements IStorage<T> {
207
+ protected readonly config: StorageConfig;
208
+ protected readonly pluginExecutor?: IPluginExecutor | undefined;
209
+ protected readonly eventEmitter?: IEventEmitter | undefined;
210
+ protected readonly logger?: ILogger | undefined;
211
+ protected static readonly GLOBAL_SUBSCRIPTION_KEY = "*";
212
+ name: string;
213
+ private selectorPathCache;
214
+ private middlewareModule;
215
+ private initializedMiddlewares;
216
+ protected subscribers: Map<StorageKeyType, Set<(value: any) => void>>;
217
+ constructor(config: StorageConfig, pluginExecutor?: IPluginExecutor | undefined, eventEmitter?: IEventEmitter | undefined, logger?: ILogger | undefined);
218
+ protected initializeMiddlewares(): void;
219
+ protected getDefaultMiddleware(): DefaultMiddlewares;
220
+ protected initializeWithMiddlewares(): Promise<void>;
221
+ abstract initialize(): Promise<this>;
222
+ protected abstract doGet(key: StorageKeyType): Promise<any>;
223
+ protected abstract doSet(key: StorageKeyType, value: any): Promise<void>;
224
+ protected abstract doUpdate(updates: Array<{
225
+ key: StorageKeyType;
226
+ value: any;
227
+ }>): Promise<void>;
228
+ protected abstract doDelete(key: StorageKeyType): Promise<boolean>;
229
+ protected abstract doClear(): Promise<void>;
230
+ protected abstract doKeys(): Promise<string[]>;
231
+ protected abstract doHas(key: StorageKeyType): Promise<boolean>;
232
+ protected abstract doDestroy(): Promise<void>;
233
+ get<R>(key: StorageKeyType): Promise<R | undefined>;
234
+ set<R>(key: StorageKeyType, value: R): Promise<void>;
235
+ update(updater: (state: T) => void): Promise<void>;
236
+ delete(key: StorageKeyType): Promise<void>;
237
+ clear(): Promise<void>;
238
+ keys(): Promise<string[]>;
239
+ has(key: StorageKeyType): Promise<boolean>;
240
+ getState(): Promise<T>;
241
+ subscribeToAll(callback: (event: {
242
+ type: string;
243
+ key?: StorageKeyType[] | StorageKeyType;
244
+ value?: any;
245
+ changedPaths?: string[];
246
+ }) => void): VoidFunction;
247
+ subscribe(key: string, callback: (value: any) => void): VoidFunction;
248
+ subscribe<R>(pathSelector: PathSelector<T, R>, callback: (value: R) => void): VoidFunction;
249
+ destroy(): Promise<void>;
250
+ private subscribeByKey;
251
+ private createDummyState;
252
+ private isEqual;
253
+ /**
254
+ * Возвращает полный путь, а не только корневой ключ
255
+ */
256
+ private extractPath;
257
+ protected notifySubscribers(key: StorageKeyType, value: any): void;
258
+ /**
259
+ * Метод для определения изменившихся путей между двумя объектами
260
+ */
261
+ private findChangedPaths;
262
+ private subscribeBySelector;
263
+ protected emitEvent(event: StorageEvent): Promise<void>;
264
+ }
265
+
266
+ interface SharedStateMiddlewareProps {
267
+ storageType: StorageType;
268
+ storageName: string;
269
+ }
270
+ declare const broadcastMiddleware: (props: SharedStateMiddlewareProps) => Middleware;
271
+
272
+ declare class StoragePluginModule implements IPluginManager<IStoragePlugin>, IPluginExecutor {
273
+ protected readonly parentExecutor?: IPluginExecutor | undefined;
274
+ protected readonly logger?: ILogger | undefined;
275
+ protected readonly storageName: string;
276
+ private plugins;
277
+ constructor(parentExecutor?: IPluginExecutor | undefined, logger?: ILogger | undefined, storageName?: string);
278
+ private createContext;
279
+ add(plugin: IStoragePlugin): Promise<void>;
280
+ remove(name: string): Promise<void>;
281
+ get(name: string): IStoragePlugin | undefined;
282
+ getAll(): IStoragePlugin[];
283
+ initialize(): Promise<void>;
284
+ destroy(): Promise<void>;
285
+ executeBeforeSet<T>(value: T, metadata?: Record<string, any>): Promise<T>;
286
+ executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): Promise<T>;
287
+ executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): Promise<StorageKeyType>;
288
+ executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): Promise<T | undefined>;
289
+ executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<boolean>;
290
+ executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<void>;
291
+ executeOnClear(metadata?: Record<string, any>): Promise<void>;
292
+ }
293
+
294
+ interface IndexedDBConfig {
295
+ dbName?: string;
296
+ dbVersion: number;
297
+ }
298
+ declare class IndexedDBStorage<T extends Record<string, any>> extends BaseStorage<T> {
299
+ private readonly DB_NAME;
300
+ private readonly STORE_NAME;
301
+ private readonly DB_VERSION;
302
+ private dbManager;
303
+ constructor(config: StorageConfig & {
304
+ options: IndexedDBConfig;
305
+ }, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger);
306
+ initialize(): Promise<this>;
307
+ static getCurrentDBVersion(dbName: string): Promise<number>;
308
+ static createStorages<S extends Record<string, any>>(dbName: string, configs: {
309
+ [K in keyof S]: {
310
+ name: string;
311
+ initialState?: S[K];
312
+ middlewares?: ConfigureMiddlewares;
313
+ pluginExecutor?: IPluginExecutor;
314
+ eventEmitter?: IEventEmitter;
315
+ };
316
+ }, logger?: ILogger): Promise<{
317
+ [K in keyof S]: IndexedDBStorage<S[K]>;
318
+ }>;
319
+ private getTransaction;
320
+ private getObjectStore;
321
+ protected doGet(key: StorageKeyType): Promise<any>;
322
+ protected doSet(key: StorageKeyType, value: any): Promise<void>;
323
+ private putValueInStore;
324
+ protected doUpdate(updates: Array<{
325
+ key: string | StorageKey;
326
+ value: any;
327
+ }>): Promise<void>;
328
+ protected doDelete(key: StorageKeyType): Promise<boolean>;
329
+ protected doClear(): Promise<void>;
330
+ protected doKeys(): Promise<string[]>;
331
+ protected doHas(key: StorageKeyType): Promise<boolean>;
332
+ protected doDestroy(): Promise<void>;
333
+ }
334
+
335
+ declare class LocalStorage<T extends Record<string, any>> extends BaseStorage<T> {
336
+ constructor(config: StorageConfig, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger);
337
+ initialize(): Promise<this>;
338
+ protected doGet(key: StorageKeyType): Promise<any>;
339
+ protected doSet(key: StorageKeyType, value: any): Promise<void>;
340
+ protected doDelete(key: StorageKeyType): Promise<boolean>;
341
+ protected doUpdate(updates: Array<{
342
+ key: StorageKeyType;
343
+ value: any;
344
+ }>): Promise<void>;
345
+ protected doClear(): Promise<void>;
346
+ protected doKeys(): Promise<string[]>;
347
+ protected doHas(key: StorageKeyType): Promise<boolean>;
348
+ private getAllKeys;
349
+ protected doDestroy(): Promise<void>;
350
+ }
351
+
352
+ declare class MemoryStorage<T extends Record<string, any>> extends BaseStorage<T> {
353
+ private storage;
354
+ constructor(config: StorageConfig, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger);
355
+ initialize(): Promise<this>;
356
+ protected doGet(key: StorageKeyType): Promise<any>;
357
+ protected doSet(key: StorageKeyType, value: any): Promise<void>;
358
+ protected doDelete(key: StorageKeyType): Promise<boolean>;
359
+ protected doUpdate(updates: Array<{
360
+ key: StorageKeyType;
361
+ value: any;
362
+ }>): Promise<void>;
363
+ protected doClear(): Promise<void>;
364
+ protected doKeys(): Promise<string[]>;
365
+ protected doHas(key: StorageKeyType): Promise<boolean>;
366
+ protected doDestroy(): Promise<void>;
367
+ private getAllKeys;
368
+ }
369
+
370
+ declare class SelectorModule<S extends Record<string, any>> implements ISelectorModule<S> {
371
+ private readonly source;
372
+ private readonly logger?;
373
+ storageName: string;
374
+ private subscriptions;
375
+ private cachedState?;
376
+ private localSelectorCache;
377
+ private batchUpdateInProgress;
378
+ private pendingUpdates;
379
+ constructor(source: IStorage<S>, logger?: ILogger | undefined);
380
+ /**
381
+ * Генерирует имя для селектора на основе его типа и функции
382
+ */
383
+ private generateName;
384
+ /**
385
+ * Обрабатывает отложенные обновления, чтобы избежать каскадных уведомлений
386
+ */
387
+ private processPendingUpdates;
388
+ createSelector<T>(selector: Selector<S, T>, options?: SelectorOptions<T>): SelectorAPI<T>;
389
+ createSelector<Deps extends unknown[], T>(dependencies: {
390
+ [K in keyof Deps]: SelectorAPI<Deps[K]>;
391
+ }, resultFn: (...args: Deps) => T, options?: SelectorOptions<T>): SelectorAPI<T>;
392
+ private createSimpleSelector;
393
+ private createCombinedSelector;
394
+ destroy(): void;
395
+ }
396
+
397
+ export { ConfigureMiddlewares, DefaultMiddlewares, IEventEmitter, ILogger, type IPlugin, type IPluginExecutor, type IPluginManager, ISelectorModule, IStorage, type IStoragePlugin, IndexedDBStorage, LocalStorage, MemoryStorage, Middleware, type PluginContext, SelectorAPI, SelectorModule, StorageConfig, StorageEvent, StorageKeyType, StoragePluginModule, StorageType, broadcastMiddleware };