synapse-storage 2.1.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 (448) hide show
  1. package/README.md +1038 -0
  2. package/dist/_examples/_example5.d.ts +1 -0
  3. package/dist/_examples/_example5.d.ts.map +1 -0
  4. package/dist/_examples/_example5.js +184 -0
  5. package/dist/_examples/_example5.js.map +1 -0
  6. package/dist/_examples/_example6.d.ts +1 -0
  7. package/dist/_examples/_example6.d.ts.map +1 -0
  8. package/dist/_examples/_example6.js +168 -0
  9. package/dist/_examples/_example6.js.map +1 -0
  10. package/dist/_examples/example1.d.ts +1 -0
  11. package/dist/_examples/example1.d.ts.map +1 -0
  12. package/dist/_examples/example1.js +240 -0
  13. package/dist/_examples/example1.js.map +1 -0
  14. package/dist/_examples/example2.d.ts +1 -0
  15. package/dist/_examples/example2.d.ts.map +1 -0
  16. package/dist/_examples/example2.js +81 -0
  17. package/dist/_examples/example2.js.map +1 -0
  18. package/dist/_examples/example3.d.ts +1 -0
  19. package/dist/_examples/example3.d.ts.map +1 -0
  20. package/dist/_examples/example3.js +99 -0
  21. package/dist/_examples/example3.js.map +1 -0
  22. package/dist/_examples/example4.d.ts +1 -0
  23. package/dist/_examples/example4.d.ts.map +1 -0
  24. package/dist/_examples/example4.js +172 -0
  25. package/dist/_examples/example4.js.map +1 -0
  26. package/dist/_examples/example5.d.ts +1 -0
  27. package/dist/_examples/example5.d.ts.map +1 -0
  28. package/dist/_examples/example5.js +184 -0
  29. package/dist/_examples/example5.js.map +1 -0
  30. package/dist/_examples/example6.d.ts +1 -0
  31. package/dist/_examples/example6.d.ts.map +1 -0
  32. package/dist/_examples/example6.js +168 -0
  33. package/dist/_examples/example6.js.map +1 -0
  34. package/dist/_examples/plugins.d.ts +1 -0
  35. package/dist/_examples/plugins.d.ts.map +1 -0
  36. package/dist/_examples/plugins.js +176 -0
  37. package/dist/_examples/plugins.js.map +1 -0
  38. package/dist/_examples/pokemons/PokemonList.d.ts +5 -0
  39. package/dist/_examples/pokemons/PokemonList.d.ts.map +1 -0
  40. package/dist/_examples/pokemons/PokemonList.js +166 -0
  41. package/dist/_examples/pokemons/PokemonList.js.map +1 -0
  42. package/dist/_examples/pokemons/api.d.ts +8 -0
  43. package/dist/_examples/pokemons/api.d.ts.map +1 -0
  44. package/dist/_examples/pokemons/api.js +45 -0
  45. package/dist/_examples/pokemons/api.js.map +1 -0
  46. package/dist/_examples/pokemons/app.config.d.ts +15 -0
  47. package/dist/_examples/pokemons/app.config.d.ts.map +1 -0
  48. package/dist/_examples/pokemons/app.config.js +15 -0
  49. package/dist/_examples/pokemons/app.config.js.map +1 -0
  50. package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.d.ts +9 -0
  51. package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.d.ts.map +1 -0
  52. package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.js +122 -0
  53. package/dist/_examples/pokemons/dispatchers/pokemon.dispatcher.js.map +1 -0
  54. package/dist/_examples/pokemons/effects/pokemon.effects.d.ts +16 -0
  55. package/dist/_examples/pokemons/effects/pokemon.effects.d.ts.map +1 -0
  56. package/dist/_examples/pokemons/effects/pokemon.effects.js +39 -0
  57. package/dist/_examples/pokemons/effects/pokemon.effects.js.map +1 -0
  58. package/dist/_examples/pokemons/middlewares/pokenon.middlewares.d.ts +4 -0
  59. package/dist/_examples/pokemons/middlewares/pokenon.middlewares.d.ts.map +1 -0
  60. package/dist/_examples/pokemons/middlewares/pokenon.middlewares.js +27 -0
  61. package/dist/_examples/pokemons/middlewares/pokenon.middlewares.js.map +1 -0
  62. package/dist/_examples/pokemons/pokemon.dispatcher.d.ts +9 -0
  63. package/dist/_examples/pokemons/pokemon.dispatcher.d.ts.map +1 -0
  64. package/dist/_examples/pokemons/pokemon.dispatcher.js +122 -0
  65. package/dist/_examples/pokemons/pokemon.dispatcher.js.map +1 -0
  66. package/dist/_examples/pokemons/pokemon.effects.d.ts +5 -0
  67. package/dist/_examples/pokemons/pokemon.effects.d.ts.map +1 -0
  68. package/dist/_examples/pokemons/pokemon.effects.js +39 -0
  69. package/dist/_examples/pokemons/pokemon.effects.js.map +1 -0
  70. package/dist/_examples/pokemons/pokemon.selectors.d.ts +5 -0
  71. package/dist/_examples/pokemons/pokemon.selectors.d.ts.map +1 -0
  72. package/dist/_examples/pokemons/pokemon.selectors.js +10 -0
  73. package/dist/_examples/pokemons/pokemon.selectors.js.map +1 -0
  74. package/dist/_examples/pokemons/pokemon.storage.d.ts +3 -0
  75. package/dist/_examples/pokemons/pokemon.storage.d.ts.map +1 -0
  76. package/dist/_examples/pokemons/pokemon.storage.js +14 -0
  77. package/dist/_examples/pokemons/pokemon.storage.js.map +1 -0
  78. package/dist/_examples/pokemons/pokemon1.selectors.d.ts +5 -0
  79. package/dist/_examples/pokemons/pokemon1.selectors.d.ts.map +1 -0
  80. package/dist/_examples/pokemons/pokemon1.selectors.js +8 -0
  81. package/dist/_examples/pokemons/pokemon1.selectors.js.map +1 -0
  82. package/dist/_examples/pokemons/pokenon.middlewares.d.ts +4 -0
  83. package/dist/_examples/pokemons/pokenon.middlewares.d.ts.map +1 -0
  84. package/dist/_examples/pokemons/pokenon.middlewares.js +27 -0
  85. package/dist/_examples/pokemons/pokenon.middlewares.js.map +1 -0
  86. package/dist/_examples/pokemons/selectors/pokemon.selectors.d.ts +5 -0
  87. package/dist/_examples/pokemons/selectors/pokemon.selectors.d.ts.map +1 -0
  88. package/dist/_examples/pokemons/selectors/pokemon.selectors.js +10 -0
  89. package/dist/_examples/pokemons/selectors/pokemon.selectors.js.map +1 -0
  90. package/dist/_examples/pokemons/selectors/pokemon1.selectors.d.ts +5 -0
  91. package/dist/_examples/pokemons/selectors/pokemon1.selectors.d.ts.map +1 -0
  92. package/dist/_examples/pokemons/selectors/pokemon1.selectors.js +8 -0
  93. package/dist/_examples/pokemons/selectors/pokemon1.selectors.js.map +1 -0
  94. package/dist/_examples/pokemons/storages/pokemon.storage.d.ts +3 -0
  95. package/dist/_examples/pokemons/storages/pokemon.storage.d.ts.map +1 -0
  96. package/dist/_examples/pokemons/storages/pokemon.storage.js +14 -0
  97. package/dist/_examples/pokemons/storages/pokemon.storage.js.map +1 -0
  98. package/dist/_examples/pokemons/store.d.ts +1 -0
  99. package/dist/_examples/pokemons/store.d.ts.map +1 -0
  100. package/dist/_examples/pokemons/store.js +2 -0
  101. package/dist/_examples/pokemons/store.js.map +1 -0
  102. package/dist/_examples/pokemons/store1.d.ts +23 -0
  103. package/dist/_examples/pokemons/store1.d.ts.map +1 -0
  104. package/dist/_examples/pokemons/store1.js +35 -0
  105. package/dist/_examples/pokemons/store1.js.map +1 -0
  106. package/dist/_examples/pokemons/store2.d.ts +23 -0
  107. package/dist/_examples/pokemons/store2.d.ts.map +1 -0
  108. package/dist/_examples/pokemons/store2.js +34 -0
  109. package/dist/_examples/pokemons/store2.js.map +1 -0
  110. package/dist/_examples/pokemons/types.d.ts +26 -0
  111. package/dist/_examples/pokemons/types.d.ts.map +1 -0
  112. package/dist/_examples/pokemons/types.js +2 -0
  113. package/dist/_examples/pokemons/types.js.map +1 -0
  114. package/dist/_utils/chunk.util.d.ts +8 -0
  115. package/dist/_utils/chunk.util.d.ts.map +1 -0
  116. package/dist/_utils/chunk.util.js +21 -0
  117. package/dist/_utils/chunk.util.js.map +1 -0
  118. package/dist/_utils/deepMerge.util.d.ts +2 -0
  119. package/dist/_utils/deepMerge.util.d.ts.map +1 -0
  120. package/dist/_utils/deepMerge.util.js +16 -0
  121. package/dist/_utils/deepMerge.util.js.map +1 -0
  122. package/dist/_utils/flatMap.util.d.ts +10 -0
  123. package/dist/_utils/flatMap.util.d.ts.map +1 -0
  124. package/dist/_utils/flatMap.util.js +23 -0
  125. package/dist/_utils/flatMap.util.js.map +1 -0
  126. package/dist/_utils/index.d.ts +4 -0
  127. package/dist/_utils/index.d.ts.map +1 -0
  128. package/dist/_utils/index.js +4 -0
  129. package/dist/_utils/index.js.map +1 -0
  130. package/dist/api/api.module.d.ts +38 -0
  131. package/dist/api/api.module.d.ts.map +1 -0
  132. package/dist/api/api.module.js +82 -0
  133. package/dist/api/api.module.js.map +1 -0
  134. package/dist/api/components/endpoint.d.ts +26 -0
  135. package/dist/api/components/endpoint.d.ts.map +1 -0
  136. package/dist/api/components/endpoint.js +253 -0
  137. package/dist/api/components/endpoint.js.map +1 -0
  138. package/dist/api/components/query-storage.d.ts +84 -0
  139. package/dist/api/components/query-storage.d.ts.map +1 -0
  140. package/dist/api/components/query-storage.js +221 -0
  141. package/dist/api/components/query-storage.js.map +1 -0
  142. package/dist/api/example.d.ts +83 -0
  143. package/dist/api/example.d.ts.map +1 -0
  144. package/dist/api/example.js +85 -0
  145. package/dist/api/example.js.map +1 -0
  146. package/dist/api/index.d.ts +4 -0
  147. package/dist/api/index.d.ts.map +1 -0
  148. package/dist/api/index.js +6 -0
  149. package/dist/api/index.js.map +1 -0
  150. package/dist/api/types/api.interface.d.ts +108 -0
  151. package/dist/api/types/api.interface.d.ts.map +1 -0
  152. package/dist/api/types/api.interface.js +19 -0
  153. package/dist/api/types/api.interface.js.map +1 -0
  154. package/dist/api/types/endpoint.interface.d.ts +116 -0
  155. package/dist/api/types/endpoint.interface.d.ts.map +1 -0
  156. package/dist/api/types/endpoint.interface.js +2 -0
  157. package/dist/api/types/endpoint.interface.js.map +1 -0
  158. package/dist/api/types/query.interface.d.ts +87 -0
  159. package/dist/api/types/query.interface.d.ts.map +1 -0
  160. package/dist/api/types/query.interface.js +2 -0
  161. package/dist/api/types/query.interface.js.map +1 -0
  162. package/dist/api/utils/api-helpers.d.ts +22 -0
  163. package/dist/api/utils/api-helpers.d.ts.map +1 -0
  164. package/dist/api/utils/api-helpers.js +44 -0
  165. package/dist/api/utils/api-helpers.js.map +1 -0
  166. package/dist/api/utils/create-header-context.d.ts +10 -0
  167. package/dist/api/utils/create-header-context.d.ts.map +1 -0
  168. package/dist/api/utils/create-header-context.js +36 -0
  169. package/dist/api/utils/create-header-context.js.map +1 -0
  170. package/dist/api/utils/endpoint-headers.d.ts +23 -0
  171. package/dist/api/utils/endpoint-headers.d.ts.map +1 -0
  172. package/dist/api/utils/endpoint-headers.js +57 -0
  173. package/dist/api/utils/endpoint-headers.js.map +1 -0
  174. package/dist/api/utils/fetch-base-query.d.ts +9 -0
  175. package/dist/api/utils/fetch-base-query.d.ts.map +1 -0
  176. package/dist/api/utils/fetch-base-query.js +181 -0
  177. package/dist/api/utils/fetch-base-query.js.map +1 -0
  178. package/dist/api/utils/file-utils.d.ts +43 -0
  179. package/dist/api/utils/file-utils.d.ts.map +1 -0
  180. package/dist/api/utils/file-utils.js +108 -0
  181. package/dist/api/utils/file-utils.js.map +1 -0
  182. package/dist/api/utils/get-cacheable-headers.d.ts +8 -0
  183. package/dist/api/utils/get-cacheable-headers.d.ts.map +1 -0
  184. package/dist/api/utils/get-cacheable-headers.js +21 -0
  185. package/dist/api/utils/get-cacheable-headers.js.map +1 -0
  186. package/dist/core/index.d.ts +3 -0
  187. package/dist/core/index.d.ts.map +1 -0
  188. package/dist/core/index.js +3 -0
  189. package/dist/core/index.js.map +1 -0
  190. package/dist/core/selector/index.d.ts +3 -0
  191. package/dist/core/selector/index.d.ts.map +1 -0
  192. package/dist/core/selector/index.js +2 -0
  193. package/dist/core/selector/index.js.map +1 -0
  194. package/dist/core/selector/selector.interface.d.ts +91 -0
  195. package/dist/core/selector/selector.interface.d.ts.map +1 -0
  196. package/dist/core/selector/selector.interface.js +2 -0
  197. package/dist/core/selector/selector.interface.js.map +1 -0
  198. package/dist/core/selector/selector.module.d.ts +29 -0
  199. package/dist/core/selector/selector.module.d.ts.map +1 -0
  200. package/dist/core/selector/selector.module.js +467 -0
  201. package/dist/core/selector/selector.module.js.map +1 -0
  202. package/dist/core/storage/adapters/base-storage.service.d.ts +65 -0
  203. package/dist/core/storage/adapters/base-storage.service.d.ts.map +1 -0
  204. package/dist/core/storage/adapters/base-storage.service.js +660 -0
  205. package/dist/core/storage/adapters/base-storage.service.js.map +1 -0
  206. package/dist/core/storage/adapters/idb.d.ts +52 -0
  207. package/dist/core/storage/adapters/idb.d.ts.map +1 -0
  208. package/dist/core/storage/adapters/idb.js +528 -0
  209. package/dist/core/storage/adapters/idb.js.map +1 -0
  210. package/dist/core/storage/adapters/indexed-DB.service.d.ts +63 -0
  211. package/dist/core/storage/adapters/indexed-DB.service.d.ts.map +1 -0
  212. package/dist/core/storage/adapters/indexed-DB.service.js +595 -0
  213. package/dist/core/storage/adapters/indexed-DB.service.js.map +1 -0
  214. package/dist/core/storage/adapters/indexed-DB.service.old.d.ts +38 -0
  215. package/dist/core/storage/adapters/indexed-DB.service.old.d.ts.map +1 -0
  216. package/dist/core/storage/adapters/indexed-DB.service.old.js +318 -0
  217. package/dist/core/storage/adapters/indexed-DB.service.old.js.map +1 -0
  218. package/dist/core/storage/adapters/indexed-DB.service1.d.ts +38 -0
  219. package/dist/core/storage/adapters/indexed-DB.service1.d.ts.map +1 -0
  220. package/dist/core/storage/adapters/indexed-DB.service1.js +318 -0
  221. package/dist/core/storage/adapters/indexed-DB.service1.js.map +1 -0
  222. package/dist/core/storage/adapters/indexed-DB.service2.d.ts +61 -0
  223. package/dist/core/storage/adapters/indexed-DB.service2.d.ts.map +1 -0
  224. package/dist/core/storage/adapters/indexed-DB.service2.js +596 -0
  225. package/dist/core/storage/adapters/indexed-DB.service2.js.map +1 -0
  226. package/dist/core/storage/adapters/local-storage.service.d.ts +21 -0
  227. package/dist/core/storage/adapters/local-storage.service.d.ts.map +1 -0
  228. package/dist/core/storage/adapters/local-storage.service.js +99 -0
  229. package/dist/core/storage/adapters/local-storage.service.js.map +1 -0
  230. package/dist/core/storage/adapters/memory-storage.service.d.ts +22 -0
  231. package/dist/core/storage/adapters/memory-storage.service.d.ts.map +1 -0
  232. package/dist/core/storage/adapters/memory-storage.service.js +99 -0
  233. package/dist/core/storage/adapters/memory-storage.service.js.map +1 -0
  234. package/dist/core/storage/adapters/path.utils.d.ts +5 -0
  235. package/dist/core/storage/adapters/path.utils.d.ts.map +1 -0
  236. package/dist/core/storage/adapters/path.utils.js +35 -0
  237. package/dist/core/storage/adapters/path.utils.js.map +1 -0
  238. package/dist/core/storage/factory/createSynapseStorage.factory.d.ts +1 -0
  239. package/dist/core/storage/factory/createSynapseStorage.factory.d.ts.map +1 -0
  240. package/dist/core/storage/factory/createSynapseStorage.factory.js +2 -0
  241. package/dist/core/storage/factory/createSynapseStorage.factory.js.map +1 -0
  242. package/dist/core/storage/factory/index.d.ts +2 -0
  243. package/dist/core/storage/factory/index.d.ts.map +1 -0
  244. package/dist/core/storage/factory/index.js +2 -0
  245. package/dist/core/storage/factory/index.js.map +1 -0
  246. package/dist/core/storage/index.d.ts +11 -0
  247. package/dist/core/storage/index.d.ts.map +1 -0
  248. package/dist/core/storage/index.js +12 -0
  249. package/dist/core/storage/index.js.map +1 -0
  250. package/dist/core/storage/middlewares/broadcast.middleware.d.ts +9 -0
  251. package/dist/core/storage/middlewares/broadcast.middleware.d.ts.map +1 -0
  252. package/dist/core/storage/middlewares/broadcast.middleware.js +115 -0
  253. package/dist/core/storage/middlewares/broadcast.middleware.js.map +1 -0
  254. package/dist/core/storage/middlewares/index.d.ts +4 -0
  255. package/dist/core/storage/middlewares/index.d.ts.map +1 -0
  256. package/dist/core/storage/middlewares/index.js +3 -0
  257. package/dist/core/storage/middlewares/index.js.map +1 -0
  258. package/dist/core/storage/middlewares/storage-batching.middleware.d.ts +7 -0
  259. package/dist/core/storage/middlewares/storage-batching.middleware.d.ts.map +1 -0
  260. package/dist/core/storage/middlewares/storage-batching.middleware.js +36 -0
  261. package/dist/core/storage/middlewares/storage-batching.middleware.js.map +1 -0
  262. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts +7 -0
  263. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts.map +1 -0
  264. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js +46 -0
  265. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js.map +1 -0
  266. package/dist/core/storage/modules/plugin/plugin.interface.d.ts +201 -0
  267. package/dist/core/storage/modules/plugin/plugin.interface.d.ts.map +1 -0
  268. package/dist/core/storage/modules/plugin/plugin.interface.js +2 -0
  269. package/dist/core/storage/modules/plugin/plugin.interface.js.map +1 -0
  270. package/dist/core/storage/modules/plugin/plugin.service.d.ts +25 -0
  271. package/dist/core/storage/modules/plugin/plugin.service.d.ts.map +1 -0
  272. package/dist/core/storage/modules/plugin/plugin.service.js +186 -0
  273. package/dist/core/storage/modules/plugin/plugin.service.js.map +1 -0
  274. package/dist/core/storage/storage.interface.d.ts +70 -0
  275. package/dist/core/storage/storage.interface.d.ts.map +1 -0
  276. package/dist/core/storage/storage.interface.js +10 -0
  277. package/dist/core/storage/storage.interface.js.map +1 -0
  278. package/dist/core/storage/utils/batch.utils.d.ts +33 -0
  279. package/dist/core/storage/utils/batch.utils.d.ts.map +1 -0
  280. package/dist/core/storage/utils/batch.utils.js +88 -0
  281. package/dist/core/storage/utils/batch.utils.js.map +1 -0
  282. package/dist/core/storage/utils/broadcast.util.d.ts +48 -0
  283. package/dist/core/storage/utils/broadcast.util.d.ts.map +1 -0
  284. package/dist/core/storage/utils/broadcast.util.js +162 -0
  285. package/dist/core/storage/utils/broadcast.util.js.map +1 -0
  286. package/dist/core/storage/utils/cache.util.d.ts +33 -0
  287. package/dist/core/storage/utils/cache.util.d.ts.map +1 -0
  288. package/dist/core/storage/utils/cache.util.js +47 -0
  289. package/dist/core/storage/utils/cache.util.js.map +1 -0
  290. package/dist/core/storage/utils/middleware-module.d.ts +46 -0
  291. package/dist/core/storage/utils/middleware-module.d.ts.map +1 -0
  292. package/dist/core/storage/utils/middleware-module.js +109 -0
  293. package/dist/core/storage/utils/middleware-module.js.map +1 -0
  294. package/dist/core/storage/utils/storage-key.d.ts +11 -0
  295. package/dist/core/storage/utils/storage-key.d.ts.map +1 -0
  296. package/dist/core/storage/utils/storage-key.js +21 -0
  297. package/dist/core/storage/utils/storage-key.js.map +1 -0
  298. package/dist/core/storage/utils/storage.utils.d.ts +17 -0
  299. package/dist/core/storage/utils/storage.utils.d.ts.map +1 -0
  300. package/dist/core/storage/utils/storage.utils.js +57 -0
  301. package/dist/core/storage/utils/storage.utils.js.map +1 -0
  302. package/dist/examples/_example5.d.ts +1 -0
  303. package/dist/examples/_example5.d.ts.map +1 -0
  304. package/dist/examples/_example5.js +184 -0
  305. package/dist/examples/_example5.js.map +1 -0
  306. package/dist/examples/_example6.d.ts +1 -0
  307. package/dist/examples/_example6.d.ts.map +1 -0
  308. package/dist/examples/_example6.js +168 -0
  309. package/dist/examples/_example6.js.map +1 -0
  310. package/dist/examples/plugins.d.ts +1 -0
  311. package/dist/examples/plugins.d.ts.map +1 -0
  312. package/dist/examples/plugins.js +176 -0
  313. package/dist/examples/plugins.js.map +1 -0
  314. package/dist/examples/pokemons/PokemonList.d.ts +2 -0
  315. package/dist/examples/pokemons/PokemonList.d.ts.map +1 -0
  316. package/dist/examples/pokemons/PokemonList.js +110 -0
  317. package/dist/examples/pokemons/PokemonList.js.map +1 -0
  318. package/dist/examples/pokemons/api.d.ts +22 -0
  319. package/dist/examples/pokemons/api.d.ts.map +1 -0
  320. package/dist/examples/pokemons/api.js +43 -0
  321. package/dist/examples/pokemons/api.js.map +1 -0
  322. package/dist/examples/pokemons/app.config.d.ts +15 -0
  323. package/dist/examples/pokemons/app.config.d.ts.map +1 -0
  324. package/dist/examples/pokemons/app.config.js +15 -0
  325. package/dist/examples/pokemons/app.config.js.map +1 -0
  326. package/dist/examples/pokemons/dispatchers/pokemon.dispatcher.js +128 -0
  327. package/dist/examples/pokemons/dispatchers/pokemon.dispatcher.js.map +1 -0
  328. package/dist/examples/pokemons/effects/pokemon.effects.d.ts +16 -0
  329. package/dist/examples/pokemons/effects/pokemon.effects.d.ts.map +1 -0
  330. package/dist/examples/pokemons/effects/pokemon.effects.js +51 -0
  331. package/dist/examples/pokemons/effects/pokemon.effects.js.map +1 -0
  332. package/dist/examples/pokemons/middlewares/pokenon.middlewares.d.ts +4 -0
  333. package/dist/examples/pokemons/middlewares/pokenon.middlewares.d.ts.map +1 -0
  334. package/dist/examples/pokemons/middlewares/pokenon.middlewares.js +28 -0
  335. package/dist/examples/pokemons/middlewares/pokenon.middlewares.js.map +1 -0
  336. package/dist/examples/pokemons/selectors/pokemon.selectors.d.ts +13 -0
  337. package/dist/examples/pokemons/selectors/pokemon.selectors.d.ts.map +1 -0
  338. package/dist/examples/pokemons/selectors/pokemon.selectors.js +7 -0
  339. package/dist/examples/pokemons/selectors/pokemon.selectors.js.map +1 -0
  340. package/dist/examples/pokemons/storages/pokemon.storage.d.ts +5 -0
  341. package/dist/examples/pokemons/storages/pokemon.storage.d.ts.map +1 -0
  342. package/dist/examples/pokemons/storages/pokemon.storage.js +13 -0
  343. package/dist/examples/pokemons/storages/pokemon.storage.js.map +1 -0
  344. package/dist/examples/pokemons/store.d.ts +35 -0
  345. package/dist/examples/pokemons/store.d.ts.map +1 -0
  346. package/dist/examples/pokemons/store.js +21 -0
  347. package/dist/examples/pokemons/store.js.map +1 -0
  348. package/dist/examples/pokemons/types.d.ts +26 -0
  349. package/dist/examples/pokemons/types.d.ts.map +1 -0
  350. package/dist/examples/pokemons/types.js +2 -0
  351. package/dist/examples/pokemons/types.js.map +1 -0
  352. package/dist/index.d.ts +10 -0
  353. package/dist/index.d.ts.map +1 -0
  354. package/dist/index.js +18 -0
  355. package/dist/index.js.map +1 -0
  356. package/dist/react/hooks/index.d.ts +3 -0
  357. package/dist/react/hooks/index.d.ts.map +1 -0
  358. package/dist/react/hooks/index.js +3 -0
  359. package/dist/react/hooks/index.js.map +1 -0
  360. package/dist/react/hooks/useSelector.d.ts +22 -0
  361. package/dist/react/hooks/useSelector.d.ts.map +1 -0
  362. package/dist/react/hooks/useSelector.js +104 -0
  363. package/dist/react/hooks/useSelector.js.map +1 -0
  364. package/dist/react/hooks/useStorageSubscribe.d.ts +12 -0
  365. package/dist/react/hooks/useStorageSubscribe.d.ts.map +1 -0
  366. package/dist/react/hooks/useStorageSubscribe.js +49 -0
  367. package/dist/react/hooks/useStorageSubscribe.js.map +1 -0
  368. package/dist/react/index.d.ts +3 -0
  369. package/dist/react/index.d.ts.map +1 -0
  370. package/dist/react/index.js +3 -0
  371. package/dist/react/index.js.map +1 -0
  372. package/dist/react/utils/createSynapse.d.ts +47 -0
  373. package/dist/react/utils/createSynapse.d.ts.map +1 -0
  374. package/dist/react/utils/createSynapse.js +83 -0
  375. package/dist/react/utils/createSynapse.js.map +1 -0
  376. package/dist/react/utils/createSynapseContext.d.ts +29 -0
  377. package/dist/react/utils/createSynapseContext.d.ts.map +1 -0
  378. package/dist/react/utils/createSynapseContext.js +112 -0
  379. package/dist/react/utils/createSynapseContext.js.map +1 -0
  380. package/dist/react/utils/createSynapseCtx.d.ts +30 -0
  381. package/dist/react/utils/createSynapseCtx.d.ts.map +1 -0
  382. package/dist/react/utils/createSynapseCtx.js +124 -0
  383. package/dist/react/utils/createSynapseCtx.js.map +1 -0
  384. package/dist/react/utils/index.d.ts +2 -0
  385. package/dist/react/utils/index.d.ts.map +1 -0
  386. package/dist/react/utils/index.js +2 -0
  387. package/dist/react/utils/index.js.map +1 -0
  388. package/dist/reactive/dispatcher/dispatcher.module.d.ts +195 -0
  389. package/dist/reactive/dispatcher/dispatcher.module.d.ts.map +1 -0
  390. package/dist/reactive/dispatcher/dispatcher.module.js +288 -0
  391. package/dist/reactive/dispatcher/dispatcher.module.js.map +1 -0
  392. package/dist/reactive/dispatcher/index.d.ts +3 -0
  393. package/dist/reactive/dispatcher/index.d.ts.map +1 -0
  394. package/dist/reactive/dispatcher/index.js +3 -0
  395. package/dist/reactive/dispatcher/index.js.map +1 -0
  396. package/dist/reactive/dispatcher/middlewares/index.d.ts +2 -0
  397. package/dist/reactive/dispatcher/middlewares/index.d.ts.map +1 -0
  398. package/dist/reactive/dispatcher/middlewares/index.js +2 -0
  399. package/dist/reactive/dispatcher/middlewares/index.js.map +1 -0
  400. package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts +31 -0
  401. package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts.map +1 -0
  402. package/dist/reactive/dispatcher/middlewares/logger.middleware.js +126 -0
  403. package/dist/reactive/dispatcher/middlewares/logger.middleware.js.map +1 -0
  404. package/dist/reactive/effects/effects.module.d.ts +140 -0
  405. package/dist/reactive/effects/effects.module.d.ts.map +1 -0
  406. package/dist/reactive/effects/effects.module.js +263 -0
  407. package/dist/reactive/effects/effects.module.js.map +1 -0
  408. package/dist/reactive/effects/index.d.ts +2 -0
  409. package/dist/reactive/effects/index.d.ts.map +1 -0
  410. package/dist/reactive/effects/index.js +2 -0
  411. package/dist/reactive/effects/index.js.map +1 -0
  412. package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts +12 -0
  413. package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts.map +1 -0
  414. package/dist/reactive/effects/utils/chunkRequestConsistent.js +16 -0
  415. package/dist/reactive/effects/utils/chunkRequestConsistent.js.map +1 -0
  416. package/dist/reactive/effects/utils/chunkRequestParallel.d.ts +12 -0
  417. package/dist/reactive/effects/utils/chunkRequestParallel.d.ts.map +1 -0
  418. package/dist/reactive/effects/utils/chunkRequestParallel.js +13 -0
  419. package/dist/reactive/effects/utils/chunkRequestParallel.js.map +1 -0
  420. package/dist/reactive/effects/utils/index.d.ts +3 -0
  421. package/dist/reactive/effects/utils/index.d.ts.map +1 -0
  422. package/dist/reactive/effects/utils/index.js +3 -0
  423. package/dist/reactive/effects/utils/index.js.map +1 -0
  424. package/dist/reactive/index.d.ts +3 -0
  425. package/dist/reactive/index.d.ts.map +1 -0
  426. package/dist/reactive/index.js +3 -0
  427. package/dist/reactive/index.js.map +1 -0
  428. package/dist/utils/chunk.util.d.ts +8 -0
  429. package/dist/utils/chunk.util.d.ts.map +1 -0
  430. package/dist/utils/chunk.util.js +21 -0
  431. package/dist/utils/chunk.util.js.map +1 -0
  432. package/dist/utils/createSynapse.d.ts +52 -0
  433. package/dist/utils/createSynapse.d.ts.map +1 -0
  434. package/dist/utils/createSynapse.js +87 -0
  435. package/dist/utils/createSynapse.js.map +1 -0
  436. package/dist/utils/deepMerge.util.d.ts +2 -0
  437. package/dist/utils/deepMerge.util.d.ts.map +1 -0
  438. package/dist/utils/deepMerge.util.js +16 -0
  439. package/dist/utils/deepMerge.util.js.map +1 -0
  440. package/dist/utils/flatMap.util.d.ts +10 -0
  441. package/dist/utils/flatMap.util.d.ts.map +1 -0
  442. package/dist/utils/flatMap.util.js +23 -0
  443. package/dist/utils/flatMap.util.js.map +1 -0
  444. package/dist/utils/index.d.ts +2 -0
  445. package/dist/utils/index.d.ts.map +1 -0
  446. package/dist/utils/index.js +2 -0
  447. package/dist/utils/index.js.map +1 -0
  448. package/package.json +111 -0
@@ -0,0 +1,288 @@
1
+ import { Subject } from 'rxjs';
2
+ /**
3
+ * Класс Dispatcher для интеграции хранилищ с реактивной системой
4
+ */
5
+ export class Dispatcher {
6
+ options;
7
+ // Поток действий
8
+ actions$ = new Subject();
9
+ // Публичный Observable для действий
10
+ actions = this.actions$.asObservable();
11
+ // Методы диспетчеризации действий с типизацией
12
+ dispatch = {};
13
+ // Watcher'ы для реактивной подписки на изменения
14
+ watchers = {};
15
+ // Ссылка на хранилище
16
+ storage;
17
+ // Только один массив для хранения инициализированных middleware
18
+ middlewareFunctions = [];
19
+ // API для инициализации middleware
20
+ middlewareAPI;
21
+ /**
22
+ * Создает новый экземпляр Dispatcher
23
+ */
24
+ constructor(options) {
25
+ this.options = options;
26
+ this.storage = options.storage;
27
+ // Создаем API для middleware сразу
28
+ this.middlewareAPI = {
29
+ getState: () => this.storage.getState(),
30
+ dispatch: async (action) => {
31
+ this.actions$.next(action);
32
+ return action.payload;
33
+ },
34
+ storage: this.storage,
35
+ actions$: this.actions,
36
+ actions: this.dispatch,
37
+ watchers: this.watchers,
38
+ findActionByType: (type) => this.findActionByType(type),
39
+ findWatcherByType: (type) => this.findWatcherByType(type),
40
+ };
41
+ // Если есть middleware в options, добавляем их
42
+ if (options.middlewares && options.middlewares.length > 0) {
43
+ this.use(...options.middlewares);
44
+ }
45
+ }
46
+ /**
47
+ * Добавляет middleware в цепочку обработки
48
+ */
49
+ use(...middlewares) {
50
+ // Инициализируем каждый middleware и добавляем только инициализированную версию
51
+ for (let i = 0; i < middlewares.length; i++) {
52
+ try {
53
+ // Инициализируем middleware с API
54
+ const initializedMiddleware = middlewares[i](this.middlewareAPI);
55
+ this.middlewareFunctions.push(initializedMiddleware);
56
+ }
57
+ catch (error) {
58
+ console.error(`Error initializing middleware [${i}]:`, error);
59
+ }
60
+ }
61
+ return this;
62
+ }
63
+ /**
64
+ * Получает все действия с улучшенной типизацией
65
+ */
66
+ getActions() {
67
+ return this.dispatch;
68
+ }
69
+ /**
70
+ * Получает типизированные действия диспетчера
71
+ */
72
+ getTypedDispatch() {
73
+ return this.dispatch;
74
+ }
75
+ /**
76
+ * Получает типизированные watcher'ы
77
+ */
78
+ getTypedWatchers() {
79
+ return this.watchers;
80
+ }
81
+ /**
82
+ * Находит действие по типу
83
+ */
84
+ findActionByType(actionType) {
85
+ return Object.values(this.dispatch).find((action) => {
86
+ return action.actionType.split(`[${this.storage.name}]`)[1] === actionType;
87
+ });
88
+ }
89
+ /**
90
+ * Находит наблюдатель по типу
91
+ */
92
+ findWatcherByType(actionType) {
93
+ return Object.values(this.watchers).find((watcher) => watcher.actionType === actionType);
94
+ }
95
+ /**
96
+ * Создает действие
97
+ */
98
+ createAction(actionConfig, executionOptions) {
99
+ const actionType = `[${this.storage.name}]${actionConfig.type}`;
100
+ // Для мемоизации храним последние аргументы и результат
101
+ let lastArgs = null;
102
+ let lastResult = null;
103
+ // Создаем функцию диспетчеризации
104
+ const dispatchFn = async (params) => {
105
+ const args = [params];
106
+ // Проверяем мемоизацию
107
+ if (executionOptions?.memoize && lastArgs && lastResult) {
108
+ if (executionOptions.memoize(args, lastArgs, lastResult)) {
109
+ return lastResult;
110
+ }
111
+ }
112
+ // Создаем объект действия
113
+ const actionObject = {
114
+ type: actionType,
115
+ meta: actionConfig.meta,
116
+ };
117
+ // Применяем middleware цепочку
118
+ let result;
119
+ if (this.middlewareFunctions.length > 0) {
120
+ // Базовая функция выполнения действия
121
+ // Строим цепочку middleware в обратном порядке
122
+ let chain = async (action) => {
123
+ if (executionOptions?.worker) {
124
+ return this.executeInWorker(executionOptions.worker, actionType, args, actionConfig.action);
125
+ }
126
+ else {
127
+ return Promise.resolve(actionConfig.action(params));
128
+ }
129
+ };
130
+ // Проходим по middleware в обратном порядке
131
+ // Важно: сначала создаем всю цепочку, затем выполняем
132
+ for (let i = this.middlewareFunctions.length - 1; i >= 0; i--) {
133
+ const currentMiddleware = this.middlewareFunctions[i];
134
+ const nextChain = chain; // Сохраняем предыдущую цепочку
135
+ // Создаем новую цепочку, которая вызывает текущий middleware,
136
+ // передавая предыдущую цепочку как функцию next
137
+ chain = async (action) => {
138
+ // Создаем функцию next для передачи в middleware
139
+ const next = async (nextAction) => nextChain(nextAction);
140
+ // Получаем обработчик действия и сразу вызываем его
141
+ return currentMiddleware(next)(action);
142
+ };
143
+ }
144
+ // Выполняем действие через цепочку middleware
145
+ result = await chain(actionObject);
146
+ }
147
+ else {
148
+ // Выполняем действие напрямую без middleware
149
+ if (executionOptions?.worker) {
150
+ result = await this.executeInWorker(executionOptions.worker, actionType, args, actionConfig.action);
151
+ }
152
+ else {
153
+ result = await actionConfig.action(params);
154
+ }
155
+ }
156
+ // Обновляем объект действия результатом
157
+ actionObject.payload = result;
158
+ // Сохраняем аргументы и результат для мемоизации
159
+ lastArgs = [...args];
160
+ lastResult = result;
161
+ // Отправляем информацию о действии в поток
162
+ this.actions$.next(actionObject);
163
+ return result;
164
+ };
165
+ dispatchFn._type = 'dispatch';
166
+ // Добавляем тип действия как свойство функции
167
+ Object.defineProperty(dispatchFn, 'actionType', {
168
+ value: actionType,
169
+ writable: false,
170
+ enumerable: true,
171
+ });
172
+ // Добавляем метаданные, если они есть
173
+ if (actionConfig.meta) {
174
+ Object.defineProperty(dispatchFn, 'meta', {
175
+ value: actionConfig.meta,
176
+ writable: false,
177
+ enumerable: true,
178
+ });
179
+ }
180
+ return dispatchFn;
181
+ }
182
+ /**
183
+ * Создает watcher для отслеживания изменений в хранилище
184
+ */
185
+ createWatcher(config) {
186
+ // Логика остается без изменений
187
+ const actionType = `[${this.storage.name}]${config.type}`;
188
+ // Создаем Subject для этого watcher'а
189
+ const subject = new Subject();
190
+ // Предыдущее значение для сравнения
191
+ let prevValue;
192
+ // Подписываемся на изменения состояния
193
+ const unsubscribe = this.storage.subscribe(config.selector, (value) => {
194
+ // Проверяем, нужно ли генерировать событие
195
+ if (!config.shouldTrigger || config.shouldTrigger(prevValue, value)) {
196
+ // Создаем действие
197
+ const action = {
198
+ type: actionType,
199
+ payload: value,
200
+ meta: config.meta,
201
+ };
202
+ // Отправляем в основной поток действий
203
+ this.actions$.next(action);
204
+ // Отправляем в поток этого watcher'а
205
+ subject.next(action);
206
+ // Обновляем предыдущее значение
207
+ prevValue = value;
208
+ }
209
+ });
210
+ // Создаем функцию watcher'а
211
+ const watcherFn = () => subject.asObservable();
212
+ watcherFn._type = 'watchers';
213
+ // Добавляем свойства
214
+ Object.defineProperty(watcherFn, 'actionType', {
215
+ value: actionType,
216
+ writable: false,
217
+ enumerable: true,
218
+ });
219
+ if (config.meta) {
220
+ Object.defineProperty(watcherFn, 'meta', {
221
+ value: config.meta,
222
+ writable: false,
223
+ enumerable: true,
224
+ });
225
+ }
226
+ // Добавляем метод для отписки
227
+ Object.defineProperty(watcherFn, 'unsubscribe', {
228
+ value: unsubscribe,
229
+ writable: false,
230
+ enumerable: true,
231
+ });
232
+ //@ts-ignore
233
+ return watcherFn;
234
+ }
235
+ /**
236
+ * Выполняет действие в worker
237
+ */
238
+ async executeInWorker(worker, actionType, args, fallbackAction) {
239
+ // Логика остается без изменений
240
+ return new Promise((resolve, reject) => {
241
+ const requestId = `${actionType}_${Date.now()}_${Math.random()}`;
242
+ const handleMessage = (event) => {
243
+ if (event.data.requestId === requestId) {
244
+ worker.removeEventListener('message', handleMessage);
245
+ if (event.data.error) {
246
+ reject(new Error(event.data.error));
247
+ }
248
+ else {
249
+ resolve(event.data.result);
250
+ }
251
+ }
252
+ };
253
+ worker.addEventListener('message', handleMessage);
254
+ worker.postMessage({
255
+ type: actionType,
256
+ args,
257
+ requestId,
258
+ });
259
+ // Опционально: таймаут
260
+ setTimeout(() => {
261
+ worker.removeEventListener('message', handleMessage);
262
+ reject(new Error(`Worker execution timeout for action: ${actionType}`));
263
+ }, 30000); // 30 секунд таймаут
264
+ });
265
+ }
266
+ }
267
+ /**
268
+ * Функция для создания типизированного диспетчера
269
+ */
270
+ export function createDispatcher(options, actionsSetup) {
271
+ // Создаем экземпляр диспетчера
272
+ const dispatcher = new Dispatcher(options);
273
+ // Вызываем функцию настройки действий с обновленной структурой аргументов
274
+ const actions = actionsSetup(options.storage, {
275
+ createAction: (actionConfig, executionOptions) => dispatcher.createAction(actionConfig, executionOptions),
276
+ createWatcher: (config) => dispatcher.createWatcher(config),
277
+ });
278
+ // Регистрируем все созданные объекты в соответствующих коллекциях
279
+ for (const [key, fn] of Object.entries(actions)) {
280
+ if (typeof fn === 'function') {
281
+ const type = fn._type;
282
+ // @ts-ignore
283
+ dispatcher[type][key] = fn;
284
+ }
285
+ }
286
+ return dispatcher;
287
+ }
288
+ //# sourceMappingURL=dispatcher.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.module.js","sourceRoot":"","sources":["../../../src/reactive/dispatcher/dispatcher.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './dispatcher.module';
2
+ export * from './middlewares';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactive/dispatcher/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './dispatcher.module';
2
+ export * from './middlewares';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reactive/dispatcher/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './logger.middleware';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/reactive/dispatcher/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './logger.middleware';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/reactive/dispatcher/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,31 @@
1
+ import type { EnhancedMiddleware } from '../dispatcher.module';
2
+ interface LoggerTranslations {
3
+ action: string;
4
+ prevState: string;
5
+ nextState: string;
6
+ duration: string;
7
+ error: string;
8
+ diff: string;
9
+ changesCount: string;
10
+ showFullState: string;
11
+ }
12
+ interface LoggerColors {
13
+ title: string;
14
+ prevState: string;
15
+ fullState: string;
16
+ action: string;
17
+ nextState: string;
18
+ error: string;
19
+ diff: string;
20
+ }
21
+ interface LoggerOptions {
22
+ collapsed?: boolean;
23
+ duration?: boolean;
24
+ diff?: boolean;
25
+ showFullState?: boolean;
26
+ translations?: Partial<LoggerTranslations>;
27
+ colors?: Partial<LoggerColors>;
28
+ }
29
+ export declare const loggerDispatcherMiddleware: <State extends Record<string, any>>(options?: LoggerOptions) => EnhancedMiddleware<State>;
30
+ export {};
31
+ //# sourceMappingURL=logger.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.middleware.d.ts","sourceRoot":"","sources":["../../../../src/reactive/dispatcher/middlewares/logger.middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC/B;AA4CD,eAAO,MAAM,0BAA0B,GAAI,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAS,aAAkB,KAAG,kBAAkB,CAAC,KAAK,CAuGnI,CAAA"}
@@ -0,0 +1,126 @@
1
+ // Функция для вычисления разницы между двумя объектами состояния
2
+ function getStateDiff(prevState, nextState) {
3
+ const diff = {};
4
+ // Проверяем изменения в свойствах верхнего уровня
5
+ const allKeys = [...new Set([...Object.keys(prevState), ...Object.keys(nextState)])];
6
+ allKeys.forEach((key) => {
7
+ // Если ключ существует в обоих состояниях
8
+ if (key in prevState && key in nextState) {
9
+ // Если это объекты, рекурсивно проверяем их
10
+ if (typeof prevState[key] === 'object' &&
11
+ prevState[key] !== null &&
12
+ typeof nextState[key] === 'object' &&
13
+ nextState[key] !== null &&
14
+ !Array.isArray(prevState[key]) &&
15
+ !Array.isArray(nextState[key])) {
16
+ const nestedDiff = getStateDiff(prevState[key], nextState[key]);
17
+ if (Object.keys(nestedDiff).length > 0) {
18
+ diff[key] = nestedDiff;
19
+ }
20
+ }
21
+ // Для массивов и примитивов просто сравниваем значения
22
+ else if (JSON.stringify(prevState[key]) !== JSON.stringify(nextState[key])) {
23
+ diff[key] = { PREV: prevState[key], NEXT: nextState[key] };
24
+ }
25
+ }
26
+ // Если ключ существует только в предыдущем состоянии
27
+ else if (key in prevState) {
28
+ diff[key] = { PREV: prevState[key], NEXT: undefined };
29
+ }
30
+ // Если ключ существует только в новом состоянии
31
+ else {
32
+ diff[key] = { PREV: undefined, NEXT: nextState[key] };
33
+ }
34
+ });
35
+ return diff;
36
+ }
37
+ export const loggerDispatcherMiddleware = (options = {}) => {
38
+ const defaultTranslations = {
39
+ action: 'Действие',
40
+ prevState: 'Предыдущее состояние',
41
+ nextState: 'Следующее состояние',
42
+ duration: 'Длительность',
43
+ error: 'Ошибка в действии',
44
+ diff: 'Изменения',
45
+ changesCount: 'Количество изменений',
46
+ showFullState: 'Полное состояние',
47
+ };
48
+ const defaultOptions = {
49
+ collapsed: false,
50
+ duration: true,
51
+ diff: false,
52
+ showFullState: true, // Показывать полное состояние по умолчанию
53
+ translations: defaultTranslations,
54
+ colors: {
55
+ title: '#3498db',
56
+ prevState: '#9E9E9E',
57
+ fullState: '#008a15',
58
+ action: '#03A9F4',
59
+ nextState: '#4CAF50',
60
+ error: '#F20404',
61
+ diff: '#9C27B0',
62
+ },
63
+ };
64
+ // Объединяем пользовательские настройки с настройками по умолчанию
65
+ const mergedOptions = {
66
+ ...defaultOptions,
67
+ ...options,
68
+ // Объединяем переводы отдельно, чтобы позволить частичное переопределение
69
+ translations: {
70
+ ...defaultTranslations,
71
+ ...(options.translations || {}),
72
+ },
73
+ // Объединяем цвета отдельно, чтобы позволить частичное переопределение
74
+ colors: {
75
+ ...defaultOptions.colors,
76
+ ...(options.colors || {}),
77
+ },
78
+ };
79
+ const { collapsed, duration, colors, translations } = mergedOptions;
80
+ return (api) => (next) => async (action) => {
81
+ // Собираем информацию перед выполнением
82
+ const started = Date.now();
83
+ const prevState = await api.getState();
84
+ // Выполняем действие без группировки логов
85
+ try {
86
+ // Выполняем действие
87
+ const result = await next(action);
88
+ // Собираем информацию после выполнения
89
+ const nextState = await api.getState();
90
+ const ended = Date.now();
91
+ const time = ended - started;
92
+ // Теперь выводим всю информацию в группе
93
+ const title = `${action.type}`;
94
+ const groupMethod = collapsed ? console.groupCollapsed : console.group;
95
+ groupMethod(`%c ${title}`, `color: ${colors.title}; font-weight: bold`);
96
+ // Выводим информацию о действии
97
+ console.log(`%c ${translations.action}:`, `color: ${colors.action}; font-weight: bold`, action);
98
+ // Если включена опция diff, вычисляем и показываем изменения
99
+ if (mergedOptions.diff) {
100
+ const stateDiff = getStateDiff(prevState, nextState);
101
+ const changesCount = Object.keys(stateDiff).length;
102
+ console.log(`%c ${translations.diff} (${translations.changesCount}: ${changesCount}):`, `color: ${colors.diff}; font-weight: bold`, stateDiff);
103
+ }
104
+ // Если showFullState включен, показываем полные состояния
105
+ if (mergedOptions.showFullState) {
106
+ // Создаем подгруппу для полного состояния
107
+ console.groupCollapsed(`%c ${translations.showFullState}`, `color: ${colors.fullState}; font-weight: bold`);
108
+ console.log(`%c ${translations.prevState}:`, `color: ${colors.prevState}; font-weight: bold`, prevState);
109
+ console.log(`%c ${translations.nextState}:`, `color: ${colors.nextState}; font-weight: bold`, nextState);
110
+ console.groupEnd();
111
+ }
112
+ if (duration) {
113
+ console.log(`%c ${translations.duration}: %c ${time}ms`, 'font-weight: bold', 'color: #4CAF50');
114
+ }
115
+ console.groupEnd();
116
+ return result;
117
+ }
118
+ catch (error) {
119
+ // В случае ошибки логируем её отдельно, не в группе
120
+ console.error(`%c ${translations.error}:`, `color: ${colors.error}; font-weight: bold`, action.type, error);
121
+ // Пробрасываем ошибку дальше
122
+ throw error;
123
+ }
124
+ };
125
+ };
126
+ //# sourceMappingURL=logger.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.middleware.js","sourceRoot":"","sources":["../../../../src/reactive/dispatcher/middlewares/logger.middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ import { Observable, OperatorFunction } from 'rxjs';
2
+ import { IStorage } from '../../core';
3
+ import { Action, ActionsResult, Dispatcher, DispatchFunction, ExtractResultType, WatcherFunction } from '../dispatcher';
4
+ import { ChunkRequestConsistent, ChunkRequestParallel } from './utils';
5
+ /**
6
+ * Тип действия с типизированным payload
7
+ */
8
+ export interface TypedAction<P> extends Action<P> {
9
+ type: string;
10
+ payload: P;
11
+ }
12
+ /**
13
+ * Тип для внешних состояний
14
+ */
15
+ export type ExternalStates = Record<string, Observable<any>>;
16
+ /**
17
+ * Тип для базового эффекта без доступа к состоянию
18
+ */
19
+ export 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>;
20
+ /**
21
+ * Тип для эффекта с доступом к состоянию и конфигурации - это основной тип, который используется по умолчанию
22
+ */
23
+ export 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>;
24
+ /**
25
+ * Тип для получения типов действий диспетчера
26
+ */
27
+ export type DispatcherActions<T> = T extends Dispatcher<any, infer A> ? ActionsResult<A> : Record<string, DispatchFunction<any, any>>;
28
+ /**
29
+ * Конфигурация для валидации в validateMap
30
+ */
31
+ export interface ValidateConfig {
32
+ conditions: boolean[];
33
+ skipAction: (() => any) | any | ((() => any) | any)[];
34
+ }
35
+ /**
36
+ * Утилиты для запросов в validateMap
37
+ */
38
+ export interface ValidateMapRequestUtils {
39
+ chunkRequest: ChunkRequestParallel;
40
+ chunkRequestConsistent: ChunkRequestConsistent;
41
+ }
42
+ /**
43
+ * Оператор для фильтрации действий по типу с сохранением типа payload
44
+ */
45
+ export declare function ofType<T extends DispatchFunction<any, any> | WatcherFunction<any>>(actionFn: T): OperatorFunction<Action, TypedAction<T extends WatcherFunction<infer R> ? R : ExtractResultType<T>>>;
46
+ /**
47
+ * Оператор для фильтрации действий по нескольким типам с объединением типов payload
48
+ * @param actionFns Массив функций действий
49
+ */
50
+ export declare function ofTypes<T extends DispatchFunction<any, any>[]>(actionFns: [...T]): OperatorFunction<Action, TypedAction<ExtractResultType<T[number]>>>;
51
+ /**
52
+ * Оператор для ожидания выполнения всех указанных действий
53
+ * @param actionFns Массив функций действий
54
+ */
55
+ export declare function ofTypesWaitAll<T extends DispatchFunction<any, any>[]>(actionFns: [...T]): (source$: Observable<Action>) => Observable<{ [K in keyof T]: TypedAction<ExtractResultType<T[K]>>; }>;
56
+ /**
57
+ * Оператор selectorMap для выбора частей состояния с помощью селекторов
58
+ * @param state$ Поток состояния
59
+ * @param selectors Селекторы для выбора частей состояния
60
+ */
61
+ export declare function selectorMap<TAction, TState, TResults extends any[]>(state$: Observable<TState>, ...selectors: {
62
+ [K in keyof TResults]: (state: TState) => TResults[K];
63
+ }): OperatorFunction<TAction, [TAction, TResults]>;
64
+ /**
65
+ * Оператор validateMap для валидации данных и условного вызова API
66
+ */
67
+ export declare function validateMap<T, TResult = any>({ validator, apiCall, }: {
68
+ validator?: (value: T) => ValidateConfig;
69
+ apiCall: (value: T, utils: ValidateMapRequestUtils) => Observable<TResult>;
70
+ }): OperatorFunction<T, any>;
71
+ /**
72
+ * Класс для управления эффектами с поддержкой доступа к состоянию и конфигурации
73
+ * Основной класс, который следует использовать
74
+ */
75
+ export 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>> {
76
+ private storage;
77
+ private externalStates;
78
+ private dispatchers;
79
+ private services;
80
+ private config;
81
+ private effects;
82
+ private subscriptions;
83
+ private running;
84
+ private action$;
85
+ /**
86
+ * Поток состояния
87
+ */
88
+ readonly state$: Observable<TState>;
89
+ /**
90
+ * Создает модуль эффектов с доступом к состоянию, внешним состояниям и конфигурации
91
+ * @param storage Хранилище состояния
92
+ * @param externalStates Внешние состояния
93
+ * @param dispatchers Объект с диспетчерами
94
+ * @param services Объект с сервисами
95
+ * @param config Глобальная конфигурация для всех эффектов
96
+ */
97
+ constructor(storage: IStorage<TState>, externalStates: TExternalStates | undefined, dispatchers: TDispatchers, services?: TServices, config?: TConfig);
98
+ /**
99
+ * Подписывается на действия от всех диспетчеров
100
+ */
101
+ private subscribeToDispatchers;
102
+ add(effect: Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>): this;
103
+ /**
104
+ * Добавляет несколько эффектов
105
+ * @param effects Эффекты для добавления
106
+ * @returns Текущий модуль
107
+ */
108
+ addEffects(effects: Effect<TState, TDispatchers, TServices, TConfig, TExternalStates>[]): this;
109
+ /**
110
+ * Запускает все эффекты
111
+ * @returns Текущий модуль
112
+ */
113
+ start(): this;
114
+ /**
115
+ * Останавливает все эффекты
116
+ * @returns Текущий модуль
117
+ */
118
+ stop(): this;
119
+ /**
120
+ * Подписывается на конкретный эффект
121
+ * @param effect Эффект для подписки
122
+ */
123
+ private subscribeToEffect;
124
+ }
125
+ /**
126
+ * Вспомогательная функция для создания типизированного эффекта без состояния
127
+ * @deprecated Используйте createEffect вместо этого
128
+ */
129
+ export declare function createEffectBase<TDispatchers extends Record<string, Dispatcher<any, any>>, TServices extends Record<string, any>>(effect: EffectBase<TDispatchers, TServices>): EffectBase<TDispatchers, TServices>;
130
+ /**
131
+ * Вспомогательная функция для создания типизированного эффекта с состоянием и конфигурацией
132
+ */
133
+ export 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>;
134
+ /**
135
+ * Объединяет несколько эффектов в один
136
+ * @param effects Эффекты для объединения
137
+ * @returns Объединенный эффект
138
+ */
139
+ export 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>;
140
+ //# sourceMappingURL=effects.module.d.ts.map