synapse-storage 3.0.16 → 4.0.0

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 (351) hide show
  1. package/README.md +657 -127
  2. package/dist/_utils/chunk.util.d.ts +8 -0
  3. package/dist/_utils/chunk.util.d.ts.map +1 -0
  4. package/dist/_utils/chunk.util.js +21 -0
  5. package/dist/_utils/chunk.util.js.map +1 -0
  6. package/dist/_utils/deepMerge.util.d.ts +2 -0
  7. package/dist/_utils/deepMerge.util.d.ts.map +1 -0
  8. package/dist/_utils/deepMerge.util.js +19 -0
  9. package/dist/_utils/deepMerge.util.js.map +1 -0
  10. package/dist/_utils/error-handling.util.d.ts +50 -0
  11. package/dist/_utils/error-handling.util.d.ts.map +1 -0
  12. package/dist/_utils/error-handling.util.js +67 -0
  13. package/dist/_utils/error-handling.util.js.map +1 -0
  14. package/dist/_utils/flatMap.util.d.ts +10 -0
  15. package/dist/_utils/flatMap.util.d.ts.map +1 -0
  16. package/dist/_utils/flatMap.util.js +23 -0
  17. package/dist/_utils/flatMap.util.js.map +1 -0
  18. package/dist/_utils/index.d.ts +6 -0
  19. package/dist/_utils/index.d.ts.map +1 -0
  20. package/dist/_utils/index.js +13 -0
  21. package/dist/_utils/index.js.map +1 -0
  22. package/dist/_utils/logger-console.util.d.ts +9 -0
  23. package/dist/_utils/logger-console.util.d.ts.map +1 -0
  24. package/dist/_utils/logger-console.util.js +14 -0
  25. package/dist/_utils/logger-console.util.js.map +1 -0
  26. package/dist/api/api.module.d.ts +46 -0
  27. package/dist/api/api.module.d.ts.map +1 -0
  28. package/dist/api/api.module.js +121 -0
  29. package/dist/api/api.module.js.map +1 -0
  30. package/dist/api/components/endpoint.d.ts +57 -0
  31. package/dist/api/components/endpoint.d.ts.map +1 -0
  32. package/dist/api/components/endpoint.js +385 -0
  33. package/dist/api/components/endpoint.js.map +1 -0
  34. package/dist/api/components/query-storage.d.ts +100 -0
  35. package/dist/api/components/query-storage.d.ts.map +1 -0
  36. package/dist/api/components/query-storage.js +293 -0
  37. package/dist/api/components/query-storage.js.map +1 -0
  38. package/dist/api/example.d.ts +83 -0
  39. package/dist/api/example.d.ts.map +1 -0
  40. package/dist/api/example.js +90 -0
  41. package/dist/api/example.js.map +1 -0
  42. package/dist/api/index.d.ts +4 -0
  43. package/dist/api/index.d.ts.map +1 -0
  44. package/dist/api/index.js +11 -0
  45. package/dist/api/index.js.map +1 -0
  46. package/dist/api/types/api.interface.d.ts +126 -0
  47. package/dist/api/types/api.interface.d.ts.map +1 -0
  48. package/dist/api/types/api.interface.js +15 -0
  49. package/dist/api/types/api.interface.js.map +1 -0
  50. package/dist/api/types/endpoint.interface.d.ts +118 -0
  51. package/dist/api/types/endpoint.interface.d.ts.map +1 -0
  52. package/dist/api/types/endpoint.interface.js +6 -0
  53. package/dist/api/types/endpoint.interface.js.map +1 -0
  54. package/dist/api/types/query.interface.d.ts +85 -0
  55. package/dist/api/types/query.interface.d.ts.map +1 -0
  56. package/dist/api/types/query.interface.js +6 -0
  57. package/dist/api/types/query.interface.js.map +1 -0
  58. package/dist/api/utils/api-helpers.d.ts +22 -0
  59. package/dist/api/utils/api-helpers.d.ts.map +1 -0
  60. package/dist/api/utils/api-helpers.js +44 -0
  61. package/dist/api/utils/api-helpers.js.map +1 -0
  62. package/dist/api/utils/create-header-context.d.ts +10 -0
  63. package/dist/api/utils/create-header-context.d.ts.map +1 -0
  64. package/dist/api/utils/create-header-context.js +40 -0
  65. package/dist/api/utils/create-header-context.js.map +1 -0
  66. package/dist/api/utils/endpoint-headers.d.ts +23 -0
  67. package/dist/api/utils/endpoint-headers.d.ts.map +1 -0
  68. package/dist/api/utils/endpoint-headers.js +61 -0
  69. package/dist/api/utils/endpoint-headers.js.map +1 -0
  70. package/dist/api/utils/fetch-base-query.d.ts +9 -0
  71. package/dist/api/utils/fetch-base-query.d.ts.map +1 -0
  72. package/dist/api/utils/fetch-base-query.js +242 -0
  73. package/dist/api/utils/fetch-base-query.js.map +1 -0
  74. package/dist/api/utils/file-utils.d.ts +43 -0
  75. package/dist/api/utils/file-utils.d.ts.map +1 -0
  76. package/dist/api/utils/file-utils.js +102 -0
  77. package/dist/api/utils/file-utils.js.map +1 -0
  78. package/dist/api/utils/get-cacheable-headers.d.ts +8 -0
  79. package/dist/api/utils/get-cacheable-headers.d.ts.map +1 -0
  80. package/dist/api/utils/get-cacheable-headers.js +23 -0
  81. package/dist/api/utils/get-cacheable-headers.js.map +1 -0
  82. package/dist/core/index.d.ts +3 -0
  83. package/dist/core/index.d.ts.map +1 -0
  84. package/dist/core/index.js +7 -0
  85. package/dist/core/index.js.map +1 -0
  86. package/dist/core/selector/index.d.ts +3 -0
  87. package/dist/core/selector/index.d.ts.map +1 -0
  88. package/dist/core/selector/index.js +5 -0
  89. package/dist/core/selector/index.js.map +1 -0
  90. package/dist/{selector.interface-CA5y-kD_.d.ts → core/selector/selector.interface.d.ts} +41 -8
  91. package/dist/core/selector/selector.interface.d.ts.map +1 -0
  92. package/dist/core/selector/selector.interface.js +7 -0
  93. package/dist/core/selector/selector.interface.js.map +1 -0
  94. package/dist/core/selector/selector.module.d.ts +36 -0
  95. package/dist/core/selector/selector.module.d.ts.map +1 -0
  96. package/dist/core/selector/selector.module.js +412 -0
  97. package/dist/core/selector/selector.module.js.map +1 -0
  98. package/dist/core/storage/adapters/async-base-storage.service.d.ts +49 -0
  99. package/dist/core/storage/adapters/async-base-storage.service.d.ts.map +1 -0
  100. package/dist/core/storage/adapters/async-base-storage.service.js +505 -0
  101. package/dist/core/storage/adapters/async-base-storage.service.js.map +1 -0
  102. package/dist/core/storage/adapters/indexed-DB.service.d.ts +89 -0
  103. package/dist/core/storage/adapters/indexed-DB.service.d.ts.map +1 -0
  104. package/dist/core/storage/adapters/indexed-DB.service.js +596 -0
  105. package/dist/core/storage/adapters/indexed-DB.service.js.map +1 -0
  106. package/dist/core/storage/adapters/local-storage.service.d.ts +23 -0
  107. package/dist/core/storage/adapters/local-storage.service.d.ts.map +1 -0
  108. package/dist/core/storage/adapters/local-storage.service.js +111 -0
  109. package/dist/core/storage/adapters/local-storage.service.js.map +1 -0
  110. package/dist/core/storage/adapters/memory-storage.service.d.ts +24 -0
  111. package/dist/core/storage/adapters/memory-storage.service.d.ts.map +1 -0
  112. package/dist/core/storage/adapters/memory-storage.service.js +110 -0
  113. package/dist/core/storage/adapters/memory-storage.service.js.map +1 -0
  114. package/dist/core/storage/adapters/path.utils.d.ts +5 -0
  115. package/dist/core/storage/adapters/path.utils.d.ts.map +1 -0
  116. package/dist/core/storage/adapters/path.utils.js +42 -0
  117. package/dist/core/storage/adapters/path.utils.js.map +1 -0
  118. package/dist/core/storage/adapters/storage-core.d.ts +61 -0
  119. package/dist/core/storage/adapters/storage-core.d.ts.map +1 -0
  120. package/dist/core/storage/adapters/storage-core.js +221 -0
  121. package/dist/core/storage/adapters/storage-core.js.map +1 -0
  122. package/dist/core/storage/adapters/sync-base-storage.service.d.ts +56 -0
  123. package/dist/core/storage/adapters/sync-base-storage.service.d.ts.map +1 -0
  124. package/dist/core/storage/adapters/sync-base-storage.service.js +481 -0
  125. package/dist/core/storage/adapters/sync-base-storage.service.js.map +1 -0
  126. package/dist/core/storage/index.d.ts +16 -0
  127. package/dist/core/storage/index.d.ts.map +1 -0
  128. package/dist/core/storage/index.js +38 -0
  129. package/dist/core/storage/index.js.map +1 -0
  130. package/dist/core/storage/middlewares/broadcast.middleware.d.ts +9 -0
  131. package/dist/core/storage/middlewares/broadcast.middleware.d.ts.map +1 -0
  132. package/dist/core/storage/middlewares/broadcast.middleware.js +197 -0
  133. package/dist/core/storage/middlewares/broadcast.middleware.js.map +1 -0
  134. package/dist/core/storage/middlewares/index.d.ts +9 -0
  135. package/dist/core/storage/middlewares/index.d.ts.map +1 -0
  136. package/dist/core/storage/middlewares/index.js +17 -0
  137. package/dist/core/storage/middlewares/index.js.map +1 -0
  138. package/dist/core/storage/middlewares/storage-batching.middleware.d.ts +7 -0
  139. package/dist/core/storage/middlewares/storage-batching.middleware.d.ts.map +1 -0
  140. package/dist/core/storage/middlewares/storage-batching.middleware.js +108 -0
  141. package/dist/core/storage/middlewares/storage-batching.middleware.js.map +1 -0
  142. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts +7 -0
  143. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts.map +1 -0
  144. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js +43 -0
  145. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js.map +1 -0
  146. package/dist/core/storage/middlewares/sync-broadcast.middleware.d.ts +9 -0
  147. package/dist/core/storage/middlewares/sync-broadcast.middleware.d.ts.map +1 -0
  148. package/dist/core/storage/middlewares/sync-broadcast.middleware.js +177 -0
  149. package/dist/core/storage/middlewares/sync-broadcast.middleware.js.map +1 -0
  150. package/dist/core/storage/middlewares/sync-storage-batching.middleware.d.ts +6 -0
  151. package/dist/core/storage/middlewares/sync-storage-batching.middleware.d.ts.map +1 -0
  152. package/dist/core/storage/middlewares/sync-storage-batching.middleware.js +56 -0
  153. package/dist/core/storage/middlewares/sync-storage-batching.middleware.js.map +1 -0
  154. package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.d.ts +7 -0
  155. package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.d.ts.map +1 -0
  156. package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.js +39 -0
  157. package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.js.map +1 -0
  158. package/dist/core/storage/modules/plugin/plugin.interface.d.ts +101 -0
  159. package/dist/core/storage/modules/plugin/plugin.interface.d.ts.map +1 -0
  160. package/dist/core/storage/modules/plugin/plugin.interface.js +8 -0
  161. package/dist/core/storage/modules/plugin/plugin.interface.js.map +1 -0
  162. package/dist/core/storage/modules/plugin/plugin.service.d.ts +49 -0
  163. package/dist/core/storage/modules/plugin/plugin.service.d.ts.map +1 -0
  164. package/dist/core/storage/modules/plugin/plugin.service.js +406 -0
  165. package/dist/core/storage/modules/plugin/plugin.service.js.map +1 -0
  166. package/dist/core/storage/modules/singleton/mixin.util.d.ts +6 -0
  167. package/dist/core/storage/modules/singleton/mixin.util.d.ts.map +1 -0
  168. package/dist/core/storage/modules/singleton/mixin.util.js +30 -0
  169. package/dist/core/storage/modules/singleton/mixin.util.js.map +1 -0
  170. package/dist/core/storage/modules/singleton/models.d.ts +143 -0
  171. package/dist/core/storage/modules/singleton/models.d.ts.map +1 -0
  172. package/dist/core/storage/modules/singleton/models.js +60 -0
  173. package/dist/core/storage/modules/singleton/models.js.map +1 -0
  174. package/dist/core/storage/modules/singleton/singleton.util.d.ts +36 -0
  175. package/dist/core/storage/modules/singleton/singleton.util.d.ts.map +1 -0
  176. package/dist/core/storage/modules/singleton/singleton.util.js +216 -0
  177. package/dist/core/storage/modules/singleton/singleton.util.js.map +1 -0
  178. package/dist/core/storage/storage.interface.d.ts +168 -0
  179. package/dist/core/storage/storage.interface.d.ts.map +1 -0
  180. package/dist/core/storage/storage.interface.js +23 -0
  181. package/dist/core/storage/storage.interface.js.map +1 -0
  182. package/dist/core/storage/utils/broadcast.util.d.ts +49 -0
  183. package/dist/core/storage/utils/broadcast.util.d.ts.map +1 -0
  184. package/dist/core/storage/utils/broadcast.util.js +141 -0
  185. package/dist/core/storage/utils/broadcast.util.js.map +1 -0
  186. package/dist/core/storage/utils/cache.util.d.ts +33 -0
  187. package/dist/core/storage/utils/cache.util.d.ts.map +1 -0
  188. package/dist/core/storage/utils/cache.util.js +54 -0
  189. package/dist/core/storage/utils/cache.util.js.map +1 -0
  190. package/dist/core/storage/utils/middleware-module.d.ts +94 -0
  191. package/dist/core/storage/utils/middleware-module.d.ts.map +1 -0
  192. package/dist/core/storage/utils/middleware-module.js +258 -0
  193. package/dist/core/storage/utils/middleware-module.js.map +1 -0
  194. package/dist/core/storage/utils/path-selector.util.d.ts +15 -0
  195. package/dist/core/storage/utils/path-selector.util.d.ts.map +1 -0
  196. package/dist/core/storage/utils/path-selector.util.js +58 -0
  197. package/dist/core/storage/utils/path-selector.util.js.map +1 -0
  198. package/dist/core/storage/utils/state-diff.util.d.ts +14 -0
  199. package/dist/core/storage/utils/state-diff.util.d.ts.map +1 -0
  200. package/dist/core/storage/utils/state-diff.util.js +88 -0
  201. package/dist/core/storage/utils/state-diff.util.js.map +1 -0
  202. package/dist/core/storage/utils/storage-factory.util.d.ts +21 -0
  203. package/dist/core/storage/utils/storage-factory.util.d.ts.map +1 -0
  204. package/dist/core/storage/utils/storage-factory.util.js +40 -0
  205. package/dist/core/storage/utils/storage-factory.util.js.map +1 -0
  206. package/dist/core/storage/utils/storage-key.d.ts +11 -0
  207. package/dist/core/storage/utils/storage-key.d.ts.map +1 -0
  208. package/dist/core/storage/utils/storage-key.js +24 -0
  209. package/dist/core/storage/utils/storage-key.js.map +1 -0
  210. package/dist/core/storage/utils/storage.utils.d.ts +17 -0
  211. package/dist/core/storage/utils/storage.utils.d.ts.map +1 -0
  212. package/dist/core/storage/utils/storage.utils.js +57 -0
  213. package/dist/core/storage/utils/storage.utils.js.map +1 -0
  214. package/dist/index.d.ts +10 -12
  215. package/dist/index.d.ts.map +1 -0
  216. package/dist/index.js +17 -1
  217. package/dist/index.js.map +1 -0
  218. package/dist/react/hooks/index.d.ts +5 -0
  219. package/dist/react/hooks/index.d.ts.map +1 -0
  220. package/dist/react/hooks/index.js +11 -0
  221. package/dist/react/hooks/index.js.map +1 -0
  222. package/dist/react/hooks/useCreateStorage.d.ts +39 -0
  223. package/dist/react/hooks/useCreateStorage.d.ts.map +1 -0
  224. package/dist/react/hooks/useCreateStorage.js +137 -0
  225. package/dist/react/hooks/useCreateStorage.js.map +1 -0
  226. package/dist/react/hooks/useSelector.d.ts +21 -0
  227. package/dist/react/hooks/useSelector.d.ts.map +1 -0
  228. package/dist/react/hooks/useSelector.js +56 -0
  229. package/dist/react/hooks/useSelector.js.map +1 -0
  230. package/dist/react/hooks/useStorage.d.ts +39 -0
  231. package/dist/react/hooks/useStorage.d.ts.map +1 -0
  232. package/dist/react/hooks/useStorage.js +78 -0
  233. package/dist/react/hooks/useStorage.js.map +1 -0
  234. package/dist/react/hooks/useStorageSubscribe.d.ts +16 -0
  235. package/dist/react/hooks/useStorageSubscribe.d.ts.map +1 -0
  236. package/dist/react/hooks/useStorageSubscribe.js +55 -0
  237. package/dist/react/hooks/useStorageSubscribe.js.map +1 -0
  238. package/dist/react/index.d.ts +3 -0
  239. package/dist/react/index.d.ts.map +1 -0
  240. package/dist/react/index.js +7 -0
  241. package/dist/react/index.js.map +1 -0
  242. package/dist/react/utils/awaitSynapse.d.ts +34 -0
  243. package/dist/react/utils/awaitSynapse.d.ts.map +1 -0
  244. package/dist/react/utils/awaitSynapse.js +87 -0
  245. package/dist/react/utils/awaitSynapse.js.map +1 -0
  246. package/dist/react/utils/createSynapseCtx.d.ts +33 -0
  247. package/dist/react/utils/createSynapseCtx.d.ts.map +1 -0
  248. package/dist/react/utils/createSynapseCtx.js +139 -0
  249. package/dist/react/utils/createSynapseCtx.js.map +1 -0
  250. package/dist/react/utils/index.d.ts +3 -0
  251. package/dist/react/utils/index.d.ts.map +1 -0
  252. package/dist/react/utils/index.js +9 -0
  253. package/dist/react/utils/index.js.map +1 -0
  254. package/dist/reactive/dispatcher/dispatcher.module.d.ts +216 -0
  255. package/dist/reactive/dispatcher/dispatcher.module.d.ts.map +1 -0
  256. package/dist/reactive/dispatcher/dispatcher.module.js +384 -0
  257. package/dist/reactive/dispatcher/dispatcher.module.js.map +1 -0
  258. package/dist/reactive/dispatcher/index.d.ts +4 -0
  259. package/dist/reactive/dispatcher/index.d.ts.map +1 -0
  260. package/dist/reactive/dispatcher/index.js +9 -0
  261. package/dist/reactive/dispatcher/index.js.map +1 -0
  262. package/dist/reactive/dispatcher/middlewares/index.d.ts +2 -0
  263. package/dist/reactive/dispatcher/middlewares/index.d.ts.map +1 -0
  264. package/dist/reactive/dispatcher/middlewares/index.js +5 -0
  265. package/dist/reactive/dispatcher/middlewares/index.js.map +1 -0
  266. package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts +37 -0
  267. package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts.map +1 -0
  268. package/dist/reactive/dispatcher/middlewares/logger.middleware.js +188 -0
  269. package/dist/reactive/dispatcher/middlewares/logger.middleware.js.map +1 -0
  270. package/dist/reactive/dispatcher/standalone.d.ts +112 -0
  271. package/dist/reactive/dispatcher/standalone.d.ts.map +1 -0
  272. package/dist/reactive/dispatcher/standalone.js +142 -0
  273. package/dist/reactive/dispatcher/standalone.js.map +1 -0
  274. package/dist/reactive/effects/effects.module.d.ts +225 -0
  275. package/dist/reactive/effects/effects.module.d.ts.map +1 -0
  276. package/dist/reactive/effects/effects.module.js +356 -0
  277. package/dist/reactive/effects/effects.module.js.map +1 -0
  278. package/dist/reactive/effects/index.d.ts +4 -0
  279. package/dist/reactive/effects/index.d.ts.map +1 -0
  280. package/dist/reactive/effects/index.js +11 -0
  281. package/dist/reactive/effects/index.js.map +1 -0
  282. package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts +12 -0
  283. package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts.map +1 -0
  284. package/dist/reactive/effects/utils/chunkRequestConsistent.js +25 -0
  285. package/dist/reactive/effects/utils/chunkRequestConsistent.js.map +1 -0
  286. package/dist/reactive/effects/utils/chunkRequestParallel.d.ts +12 -0
  287. package/dist/reactive/effects/utils/chunkRequestParallel.d.ts.map +1 -0
  288. package/dist/reactive/effects/utils/chunkRequestParallel.js +22 -0
  289. package/dist/reactive/effects/utils/chunkRequestParallel.js.map +1 -0
  290. package/dist/reactive/effects/utils/fromRequest.d.ts +40 -0
  291. package/dist/reactive/effects/utils/fromRequest.d.ts.map +1 -0
  292. package/dist/reactive/effects/utils/fromRequest.js +64 -0
  293. package/dist/reactive/effects/utils/fromRequest.js.map +1 -0
  294. package/dist/reactive/effects/utils/index.d.ts +5 -0
  295. package/dist/reactive/effects/utils/index.d.ts.map +1 -0
  296. package/dist/reactive/effects/utils/index.js +11 -0
  297. package/dist/reactive/effects/utils/index.js.map +1 -0
  298. package/dist/reactive/effects/utils/toObservable.d.ts +23 -0
  299. package/dist/reactive/effects/utils/toObservable.d.ts.map +1 -0
  300. package/dist/reactive/effects/utils/toObservable.js +39 -0
  301. package/dist/reactive/effects/utils/toObservable.js.map +1 -0
  302. package/dist/reactive/index.d.ts +3 -0
  303. package/dist/reactive/index.d.ts.map +1 -0
  304. package/dist/reactive/index.js +7 -0
  305. package/dist/reactive/index.js.map +1 -0
  306. package/dist/utils/createEventBus.d.ts +87 -0
  307. package/dist/utils/createEventBus.d.ts.map +1 -0
  308. package/dist/utils/createEventBus.js +215 -0
  309. package/dist/utils/createEventBus.js.map +1 -0
  310. package/dist/utils/createSynapse/createSynapse.d.ts +9 -0
  311. package/dist/utils/createSynapse/createSynapse.d.ts.map +1 -0
  312. package/dist/utils/createSynapse/createSynapse.js +103 -0
  313. package/dist/utils/createSynapse/createSynapse.js.map +1 -0
  314. package/dist/utils/createSynapse/index.d.ts +3 -0
  315. package/dist/utils/createSynapse/index.d.ts.map +1 -0
  316. package/dist/utils/createSynapse/index.js +6 -0
  317. package/dist/utils/createSynapse/index.js.map +1 -0
  318. package/dist/utils/createSynapse/types.d.ts +93 -0
  319. package/dist/utils/createSynapse/types.d.ts.map +1 -0
  320. package/dist/utils/createSynapse/types.js +6 -0
  321. package/dist/utils/createSynapse/types.js.map +1 -0
  322. package/dist/utils/createSynapse/validate.d.ts +2 -0
  323. package/dist/utils/createSynapse/validate.d.ts.map +1 -0
  324. package/dist/utils/createSynapse/validate.js +76 -0
  325. package/dist/utils/createSynapse/validate.js.map +1 -0
  326. package/dist/utils/createSynapse/waitForDependencies.d.ts +3 -0
  327. package/dist/utils/createSynapse/waitForDependencies.d.ts.map +1 -0
  328. package/dist/utils/createSynapse/waitForDependencies.js +40 -0
  329. package/dist/utils/createSynapse/waitForDependencies.js.map +1 -0
  330. package/dist/utils/createSynapseAwaiter.d.ts +46 -0
  331. package/dist/utils/createSynapseAwaiter.d.ts.map +1 -0
  332. package/dist/utils/createSynapseAwaiter.js +102 -0
  333. package/dist/utils/createSynapseAwaiter.js.map +1 -0
  334. package/dist/utils/index.d.ts +4 -0
  335. package/dist/utils/index.d.ts.map +1 -0
  336. package/dist/utils/index.js +12 -0
  337. package/dist/utils/index.js.map +1 -0
  338. package/package.json +17 -21
  339. package/dist/api.d.ts +0 -365
  340. package/dist/api.js +0 -1
  341. package/dist/core.d.ts +0 -95
  342. package/dist/core.js +0 -1
  343. package/dist/createSynapse-BLbPlWXK.d.ts +0 -97
  344. package/dist/dispatcher.module-DcXkCRNj.d.ts +0 -360
  345. package/dist/react.d.ts +0 -98
  346. package/dist/react.js +0 -1
  347. package/dist/reactive.d.ts +0 -35
  348. package/dist/reactive.js +0 -1
  349. package/dist/storage.interface-2HKvqdAJ.d.ts +0 -444
  350. package/dist/utils.d.ts +0 -139
  351. package/dist/utils.js +0 -1
@@ -0,0 +1,177 @@
1
+ import { handleCallbackError, logError } from "../../../_utils/error-handling.util.js";
2
+ import { StorageEvents } from "../storage.interface.js";
3
+ import { SyncBroadcastChannel } from "../utils/broadcast.util.js";
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+ function handleSyncStorageMessage(api, type, payload) {
12
+ switch(type){
13
+ case 'set':
14
+ if (payload?.key !== undefined && payload?.value !== undefined) {
15
+ api.storage.doSet(payload.key, payload.value);
16
+ api.storage.notifySubscribers(payload.key, payload.value);
17
+ }
18
+ break;
19
+ case 'update':
20
+ if (Array.isArray(payload?.value)) {
21
+ api.storage.doUpdate(payload.value);
22
+ payload.value.forEach(({ key, value })=>{
23
+ api.storage.notifySubscribers(key, value);
24
+ });
25
+ }
26
+ break;
27
+ case 'delete':
28
+ if (payload?.key !== undefined) {
29
+ api.storage.doRemove(payload.key);
30
+ api.storage.notifySubscribers(payload.key, undefined);
31
+ }
32
+ break;
33
+ case 'clear':
34
+ api.storage.doClear();
35
+ api.storage.notifySubscribers('*', {
36
+ type: StorageEvents.STORAGE_UPDATE,
37
+ value: {},
38
+ source: 'broadcast'
39
+ });
40
+ break;
41
+ }
42
+ api.storage.notifySubscribers('*', {
43
+ type: StorageEvents.STORAGE_UPDATE,
44
+ key: payload?.key,
45
+ value: payload?.value,
46
+ source: 'broadcast'
47
+ });
48
+ }
49
+ function handlePersistentSyncStorageMessage(api, type, payload) {
50
+ switch(type){
51
+ case 'set':
52
+ if (payload?.key !== undefined) {
53
+ const currentValue = api.storage.doGet(payload.key);
54
+ api.storage.notifySubscribers(payload.key, currentValue);
55
+ }
56
+ break;
57
+ case 'update':
58
+ if (Array.isArray(payload?.value)) {
59
+ for (const { key } of payload.value){
60
+ const currentValue = api.storage.doGet(key);
61
+ api.storage.notifySubscribers(key, currentValue);
62
+ }
63
+ api.storage.notifySubscribers('*', {
64
+ type: StorageEvents.STORAGE_UPDATE,
65
+ key: payload.value.map(({ key })=>key),
66
+ value: payload.value,
67
+ source: 'broadcast'
68
+ });
69
+ }
70
+ break;
71
+ case 'delete':
72
+ if (payload?.key !== undefined) {
73
+ api.storage.notifySubscribers(payload.key, undefined);
74
+ }
75
+ break;
76
+ case 'clear':
77
+ api.storage.notifySubscribers('*', {
78
+ type: StorageEvents.STORAGE_UPDATE,
79
+ value: {},
80
+ source: 'broadcast'
81
+ });
82
+ break;
83
+ }
84
+ if (type !== 'update') {
85
+ api.storage.notifySubscribers('*', {
86
+ type: StorageEvents.STORAGE_UPDATE,
87
+ key: payload?.key,
88
+ value: type === 'delete' ? undefined : payload?.value,
89
+ source: 'broadcast'
90
+ });
91
+ }
92
+ }
93
+ const syncBroadcastMiddleware = (props)=>{
94
+ const { storageName, storageType } = props;
95
+ const channelName = `${storageType}-${storageName}`;
96
+ const channel = new SyncBroadcastChannel(channelName, {
97
+ debug: true
98
+ });
99
+ return {
100
+ name: 'sync-broadcast',
101
+ setup: (api)=>{
102
+ if (storageType === 'memory') {
103
+ channel.setSyncHandler(async ()=>{
104
+ const state = api.getState();
105
+ const updates = Object.entries(state).map(([key, value])=>({
106
+ key,
107
+ value
108
+ }));
109
+ const action = {
110
+ type: 'update',
111
+ key: '*',
112
+ value: updates,
113
+ metadata: {
114
+ batchUpdate: true,
115
+ timestamp: Date.now()
116
+ }
117
+ };
118
+ return action;
119
+ });
120
+ // Начальная синхронизация (fire-and-forget)
121
+ channel.requestSync().then((action)=>{
122
+ if (action?.type === 'update' && Array.isArray(action.value)) {
123
+ try {
124
+ const validUpdates = action.value.every((update)=>update && typeof update === 'object' && 'key' in update && 'value' in update);
125
+ if (!validUpdates) {
126
+ logError('syncBroadcastMiddleware: invalid sync response updates structure', action.value);
127
+ return;
128
+ }
129
+ api.storage.doUpdate(action.value);
130
+ action.value.forEach(({ key, value })=>{
131
+ api.storage.notifySubscribers(key, value);
132
+ });
133
+ api.storage.notifySubscribers('*', {
134
+ type: StorageEvents.STORAGE_UPDATE,
135
+ value: action.value,
136
+ source: 'broadcast'
137
+ });
138
+ } catch (error) {
139
+ handleCallbackError('syncBroadcastMiddleware: error applying sync updates', error);
140
+ }
141
+ }
142
+ }).catch((error)=>{
143
+ logError('syncBroadcastMiddleware: initial sync failed', error, null, 'warn');
144
+ });
145
+ }
146
+ // Подписка на сообщения (BroadcastChannel API всегда async)
147
+ return channel.subscribe((message)=>{
148
+ const { type, payload } = message;
149
+ if (storageType === 'memory') {
150
+ handleSyncStorageMessage(api, type, payload);
151
+ } else {
152
+ handlePersistentSyncStorageMessage(api, type, payload);
153
+ }
154
+ });
155
+ },
156
+ reducer: (_api)=>(next)=>(action)=>{
157
+ const result = next(action);
158
+ // Fire-and-forget broadcast to other tabs
159
+ if ([
160
+ 'set',
161
+ 'delete',
162
+ 'clear',
163
+ 'update'
164
+ ].includes(action.type)) {
165
+ channel.broadcast(action.type, action);
166
+ }
167
+ return result;
168
+ },
169
+ cleanup: ()=>{
170
+ channel.close();
171
+ }
172
+ };
173
+ };
174
+
175
+ export { syncBroadcastMiddleware };
176
+
177
+ //# sourceMappingURL=sync-broadcast.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core/storage/middlewares/sync-broadcast.middleware.js","sources":["../../../../src/core/storage/middlewares/sync-broadcast.middleware.ts"],"sourcesContent":["import { handleCallbackError, logError } from '../../../_utils/error-handling.util'\nimport { StorageEvents, StorageType } from '../storage.interface'\nimport { SyncBroadcastChannel } from '../utils/broadcast.util'\nimport { StorageAction, SyncMiddleware, SyncMiddlewareAPI, SyncNextFunction } from '../utils/middleware-module'\n\ninterface SyncSharedStateMiddlewareProps {\n storageType: StorageType\n storageName: string\n}\n\nfunction handleSyncStorageMessage(api: SyncMiddlewareAPI, type: string, payload: any): void {\n switch (type) {\n case 'set':\n if (payload?.key !== undefined && payload?.value !== undefined) {\n api.storage.doSet(payload.key, payload.value)\n api.storage.notifySubscribers(payload.key, payload.value)\n }\n break\n\n case 'update':\n if (Array.isArray(payload?.value)) {\n api.storage.doUpdate(payload.value)\n payload.value.forEach(({ key, value }: { key: string; value: any }) => {\n api.storage.notifySubscribers(key, value)\n })\n }\n break\n\n case 'delete':\n if (payload?.key !== undefined) {\n api.storage.doRemove(payload.key)\n api.storage.notifySubscribers(payload.key, undefined)\n }\n break\n\n case 'clear':\n api.storage.doClear()\n api.storage.notifySubscribers('*', {\n type: StorageEvents.STORAGE_UPDATE,\n value: {},\n source: 'broadcast',\n })\n break\n }\n\n api.storage.notifySubscribers('*', {\n type: StorageEvents.STORAGE_UPDATE,\n key: payload?.key,\n value: payload?.value,\n source: 'broadcast',\n })\n}\n\nfunction handlePersistentSyncStorageMessage(api: SyncMiddlewareAPI, type: string, payload: any): void {\n switch (type) {\n case 'set':\n if (payload?.key !== undefined) {\n const currentValue = api.storage.doGet(payload.key)\n api.storage.notifySubscribers(payload.key, currentValue)\n }\n break\n\n case 'update':\n if (Array.isArray(payload?.value)) {\n for (const { key } of payload.value) {\n const currentValue = api.storage.doGet(key)\n api.storage.notifySubscribers(key, currentValue)\n }\n\n api.storage.notifySubscribers('*', {\n type: StorageEvents.STORAGE_UPDATE,\n key: payload.value.map(({ key }: { key: string }) => key),\n value: payload.value,\n source: 'broadcast',\n })\n }\n break\n\n case 'delete':\n if (payload?.key !== undefined) {\n api.storage.notifySubscribers(payload.key, undefined)\n }\n break\n\n case 'clear':\n api.storage.notifySubscribers('*', {\n type: StorageEvents.STORAGE_UPDATE,\n value: {},\n source: 'broadcast',\n })\n break\n }\n\n if (type !== 'update') {\n api.storage.notifySubscribers('*', {\n type: StorageEvents.STORAGE_UPDATE,\n key: payload?.key,\n value: type === 'delete' ? undefined : payload?.value,\n source: 'broadcast',\n })\n }\n}\n\nexport const syncBroadcastMiddleware = (props: SyncSharedStateMiddlewareProps): SyncMiddleware => {\n const { storageName, storageType } = props\n const channelName = `${storageType}-${storageName}`\n const channel = new SyncBroadcastChannel<StorageAction>(channelName, { debug: true })\n\n return {\n name: 'sync-broadcast',\n setup: (api: SyncMiddlewareAPI) => {\n if (storageType === 'memory') {\n channel.setSyncHandler(async () => {\n const state = api.getState()\n\n const updates = Object.entries(state).map(([key, value]) => ({\n key,\n value,\n }))\n\n const action: StorageAction = {\n type: 'update',\n key: '*',\n value: updates,\n metadata: {\n batchUpdate: true,\n timestamp: Date.now(),\n },\n }\n return action\n })\n\n // Начальная синхронизация (fire-and-forget)\n channel\n .requestSync()\n .then((action) => {\n if (action?.type === 'update' && Array.isArray(action.value)) {\n try {\n const validUpdates = action.value.every((update) => update && typeof update === 'object' && 'key' in update && 'value' in update)\n\n if (!validUpdates) {\n logError('syncBroadcastMiddleware: invalid sync response updates structure', action.value)\n return\n }\n\n api.storage.doUpdate(action.value)\n\n action.value.forEach(({ key, value }) => {\n api.storage.notifySubscribers(key, value)\n })\n\n api.storage.notifySubscribers('*', {\n type: StorageEvents.STORAGE_UPDATE,\n value: action.value,\n source: 'broadcast',\n })\n } catch (error) {\n handleCallbackError('syncBroadcastMiddleware: error applying sync updates', error)\n }\n }\n })\n .catch((error) => {\n logError('syncBroadcastMiddleware: initial sync failed', error, null, 'warn')\n })\n }\n\n // Подписка на сообщения (BroadcastChannel API всегда async)\n return channel.subscribe((message) => {\n const { type, payload } = message\n\n if (storageType === 'memory') {\n handleSyncStorageMessage(api, type, payload)\n } else {\n handlePersistentSyncStorageMessage(api, type, payload)\n }\n })\n },\n\n reducer: (_api: SyncMiddlewareAPI) => (next: SyncNextFunction) => (action: StorageAction) => {\n const result = next(action)\n\n // Fire-and-forget broadcast to other tabs\n if (['set', 'delete', 'clear', 'update'].includes(action.type)) {\n channel.broadcast(action.type, action)\n }\n\n return result\n },\n\n cleanup: () => {\n channel.close()\n },\n }\n}\n"],"names":["handleCallbackError","logError","StorageEvents","SyncBroadcastChannel","handleSyncStorageMessage","api","type","payload","undefined","Array","key","value","handlePersistentSyncStorageMessage","currentValue","syncBroadcastMiddleware","props","storageName","storageType","channelName","channel","state","updates","Object","action","Date","validUpdates","update","error","message","_api","next","result"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { SyncMiddleware } from '../utils/middleware-module';
2
+ export interface SyncBatchingMiddlewareOptions {
3
+ batchSize?: number;
4
+ }
5
+ export declare const syncBatchingMiddleware: (options?: SyncBatchingMiddlewareOptions) => SyncMiddleware;
6
+ //# sourceMappingURL=sync-storage-batching.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-storage-batching.middleware.d.ts","sourceRoot":"","sources":["../../../../src/core/storage/middlewares/sync-storage-batching.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAuC,MAAM,4BAA4B,CAAA;AAE/G,MAAM,WAAW,6BAA6B;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,sBAAsB,GAAI,UAAS,6BAAkC,KAAG,cA+DpF,CAAA"}
@@ -0,0 +1,56 @@
1
+ const syncBatchingMiddleware = (options = {})=>{
2
+ const batchSize = options.batchSize ?? 10;
3
+ let queue = [];
4
+ let scheduled = false;
5
+ const shouldBatch = (action)=>{
6
+ return action.type === 'set' || action.type === 'update';
7
+ };
8
+ const mergeActions = (actions)=>{
9
+ const merged = new Map();
10
+ for (const action of actions){
11
+ const key = `${action.type}_${action.key?.toString() || 'default'}`;
12
+ merged.set(key, action);
13
+ }
14
+ return Array.from(merged.values());
15
+ };
16
+ const flushQueue = (api, next)=>{
17
+ if (queue.length === 0) return;
18
+ const batch = queue.splice(0);
19
+ const mergedActions = mergeActions(batch);
20
+ for (const action of mergedActions){
21
+ next(action);
22
+ }
23
+ };
24
+ return {
25
+ name: 'sync-batching',
26
+ setup: ()=>{},
27
+ cleanup: ()=>{
28
+ queue = [];
29
+ scheduled = false;
30
+ },
31
+ reducer: (api)=>(next)=>(action)=>{
32
+ if (!shouldBatch(action)) {
33
+ return next(action);
34
+ }
35
+ queue.push(action);
36
+ if (queue.length >= batchSize) {
37
+ flushQueue(api, next);
38
+ } else if (!scheduled) {
39
+ scheduled = true;
40
+ queueMicrotask(()=>{
41
+ scheduled = false;
42
+ flushQueue(api, next);
43
+ });
44
+ }
45
+ // Возвращаем текущее значение из кеша (операция ещё не выполнена если в очереди)
46
+ if (action.type === 'set' && action.key) {
47
+ return action.value;
48
+ }
49
+ return undefined;
50
+ }
51
+ };
52
+ };
53
+
54
+ export { syncBatchingMiddleware };
55
+
56
+ //# sourceMappingURL=sync-storage-batching.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core/storage/middlewares/sync-storage-batching.middleware.js","sources":["../../../../src/core/storage/middlewares/sync-storage-batching.middleware.ts"],"sourcesContent":["import { StorageAction, SyncMiddleware, SyncMiddlewareAPI, SyncNextFunction } from '../utils/middleware-module'\n\nexport interface SyncBatchingMiddlewareOptions {\n batchSize?: number\n}\n\nexport const syncBatchingMiddleware = (options: SyncBatchingMiddlewareOptions = {}): SyncMiddleware => {\n const batchSize = options.batchSize ?? 10\n\n let queue: StorageAction[] = []\n let scheduled = false\n\n const shouldBatch = (action: StorageAction): boolean => {\n return action.type === 'set' || action.type === 'update'\n }\n\n const mergeActions = (actions: StorageAction[]): StorageAction[] => {\n const merged = new Map<string, StorageAction>()\n\n for (const action of actions) {\n const key = `${action.type}_${action.key?.toString() || 'default'}`\n merged.set(key, action)\n }\n\n return Array.from(merged.values())\n }\n\n const flushQueue = (api: SyncMiddlewareAPI, next: SyncNextFunction): void => {\n if (queue.length === 0) return\n\n const batch = queue.splice(0)\n const mergedActions = mergeActions(batch)\n\n for (const action of mergedActions) {\n next(action)\n }\n }\n\n return {\n name: 'sync-batching',\n setup: () => {},\n cleanup: () => {\n queue = []\n scheduled = false\n },\n reducer: (api: SyncMiddlewareAPI) => (next: SyncNextFunction) => (action: StorageAction) => {\n if (!shouldBatch(action)) {\n return next(action)\n }\n\n queue.push(action)\n\n if (queue.length >= batchSize) {\n flushQueue(api, next)\n } else if (!scheduled) {\n scheduled = true\n queueMicrotask(() => {\n scheduled = false\n flushQueue(api, next)\n })\n }\n\n // Возвращаем текущее значение из кеша (операция ещё не выполнена если в очереди)\n if (action.type === 'set' && action.key) {\n return action.value\n }\n return undefined\n },\n }\n}\n"],"names":["syncBatchingMiddleware","options","batchSize","queue","scheduled","shouldBatch","action","mergeActions","actions","merged","Map","key","Array","flushQueue","api","next","batch","mergedActions","queueMicrotask","undefined"],"mappings":"AAMO,MAAMA,sBAAsBA,GAAG,CAACC,UAAyC,CAAC,CAAC;IAChF,MAAMC,YAAYD,QAAQ,SAAS,IAAI;IAEvC,IAAIE,QAAyB,EAAE;IAC/B,IAAIC,YAAY;IAEhB,MAAMC,cAAc,CAACC;QACnB,OAAOA,OAAO,IAAI,KAAK,SAASA,OAAO,IAAI,KAAK;IAClD;IAEA,MAAMC,eAAe,CAACC;QACpB,MAAMC,SAAS,IAAIC;QAEnB,KAAK,MAAMJ,UAAUE,QAAS;YAC5B,MAAMG,MAAM,GAAGL,OAAO,IAAI,CAAC,CAAC,EAAEA,OAAO,GAAG,EAAE,cAAc,WAAW;YACnEG,OAAO,GAAG,CAACE,KAAKL;QAClB;QAEA,OAAOM,MAAM,IAAI,CAACH,OAAO,MAAM;IACjC;IAEA,MAAMI,aAAa,CAACC,KAAwBC;QAC1C,IAAIZ,MAAM,MAAM,KAAK,GAAG;QAExB,MAAMa,QAAQb,MAAM,MAAM,CAAC;QAC3B,MAAMc,gBAAgBV,aAAaS;QAEnC,KAAK,MAAMV,UAAUW,cAAe;YAClCF,KAAKT;QACP;IACF;IAEA,OAAO;QACL,MAAM;QACN,OAAO,KAAO;QACd,SAAS;YACPH,QAAQ,EAAE;YACVC,YAAY;QACd;QACA,SAAS,CAACU,MAA2B,CAACC,OAA2B,CAACT;oBAChE,IAAI,CAACD,YAAYC,SAAS;wBACxB,OAAOS,KAAKT;oBACd;oBAEAH,MAAM,IAAI,CAACG;oBAEX,IAAIH,MAAM,MAAM,IAAID,WAAW;wBAC7BW,WAAWC,KAAKC;oBAClB,OAAO,IAAI,CAACX,WAAW;wBACrBA,YAAY;wBACZc,eAAe;4BACbd,YAAY;4BACZS,WAAWC,KAAKC;wBAClB;oBACF;oBAEA,iFAAiF;oBACjF,IAAIT,OAAO,IAAI,KAAK,SAASA,OAAO,GAAG,EAAE;wBACvC,OAAOA,OAAO,KAAK;oBACrB;oBACA,OAAOa;gBACT;IACF;AACF,EAAC"}
@@ -0,0 +1,7 @@
1
+ import { SyncMiddleware } from '../utils/middleware-module';
2
+ export interface SyncShallowCompareMiddlewareOptions {
3
+ segments?: string[];
4
+ comparator?: <T>(prev: T, next: T) => boolean;
5
+ }
6
+ export declare const syncShallowCompareMiddleware: (options?: SyncShallowCompareMiddlewareOptions) => SyncMiddleware;
7
+ //# sourceMappingURL=sync-storage-shallow-compare.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-storage-shallow-compare.middleware.d.ts","sourceRoot":"","sources":["../../../../src/core/storage/middlewares/sync-storage-shallow-compare.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAA0D,MAAM,4BAA4B,CAAA;AAGlI,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,OAAO,CAAA;CAC9C;AAED,eAAO,MAAM,4BAA4B,GAAI,UAAS,mCAAwC,KAAG,cA0ChG,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { VALUE_NOT_CHANGED } from "../utils/middleware-module.js";
2
+
3
+
4
+
5
+ const syncShallowCompareMiddleware = (options = {})=>{
6
+ const { comparator = (prev, next)=>{
7
+ if (prev === next) return true;
8
+ if (typeof prev !== 'object' || typeof next !== 'object' || prev === null || next === null) {
9
+ return prev === next;
10
+ }
11
+ const keysA = Object.keys(prev);
12
+ const keysB = Object.keys(next);
13
+ if (keysA.length !== keysB.length) return false;
14
+ return keysA.every((key)=>Object.prototype.hasOwnProperty.call(next, key) && prev[key] === next[key]);
15
+ }, segments = [] } = options;
16
+ const valueCache = new Map();
17
+ return {
18
+ name: 'sync-shallow-compare',
19
+ setup: ()=>{},
20
+ reducer: (_api)=>(next)=>(action)=>{
21
+ if (action.type !== 'set' || segments.length && !segments.includes(action.metadata?.segment ?? 'default')) {
22
+ return next(action);
23
+ }
24
+ const cacheKey = action.key;
25
+ const prevValue = valueCache.get(cacheKey);
26
+ const nextValue = action.value;
27
+ if (prevValue !== undefined && comparator(prevValue, nextValue)) {
28
+ return VALUE_NOT_CHANGED;
29
+ }
30
+ const result = next(action);
31
+ valueCache.set(cacheKey, result !== undefined ? result : nextValue);
32
+ return result;
33
+ }
34
+ };
35
+ };
36
+
37
+ export { syncShallowCompareMiddleware };
38
+
39
+ //# sourceMappingURL=sync-storage-shallow-compare.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core/storage/middlewares/sync-storage-shallow-compare.middleware.js","sources":["../../../../src/core/storage/middlewares/sync-storage-shallow-compare.middleware.ts"],"sourcesContent":["import { StorageAction, SyncMiddleware, SyncMiddlewareAPI, SyncNextFunction, VALUE_NOT_CHANGED } from '../utils/middleware-module'\nimport { StorageKeyType } from '../utils/storage-key'\n\nexport interface SyncShallowCompareMiddlewareOptions {\n segments?: string[]\n comparator?: <T>(prev: T, next: T) => boolean\n}\n\nexport const syncShallowCompareMiddleware = (options: SyncShallowCompareMiddlewareOptions = {}): SyncMiddleware => {\n const {\n comparator = (prev: any, next: any) => {\n if (prev === next) return true\n\n if (typeof prev !== 'object' || typeof next !== 'object' || prev === null || next === null) {\n return prev === next\n }\n\n const keysA = Object.keys(prev)\n const keysB = Object.keys(next)\n\n if (keysA.length !== keysB.length) return false\n\n return keysA.every((key) => Object.prototype.hasOwnProperty.call(next, key) && prev[key] === next[key])\n },\n segments = [],\n } = options\n\n const valueCache = new Map<StorageKeyType, any>()\n\n return {\n name: 'sync-shallow-compare',\n setup: () => {},\n reducer: (_api: SyncMiddlewareAPI) => (next: SyncNextFunction) => (action: StorageAction) => {\n if (action.type !== 'set' || (segments.length && !segments.includes(action.metadata?.segment ?? 'default'))) {\n return next(action)\n }\n\n const cacheKey = action.key!\n const prevValue = valueCache.get(cacheKey)\n const nextValue = action.value\n\n if (prevValue !== undefined && comparator(prevValue, nextValue)) {\n return VALUE_NOT_CHANGED\n }\n\n const result = next(action)\n valueCache.set(cacheKey, result !== undefined ? result : nextValue)\n return result\n },\n }\n}\n"],"names":["VALUE_NOT_CHANGED","syncShallowCompareMiddleware","options","comparator","prev","next","keysA","Object","keysB","key","segments","valueCache","Map","_api","action","cacheKey","prevValue","nextValue","undefined","result"],"mappings":";;;AAAkI;AAQ3H,MAAMC,4BAA4BA,GAAG,CAACC,UAA+C,CAAC,CAAC;IAC5F,MAAM,EACJC,aAAa,CAACC,MAAWC;QACvB,IAAID,SAASC,MAAM,OAAO;QAE1B,IAAI,OAAOD,SAAS,YAAY,OAAOC,SAAS,YAAYD,SAAS,QAAQC,SAAS,MAAM;YAC1F,OAAOD,SAASC;QAClB;QAEA,MAAMC,QAAQC,OAAO,IAAI,CAACH;QAC1B,MAAMI,QAAQD,OAAO,IAAI,CAACF;QAE1B,IAAIC,MAAM,MAAM,KAAKE,MAAM,MAAM,EAAE,OAAO;QAE1C,OAAOF,MAAM,KAAK,CAAC,CAACG,MAAQF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACF,MAAMI,QAAQL,IAAI,CAACK,IAAI,KAAKJ,IAAI,CAACI,IAAI;IACxG,CAAC,EACDC,WAAW,EAAE,EACd,GAAGR;IAEJ,MAAMS,aAAa,IAAIC;IAEvB,OAAO;QACL,MAAM;QACN,OAAO,KAAO;QACd,SAAS,CAACC,OAA4B,CAACR,OAA2B,CAACS;oBACjE,IAAIA,OAAO,IAAI,KAAK,SAAUJ,SAAS,MAAM,IAAI,CAACA,SAAS,QAAQ,CAACI,OAAO,QAAQ,EAAE,WAAW,YAAa;wBAC3G,OAAOT,KAAKS;oBACd;oBAEA,MAAMC,WAAWD,OAAO,GAAG;oBAC3B,MAAME,YAAYL,WAAW,GAAG,CAACI;oBACjC,MAAME,YAAYH,OAAO,KAAK;oBAE9B,IAAIE,cAAcE,aAAaf,WAAWa,WAAWC,YAAY;wBAC/D,OAAOjB,iBAAiBA;oBAC1B;oBAEA,MAAMmB,SAASd,KAAKS;oBACpBH,WAAW,GAAG,CAACI,UAAUI,WAAWD,YAAYC,SAASF;oBACzD,OAAOE;gBACT;IACF;AACF,EAAC"}
@@ -0,0 +1,101 @@
1
+ import { StorageKeyType } from '../../utils/storage-key';
2
+ /**
3
+ * Контекст выполнения для плагинов
4
+ * Содержит информацию о текущей операции и хранилище
5
+ */
6
+ export interface PluginContext {
7
+ /** Имя хранилища, к которому применяется плагин */
8
+ storageName: string;
9
+ /** Временная метка выполнения операции (timestamp) */
10
+ timestamp: number;
11
+ /** Дополнительные метаданные операции (могут быть предоставлены хранилищем или другими плагинами) */
12
+ metadata?: Record<string, any>;
13
+ }
14
+ /**
15
+ * Базовый интерфейс для всех плагинов
16
+ * Определяет основные свойства и методы жизненного цикла
17
+ */
18
+ export interface IPlugin {
19
+ /** Уникальное имя плагина */
20
+ name: string;
21
+ /**
22
+ * Метод инициализации плагина
23
+ * Вызывается при добавлении плагина в хранилище или при инициализации хранилища
24
+ */
25
+ initialize?(): Promise<void>;
26
+ /**
27
+ * Метод уничтожения плагина
28
+ * Вызывается при удалении плагина из хранилища или при уничтожении хранилища
29
+ * Используется для освобождения ресурсов и очистки состояния
30
+ */
31
+ destroy?(): Promise<void>;
32
+ }
33
+ /**
34
+ * Интерфейс плагина для синхронного хранилища.
35
+ * Все хуки выполняются синхронно.
36
+ */
37
+ export interface ISyncStoragePlugin extends IPlugin {
38
+ onBeforeSet?<T>(value: T, context: PluginContext): T;
39
+ onAfterSet?<T>(key: StorageKeyType, value: T, context: PluginContext): T;
40
+ onBeforeGet?(key: StorageKeyType, context: PluginContext): StorageKeyType;
41
+ onAfterGet?<T>(key: StorageKeyType, value: T | undefined, context: PluginContext): T | undefined;
42
+ onBeforeDelete?(key: StorageKeyType, context: PluginContext): boolean;
43
+ onAfterDelete?(key: StorageKeyType, context: PluginContext): void;
44
+ onClear?(context: PluginContext): void;
45
+ }
46
+ /**
47
+ * Исполнитель плагинов для синхронных хранилищ.
48
+ * Все execute* методы возвращают значения синхронно.
49
+ */
50
+ export interface ISyncPluginExecutor {
51
+ executeBeforeSet<T>(value: T, metadata?: Record<string, any>): T;
52
+ executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): T;
53
+ executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): StorageKeyType;
54
+ executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): T | undefined;
55
+ executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): boolean;
56
+ executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): void;
57
+ executeOnClear(metadata?: Record<string, any>): void;
58
+ }
59
+ /**
60
+ * Интерфейс плагина для асинхронного хранилища.
61
+ * Все хуки возвращают Promise.
62
+ */
63
+ export interface IAsyncStoragePlugin extends IPlugin {
64
+ onBeforeSet?<T>(value: T, context: PluginContext): Promise<T>;
65
+ onAfterSet?<T>(key: StorageKeyType, value: T, context: PluginContext): Promise<T>;
66
+ onBeforeGet?(key: StorageKeyType, context: PluginContext): Promise<StorageKeyType>;
67
+ onAfterGet?<T>(key: StorageKeyType, value: T | undefined, context: PluginContext): Promise<T | undefined>;
68
+ onBeforeDelete?(key: StorageKeyType, context: PluginContext): Promise<boolean>;
69
+ onAfterDelete?(key: StorageKeyType, context: PluginContext): Promise<void>;
70
+ onClear?(context: PluginContext): Promise<void>;
71
+ }
72
+ /**
73
+ * Исполнитель плагинов для асинхронных хранилищ.
74
+ * Все execute* методы возвращают Promise.
75
+ */
76
+ export interface IAsyncPluginExecutor {
77
+ executeBeforeSet<T>(value: T, metadata?: Record<string, any>): Promise<T>;
78
+ executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): Promise<T>;
79
+ executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): Promise<StorageKeyType>;
80
+ executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): Promise<T | undefined>;
81
+ executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<boolean>;
82
+ executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<void>;
83
+ executeOnClear(metadata?: Record<string, any>): Promise<void>;
84
+ }
85
+ /** @deprecated Use IAsyncStoragePlugin */
86
+ export type IStoragePlugin = IAsyncStoragePlugin;
87
+ /** @deprecated Use IAsyncPluginExecutor */
88
+ export type IPluginExecutor = IAsyncPluginExecutor;
89
+ /**
90
+ * Менеджер плагинов
91
+ * Отвечает за регистрацию, получение и удаление плагинов
92
+ */
93
+ export interface IPluginManager<T extends IPlugin> {
94
+ add(plugin: T): Promise<void>;
95
+ remove(name: string): Promise<void>;
96
+ get(name: string): T | undefined;
97
+ getAll(): T[];
98
+ initialize(): Promise<void>;
99
+ destroy(): Promise<void>;
100
+ }
101
+ //# sourceMappingURL=plugin.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.interface.d.ts","sourceRoot":"","sources":["../../../../../src/core/storage/modules/plugin/plugin.interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ // ─── Plugin Manager ───────────────────────────────────────────────────────────
2
+ /**
3
+ * Менеджер плагинов
4
+ * Отвечает за регистрацию, получение и удаление плагинов
5
+ */
6
+
7
+
8
+ //# sourceMappingURL=plugin.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core/storage/modules/plugin/plugin.interface.js","sources":["../../../../../src/core/storage/modules/plugin/plugin.interface.ts"],"sourcesContent":["import { StorageKeyType } from '../../utils/storage-key'\n\n/**\n * Контекст выполнения для плагинов\n * Содержит информацию о текущей операции и хранилище\n */\nexport interface PluginContext {\n /** Имя хранилища, к которому применяется плагин */\n storageName: string\n\n /** Временная метка выполнения операции (timestamp) */\n timestamp: number\n\n /** Дополнительные метаданные операции (могут быть предоставлены хранилищем или другими плагинами) */\n metadata?: Record<string, any>\n}\n\n/**\n * Базовый интерфейс для всех плагинов\n * Определяет основные свойства и методы жизненного цикла\n */\nexport interface IPlugin {\n /** Уникальное имя плагина */\n name: string\n\n /**\n * Метод инициализации плагина\n * Вызывается при добавлении плагина в хранилище или при инициализации хранилища\n */\n initialize?(): Promise<void>\n\n /**\n * Метод уничтожения плагина\n * Вызывается при удалении плагина из хранилища или при уничтожении хранилища\n * Используется для освобождения ресурсов и очистки состояния\n */\n destroy?(): Promise<void>\n}\n\n// ─── Sync Storage Plugin ──────────────────────────────────────────────────────\n\n/**\n * Интерфейс плагина для синхронного хранилища.\n * Все хуки выполняются синхронно.\n */\nexport interface ISyncStoragePlugin extends IPlugin {\n onBeforeSet?<T>(value: T, context: PluginContext): T\n onAfterSet?<T>(key: StorageKeyType, value: T, context: PluginContext): T\n onBeforeGet?(key: StorageKeyType, context: PluginContext): StorageKeyType\n onAfterGet?<T>(key: StorageKeyType, value: T | undefined, context: PluginContext): T | undefined\n onBeforeDelete?(key: StorageKeyType, context: PluginContext): boolean\n onAfterDelete?(key: StorageKeyType, context: PluginContext): void\n onClear?(context: PluginContext): void\n}\n\n/**\n * Исполнитель плагинов для синхронных хранилищ.\n * Все execute* методы возвращают значения синхронно.\n */\nexport interface ISyncPluginExecutor {\n executeBeforeSet<T>(value: T, metadata?: Record<string, any>): T\n executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): T\n executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): StorageKeyType\n executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): T | undefined\n executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): boolean\n executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): void\n executeOnClear(metadata?: Record<string, any>): void\n}\n\n// ─── Async Storage Plugin ─────────────────────────────────────────────────────\n\n/**\n * Интерфейс плагина для асинхронного хранилища.\n * Все хуки возвращают Promise.\n */\nexport interface IAsyncStoragePlugin extends IPlugin {\n onBeforeSet?<T>(value: T, context: PluginContext): Promise<T>\n onAfterSet?<T>(key: StorageKeyType, value: T, context: PluginContext): Promise<T>\n onBeforeGet?(key: StorageKeyType, context: PluginContext): Promise<StorageKeyType>\n onAfterGet?<T>(key: StorageKeyType, value: T | undefined, context: PluginContext): Promise<T | undefined>\n onBeforeDelete?(key: StorageKeyType, context: PluginContext): Promise<boolean>\n onAfterDelete?(key: StorageKeyType, context: PluginContext): Promise<void>\n onClear?(context: PluginContext): Promise<void>\n}\n\n/**\n * Исполнитель плагинов для асинхронных хранилищ.\n * Все execute* методы возвращают Promise.\n */\nexport interface IAsyncPluginExecutor {\n executeBeforeSet<T>(value: T, metadata?: Record<string, any>): Promise<T>\n executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): Promise<T>\n executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): Promise<StorageKeyType>\n executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): Promise<T | undefined>\n executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<boolean>\n executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<void>\n executeOnClear(metadata?: Record<string, any>): Promise<void>\n}\n\n// ─── Backward Compatibility Aliases ───────────────────────────────────────────\n\n/** @deprecated Use IAsyncStoragePlugin */\nexport type IStoragePlugin = IAsyncStoragePlugin\n\n/** @deprecated Use IAsyncPluginExecutor */\nexport type IPluginExecutor = IAsyncPluginExecutor\n\n// ─── Plugin Manager ───────────────────────────────────────────────────────────\n\n/**\n * Менеджер плагинов\n * Отвечает за регистрацию, получение и удаление плагинов\n */\nexport interface IPluginManager<T extends IPlugin> {\n add(plugin: T): Promise<void>\n remove(name: string): Promise<void>\n get(name: string): T | undefined\n getAll(): T[]\n initialize(): Promise<void>\n destroy(): Promise<void>\n}\n"],"names":[],"mappings":"AA2GA,iFAAiF;AAEjF;;;CAGC,GAQA"}
@@ -0,0 +1,49 @@
1
+ import { ILogger } from '../../storage.interface';
2
+ import { StorageKeyType } from '../../utils/storage-key';
3
+ import { IAsyncPluginExecutor, IAsyncStoragePlugin, IPluginManager, ISyncPluginExecutor, ISyncStoragePlugin } from './plugin.interface';
4
+ export declare class SyncStoragePluginModule implements IPluginManager<ISyncStoragePlugin>, ISyncPluginExecutor {
5
+ protected readonly parentExecutor?: ISyncPluginExecutor | undefined;
6
+ protected readonly logger?: ILogger | undefined;
7
+ protected readonly storageName: string;
8
+ private plugins;
9
+ constructor(parentExecutor?: ISyncPluginExecutor | undefined, logger?: ILogger | undefined, storageName?: string);
10
+ private createContext;
11
+ add(plugin: ISyncStoragePlugin): Promise<void>;
12
+ remove(name: string): Promise<void>;
13
+ get(name: string): ISyncStoragePlugin | undefined;
14
+ getAll(): ISyncStoragePlugin[];
15
+ initialize(): Promise<void>;
16
+ destroy(): Promise<void>;
17
+ executeBeforeSet<T>(value: T, metadata?: Record<string, any>): T;
18
+ executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): T;
19
+ executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): StorageKeyType;
20
+ executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): T | undefined;
21
+ executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): boolean;
22
+ executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): void;
23
+ executeOnClear(metadata?: Record<string, any>): void;
24
+ }
25
+ export declare class AsyncStoragePluginModule implements IPluginManager<IAsyncStoragePlugin>, IAsyncPluginExecutor {
26
+ protected readonly parentExecutor?: IAsyncPluginExecutor | undefined;
27
+ protected readonly logger?: ILogger | undefined;
28
+ protected readonly storageName: string;
29
+ private plugins;
30
+ constructor(parentExecutor?: IAsyncPluginExecutor | undefined, logger?: ILogger | undefined, storageName?: string);
31
+ private createContext;
32
+ add(plugin: IAsyncStoragePlugin): Promise<void>;
33
+ remove(name: string): Promise<void>;
34
+ get(name: string): IAsyncStoragePlugin | undefined;
35
+ getAll(): IAsyncStoragePlugin[];
36
+ initialize(): Promise<void>;
37
+ destroy(): Promise<void>;
38
+ executeBeforeSet<T>(value: T, metadata?: Record<string, any>): Promise<T>;
39
+ executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): Promise<T>;
40
+ executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): Promise<StorageKeyType>;
41
+ executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): Promise<T | undefined>;
42
+ executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<boolean>;
43
+ executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<void>;
44
+ executeOnClear(metadata?: Record<string, any>): Promise<void>;
45
+ }
46
+ /** @deprecated Use AsyncStoragePluginModule */
47
+ export declare class StoragePluginModule extends AsyncStoragePluginModule {
48
+ }
49
+ //# sourceMappingURL=plugin.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.service.d.ts","sourceRoot":"","sources":["../../../../../src/core/storage/modules/plugin/plugin.service.ts"],"names":[],"mappings":"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"}