synapse-storage 3.0.19 → 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 +661 -104
  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 -106
  342. package/dist/core.js +0 -1
  343. package/dist/createSynapse-vkfKjRob.d.ts +0 -97
  344. package/dist/dispatcher.module-BOsMHbD5.d.ts +0 -360
  345. package/dist/react.d.ts +0 -119
  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-BA_ktyDz.d.ts +0 -591
  350. package/dist/utils.d.ts +0 -139
  351. package/dist/utils.js +0 -1
@@ -0,0 +1,197 @@
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
+ // Обработка сообщений для MemoryStorage
12
+ async function handleMemoryStorageMessage(api, type, payload) {
13
+ switch(type){
14
+ case 'set':
15
+ if (payload?.key !== undefined && payload?.value !== undefined) {
16
+ await api.storage.doSet(payload.key, payload.value);
17
+ api.storage.notifySubscribers(payload.key, payload.value);
18
+ }
19
+ break;
20
+ case 'update':
21
+ if (Array.isArray(payload?.value)) {
22
+ await api.storage.doUpdate(payload.value);
23
+ //@ts-ignore
24
+ payload.value.forEach(({ key, value })=>{
25
+ //@ts-ignore
26
+ api.storage.notifySubscribers(key, value);
27
+ });
28
+ }
29
+ break;
30
+ case 'delete':
31
+ if (payload?.key !== undefined) {
32
+ await api.storage.doDelete(payload.key);
33
+ api.storage.notifySubscribers(payload.key, undefined);
34
+ }
35
+ break;
36
+ case 'clear':
37
+ await api.storage.doClear();
38
+ api.storage.notifySubscribers('*', {
39
+ type: StorageEvents.STORAGE_UPDATE,
40
+ value: {},
41
+ source: 'broadcast'
42
+ });
43
+ break;
44
+ }
45
+ // Уведомляем глобальных подписчиков
46
+ api.storage.notifySubscribers('*', {
47
+ type: StorageEvents.STORAGE_UPDATE,
48
+ key: payload?.key,
49
+ value: payload?.value,
50
+ source: 'broadcast'
51
+ });
52
+ }
53
+ // Обработка сообщений для LocalStorage и IndexedDB
54
+ async function handlePersistentStorageMessage(api, type, payload) {
55
+ // Для LocalStorage и IndexedDB данные уже синхронизированы браузером
56
+ // Нужно только получить актуальные данные и уведомить подписчиков
57
+ switch(type){
58
+ case 'set':
59
+ if (payload?.key !== undefined) {
60
+ // Получаем актуальное значение из хранилища
61
+ const currentValue = await api.storage.doGet(payload.key);
62
+ api.storage.notifySubscribers(payload.key, currentValue);
63
+ }
64
+ break;
65
+ case 'update':
66
+ if (Array.isArray(payload?.value)) {
67
+ // Получаем актуальные значения для каждого обновленного ключа
68
+ for (const { key } of payload.value){
69
+ const currentValue = await api.storage.doGet(key);
70
+ api.storage.notifySubscribers(key, currentValue);
71
+ }
72
+ // Уведомляем об обновлении с актуальными данными
73
+ api.storage.notifySubscribers('*', {
74
+ type: StorageEvents.STORAGE_UPDATE,
75
+ //@ts-ignore
76
+ key: payload.value.map(({ key })=>key),
77
+ value: payload.value,
78
+ source: 'broadcast'
79
+ });
80
+ }
81
+ break;
82
+ case 'delete':
83
+ if (payload?.key !== undefined) {
84
+ api.storage.notifySubscribers(payload.key, undefined);
85
+ }
86
+ break;
87
+ case 'clear':
88
+ // При очистке уведомляем всех подписчиков
89
+ api.storage.notifySubscribers('*', {
90
+ type: StorageEvents.STORAGE_UPDATE,
91
+ value: {},
92
+ source: 'broadcast'
93
+ });
94
+ break;
95
+ }
96
+ // Общее уведомление для глобальных подписчиков
97
+ if (type !== 'update') {
98
+ // Для update уже отправили выше
99
+ api.storage.notifySubscribers('*', {
100
+ type: StorageEvents.STORAGE_UPDATE,
101
+ key: payload?.key,
102
+ value: type === 'delete' ? undefined : payload?.value,
103
+ source: 'broadcast'
104
+ });
105
+ }
106
+ }
107
+ const broadcastMiddleware = (props)=>{
108
+ const { storageName, storageType } = props;
109
+ const channelName = `${storageType}-${storageName}`;
110
+ const channel = new SyncBroadcastChannel(channelName, {
111
+ debug: true
112
+ });
113
+ return {
114
+ name: 'broadcast',
115
+ setup: (api)=>{
116
+ // Настройка синхронизации для MemoryStorage
117
+ if (storageType === 'memory') {
118
+ channel.setSyncHandler(async ()=>{
119
+ const state = await api.getState();
120
+ const updates = Object.entries(state).map(([key, value])=>({
121
+ key,
122
+ value
123
+ }));
124
+ const action = {
125
+ type: 'update',
126
+ key: '*',
127
+ value: updates,
128
+ metadata: {
129
+ batchUpdate: true,
130
+ timestamp: Date.now()
131
+ }
132
+ };
133
+ return action;
134
+ });
135
+ // Запрашиваем начальную синхронизацию для MemoryStorage
136
+ channel.requestSync().then(async (action)=>{
137
+ if (action?.type === 'update' && Array.isArray(action.value)) {
138
+ try {
139
+ const validUpdates = action.value.every((update)=>update && typeof update === 'object' && 'key' in update && 'value' in update);
140
+ if (!validUpdates) {
141
+ logError('broadcastMiddleware: invalid sync response updates structure', action.value);
142
+ return;
143
+ }
144
+ await api.storage.doUpdate(action.value);
145
+ // Уведомляем подписчиков о каждом обновленном значении
146
+ action.value.forEach(({ key, value })=>{
147
+ api.storage.notifySubscribers(key, value);
148
+ });
149
+ // Уведомляем глобальных подписчиков
150
+ api.storage.notifySubscribers('*', {
151
+ type: StorageEvents.STORAGE_UPDATE,
152
+ value: action.value,
153
+ source: 'broadcast'
154
+ });
155
+ } catch (error) {
156
+ handleCallbackError('broadcastMiddleware: error applying sync updates', error);
157
+ }
158
+ }
159
+ }).catch((error)=>{
160
+ logError('broadcastMiddleware: initial sync failed', error, null, 'warn');
161
+ });
162
+ }
163
+ // Подписка на сообщения от других вкладок
164
+ return channel.subscribe(async (message)=>{
165
+ const { type, payload } = message;
166
+ if (storageType === 'memory') {
167
+ // Для MemoryStorage обновляем данные и уведомляем подписчиков
168
+ await handleMemoryStorageMessage(api, type, payload);
169
+ } else {
170
+ // Для LocalStorage и IndexedDB только уведомляем подписчиков
171
+ await handlePersistentStorageMessage(api, type, payload);
172
+ }
173
+ });
174
+ },
175
+ reducer: (api)=>(next)=>async (action)=>{
176
+ const result = await next(action);
177
+ // Отправляем сообщение другим вкладкам для всех типов операций
178
+ // Текущая вкладка уже получила уведомления через обычный flow BaseStorage
179
+ if ([
180
+ 'set',
181
+ 'delete',
182
+ 'clear',
183
+ 'update'
184
+ ].includes(action.type)) {
185
+ channel.broadcast(action.type, action);
186
+ }
187
+ return result;
188
+ },
189
+ cleanup: ()=>{
190
+ channel.close();
191
+ }
192
+ };
193
+ };
194
+
195
+ export { broadcastMiddleware };
196
+
197
+ //# sourceMappingURL=broadcast.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core/storage/middlewares/broadcast.middleware.js","sources":["../../../../src/core/storage/middlewares/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 { Middleware, MiddlewareAPI, NextFunction, StorageAction } from '../utils/middleware-module'\n\ninterface SharedStateMiddlewareProps {\n storageType: StorageType\n storageName: string\n}\n\n// Обработка сообщений для MemoryStorage\nasync function handleMemoryStorageMessage(api: MiddlewareAPI, type: string, payload: any): Promise<void> {\n switch (type) {\n case 'set':\n if (payload?.key !== undefined && payload?.value !== undefined) {\n await 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 await api.storage.doUpdate(payload.value)\n //@ts-ignore\n payload.value.forEach(({ key, value }) => {\n //@ts-ignore\n api.storage.notifySubscribers(key, value)\n })\n }\n break\n\n case 'delete':\n if (payload?.key !== undefined) {\n await api.storage.doDelete(payload.key)\n api.storage.notifySubscribers(payload.key, undefined)\n }\n break\n\n case 'clear':\n await api.storage.doClear()\n api.storage.notifySubscribers('*', {\n type: StorageEvents.STORAGE_UPDATE,\n value: {},\n source: 'broadcast',\n })\n break\n }\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\n// Обработка сообщений для LocalStorage и IndexedDB\nasync function handlePersistentStorageMessage(api: MiddlewareAPI, type: string, payload: any): Promise<void> {\n // Для LocalStorage и IndexedDB данные уже синхронизированы браузером\n // Нужно только получить актуальные данные и уведомить подписчиков\n\n switch (type) {\n case 'set':\n if (payload?.key !== undefined) {\n // Получаем актуальное значение из хранилища\n const currentValue = await 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 // Получаем актуальные значения для каждого обновленного ключа\n for (const { key } of payload.value) {\n const currentValue = await api.storage.doGet(key)\n api.storage.notifySubscribers(key, currentValue)\n }\n\n // Уведомляем об обновлении с актуальными данными\n api.storage.notifySubscribers('*', {\n type: StorageEvents.STORAGE_UPDATE,\n //@ts-ignore\n key: payload.value.map(({ key }) => 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 // При очистке уведомляем всех подписчиков\n api.storage.notifySubscribers('*', {\n type: StorageEvents.STORAGE_UPDATE,\n value: {},\n source: 'broadcast',\n })\n break\n }\n\n // Общее уведомление для глобальных подписчиков\n if (type !== 'update') {\n // Для 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 broadcastMiddleware = (props: SharedStateMiddlewareProps): Middleware => {\n const { storageName, storageType } = props\n const channelName = `${storageType}-${storageName}`\n const channel = new SyncBroadcastChannel<StorageAction>(channelName, { debug: true })\n\n return {\n name: 'broadcast',\n setup: (api: MiddlewareAPI) => {\n // Настройка синхронизации для MemoryStorage\n if (storageType === 'memory') {\n channel.setSyncHandler(async () => {\n const state = await 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 // Запрашиваем начальную синхронизацию для MemoryStorage\n channel\n .requestSync()\n .then(async (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('broadcastMiddleware: invalid sync response updates structure', action.value)\n return\n }\n\n await api.storage.doUpdate(action.value)\n\n // Уведомляем подписчиков о каждом обновленном значении\n action.value.forEach(({ key, value }) => {\n api.storage.notifySubscribers(key, value)\n })\n\n // Уведомляем глобальных подписчиков\n api.storage.notifySubscribers('*', {\n type: StorageEvents.STORAGE_UPDATE,\n value: action.value,\n source: 'broadcast',\n })\n } catch (error) {\n handleCallbackError('broadcastMiddleware: error applying sync updates', error)\n }\n }\n })\n .catch((error) => {\n logError('broadcastMiddleware: initial sync failed', error, null, 'warn')\n })\n }\n\n // Подписка на сообщения от других вкладок\n return channel.subscribe(async (message) => {\n const { type, payload } = message\n\n if (storageType === 'memory') {\n // Для MemoryStorage обновляем данные и уведомляем подписчиков\n await handleMemoryStorageMessage(api, type, payload)\n } else {\n // Для LocalStorage и IndexedDB только уведомляем подписчиков\n await handlePersistentStorageMessage(api, type, payload)\n }\n })\n },\n\n reducer: (api: MiddlewareAPI) => (next: NextFunction) => async (action: StorageAction) => {\n const result = await next(action)\n\n // Отправляем сообщение другим вкладкам для всех типов операций\n // Текущая вкладка уже получила уведомления через обычный flow BaseStorage\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","handleMemoryStorageMessage","api","type","payload","undefined","Array","key","value","handlePersistentStorageMessage","currentValue","broadcastMiddleware","props","storageName","storageType","channelName","channel","state","updates","Object","action","Date","validUpdates","update","error","message","next","result"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export { broadcastMiddleware } from './broadcast.middleware';
2
+ export type { BatchingMiddlewareOptions } from './storage-batching.middleware';
3
+ export type { ShallowCompareMiddlewareOptions } from './storage-shallow-compare.middleware';
4
+ export { syncBroadcastMiddleware } from './sync-broadcast.middleware';
5
+ export type { SyncBatchingMiddlewareOptions } from './sync-storage-batching.middleware';
6
+ export { syncBatchingMiddleware } from './sync-storage-batching.middleware';
7
+ export type { SyncShallowCompareMiddlewareOptions } from './sync-storage-shallow-compare.middleware';
8
+ export { syncShallowCompareMiddleware } from './sync-storage-shallow-compare.middleware';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/storage/middlewares/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAC9E,YAAY,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAA;AAG3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,YAAY,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAA;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAC3E,YAAY,EAAE,mCAAmC,EAAE,MAAM,2CAA2C,CAAA;AACpG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAA"}
@@ -0,0 +1,17 @@
1
+
2
+
3
+
4
+
5
+ // Async middlewares (existing)
6
+
7
+ // Sync middlewares
8
+
9
+
10
+
11
+
12
+ export { broadcastMiddleware } from "./broadcast.middleware.js";
13
+ export { syncBroadcastMiddleware } from "./sync-broadcast.middleware.js";
14
+ export { syncBatchingMiddleware } from "./sync-storage-batching.middleware.js";
15
+ export { syncShallowCompareMiddleware } from "./sync-storage-shallow-compare.middleware.js";
16
+
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core/storage/middlewares/index.js","sources":["../../../../src/core/storage/middlewares/index.ts"],"sourcesContent":["// Async middlewares (existing)\nexport { broadcastMiddleware } from './broadcast.middleware'\nexport type { BatchingMiddlewareOptions } from './storage-batching.middleware'\nexport type { ShallowCompareMiddlewareOptions } from './storage-shallow-compare.middleware'\n\n// Sync middlewares\nexport { syncBroadcastMiddleware } from './sync-broadcast.middleware'\nexport type { SyncBatchingMiddlewareOptions } from './sync-storage-batching.middleware'\nexport { syncBatchingMiddleware } from './sync-storage-batching.middleware'\nexport type { SyncShallowCompareMiddlewareOptions } from './sync-storage-shallow-compare.middleware'\nexport { syncShallowCompareMiddleware } from './sync-storage-shallow-compare.middleware'\n"],"names":["broadcastMiddleware","syncBroadcastMiddleware","syncBatchingMiddleware","syncShallowCompareMiddleware"],"mappings":";;;;AAAA,+BAA+B;AAC6B;AAI5D,mBAAmB;AACkD;AAEM;AAEa"}
@@ -0,0 +1,7 @@
1
+ import { Middleware } from '../utils/middleware-module';
2
+ export interface BatchingMiddlewareOptions {
3
+ batchSize?: number;
4
+ batchDelay?: number;
5
+ }
6
+ export declare const batchingMiddleware: (options?: BatchingMiddlewareOptions) => Middleware;
7
+ //# sourceMappingURL=storage-batching.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-batching.middleware.d.ts","sourceRoot":"","sources":["../../../../src/core/storage/middlewares/storage-batching.middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAA8C,MAAM,4BAA4B,CAAA;AAEnG,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AASD,eAAO,MAAM,kBAAkB,GAAI,UAAS,yBAA8B,KAAG,UA0H5E,CAAA"}
@@ -0,0 +1,108 @@
1
+ // storage-batching.middleware.ts - ИСПРАВЛЕННАЯ ВЕРСИЯ
2
+ const batchingMiddleware = (options = {})=>{
3
+ const batchSize = options.batchSize ?? 10;
4
+ const batchDelay = options.batchDelay ?? 10 // Уменьшил для более быстрого батчинга
5
+ ;
6
+ const queues = new Map();
7
+ const timeouts = new Map();
8
+ const shouldBatch = (action)=>{
9
+ return action.type === 'set' || action.type === 'update';
10
+ };
11
+ const getSegmentKey = (action)=>{
12
+ return `${action.type}_${action.key?.toString() || 'default'}`;
13
+ };
14
+ const mergeActions = (actions)=>{
15
+ const merged = new Map();
16
+ // Группируем по ключу и оставляем только последнее значение
17
+ for (const action of actions){
18
+ const key = `${action.type}_${action.key?.toString() || 'default'}`;
19
+ merged.set(key, action); // Последнее действие перезаписывает предыдущие
20
+ }
21
+ return Array.from(merged.values());
22
+ };
23
+ const clearTimeout = (segment)=>{
24
+ const timeout = timeouts.get(segment);
25
+ if (timeout) {
26
+ globalThis.clearTimeout(timeout);
27
+ timeouts.delete(segment);
28
+ }
29
+ };
30
+ const setTimeout = (segment, callback)=>{
31
+ const timeout = globalThis.setTimeout(callback, batchDelay);
32
+ timeouts.set(segment, timeout);
33
+ };
34
+ const processBatch = async (segment, api, next)=>{
35
+ const queue = queues.get(segment);
36
+ if (!queue || queue.length === 0) return;
37
+ // Очищаем очередь и таймер
38
+ queues.delete(segment);
39
+ clearTimeout(segment);
40
+ try {
41
+ // Объединяем действия
42
+ const actions = queue.map((item)=>item.action);
43
+ const mergedActions = mergeActions(actions);
44
+ // Выполняем только merged actions
45
+ for (const mergedAction of mergedActions){
46
+ try {
47
+ // Выполняем merged действие
48
+ const result = await next(mergedAction);
49
+ // Находим все queue items, которые соответствуют этому merged action
50
+ const matchingItems = queue.filter((item)=>item.action.type === mergedAction.type && item.action.key?.toString() === mergedAction.key?.toString());
51
+ // Все соответствующие items получают результат merged операции
52
+ matchingItems.forEach((item)=>item.resolve(result));
53
+ } catch (error) {
54
+ // В случае ошибки отклоняем соответствующие промисы
55
+ const matchingItems = queue.filter((item)=>item.action.type === mergedAction.type && item.action.key?.toString() === mergedAction.key?.toString());
56
+ matchingItems.forEach((item)=>item.reject(error));
57
+ }
58
+ }
59
+ } catch (error) {
60
+ // В случае общей ошибки отклоняем все промисы
61
+ queue.forEach((item)=>item.reject(error));
62
+ }
63
+ };
64
+ const addToQueue = async (action, api, next)=>{
65
+ return new Promise((resolve, reject)=>{
66
+ const segment = getSegmentKey(action);
67
+ let queue = queues.get(segment);
68
+ if (!queue) {
69
+ queue = [];
70
+ queues.set(segment, queue);
71
+ }
72
+ queue.push({
73
+ action,
74
+ resolve,
75
+ reject,
76
+ timestamp: Date.now()
77
+ });
78
+ clearTimeout(segment);
79
+ if (queue.length >= batchSize) {
80
+ // Немедленно обрабатываем батч
81
+ queueMicrotask(()=>processBatch(segment, api, next));
82
+ } else {
83
+ // Устанавливаем таймер
84
+ setTimeout(segment, ()=>processBatch(segment, api, next));
85
+ }
86
+ });
87
+ };
88
+ return {
89
+ name: 'batching',
90
+ setup: ()=>{},
91
+ cleanup: async ()=>{
92
+ // Очищаем таймеры
93
+ timeouts.forEach((timeout)=>globalThis.clearTimeout(timeout));
94
+ timeouts.clear();
95
+ queues.clear();
96
+ },
97
+ reducer: (api)=>(next)=>async (action)=>{
98
+ if (!shouldBatch(action)) {
99
+ return next(action);
100
+ }
101
+ return addToQueue(action, api, next);
102
+ }
103
+ };
104
+ };
105
+
106
+ export { batchingMiddleware };
107
+
108
+ //# sourceMappingURL=storage-batching.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core/storage/middlewares/storage-batching.middleware.js","sources":["../../../../src/core/storage/middlewares/storage-batching.middleware.ts"],"sourcesContent":["// storage-batching.middleware.ts - ИСПРАВЛЕННАЯ ВЕРСИЯ\nimport { Middleware, MiddlewareAPI, NextFunction, StorageAction } from '../utils/middleware-module'\n\nexport interface BatchingMiddlewareOptions {\n batchSize?: number\n batchDelay?: number\n}\n\ninterface BatchItem {\n action: StorageAction\n resolve: (value: any) => void\n reject: (error: any) => void\n timestamp: number\n}\n\nexport const batchingMiddleware = (options: BatchingMiddlewareOptions = {}): Middleware => {\n const batchSize = options.batchSize ?? 10\n const batchDelay = options.batchDelay ?? 10 // Уменьшил для более быстрого батчинга\n\n const queues = new Map<string, BatchItem[]>()\n const timeouts = new Map<string, NodeJS.Timeout>()\n\n const shouldBatch = (action: StorageAction): boolean => {\n return action.type === 'set' || action.type === 'update'\n }\n\n const getSegmentKey = (action: StorageAction): string => {\n return `${action.type}_${action.key?.toString() || 'default'}`\n }\n\n const mergeActions = (actions: StorageAction[]): StorageAction[] => {\n const merged = new Map<string, StorageAction>()\n\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 clearTimeout = (segment: string): void => {\n const timeout = timeouts.get(segment)\n if (timeout) {\n globalThis.clearTimeout(timeout)\n timeouts.delete(segment)\n }\n }\n\n const setTimeout = (segment: string, callback: () => void): void => {\n const timeout = globalThis.setTimeout(callback, batchDelay)\n timeouts.set(segment, timeout)\n }\n\n const processBatch = async (segment: string, api: MiddlewareAPI, next: NextFunction): Promise<void> => {\n const queue = queues.get(segment)\n if (!queue || queue.length === 0) return\n\n // Очищаем очередь и таймер\n queues.delete(segment)\n clearTimeout(segment)\n\n try {\n // Объединяем действия\n const actions = queue.map((item) => item.action)\n const mergedActions = mergeActions(actions)\n\n // Выполняем только merged actions\n for (const mergedAction of mergedActions) {\n try {\n // Выполняем merged действие\n const result = await next(mergedAction)\n\n // Находим все queue items, которые соответствуют этому merged action\n const matchingItems = queue.filter((item) => item.action.type === mergedAction.type && item.action.key?.toString() === mergedAction.key?.toString())\n\n // Все соответствующие items получают результат merged операции\n matchingItems.forEach((item) => item.resolve(result))\n } catch (error) {\n // В случае ошибки отклоняем соответствующие промисы\n const matchingItems = queue.filter((item) => item.action.type === mergedAction.type && item.action.key?.toString() === mergedAction.key?.toString())\n matchingItems.forEach((item) => item.reject(error))\n }\n }\n } catch (error) {\n // В случае общей ошибки отклоняем все промисы\n queue.forEach((item) => item.reject(error))\n }\n }\n\n const addToQueue = async (action: StorageAction, api: MiddlewareAPI, next: NextFunction): Promise<any> => {\n return new Promise((resolve, reject) => {\n const segment = getSegmentKey(action)\n\n let queue = queues.get(segment)\n if (!queue) {\n queue = []\n queues.set(segment, queue)\n }\n\n queue.push({\n action,\n resolve,\n reject,\n timestamp: Date.now(),\n })\n\n clearTimeout(segment)\n\n if (queue.length >= batchSize) {\n // Немедленно обрабатываем батч\n queueMicrotask(() => processBatch(segment, api, next))\n } else {\n // Устанавливаем таймер\n setTimeout(segment, () => processBatch(segment, api, next))\n }\n })\n }\n\n return {\n name: 'batching',\n setup: () => {},\n cleanup: async () => {\n // Очищаем таймеры\n timeouts.forEach((timeout) => globalThis.clearTimeout(timeout))\n timeouts.clear()\n queues.clear()\n },\n reducer: (api: MiddlewareAPI) => (next: NextFunction) => async (action: StorageAction) => {\n if (!shouldBatch(action)) {\n return next(action)\n }\n\n return addToQueue(action, api, next)\n },\n }\n}\n"],"names":["batchingMiddleware","options","batchSize","batchDelay","queues","Map","timeouts","shouldBatch","action","getSegmentKey","mergeActions","actions","merged","key","Array","clearTimeout","segment","timeout","globalThis","setTimeout","callback","processBatch","api","next","queue","item","mergedActions","mergedAction","result","matchingItems","error","addToQueue","Promise","resolve","reject","Date","queueMicrotask"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Middleware } from '../utils/middleware-module';
2
+ export interface ShallowCompareMiddlewareOptions {
3
+ segments?: string[];
4
+ comparator?: <T>(prev: T, next: T) => boolean;
5
+ }
6
+ export declare const shallowCompareMiddleware: (options?: ShallowCompareMiddlewareOptions) => Middleware;
7
+ //# sourceMappingURL=storage-shallow-compare.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-shallow-compare.middleware.d.ts","sourceRoot":"","sources":["../../../../src/core/storage/middlewares/storage-shallow-compare.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiE,MAAM,4BAA4B,CAAA;AAGtH,MAAM,WAAW,+BAA+B;IAC9C,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,wBAAwB,GAAI,UAAS,+BAAoC,KAAG,UA8CxF,CAAA"}
@@ -0,0 +1,43 @@
1
+ import { VALUE_NOT_CHANGED } from "../utils/middleware-module.js";
2
+
3
+
4
+
5
+ const shallowCompareMiddleware = (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
+ // Кэш последних значений
17
+ const valueCache = new Map();
18
+ return {
19
+ name: 'shallow-compare',
20
+ setup: (api)=>{},
21
+ reducer: (api)=>(next)=>async (action)=>{
22
+ // Пропускаем действия кроме set
23
+ if (action.type !== 'set' || segments.length && !segments.includes(action.metadata?.segment ?? 'default')) {
24
+ return next(action);
25
+ }
26
+ const cacheKey = action.key;
27
+ const prevValue = valueCache.get(cacheKey);
28
+ const nextValue = action.value;
29
+ // Если значения равны, возвращаем sentinel — не модифицируем значение
30
+ if (prevValue !== undefined && comparator(prevValue, nextValue)) {
31
+ return VALUE_NOT_CHANGED;
32
+ }
33
+ // Иначе обновляем кэш и продолжаем
34
+ const result = await next(action);
35
+ valueCache.set(cacheKey, result !== undefined ? result : nextValue);
36
+ return result;
37
+ }
38
+ };
39
+ };
40
+
41
+ export { shallowCompareMiddleware };
42
+
43
+ //# sourceMappingURL=storage-shallow-compare.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core/storage/middlewares/storage-shallow-compare.middleware.js","sources":["../../../../src/core/storage/middlewares/storage-shallow-compare.middleware.ts"],"sourcesContent":["import { Middleware, MiddlewareAPI, NextFunction, StorageAction, VALUE_NOT_CHANGED } from '../utils/middleware-module'\nimport { StorageKeyType } from '../utils/storage-key'\n\nexport interface ShallowCompareMiddlewareOptions {\n segments?: string[]\n comparator?: <T>(prev: T, next: T) => boolean\n}\n\nexport const shallowCompareMiddleware = (options: ShallowCompareMiddlewareOptions = {}): Middleware => {\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 // Кэш последних значений\n const valueCache = new Map<StorageKeyType, any>()\n\n return {\n name: 'shallow-compare',\n setup: (api: MiddlewareAPI) => {},\n reducer: (api: MiddlewareAPI) => (next: NextFunction) => async (action: StorageAction) => {\n // Пропускаем действия кроме set\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 // Если значения равны, возвращаем sentinel — не модифицируем значение\n if (prevValue !== undefined && comparator(prevValue, nextValue)) {\n return VALUE_NOT_CHANGED\n }\n\n // Иначе обновляем кэш и продолжаем\n const result = await next(action)\n valueCache.set(cacheKey, result !== undefined ? result : nextValue)\n return result\n },\n }\n}\n"],"names":["VALUE_NOT_CHANGED","shallowCompareMiddleware","options","comparator","prev","next","keysA","Object","keysB","key","segments","valueCache","Map","api","action","cacheKey","prevValue","nextValue","undefined","result"],"mappings":";;;AAAsH;AAQ/G,MAAMC,wBAAwBA,GAAG,CAACC,UAA2C,CAAC,CAAC;IACpF,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,yBAAyB;IACzB,MAAMS,aAAa,IAAIC;IAEvB,OAAO;QACL,MAAM;QACN,OAAO,CAACC,OAAwB;QAChC,SAAS,CAACA,MAAuB,CAACR,OAAuB,OAAOS;oBAC9D,gCAAgC;oBAChC,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,sEAAsE;oBACtE,IAAIE,cAAcE,aAAaf,WAAWa,WAAWC,YAAY;wBAC/D,OAAOjB,iBAAiBA;oBAC1B;oBAEA,mCAAmC;oBACnC,MAAMmB,SAAS,MAAMd,KAAKS;oBAC1BH,WAAW,GAAG,CAACI,UAAUI,WAAWD,YAAYC,SAASF;oBACzD,OAAOE;gBACT;IACF;AACF,EAAC"}
@@ -0,0 +1,9 @@
1
+ import { StorageType } from '../storage.interface';
2
+ import { SyncMiddleware } from '../utils/middleware-module';
3
+ interface SyncSharedStateMiddlewareProps {
4
+ storageType: StorageType;
5
+ storageName: string;
6
+ }
7
+ export declare const syncBroadcastMiddleware: (props: SyncSharedStateMiddlewareProps) => SyncMiddleware;
8
+ export {};
9
+ //# sourceMappingURL=sync-broadcast.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-broadcast.middleware.d.ts","sourceRoot":"","sources":["../../../../src/core/storage/middlewares/sync-broadcast.middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEjE,OAAO,EAAiB,cAAc,EAAuC,MAAM,4BAA4B,CAAA;AAE/G,UAAU,8BAA8B;IACtC,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AA+FD,eAAO,MAAM,uBAAuB,GAAI,OAAO,8BAA8B,KAAG,cA0F/E,CAAA"}