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
@@ -1,97 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { I as ISelectorModule } from './selector.interface-CA5y-kD_.js';
3
- import { j as IStorage } from './storage.interface-2HKvqdAJ.js';
4
- import { l as ExternalStates, n as Effect } from './dispatcher.module-DcXkCRNj.js';
5
-
6
- type ExtractDispatchType<T> = T extends {
7
- dispatch: infer D;
8
- } ? D : never;
9
- type StorageCreatorFunction<T extends Record<string, any>> = () => Promise<IStorage<T>>;
10
- type SynapseDependency = {
11
- storage: IStorage<any>;
12
- [key: string]: any;
13
- };
14
- /**
15
- * Базовая конфигурация хранилища
16
- */
17
- type BaseSynapseConfig<TStore extends Record<string, any>, TSelectors = any, TExternalSelectors extends Record<string, any> = Record<string, any>> = ({
18
- storage: IStorage<TStore>;
19
- createStorageFn?: undefined;
20
- } | {
21
- storage?: undefined;
22
- createStorageFn: StorageCreatorFunction<TStore>;
23
- }) & {
24
- dependencies?: SynapseDependency[];
25
- externalSelectors?: TExternalSelectors;
26
- createSelectorsFn?: (selectorModule: ISelectorModule<TStore>, externalSelectors: TExternalSelectors) => TSelectors;
27
- };
28
- /**
29
- * Конфигурация с dispatcher и effects
30
- */
31
- type CreateSynapseConfigWithEffects<TStore extends Record<string, any>, TSelectors = any, TDispatcher = any, TApi extends Record<string, any> = Record<string, never>, TConfig extends Record<string, any> = Record<string, never>, TExternalSelectors extends Record<string, any> = Record<string, any>> = BaseSynapseConfig<TStore, TSelectors, TExternalSelectors> & {
32
- createDispatcherFn: (storage: IStorage<TStore>) => TDispatcher;
33
- createEffectConfig: (dispatcher: TDispatcher) => {
34
- dispatchers: Record<string, any>;
35
- api?: TApi;
36
- config?: TConfig;
37
- externalStates?: ExternalStates;
38
- };
39
- effects?: Effect<TStore, any, TApi, TConfig, any>[];
40
- };
41
- /**
42
- * Конфигурация только с dispatcher
43
- */
44
- type CreateSynapseConfigWithDispatcher<TStore extends Record<string, any>, TSelectors = any, TDispatcher = any, TExternalSelectors extends Record<string, any> = Record<string, any>> = BaseSynapseConfig<TStore, TSelectors, TExternalSelectors> & {
45
- createDispatcherFn: (storage: IStorage<TStore>) => TDispatcher;
46
- createEffectConfig?: never;
47
- effects?: never;
48
- };
49
- /**
50
- * Конфигурация без dispatcher
51
- */
52
- type CreateSynapseConfigBasic<TStore extends Record<string, any>, TSelectors = any, TExternalSelectors extends Record<string, any> = Record<string, any>> = BaseSynapseConfig<TStore, TSelectors, TExternalSelectors> & {
53
- createDispatcherFn?: never;
54
- createEffectConfig?: never;
55
- effects?: never;
56
- };
57
- /**
58
- * Результат с dispatcher и effects
59
- */
60
- interface SynapseStoreWithEffects<TStore extends Record<string, any>, TStorage extends IStorage<TStore>, TSelectors, TActions> {
61
- storage: TStorage;
62
- selectors: TSelectors;
63
- actions: TActions;
64
- state$: Observable<TStore>;
65
- dispatcher: any;
66
- destroy: () => Promise<void>;
67
- }
68
- /**
69
- * Результат только с dispatcher
70
- */
71
- interface SynapseStoreWithDispatcher<TStore extends Record<string, any>, TStorage extends IStorage<TStore>, TSelectors, TActions> {
72
- storage: TStorage;
73
- selectors: TSelectors;
74
- actions: TActions;
75
- dispatcher: any;
76
- destroy: () => Promise<void>;
77
- }
78
- /**
79
- * Результат без dispatcher
80
- */
81
- interface SynapseStoreBasic<TStore extends Record<string, any>, TStorage extends IStorage<TStore>, TSelectors> {
82
- storage: TStorage;
83
- selectors: TSelectors;
84
- destroy: () => Promise<void>;
85
- }
86
- /**
87
- * Union-тип для всех возможных результатов createSynapse
88
- */
89
- type AnySynapseStore<TStore extends Record<string, any> = any, TStorage extends IStorage<TStore> = IStorage<any>, TSelectors = any, TActions = any> = SynapseStoreWithEffects<TStore, TStorage, TSelectors, TActions> | SynapseStoreWithDispatcher<TStore, TStorage, TSelectors, TActions> | SynapseStoreBasic<TStore, TStorage, TSelectors>;
90
- /**
91
- * Перегрузки функции createSynapse
92
- */
93
- declare function createSynapse<TStore extends Record<string, any>, TSelectors = any, TDispatcher = any, TApi extends Record<string, any> = Record<string, never>, TConfig extends Record<string, any> = Record<string, never>, TExternalSelectors extends Record<string, any> = Record<string, any>, TStorage extends IStorage<TStore> = IStorage<TStore>>(config: CreateSynapseConfigWithEffects<TStore, TSelectors, TDispatcher, TApi, TConfig, TExternalSelectors>): Promise<SynapseStoreWithEffects<TStore, TStorage, TSelectors, ExtractDispatchType<TDispatcher>>>;
94
- declare function createSynapse<TStore extends Record<string, any>, TSelectors = any, TDispatcher = any, TExternalSelectors extends Record<string, any> = Record<string, any>, TStorage extends IStorage<TStore> = IStorage<TStore>>(config: CreateSynapseConfigWithDispatcher<TStore, TSelectors, TDispatcher, TExternalSelectors>): Promise<SynapseStoreWithDispatcher<TStore, TStorage, TSelectors, ExtractDispatchType<TDispatcher>>>;
95
- declare function createSynapse<TStore extends Record<string, any>, TSelectors = any, TExternalSelectors extends Record<string, any> = Record<string, any>, TStorage extends IStorage<TStore> = IStorage<TStore>>(config: CreateSynapseConfigBasic<TStore, TSelectors, TExternalSelectors>): Promise<SynapseStoreBasic<TStore, TStorage, TSelectors>>;
96
-
97
- export { type AnySynapseStore as A, type SynapseStoreBasic as S, type SynapseStoreWithDispatcher as a, type SynapseStoreWithEffects as b, createSynapse as c };
@@ -1,360 +0,0 @@
1
- import { Observable, OperatorFunction } from 'rxjs';
2
- import { j as IStorage } from './storage.interface-2HKvqdAJ.js';
3
-
4
- /**
5
- * Разбиение запроса на порции
6
- * Отправляется ПОСЛЕДОВАТЕЛЬНО n-запросов и дожидается ответа от каждого
7
- * @param fn - функция в которую передается chunk и возвращается функция api
8
- * @param arr - массив который нужно поделить
9
- * @param size - размер порции
10
- * @param delayMs - задержка между запросами в миллисекундах
11
- */
12
- declare const chunkRequestConsistent: <T, R>(fn: (chunk: T[]) => Observable<R>, arr: T[], size: number, delayMs?: number) => Observable<R[]>;
13
- type ChunkRequestConsistent = typeof chunkRequestConsistent;
14
-
15
- /**
16
- * Разбиение запроса на порции
17
- * Отправляется ПАРАЛЛЕЛЬНО n-запросов и дожидается ответа от каждого
18
- * @param fn - функция в которую передается chunk и возвращается функция api
19
- * @param arr - массив который нужно поделить
20
- * @param size - размер порции
21
- * @param delayMs - задержка между запросами в миллисекундах
22
- */
23
- declare const chunkRequestParallel: <T, R>(fn: (chunk: T[]) => Observable<R>, arr: T[], size: number, delayMs?: number) => Observable<R[]>;
24
- type ChunkRequestParallel = typeof chunkRequestParallel;
25
-
26
- /**
27
- * Тип действия с типизированным payload
28
- */
29
- interface TypedAction<P> extends Action<P> {
30
- type: string;
31
- payload: P;
32
- }
33
- /**
34
- * Тип для внешних состояний
35
- */
36
- type ExternalStates = Record<string, Observable<any>>;
37
- /**
38
- * Тип для базового эффекта без доступа к состоянию
39
- */
40
- type EffectBase<TDispatchers extends Record<string, Dispatcher<any, any>> = Record<string, never>, TServices extends Record<string, any> = Record<string, never>> = (action$: Observable<Action>, dispatchers: TDispatchers, services: TServices) => Observable<unknown>;
41
- /**
42
- * Тип для эффекта с доступом к состоянию и конфигурации - это основной тип, который используется по умолчанию
43
- */
44
- type Effect<TState extends Record<string, any> = any, TDispatchers extends Record<string, Dispatcher<any, any>> = Record<string, never>, TServices extends Record<string, any> = Record<string, never>, TConfig extends Record<string, any> = Record<string, never>, TExternalStates extends ExternalStates = Record<string, never>> = (action$: Observable<Action>, state$: Observable<TState>, externalStates: TExternalStates, dispatchers: TDispatchers, services: TServices, config: TConfig) => Observable<unknown>;
45
- /**
46
- * Тип для получения типов действий диспетчера
47
- */
48
- type DispatcherActions<T> = T extends Dispatcher<any, infer A> ? ActionsResult<A> : Record<string, DispatchFunction<any, any>>;
49
- /**
50
- * Конфигурация для валидации в validateMap
51
- */
52
- interface ValidateConfig {
53
- conditions: boolean[];
54
- skipAction: (() => any) | any | ((() => any) | any)[];
55
- }
56
- /**
57
- * Утилиты для запросов в validateMap
58
- */
59
- interface ValidateMapRequestUtils {
60
- chunkRequest: ChunkRequestParallel;
61
- chunkRequestConsistent: ChunkRequestConsistent;
62
- }
63
- /**
64
- * Оператор для фильтрации действий по типу с сохранением типа payload
65
- */
66
- declare function ofType<T extends DispatchFunction<any, any> | WatcherFunction<any>>(actionFn: T): OperatorFunction<Action, TypedAction<T extends WatcherFunction<infer R> ? R : ExtractResultType<T>>>;
67
- /**
68
- * Оператор для фильтрации действий по нескольким типам с объединением типов payload
69
- * @param actionFns Массив функций действий
70
- */
71
- declare function ofTypes<T extends DispatchFunction<any, any>[]>(actionFns: [...T]): OperatorFunction<Action, TypedAction<ExtractResultType<T[number]>>>;
72
- /**
73
- * Оператор для ожидания выполнения всех указанных действий
74
- * @param actionFns Массив функций действий
75
- */
76
- declare function ofTypesWaitAll<T extends DispatchFunction<any, any>[]>(actionFns: [...T]): (source$: Observable<Action>) => Observable<{ [K in keyof T]: TypedAction<ExtractResultType<T[K]>>; }>;
77
- /**
78
- * Создает Observable с выбранными данными из состояния
79
- * @param state$ Поток состояния
80
- * @param selectors Селекторы для выбора частей состояния
81
- * @returns Observable с массивом выбранных значений
82
- */
83
- declare function selectorMap<TState, TResults extends any[]>(state$: Observable<TState>, ...selectors: {
84
- [K in keyof TResults]: (state: TState) => TResults[K];
85
- }): Observable<TResults>;
86
- /**
87
- * Создает именованный объект вместо массива
88
- * @param state$ Поток состояния
89
- * @param selectors Объект с селекторами
90
- * @returns Observable с объектом выбранных значений
91
- */
92
- declare function selectorObject<TState, TResult extends Record<string, any>>(state$: Observable<TState>, selectors: {
93
- [K in keyof TResult]: (state: TState) => TResult[K];
94
- }): Observable<TResult>;
95
- /**
96
- * Оператор validateMap для валидации данных и условного вызова API
97
- */
98
- declare function validateMap<T, TResult = any>({ validator, apiCall, }: {
99
- validator?: (value: T) => ValidateConfig;
100
- apiCall: (value: T, utils: ValidateMapRequestUtils) => Observable<TResult>;
101
- }): OperatorFunction<T, any>;
102
- /**
103
- * Класс для управления эффектами с поддержкой доступа к состоянию и конфигурации
104
- * Основной класс, который следует использовать
105
- */
106
- declare class EffectsModule<TState extends Record<string, any> = any, TDispatchers extends Record<string, Dispatcher<any, any>> = Record<string, never>, TServices extends Record<string, any> = Record<string, never>, TConfig extends Record<string, any> = Record<string, never>, TExternalStates extends ExternalStates = Record<string, never>> {
107
- private storage;
108
- private externalStates;
109
- private dispatchers;
110
- private services;
111
- private config;
112
- private effects;
113
- private subscriptions;
114
- private running;
115
- private action$;
116
- /**
117
- * Поток состояния
118
- */
119
- readonly state$: Observable<TState>;
120
- /**
121
- * Создает модуль эффектов с доступом к состоянию, внешним состояниям и конфигурации
122
- * @param storage Хранилище состояния
123
- * @param externalStates Внешние состояния
124
- * @param dispatchers Объект с диспетчерами
125
- * @param services Объект с сервисами
126
- * @param config Глобальная конфигурация для всех эффектов
127
- */
128
- constructor(storage: IStorage<TState>, externalStates: TExternalStates | undefined, dispatchers: TDispatchers, services?: TServices, config?: TConfig);
129
- /**
130
- * Подписывается на действия от всех диспетчеров
131
- */
132
- private subscribeToDispatchers;
133
- add(effect: Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>): this;
134
- /**
135
- * Добавляет несколько эффектов
136
- * @param effects Эффекты для добавления
137
- * @returns Текущий модуль
138
- */
139
- addEffects(effects: Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>[]): this;
140
- /**
141
- * Запускает все эффекты
142
- * @returns Текущий модуль
143
- */
144
- start(): Promise<this>;
145
- /**
146
- * Останавливает все эффекты
147
- * @returns Текущий модуль
148
- */
149
- stop(): this;
150
- /**
151
- * Подписывается на конкретный эффект
152
- * @param effect Эффект для подписки
153
- */
154
- private subscribeToEffect;
155
- }
156
- /**
157
- * Вспомогательная функция для создания типизированного эффекта без состояния
158
- * @deprecated Используйте createEffect вместо этого
159
- */
160
- declare function createEffectBase<TDispatchers extends Record<string, Dispatcher<any, any>>, TServices extends Record<string, any>>(effect: EffectBase<TDispatchers, TServices>): EffectBase<TDispatchers, TServices>;
161
- /**
162
- * Вспомогательная функция для создания типизированного эффекта с состоянием и конфигурацией
163
- */
164
- declare function createEffect<TState extends Record<string, any>, TDispatchers extends Record<string, Dispatcher<any, any>>, TServices extends Record<string, any>, TConfig extends Record<string, any> = Record<string, never>, TExternalStates extends ExternalStates = Record<string, never>>(effect: Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>): Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>;
165
- /**
166
- * Объединяет несколько эффектов в один
167
- * @param effects Эффекты для объединения
168
- * @returns Объединенный эффект
169
- */
170
- declare function combineEffects<TState extends Record<string, any>, TDispatchers extends Record<string, Dispatcher<any, any>>, TServices extends Record<string, any>, TConfig extends Record<string, any> = Record<string, never>, TExternalStates extends ExternalStates = Record<string, never>>(...effects: Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>[]): Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>;
171
-
172
- /**
173
- * Расширенное API для middleware
174
- */
175
- interface EnhancedMiddlewareAPI<T extends Record<string, any>> {
176
- getState: () => Promise<T>;
177
- dispatch: (action: Action) => Promise<any>;
178
- storage: IStorage<T>;
179
- actions$: Observable<Action>;
180
- actions: Record<string, DispatchFunction<any, any>>;
181
- watchers: Record<string, WatcherFunction<any>>;
182
- findActionByType: (actionType: string) => DispatchFunction<any, any> | undefined;
183
- findWatcherByType: (actionType: string) => WatcherFunction<any> | undefined;
184
- }
185
- /**
186
- * Расширенное определение middleware
187
- */
188
- interface EnhancedMiddleware<T extends Record<string, any> = any> {
189
- (api: EnhancedMiddlewareAPI<T>): (next: (action: Action) => Promise<any>) => (action: Action) => Promise<any>;
190
- }
191
- /**
192
- * Базовая структура действия
193
- */
194
- interface Action<T = unknown> {
195
- type: string;
196
- payload?: T;
197
- meta?: Record<string, any>;
198
- }
199
- interface ActionExecutionOptions<TParams, TResult> {
200
- worker?: Worker;
201
- memoize?: (currentArgs: TParams, previousArgs: TParams, previousResult: TResult) => boolean;
202
- }
203
- /**
204
- * Параметры для создания действия
205
- */
206
- interface ActionDefinition<TParams, TResult> {
207
- /** Тип действия для идентификации в потоке и эффектах */
208
- type: string;
209
- /** Функция, выполняющая действие и возвращающая результат (payload) */
210
- action: (params: TParams) => Promise<TResult> | TResult;
211
- /** Дополнительные метаданные (опционально) */
212
- meta?: Record<string, any>;
213
- }
214
- /**
215
- * Определение типа для watcher'а
216
- */
217
- interface WatcherDefinition<T, R> {
218
- type: string;
219
- selector: (state: T) => R;
220
- meta?: Record<string, any>;
221
- shouldTrigger?: (prev: R | undefined, current: R) => boolean;
222
- notifyAfterSubscribe?: boolean;
223
- }
224
- /**
225
- * Тип для функции watcher
226
- */
227
- interface WatcherFunction<R> {
228
- (): Observable<TypedAction<R>>;
229
- actionType: string;
230
- meta?: Record<string, any>;
231
- unsubscribe: VoidFunction;
232
- }
233
- /**
234
- * Расширенный тип для функции настройки действий с поддержкой дополнительных утилит
235
- */
236
- type ActionsSetupWithUtils<T extends Record<string, unknown>> = (storage: IStorage<T>, utils: {
237
- createAction: ActionCreatorFactory;
238
- createWatcher: <R>(config: WatcherDefinition<T, R>) => WatcherFunction<R>;
239
- }) => Record<string, DispatchFunction<any, any> | WatcherFunction<any>>;
240
- /**
241
- * Расширенная функция диспетчеризации
242
- */
243
- interface DispatchFunction<TParams, TResult> {
244
- /** Функция для вызова действия с параметрами */
245
- (params: TParams): Promise<TResult>;
246
- /** Тип действия для использования в эффектах */
247
- actionType: string;
248
- /** Метаданные действия */
249
- meta?: Record<string, any>;
250
- /** Внутренний тип для идентификации */
251
- _type?: 'dispatch' | 'watchers';
252
- }
253
- /**
254
- * Тип для фабрики создателей действий
255
- */
256
- type ActionCreatorFactory = <TParams, TResult>(config: ActionDefinition<TParams, TResult>, executionOptions?: ActionExecutionOptions<TParams[], TResult>) => DispatchFunction<TParams, TResult>;
257
- /**
258
- * Извлекает тип результата из функции диспетчера
259
- */
260
- type ExtractResultType<T> = T extends DispatchFunction<any, infer R> ? R : never;
261
- /**
262
- * Извлекает типы из функции настройки действий
263
- */
264
- type ActionsResult<F> = F extends (create: ActionCreatorFactory, storage: any, ...args: any[]) => infer R ? R : Record<string, DispatchFunction<any, any>>;
265
- /**
266
- * Типизированный объект действий
267
- */
268
- type DispatchActions<T> = {
269
- [K in keyof T]: T[K] extends DispatchFunction<any, any> ? T[K] : never;
270
- };
271
- /**
272
- * Типизированный объект watchers
273
- */
274
- type WatcherActions<T> = {
275
- [K in keyof T]: T[K] extends WatcherFunction<any> ? T[K] : never;
276
- };
277
- /**
278
- * Параметры для Dispatcher
279
- */
280
- interface DispatcherOptions<T extends Record<string, any>> {
281
- storage: IStorage<T>;
282
- worker?: Worker;
283
- middlewares?: EnhancedMiddleware<T>[];
284
- }
285
- /**
286
- * Интерфейс для API middleware
287
- */
288
- interface DispatcherMiddlewareAPI<T extends Record<string, any>> {
289
- getState: () => Promise<T>;
290
- dispatch: (action: Action) => Promise<any>;
291
- }
292
- /**
293
- * Интерфейс для middleware
294
- */
295
- interface DispatcherMiddleware<T extends Record<string, any> = any> {
296
- (api: DispatcherMiddlewareAPI<T>): (next: (action: Action) => Promise<any>) => (action: Action) => Promise<any>;
297
- }
298
- /**
299
- * Класс Dispatcher для интеграции хранилищ с реактивной системой
300
- */
301
- declare class Dispatcher<T extends Record<string, any>, TActionsFn extends ActionsSetupWithUtils<T> = ActionsSetupWithUtils<T>> {
302
- private options;
303
- private actions$;
304
- readonly actions: Observable<Action>;
305
- dispatch: Record<string, DispatchFunction<any, any>>;
306
- watchers: Record<string, WatcherFunction<any>>;
307
- private storage;
308
- private middlewareFunctions;
309
- private middlewareAPI;
310
- /**
311
- * Создает новый экземпляр Dispatcher
312
- */
313
- constructor(options: DispatcherOptions<T>);
314
- /**
315
- * Добавляет middleware в цепочку обработки
316
- */
317
- use(...middlewares: EnhancedMiddleware<T>[]): this;
318
- /**
319
- * Получает все действия с улучшенной типизацией
320
- */
321
- getActions(): ActionsResult<TActionsFn>;
322
- /**
323
- * Получает типизированные действия диспетчера
324
- */
325
- getTypedDispatch<A extends Record<string, any>>(): DispatchActions<A>;
326
- /**
327
- * Получает типизированные watcher'ы
328
- */
329
- getTypedWatchers<A extends Record<string, any>>(): WatcherActions<A>;
330
- /**
331
- * Находит действие по типу
332
- */
333
- findActionByType(actionType: string): DispatchFunction<any, any> | undefined;
334
- /**
335
- * Находит наблюдатель по типу
336
- */
337
- findWatcherByType(actionType: string): WatcherFunction<any> | undefined;
338
- /**
339
- * Создает действие
340
- */
341
- createAction<TParams, TResult>(actionConfig: ActionDefinition<TParams, TResult>, executionOptions?: ActionExecutionOptions<TParams[], TResult>): DispatchFunction<TParams, TResult>;
342
- /**
343
- * Создает watcher для отслеживания изменений в хранилище
344
- */
345
- createWatcher<R>(config: WatcherDefinition<T, R>): WatcherFunction<R>;
346
- /**
347
- * Выполняет действие в worker
348
- */
349
- private executeInWorker;
350
- }
351
- /**
352
- * Функция для создания типизированного диспетчера
353
- */
354
- declare function createDispatcher<TState extends Record<string, any>, TActions extends ActionsSetupWithUtils<TState>>(options: DispatcherOptions<TState>, actionsSetup: TActions): Dispatcher<TState, TActions> & {
355
- dispatch: DispatchActions<ReturnType<TActions>>;
356
- watchers: WatcherActions<ReturnType<TActions>>;
357
- };
358
- type CreateDispatcherType = ReturnType<typeof createDispatcher>;
359
-
360
- export { type Action as A, type CreateDispatcherType as C, type DispatchFunction as D, type EnhancedMiddlewareAPI as E, type TypedAction as T, type ValidateConfig as V, type WatcherFunction as W, type EnhancedMiddleware as a, type ActionDefinition as b, type ActionsSetupWithUtils as c, type ExtractResultType as d, type ActionsResult as e, type DispatchActions as f, type WatcherActions as g, type DispatcherMiddlewareAPI as h, type DispatcherMiddleware as i, Dispatcher as j, createDispatcher as k, type ExternalStates as l, type EffectBase as m, type Effect as n, type DispatcherActions as o, type ValidateMapRequestUtils as p, ofType as q, ofTypes as r, ofTypesWaitAll as s, selectorMap as t, selectorObject as u, validateMap as v, EffectsModule as w, createEffectBase as x, createEffect as y, combineEffects as z };
package/dist/react.d.ts DELETED
@@ -1,98 +0,0 @@
1
- import { S as SelectorAPI } from './selector.interface-CA5y-kD_.js';
2
- import { j as IStorage } from './storage.interface-2HKvqdAJ.js';
3
- import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import { ReactNode, ComponentType } from 'react';
5
- import { A as AnySynapseStore, b as SynapseStoreWithEffects, a as SynapseStoreWithDispatcher, S as SynapseStoreBasic } from './createSynapse-BLbPlWXK.js';
6
- import { Observable } from 'rxjs';
7
- import './dispatcher.module-DcXkCRNj.js';
8
-
9
- interface UseSelectorOptions<T> {
10
- /** Начальное значение до загрузки данных из селектора */
11
- initialValue?: T;
12
- /** Функция сравнения для предотвращения лишних ререндеров */
13
- equals?: (a: T, b: T) => boolean;
14
- /** Включать ли статус загрузки в возвращаемый результат */
15
- withLoading?: boolean;
16
- }
17
- /**
18
- * Хук для использования селекторов в компонентах React.
19
- * Обеспечивает согласованность значений между всеми экземплярами хука.
20
- */
21
- declare function useSelector<T>(selector: SelectorAPI<T>): T | undefined;
22
- declare function useSelector<T>(selector: SelectorAPI<T>, options: UseSelectorOptions<T> & {
23
- withLoading?: true;
24
- }): {
25
- data: T | undefined;
26
- isLoading: boolean;
27
- };
28
-
29
- /**
30
- * Хук для подписки на изменения в хранилище
31
- *
32
- * @template S - Тип состояния хранилища
33
- * @template R - Тип возвращаемого значения
34
- * @param storage - Экземпляр хранилища
35
- * @param selector - Функция-селектор для выбора данных
36
- * @returns Значение из хранилища
37
- */
38
- declare const useStorageSubscribe: <S extends Record<string, any>, R = any>(storage: IStorage<S>, selector: (state: S) => R) => R | undefined;
39
-
40
- interface ReactAwaitSynapseOptions {
41
- loadingComponent?: ReactNode;
42
- errorComponent?: (error: Error) => ReactNode;
43
- }
44
- /**
45
- * React-обертка для фреймворк-независимой утилиты ожидания Synapse
46
- * Добавляет React-специфичные методы поверх createSynapseAwaiter
47
- */
48
- declare function awaitSynapse<TStore extends Record<string, any>, TStorage extends IStorage<TStore>, TSelectors = any, TActions = any>(synapseStorePromise: Promise<AnySynapseStore<TStore, TStorage, TSelectors, TActions>> | AnySynapseStore<TStore, TStorage, TSelectors, TActions>, options?: ReactAwaitSynapseOptions): {
49
- withSynapseReady: <ComponentProps>(Component: ComponentType<ComponentProps>) => {
50
- (props: ComponentProps): react_jsx_runtime.JSX.Element;
51
- displayName: string;
52
- };
53
- useSynapseReady: () => {
54
- isReady: boolean;
55
- isError: boolean;
56
- isPending: boolean;
57
- store: AnySynapseStore<TStore, TStorage, TSelectors, TActions> | undefined;
58
- error: Error | null;
59
- };
60
- waitForReady: () => Promise<AnySynapseStore<TStore, TStorage, TSelectors, TActions>>;
61
- isReady: () => boolean;
62
- getStoreIfReady: () => AnySynapseStore<TStore, TStorage, TSelectors, TActions> | undefined;
63
- onReady: (callback: (store: AnySynapseStore<TStore, TStorage, TSelectors, TActions>) => void) => VoidFunction;
64
- onError: (callback: (error: Error) => void) => VoidFunction;
65
- getStatus: () => "pending" | "ready" | "error";
66
- getError: () => Error | null;
67
- destroy: () => void;
68
- };
69
-
70
- interface SimplifiedOptions {
71
- loadingComponent?: React.ReactNode;
72
- }
73
- /**
74
- * Перегрузки для createSynapseCtx в зависимости от типа хранилища
75
- */
76
- declare function createSynapseCtx<TStore extends Record<string, any>, TStorage extends IStorage<TStore>, TSelectors, TActions>(synapseStorePromise: Promise<SynapseStoreWithEffects<TStore, TStorage, TSelectors, TActions>> | SynapseStoreWithEffects<TStore, TStorage, TSelectors, TActions>, options?: SimplifiedOptions): {
77
- contextSynapse: <SelfComponentProps>(Component: ComponentType<SelfComponentProps>) => ComponentType<SelfComponentProps>;
78
- useSynapseStorage: () => TStorage;
79
- useSynapseSelectors: () => TSelectors;
80
- useSynapseActions: () => TActions;
81
- useSynapseState$: () => Observable<TStore>;
82
- cleanupSynapse: () => Promise<void>;
83
- };
84
- declare function createSynapseCtx<TStore extends Record<string, any>, TStorage extends IStorage<TStore>, TSelectors, TActions>(synapseStorePromise: Promise<SynapseStoreWithDispatcher<TStore, TStorage, TSelectors, TActions>> | SynapseStoreWithDispatcher<TStore, TStorage, TSelectors, TActions>, options?: SimplifiedOptions): {
85
- contextSynapse: <SelfComponentProps>(Component: ComponentType<SelfComponentProps>) => ComponentType<SelfComponentProps>;
86
- useSynapseStorage: () => TStorage;
87
- useSynapseSelectors: () => TSelectors;
88
- useSynapseActions: () => TActions;
89
- cleanupSynapse: () => Promise<void>;
90
- };
91
- declare function createSynapseCtx<TStore extends Record<string, any>, TStorage extends IStorage<TStore>, TSelectors>(synapseStorePromise: Promise<SynapseStoreBasic<TStore, TStorage, TSelectors>> | SynapseStoreBasic<TStore, TStorage, TSelectors>, options?: SimplifiedOptions): {
92
- contextSynapse: <SelfComponentProps>(Component: ComponentType<SelfComponentProps>) => ComponentType<SelfComponentProps>;
93
- useSynapseStorage: () => TStorage;
94
- useSynapseSelectors: () => TSelectors;
95
- cleanupSynapse: () => Promise<void>;
96
- };
97
-
98
- export { awaitSynapse, createSynapseCtx, useSelector, useStorageSubscribe };
package/dist/react.js DELETED
@@ -1 +0,0 @@
1
- import{useEffect as U,useRef as M,useState as $}from"react";var f=new Map;function se(a,s){let[i,c]=$(s?.initialValue),[r,l]=$(!!s?.withLoading),d=M(s?.initialValue),t=M(s?.equals||((n,e)=>n===e)),o=a.getId(),u=n=>{(d.current===void 0||!t.current(n,d.current))&&(d.current=n,c(n))};return U(()=>{f.has(o)||f.set(o,{lastValue:void 0,listeners:new Set,unsubscribe:null});let n=f.get(o);return n.listeners.add(u),n.lastValue!==void 0?(u(n.lastValue),s?.withLoading&&l(!1)):(s?.withLoading&&l(!0),a.select().then(e=>{n.lastValue=e,n.listeners.forEach(p=>p(e)),s?.withLoading&&l(!1)}).catch(e=>{s?.withLoading&&l(!1)})),n.unsubscribe||(n.unsubscribe=a.subscribe({notify:e=>{n.lastValue=e,n.listeners.forEach(p=>{try{p(e)}catch{}})}})),()=>{let e=f.get(o);e&&(e.listeners.delete(u),e.listeners.size===0&&(e.unsubscribe&&e.unsubscribe(),f.delete(o)))}},[a,o]),s?.withLoading?{data:i,isLoading:r}:i}import{useEffect as j,useState as k}from"react";var ae=(a,s)=>{let[i,c]=k(void 0);return j(()=>{let r=!0;(async()=>{try{let t=await a.getState(),o=s(t);r&&c(o)}catch{}})();let d;try{d=a.subscribe(s,t=>{r&&c(t)})}catch{d=()=>{}}return()=>{r=!1,d()}},[a,s]),i};import{useEffect as G,useState as D}from"react";import{Observable as Et,Subject as xt}from"rxjs";var Dt=globalThis.console;import{combineLatest as yr,merge as hr,Observable as fr,of as Sr,pipe as Tr,Subject as br}from"rxjs";import{catchError as vr,filter as Er,map as xr,share as Rr,switchMap as Ar,take as Pr}from"rxjs/operators";import{of as Wt}from"rxjs";import{concatAll as Ht,delay as Yt,mergeMap as Jt,toArray as Xt}from"rxjs/operators";import{forkJoin as tr,timer as sr}from"rxjs";import{mergeMap as nr}from"rxjs/operators";function I(a){let s="pending",i,c=null,r=new Set,l=new Set,d=(async()=>{try{let t=await(a instanceof Promise?a:Promise.resolve(a));return await t.storage.waitForReady(),i=t,s="ready",r.forEach(o=>{try{o(i)}catch{}}),t}catch(t){let o=t instanceof Error?t:new Error(String(t));throw c=o,s="error",l.forEach(u=>{try{u(o)}catch{}}),o}})();return{waitForReady:()=>d,isReady:()=>s==="ready",getStoreIfReady:()=>i,onReady:t=>{if(s==="ready"&&i)try{t(i)}catch{}else r.add(t);return()=>{r.delete(t)}},onError:t=>{if(s==="error"&&c)try{t(c)}catch{}else l.add(t);return()=>{l.delete(t)}},getStatus:()=>s,getError:()=>c,destroy:()=>{r.clear(),l.clear(),i=void 0,c=null,s="pending"}}}import{Fragment as K,jsx as T,jsxs as Y}from"react/jsx-runtime";function H(a,s){let{loadingComponent:i=T("div",{children:"\u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F..."}),errorComponent:c=t=>Y("div",{children:["\u041E\u0448\u0438\u0431\u043A\u0430 \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438: ",t.message]})}=s||{},r=I(a);function l(){let[t,o]=D(()=>r.getStatus()),[u,n]=D(()=>r.getStoreIfReady()),[e,p]=D(()=>r.getError());return G(()=>{let g=r.getStatus(),v=r.getStoreIfReady(),m=r.getError();o(g),n(v),p(m);let E=r.onReady(y=>{o("ready"),n(y),p(null)}),x=r.onError(y=>{o("error"),n(void 0),p(y)});return()=>{E(),x()}},[]),{isReady:t==="ready",isError:t==="error",isPending:t==="pending",store:u,error:e}}function d(t){function o(n){let{isReady:e,isError:p,error:g}=l();return p&&g?T(K,{children:c(g)}):e?T(t,{...n}):T(K,{children:i})}let u=t.displayName||t.name||"Component";return o.displayName=`AwaitSynapse(${u})`,o}return{withSynapseReady:d,useSynapseReady:l,waitForReady:r.waitForReady,isReady:r.isReady,getStoreIfReady:r.getStoreIfReady,onReady:r.onReady,onError:r.onError,getStatus:r.getStatus,getError:r.getError,destroy:r.destroy}}import{createContext as J,useContext as b,useEffect as X,useState as C}from"react";import{Fragment as ee,jsx as S}from"react/jsx-runtime";var w="\u0425\u0443\u043A \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0432\u043D\u0443\u0442\u0440\u0438 \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0430 contextSynapse",Q="\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430:";function Z(a,s){let{loadingComponent:i=S("div",{children:"\u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043A\u043E\u043D\u0442\u0435\u043A\u0441\u0442\u0430..."})}=s||{},c=(async()=>{try{let e=await(a instanceof Promise?a:Promise.resolve(a));return await e.storage.waitForReady(),e}catch(e){throw e}})(),r=J(null),l=()=>{let e=b(r);if(!e)throw new Error(`useSynapseStorage: ${w}`);return e.storage},d=()=>{let e=b(r);if(!e)throw new Error(`useSynapseSelectors: ${w}`);return e.selectors},t=()=>{let e=b(r);if(!e)throw new Error(`useSynapseActions: ${w}`);if("actions"in e)return e.actions;throw new Error("useSynapseActions: actions \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0442\u0438\u043F\u0430 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044C, \u0447\u0442\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u0430 \u0444\u0443\u043D\u043A\u0446\u0438\u044F createDispatcherFn \u043F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430.")},o=()=>{let e=b(r);if(!e)throw new Error(`useSynapseState$: ${w}`);if("state$"in e)return e.state$;throw new Error("useSynapseState$: state$ \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0442\u0438\u043F\u0430 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044C, \u0447\u0442\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u043D\u044B \u0444\u0443\u043D\u043A\u0446\u0438\u0438 createDispatcherFn \u0438 createEffectConfig \u043F\u0440\u0438 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0438 \u0445\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0430.")};function u(e){function p(v){let[m,E]=C(null),[x,y]=C(!1),[O,V]=C(null);return X(()=>{let R=!0;return(async()=>{try{let h=await c;R&&(E(h),y(!0))}catch(h){R&&V(h instanceof Error?h:new Error(String(h)))}})(),()=>{R=!1}},[]),O?S("div",{children:`${Q}: ${O.message}`}):!x||!m?S(ee,{children:i}):S(r.Provider,{value:m,children:S(e,{...v})})}let g=e.displayName||e.name||"Component";return p.displayName=`SynapseContext(${g})`,p}return{contextSynapse:u,useSynapseStorage:l,useSynapseSelectors:d,useSynapseActions:t,useSynapseState$:o,cleanupSynapse:async()=>{try{return(await c)?.destroy()||Promise.resolve()}catch{}}}}export{H as awaitSynapse,Z as createSynapseCtx,se as useSelector,ae as useStorageSubscribe};
@@ -1,35 +0,0 @@
1
- import { a as EnhancedMiddleware } from './dispatcher.module-DcXkCRNj.js';
2
- export { A as Action, b as ActionDefinition, e as ActionsResult, c as ActionsSetupWithUtils, C as CreateDispatcherType, f as DispatchActions, D as DispatchFunction, j as Dispatcher, o as DispatcherActions, i as DispatcherMiddleware, h as DispatcherMiddlewareAPI, n as Effect, m as EffectBase, w as EffectsModule, E as EnhancedMiddlewareAPI, l as ExternalStates, d as ExtractResultType, T as TypedAction, V as ValidateConfig, p as ValidateMapRequestUtils, g as WatcherActions, W as WatcherFunction, z as combineEffects, k as createDispatcher, y as createEffect, x as createEffectBase, q as ofType, r as ofTypes, s as ofTypesWaitAll, t as selectorMap, u as selectorObject, v as validateMap } from './dispatcher.module-DcXkCRNj.js';
3
- import 'rxjs';
4
- import './storage.interface-2HKvqdAJ.js';
5
-
6
- interface LoggerTranslations {
7
- action: string;
8
- prevState: string;
9
- nextState: string;
10
- duration: string;
11
- error: string;
12
- diff: string;
13
- changesCount: string;
14
- showFullState: string;
15
- }
16
- interface LoggerColors {
17
- title: string;
18
- prevState: string;
19
- fullState: string;
20
- action: string;
21
- nextState: string;
22
- error: string;
23
- diff: string;
24
- }
25
- interface LoggerOptions {
26
- collapsed?: boolean;
27
- duration?: boolean;
28
- diff?: boolean;
29
- showFullState?: boolean;
30
- translations?: Partial<LoggerTranslations>;
31
- colors?: Partial<LoggerColors>;
32
- }
33
- declare const loggerDispatcherMiddleware: <State extends Record<string, any>>(options?: LoggerOptions) => EnhancedMiddleware<State>;
34
-
35
- export { EnhancedMiddleware, loggerDispatcherMiddleware };
package/dist/reactive.js DELETED
@@ -1 +0,0 @@
1
- import{Observable as W,Subject as E}from"rxjs";var A=class{constructor(e){this.options=e;this.storage=e.storage,this.middlewareAPI={getState:()=>this.storage.getState(),dispatch:async t=>(this.actions$.next(t),t.payload),storage:this.storage,actions$:this.actions,actions:this.dispatch,watchers:this.watchers,findActionByType:t=>this.findActionByType(t),findWatcherByType:t=>this.findWatcherByType(t)},e.middlewares&&e.middlewares.length>0&&this.use(...e.middlewares)}actions$=new E;actions=this.actions$.asObservable();dispatch={};watchers={};storage;middlewareFunctions=[];middlewareAPI;use(...e){for(let t=0;t<e.length;t++)try{let s=e[t](this.middlewareAPI);this.middlewareFunctions.push(s)}catch{}return this}getActions(){return this.dispatch}getTypedDispatch(){return this.dispatch}getTypedWatchers(){return this.watchers}findActionByType(e){return Object.values(this.dispatch).find(t=>t.actionType.split(`[${this.storage.name}]`)[1]===e)}findWatcherByType(e){return Object.values(this.watchers).find(t=>t.actionType===e)}createAction(e,t){let s=`[${this.storage.name}]${e.type}`,r=null,i=null,a=async c=>{let o=[c];if(t?.memoize&&r&&i&&t.memoize(o,r,i))return i;let l={type:s,meta:e.meta},u;if(this.middlewareFunctions.length>0){let f=async p=>t?.worker?this.executeInWorker(t.worker,s,o,e.action):Promise.resolve(e.action(c));for(let p=this.middlewareFunctions.length-1;p>=0;p--){let T=this.middlewareFunctions[p],b=f;f=async v=>T(async x=>b(x))(v)}u=await f(l)}else t?.worker?u=await this.executeInWorker(t.worker,s,o,e.action):u=await e.action(c);return l.payload=u,r=[...o],i=u,this.actions$.next(l),u};return a.e="dispatch",Object.defineProperty(a,"actionType",{value:s,writable:!1,enumerable:!0}),e.meta&&Object.defineProperty(a,"meta",{value:e.meta,writable:!1,enumerable:!0}),a}createWatcher(e){let t=`[${this.storage.name}]${e.type}`,s=new E,r,i=async()=>{let o=await this.storage.getState();return e.selector(o)},a=this.storage.subscribe(e.selector,o=>{if(!e.shouldTrigger||e.shouldTrigger(r,o)){let l={type:t,payload:o,meta:e.meta};this.actions$.next(l),s.next(l),r=o}}),c=()=>{let o=s.asObservable();return e.notifyAfterSubscribe?new W(l=>{let u=!1;i().then(p=>{if(!e.shouldTrigger||e.shouldTrigger(void 0,p)){let T={type:t,payload:p,meta:{...e.meta,isInitial:!0}};l.next(T),r=p,u=!0}}).catch(p=>{l.error(p)});let f=o.subscribe({next:p=>{u&&p.payload===r||l.next(p)},error:p=>l.error(p),complete:()=>l.complete()});return()=>{f.unsubscribe()}}):o};return c.e="watchers",Object.defineProperty(c,"actionType",{value:t,writable:!1,enumerable:!0}),e.meta&&Object.defineProperty(c,"meta",{value:e.meta,writable:!1,enumerable:!0}),Object.defineProperty(c,"unsubscribe",{value:a,writable:!1,enumerable:!0}),c}async executeInWorker(e,t,s,r){return new Promise((i,a)=>{let c=`${t}_${Date.now()}_${Math.random()}`,o=l=>{l.data.requestId===c&&(e.removeEventListener("message",o),l.data.error?a(new Error(l.data.error)):i(l.data.result))};e.addEventListener("message",o),e.postMessage({type:t,args:s,requestId:c}),setTimeout(()=>{e.removeEventListener("message",o),a(new Error(`Worker execution timeout for action: ${t}`))},3e4)})}};function Y(n,e){let t=new A(n),s=e(n.storage,{createAction:(r,i)=>t.createAction(r,i),createWatcher:r=>t.createWatcher(r)});for(let[r,i]of Object.entries(s))if(typeof i=="function"){let a=i.e;t[a][r]=i}return t}function R(n,e=1){if(e<=0)throw new Error("Size must be greater than 0");if(!n||!n.length)return[];let t=[],s=n.length,r=0;for(;r<s;)t.push(n.slice(r,r+e)),r+=e;return t}var h=globalThis.console,d={log:(...n)=>h.log(...n),warn:(...n)=>h.warn(...n),error:(...n)=>h.error(...n),group:(...n)=>h.group(...n),groupEnd:()=>h.groupEnd(),groupCollapsed:(...n)=>h.groupCollapsed(...n)};function P(n,e){let t={};return[...new Set([...Object.keys(n),...Object.keys(e)])].forEach(r=>{if(r in n&&r in e)if(typeof n[r]=="object"&&n[r]!==null&&typeof e[r]=="object"&&e[r]!==null&&!Array.isArray(n[r])&&!Array.isArray(e[r])){let i=P(n[r],e[r]);Object.keys(i).length>0&&(t[r]=i)}else JSON.stringify(n[r])!==JSON.stringify(e[r])&&(t[r]={PREV:n[r],NEXT:e[r]});else r in n?t[r]={PREV:n[r],NEXT:void 0}:t[r]={PREV:void 0,NEXT:e[r]}}),t}var pe=(n={})=>{let e={action:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435",prevState:"\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0435\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435",nextState:"\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435",duration:"\u0414\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C",error:"\u041E\u0448\u0438\u0431\u043A\u0430 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438",diff:"\u0418\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",changesCount:"\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439",showFullState:"\u041F\u043E\u043B\u043D\u043E\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435"},t={collapsed:!1,duration:!0,diff:!1,showFullState:!0,translations:e,colors:{title:"#3498db",prevState:"#9E9E9E",fullState:"#008a15",action:"#03A9F4",nextState:"#4CAF50",error:"#F20404",diff:"#9C27B0"}},s={...t,...n,translations:{...e,...n.translations||{}},colors:{...t.colors,...n.colors||{}}},{collapsed:r,duration:i,colors:a,translations:c}=s;return o=>l=>async u=>{let f=Date.now(),p=await o.getState();try{let T=await l(u),b=await o.getState(),S=Date.now()-f,x=`${u.type}`;if((r?d.groupCollapsed:d.group)(`%c ${x}`,`color: ${a.title}; font-weight: bold`),d.log(`%c ${c.action}:`,`color: ${a.action}; font-weight: bold`,u),s.diff){let w=P(p,b),$=Object.keys(w).length;d.log(`%c ${c.diff} (${c.changesCount}: ${$}):`,`color: ${a.diff}; font-weight: bold`,w)}return s.showFullState&&(d.groupCollapsed(`%c ${c.showFullState}`,`color: ${a.fullState}; font-weight: bold`),d.log(`%c ${c.prevState}:`,`color: ${a.prevState}; font-weight: bold`,p),d.log(`%c ${c.nextState}:`,`color: ${a.nextState}; font-weight: bold`,b),d.groupEnd()),i&&d.log(`%c ${c.duration}: %c ${S}ms`,"font-weight: bold","color: #4CAF50"),d.groupEnd(),T}catch(T){throw d.error(`%c ${c.error}:`,`color: ${a.error}; font-weight: bold`,u.type,T),T}}};import{combineLatest as L,merge as V,Observable as N,of as y,pipe as U,Subject as z}from"rxjs";import{catchError as _,filter as g,map as m,share as J,switchMap as X,take as G}from"rxjs/operators";import{of as D}from"rxjs";import{concatAll as k,delay as M,mergeMap as j,toArray as I}from"rxjs/operators";var F=(n,e,t,s=0)=>{let r=R(e,t).map(i=>D(i).pipe(M(s),j(n)));return D(...r).pipe(k(),I())};import{forkJoin as q,timer as B}from"rxjs";import{mergeMap as K}from"rxjs/operators";var O=(n,e,t,s=0)=>q(R(e,t).map((r,i)=>B(i*s).pipe(K(()=>n(r)))));function je(n){let{actionType:e}=n;return e?t=>t.pipe(g(s=>s!==void 0&&s.type===e)):g(()=>!1)}function Ie(n){let e=n.map(t=>t.actionType).filter(Boolean);return e.length===0?g(()=>!1):t=>t.pipe(g(s=>s!==void 0&&e.includes(s.type)))}function qe(n){return e=>{let t=n.map(r=>r.actionType).filter(Boolean);if(t.length===0)return y([]);let s=t.map((r,i)=>e.pipe(g(a=>a.type===r),G(1),m(a=>({index:i,action:a}))));return L(s).pipe(m(r=>(r.sort((i,a)=>i.index-a.index),r.map(i=>i.action))))}}function Be(n,...e){return n.pipe(m(t=>e.map(s=>s(t))))}function Ke(n,e){return n.pipe(m(t=>{let s={};for(let[r,i]of Object.entries(e))s[r]=i(t);return s}))}function Le({validator:n,apiCall:e}){return U(X(t=>{let s=()=>e(t,{chunkRequest:O,chunkRequestConsistent:F});if(!n)return s();let r=n(t),{conditions:i,skipAction:a}=r;return i.every(Boolean)?s():Array.isArray(a)?y(...a?.filter(Boolean).map(o=>typeof o=="function"?o():o)):y(typeof a=="function"?a():a)}))}var C=class{constructor(e,t={},s,r={},i={}){this.storage=e;this.externalStates=t;this.dispatchers=s;this.services=r;this.config=i;this.subscribeToDispatchers(),this.state$=new N(a=>{this.storage.getState().then(o=>a.next(o));let c=this.storage.subscribeToAll(()=>{this.storage.getState().then(o=>a.next(o))});return()=>c()}).pipe(J())}effects=[];subscriptions=[];running=!1;action$=new z;state$;subscribeToDispatchers(){for(let[e,t]of Object.entries(this.dispatchers)){let s=t.actions.subscribe(r=>{this.action$.next(r)});this.subscriptions.push(s)}}add(e){return this.effects.push(e),this.running&&this.subscribeToEffect(e),this}addEffects(e){return e.forEach(t=>this.add(t)),this}async start(){return this.running?this:(await this.storage.waitForReady(),this.effects.forEach(e=>this.subscribeToEffect(e)),this.running=!0,this)}stop(){return this.subscriptions.forEach(e=>e.unsubscribe()),this.subscriptions=[],this.running=!1,this}subscribeToEffect(e){try{let s=e(this.action$.asObservable(),this.state$,this.externalStates,this.dispatchers,this.services,this.config).pipe(_(r=>y(null))).subscribe(r=>{if(r!=null&&typeof r=="function")try{r()}catch{}});this.subscriptions.push(s)}catch{}}};function Ve(n){return n}function Ne(n){return n}function Ue(...n){return(e,t,s,r,i,a)=>{let c=n.map(o=>{try{return o(e,t,s,r,i,a)}catch{return y(null)}});return V(...c)}}export{A as Dispatcher,C as EffectsModule,Ue as combineEffects,Y as createDispatcher,Ne as createEffect,Ve as createEffectBase,pe as loggerDispatcherMiddleware,je as ofType,Ie as ofTypes,qe as ofTypesWaitAll,Be as selectorMap,Ke as selectorObject,Le as validateMap};