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,110 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useSelector, useStorageSubscribe } from '@vlad92msk/synapse/react';
3
+ import { useEffect, useState } from 'react';
4
+ import { distinctUntilChanged, filter, map } from 'rxjs/operators';
5
+ import { pokemonActions, pokemonSelectors, pokemonState$, pokemonStorage } from './store';
6
+ // Стили
7
+ const btn = { background: '#c7c6c6', color: 'black', padding: '5px', borderRadius: '5px' };
8
+ const flexColumn = { display: 'flex', flexDirection: 'column' };
9
+ const img = { position: 'absolute', objectFit: 'contain' };
10
+ const contentContainer = { ...flexColumn, position: 'relative', width: '400px', height: '400px', marginTop: '10px' };
11
+ const actionContainer = { display: 'flex', justifyContent: 'space-between', alignItems: 'center' };
12
+ export function SimplePokemonViewer() {
13
+ const [state, setState] = useState({
14
+ currentPokemon: null,
15
+ loading: true,
16
+ error: null,
17
+ currentId: 1,
18
+ });
19
+ // Инициируем загрузку первого покемона через действия
20
+ useEffect(() => {
21
+ pokemonActions.loadPokemon(1);
22
+ }, []);
23
+ const handleNext = () => {
24
+ pokemonActions.next().then((finalPayload) => {
25
+ // finalPayload - то, что возвращает функция action в dispatcher-е
26
+ // Именно это окажется в эффекте в качестве payload
27
+ console.log('finalPayload:', finalPayload);
28
+ });
29
+ };
30
+ const handlePrev = () => {
31
+ pokemonActions.prev();
32
+ };
33
+ // ============ Варианты подписок ===============
34
+ // ВАРИАНТ #1 (Прямая подписка на хранилище)
35
+ // subscribeToAll - вызывается при срабатывании любого события связанного с обновлением данных
36
+ useEffect(() => {
37
+ const unsubscribe = pokemonStorage.subscribeToAll((event) => {
38
+ console.log('event.type', event.type); // Тип события
39
+ console.log('event.key', event.key); // Массив ключей, которые меняются (Корневые ключи хранилища)
40
+ console.log('event.changedPaths', event.changedPaths); // Массив путей, которые менялись (Например: ['key1.key2.key3', enyKey1.enyKey2])
41
+ console.log('event.value', event.value); // Текущее состояние
42
+ if (event.key === 'currentId') {
43
+ setState((prev) => ({
44
+ ...prev,
45
+ currentId: event.value,
46
+ }));
47
+ }
48
+ if (Array.isArray(event.key)) {
49
+ setState((prev) => ({
50
+ ...prev,
51
+ ...event.value,
52
+ }));
53
+ }
54
+ });
55
+ return () => unsubscribe();
56
+ }, []);
57
+ // ВАРИАНТ #1.1 (Прямая подписка на хранилище)
58
+ // Прямая подписка на значение в хранилище с помощью хука
59
+ const selectorValue2 = useStorageSubscribe(pokemonStorage, (s) => s.currentId);
60
+ console.log('selectorValue2', selectorValue2);
61
+ // ВАРИАНТ #1.2 (Прямая подписка на хранилище)
62
+ // Второй колбэк вызывается только если изненилось значение полученное по ключу
63
+ // Первый паратметр - либо селектор, либо строка
64
+ // Этот подход можно использовать если нужна дополнительная логика обновления состояниея в компоненте
65
+ // Или вне React
66
+ useEffect(() => {
67
+ const unsubscribe = pokemonStorage.subscribe((s) => s.currentId, (value) => {
68
+ // Сработает только если изменится currentId
69
+ console.log('currentId', value);
70
+ });
71
+ return () => {
72
+ unsubscribe();
73
+ };
74
+ }, []);
75
+ // ВАРИАНТ #2 (Использование селекторов в стиле Redux)
76
+ // С помощью хука useSelector
77
+ const selectorValue1 = useSelector(pokemonSelectors.sprites);
78
+ console.log('selectorValue1', selectorValue1);
79
+ // ВАРИАНТ #2.1
80
+ // Нативным способом (единоразовое получение)
81
+ useEffect(() => {
82
+ pokemonSelectors.sprites.select().then((val) => {
83
+ console.log('pokemonSelectors select', val);
84
+ });
85
+ }, []);
86
+ // ВАРИАНТ #2.2
87
+ // Нативным способом (подписка на вычисляемое значение)
88
+ useEffect(() => {
89
+ pokemonSelectors.sprites.subscribe({
90
+ notify: (s) => {
91
+ console.log('pokemonSelectors subscribe', s);
92
+ },
93
+ });
94
+ }, []);
95
+ // ВАРИАНТ #3 (Реактивный подход)
96
+ // работает только совместно с использованием Dispatcher-а
97
+ useEffect(() => {
98
+ const subscription = pokemonState$
99
+ .pipe(map((state) => state.currentId), distinctUntilChanged(), filter((pokemonId) => pokemonId > 3))
100
+ .subscribe((state) => {
101
+ console.log('Текущее состояние REACTIVE:', state);
102
+ });
103
+ return () => {
104
+ subscription.unsubscribe();
105
+ };
106
+ }, []);
107
+ // ============ Варианты подписок =============== КОНЕЦ
108
+ return (_jsxs("div", { style: flexColumn, children: [state.error && _jsx("p", { children: `Error: ${state.error}` }), state.loading ? (_jsx("p", { children: "Loading Pok\u00E9mon..." })) : state.currentPokemon ? (_jsxs("div", { style: contentContainer, children: [_jsx("h2", { children: `Name: ${state.currentPokemon.name}` }), _jsxs("div", { style: { ...flexColumn, marginTop: '10px' }, children: [_jsx("p", { children: `Height: ${state.currentPokemon.height / 10}` }), _jsx("p", { children: `Weight: ${state.currentPokemon.weight / 10}` })] }), _jsx("img", { style: img, src: state.currentPokemon.sprites.other?.['official-artwork']?.front_default || state.currentPokemon.sprites.front_default, alt: state.currentPokemon.name })] })) : null, _jsxs("div", { style: actionContainer, children: [_jsx("button", { style: btn, onClick: handlePrev, children: '<--' }), _jsx("strong", { children: `#${state.currentId}` }), _jsx("button", { style: btn, onClick: handleNext, children: '-->' })] })] }));
109
+ }
110
+ //# sourceMappingURL=PokemonList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PokemonList.js","sourceRoot":"","sources":["../../../src/examples/pokemons/PokemonList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { ApiClient } from '@vlad92msk/synapse/api';
2
+ import { Pokemon } from './types';
3
+ export interface PokemonSearchParams {
4
+ limit?: number;
5
+ offset?: number;
6
+ }
7
+ export declare const api: ApiClient<(create: import("../../../dist/api/types/endpoint.interface").CreateEndpoint) => Promise<{
8
+ fetchPokemonById: import("../../../dist/api/types/endpoint.interface").EndpointConfig<{
9
+ id: number;
10
+ }, Pokemon>;
11
+ }>>;
12
+ export declare const pokemonApi: ApiClient<(create: import("../../../dist/api/types/endpoint.interface").CreateEndpoint) => Promise<{
13
+ fetchPokemonById: import("../../../dist/api/types/endpoint.interface").EndpointConfig<{
14
+ id: number;
15
+ }, Pokemon>;
16
+ }>>;
17
+ export declare const pokemonEndpoints: {
18
+ fetchPokemonById: import("../../../dist/api/types/endpoint.interface").Endpoint<{
19
+ id: number;
20
+ }, Pokemon>;
21
+ };
22
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/examples/pokemons/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,wBAAwB,CAAA;AAGlE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAMD,eAAO,MAAM,GAAG;;YAqBmB,MAAM;;GASvC,CAAA;AAEF,eAAO,MAAM,UAAU;;YAXY,MAAM;;GAWC,CAAA;AAK1C,eAAO,MAAM,gBAAgB;;YAhBM,MAAM;;CAgBgB,CAAA"}
@@ -0,0 +1,43 @@
1
+ import { ApiClient, ResponseFormat } from '@vlad92msk/synapse/api';
2
+ import { MemoryStorage } from '@vlad92msk/synapse/core';
3
+ const storage = await new MemoryStorage({
4
+ name: 'pokemon-api-cache',
5
+ }).initialize();
6
+ export const api = new ApiClient({
7
+ storage,
8
+ // Или boolean или объект с настройками
9
+ cache: {
10
+ // Время жизни кэша в миллисекундах
11
+ ttl: 5 * 60 * 1000, // 5 минут
12
+ // Инвалидировать кэш при ошибке
13
+ invalidateOnError: true,
14
+ cleanup: {
15
+ // Включить периодическую очистку
16
+ enabled: true,
17
+ // Интервал очистки в миллисекундах
18
+ interval: 10 * 60 * 1000, // 10 минут
19
+ },
20
+ },
21
+ baseQuery: {
22
+ baseUrl: 'https://pokeapi.co/api/v2',
23
+ timeout: 10000,
24
+ credentials: 'same-origin',
25
+ },
26
+ endpoints: async (create) => ({
27
+ fetchPokemonById: create({
28
+ request: (params) => ({
29
+ path: `/pokemon/${params.id}`,
30
+ method: 'GET',
31
+ responseFormat: ResponseFormat.Json,
32
+ }),
33
+ tags: ['pokemon-details'],
34
+ }),
35
+ }),
36
+ });
37
+ // Инициализация
38
+ export const pokemonApi = await api.init();
39
+ // Демонтирование
40
+ // await pokemonApi.destroy()
41
+ // Получение эндпоинтов
42
+ export const pokemonEndpoints = pokemonApi.getEndpoints();
43
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/examples/pokemons/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AASvD,MAAM,OAAO,GAAG,MAAM,IAAI,aAAa,CAAC;IACtC,IAAI,EAAE,mBAAmB;CAC1B,CAAC,CAAC,UAAU,EAAE,CAAA;AAEf,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC;IAC/B,OAAO;IACP,uCAAuC;IACvC,KAAK,EAAE;QACL,mCAAmC;QACnC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,UAAU;QAC9B,iCAAiC;QACjC,iBAAiB,EAAE,IAAI;QACvB,OAAO,EAAE;YACP,iCAAiC;YACjC,OAAO,EAAE,IAAI;YACb,mCAAmC;YACnC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;SACtC;KACF;IACD,SAAS,EAAE;QACT,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,aAAa;KAC3B;IACD,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAA0B;YAChD,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACpB,IAAI,EAAE,YAAY,MAAM,CAAC,EAAE,EAAE;gBAC7B,MAAM,EAAE,KAAK;gBACb,cAAc,EAAE,cAAc,CAAC,IAAI;aACpC,CAAC;YACF,IAAI,EAAE,CAAC,iBAAiB,CAAC;SAC1B,CAAC;KACH,CAAC;CACH,CAAC,CAAA;AACF,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;AAC1C,iBAAiB;AACjB,6BAA6B;AAE7B,uBAAuB;AACvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC,YAAY,EAAE,CAAA"}
@@ -0,0 +1,15 @@
1
+ export interface AppConfig {
2
+ apiBaseUrl: string;
3
+ apiKey: string;
4
+ requestTimeoutMs: number;
5
+ features: {
6
+ enableNotifications: boolean;
7
+ enableCache: boolean;
8
+ };
9
+ themeSettings: {
10
+ primaryColor: string;
11
+ secondaryColor: string;
12
+ };
13
+ }
14
+ export declare const appConfig: AppConfig;
15
+ //# sourceMappingURL=app.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.config.d.ts","sourceRoot":"","sources":["../../../src/examples/pokemons/app.config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE;QACR,mBAAmB,EAAE,OAAO,CAAA;QAC5B,WAAW,EAAE,OAAO,CAAA;KACrB,CAAA;IACD,aAAa,EAAE;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;CACF;AAED,eAAO,MAAM,SAAS,EAAE,SAYvB,CAAA"}
@@ -0,0 +1,15 @@
1
+ // Просто условный объект с конфигурацией, которую можно использовать в эффектах
2
+ export const appConfig = {
3
+ apiBaseUrl: 'https://pokeapi.co/api/v2',
4
+ apiKey: 'your-api-key-here',
5
+ requestTimeoutMs: 5000,
6
+ features: {
7
+ enableNotifications: true,
8
+ enableCache: true,
9
+ },
10
+ themeSettings: {
11
+ primaryColor: '#FF0000', // Pokemon Red!
12
+ secondaryColor: '#FFFFFF',
13
+ },
14
+ };
15
+ //# sourceMappingURL=app.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.config.js","sourceRoot":"","sources":["../../../src/examples/pokemons/app.config.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAiBhF,MAAM,CAAC,MAAM,SAAS,GAAc;IAClC,UAAU,EAAE,2BAA2B;IACvC,MAAM,EAAE,mBAAmB;IAC3B,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE;QACR,mBAAmB,EAAE,IAAI;QACzB,WAAW,EAAE,IAAI;KAClB;IACD,aAAa,EAAE;QACb,YAAY,EAAE,SAAS,EAAE,eAAe;QACxC,cAAc,EAAE,SAAS;KAC1B;CACF,CAAA"}
@@ -0,0 +1,128 @@
1
+ import { createDispatcher, loggerDispatcherMiddleware } from '@vlad92msk/synapse/reactive';
2
+ import { createPokemonAlertMiddleware } from '../middlewares/pokenon.middlewares';
3
+ // Функция для создания диспетчера
4
+ export function createPokemonDispatcher(storage) {
5
+ // Создаем middleware: логгер
6
+ const loggerMiddleware = loggerDispatcherMiddleware({
7
+ collapsed: true, // Сворачиваем группы в консоли для компактности
8
+ colors: {
9
+ title: '#3498db', // Кастомный синий цвет для заголовка
10
+ },
11
+ duration: true,
12
+ diff: true,
13
+ showFullState: true,
14
+ });
15
+ // Создаем middleware: alertM (просто для примера)
16
+ const alertM = createPokemonAlertMiddleware();
17
+ return createDispatcher({
18
+ storage,
19
+ middlewares: [loggerMiddleware, alertM],
20
+ }, (storage, { createWatcher, createAction }) => ({
21
+ // Добавляем watcher для отслеживания текущего ID
22
+ watchCurrentId: createWatcher({
23
+ type: 'pokemon/currentIdChanged',
24
+ selector: (state) => state.currentId,
25
+ shouldTrigger: (prev, curr) => prev !== curr,
26
+ meta: {
27
+ description: 'Следит за изменениями ID текущего покемона',
28
+ },
29
+ }),
30
+ // Watcher для отслеживания состояния загрузки
31
+ watchLoadingState: createWatcher({
32
+ type: 'pokemon/loadingStateChanged',
33
+ selector: (state) => state.loading,
34
+ }),
35
+ // Загрузка покемона по ID
36
+ loadPokemon: createAction({
37
+ type: 'pokemon/loadPokemonIdl',
38
+ action: async (id) => ({ id }),
39
+ }),
40
+ loadPokemonRequest: createAction({
41
+ type: 'pokemon/loadPokemonRequest',
42
+ action: async (id) => {
43
+ await storage.update((state) => {
44
+ state.loading = true;
45
+ state.error = null;
46
+ state.currentId = id;
47
+ });
48
+ return { id };
49
+ },
50
+ }),
51
+ // Успешное получение данных
52
+ success: createAction({
53
+ type: 'pokemon/success',
54
+ action: async ({ data }) => {
55
+ await storage.update((state) => {
56
+ state.currentPokemon = data;
57
+ state.loading = false;
58
+ state.error = null;
59
+ });
60
+ // Возвращаем данные покемона как payload
61
+ return { data };
62
+ },
63
+ }, {
64
+ // Функция мемоизации (пока не тестировал)
65
+ // memoize: (currentArgs: any[], previousArgs: any[], previousResult: any) => true,
66
+ // Веб-воркер для выполнения действия (пока не тестировал)
67
+ // worker: myWorker,
68
+ }),
69
+ // Ошибка при получении данных
70
+ failure: createAction({
71
+ type: 'pokemon/failure',
72
+ action: async (err) => {
73
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error';
74
+ await storage.update((state) => {
75
+ state.loading = false;
76
+ state.error = errorMessage;
77
+ });
78
+ // Возвращаем ошибку как payload
79
+ return { err };
80
+ },
81
+ }),
82
+ // Перейти к следующему покемону
83
+ next: createAction({
84
+ type: 'pokemon/next',
85
+ action: async () => {
86
+ let newId = 1;
87
+ await storage.update((state) => {
88
+ newId = state.currentId + 1;
89
+ if (newId > 151)
90
+ newId = 1; // Ограничиваем первым поколением (1-151)
91
+ state.currentId = newId;
92
+ });
93
+ return { id: newId };
94
+ },
95
+ }),
96
+ // Перейти к предыдущему покемону
97
+ prev: createAction({
98
+ type: 'pokemon/prev',
99
+ action: async () => {
100
+ let newId = 1;
101
+ await storage.update((state) => {
102
+ newId = state.currentId - 1;
103
+ if (newId < 1)
104
+ newId = 151; // Ограничиваем первым поколением (1-151)
105
+ state.currentId = newId;
106
+ });
107
+ console.log(`Action: Previous pokemon (ID ${newId})`);
108
+ return { id: newId };
109
+ },
110
+ }),
111
+ showAlert: createAction({
112
+ type: 'pokemon/showAlert',
113
+ action: async (payload) => {
114
+ // Используем глобальный alert для демонстрации
115
+ alert(payload.message);
116
+ // Здесь можно также обновить состояние для отображения alert в UI
117
+ // например, добавить запись в массив alerts в state
118
+ },
119
+ meta: {
120
+ description: 'Показывает оповещение пользователю',
121
+ },
122
+ }),
123
+ }));
124
+ // Альтернативный вариант добавления:
125
+ // .use(logger)
126
+ // .use(alertM)
127
+ }
128
+ //# sourceMappingURL=pokemon.dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokemon.dispatcher.js","sourceRoot":"","sources":["../../../../src/examples/pokemons/dispatchers/pokemon.dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { pokemonEndpoints } from '../api';
2
+ import { AppConfig } from '../app.config';
3
+ import { PokemonDispatcher } from '../dispatchers/pokemon.dispatcher';
4
+ import { PokemonState } from '../types';
5
+ type PokemonDispatcherType = {
6
+ pokemonDispatcher: PokemonDispatcher;
7
+ };
8
+ type PokemonApiType = {
9
+ pokemonApi: typeof pokemonEndpoints;
10
+ };
11
+ export declare const navigationEffect: import("@vlad92msk/synapse/reactive").Effect<PokemonState, PokemonDispatcherType, PokemonApiType, AppConfig>;
12
+ export declare const watchIdEffect: import("@vlad92msk/synapse/reactive").Effect<PokemonState, PokemonDispatcherType, PokemonApiType, AppConfig>;
13
+ export declare const loadPokemonEffect: import("@vlad92msk/synapse/reactive").Effect<PokemonState, PokemonDispatcherType, PokemonApiType, AppConfig>;
14
+ export declare const pokemonEffects: import("@vlad92msk/synapse/reactive").Effect<PokemonState, PokemonDispatcherType, PokemonApiType, AppConfig>;
15
+ export {};
16
+ //# sourceMappingURL=pokemon.effects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokemon.effects.d.ts","sourceRoot":"","sources":["../../../../src/examples/pokemons/effects/pokemon.effects.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGvC,KAAK,qBAAqB,GAAG;IAAE,iBAAiB,EAAE,iBAAiB,CAAA;CAAE,CAAA;AACrE,KAAK,cAAc,GAAG;IAAE,UAAU,EAAE,OAAO,gBAAgB,CAAA;CAAE,CAAA;AAG7D,eAAO,MAAM,gBAAgB,8GAQ5B,CAAA;AAGD,eAAO,MAAM,aAAa,8GAezB,CAAA;AAGD,eAAO,MAAM,iBAAiB,8GA8C7B,CAAA;AAGD,eAAO,MAAM,cAAc,8GAAqE,CAAA"}
@@ -0,0 +1,51 @@
1
+ import { combineEffects, createEffect, ofType, ofTypes, selectorMap, validateMap } from '@vlad92msk/synapse/reactive';
2
+ import { from, mapTo, of, tap } from 'rxjs';
3
+ import { catchError, switchMap } from 'rxjs/operators';
4
+ // Эффект для навигации
5
+ export const navigationEffect = createEffect((action$, state$, { pokemonDispatcher }, _, config) => action$.pipe(ofTypes([pokemonDispatcher.dispatch.next, pokemonDispatcher.dispatch.prev]), switchMap((action) => {
6
+ const { id } = action.payload;
7
+ return of(() => pokemonDispatcher.dispatch.loadPokemon(id));
8
+ })));
9
+ // Эффект для отслеживания изменений ID
10
+ export const watchIdEffect = createEffect((action$, state$, { pokemonDispatcher }) => action$.pipe(ofType(pokemonDispatcher.watchers.watchCurrentId), selectorMap(state$, (state) => state.loading, (state) => state.currentId), tap(([action, [loading, currentId]]) => {
11
+ // console.log(`ID покемона изменился на ${action.payload}`)
12
+ // console.log('Статус загрузки:', loading)
13
+ // console.log('ID в хранилище:', currentId)
14
+ }), mapTo(null)));
15
+ // Эффект для загрузки данных покемона
16
+ export const loadPokemonEffect = createEffect((action$, // Поток событий
17
+ state$, // Поток состояния
18
+ { pokemonDispatcher }, // Диспетчеры которые мы передали
19
+ { pokemonApi }, // различные API которые мы передали
20
+ config) => action$.pipe(
21
+ // Я использую отдельный action loadPokemon который уведомляет о намерении сделать запрос
22
+ // Для того, чтобы не устанавливать loading сразу
23
+ ofType(pokemonDispatcher.dispatch.loadPokemon), selectorMap(state$, (state) => state.currentId), validateMap({
24
+ apiCall: ([action, [currentId]]) => {
25
+ const { id } = action.payload;
26
+ return from(
27
+ // Использую waitWithCallbacks чтобы иметь доступ к методу loading
28
+ pokemonApi.fetchPokemonById.request({ id }).waitWithCallbacks({
29
+ // Вызывается только тогда, когда запрос реально отправляется, а не берется из кэша
30
+ loading: (request) => {
31
+ console.log('LOADING', request);
32
+ // Именно в в этот момент установится loading и другая необходимая логика
33
+ pokemonDispatcher.dispatch.loadPokemonRequest(id);
34
+ },
35
+ // Можно использовать так:
36
+ // success: (data, request) => {
37
+ // console.log('SUCCESS', request)
38
+ // pokemonDispatcher.dispatch.success({ data })
39
+ // },
40
+ // error: (error, request) => {
41
+ // console.log('ERROR', error, request)
42
+ // pokemonDispatcher.dispatch.failure(error!)
43
+ // },
44
+ })).pipe(switchMap(({ data }) => {
45
+ return of(pokemonDispatcher.dispatch.success({ data }));
46
+ }), catchError((err) => of(pokemonDispatcher.dispatch.failure(err))));
47
+ },
48
+ })));
49
+ // Объединяем все эффекты в один и экспортируем
50
+ export const pokemonEffects = combineEffects(navigationEffect, watchIdEffect, loadPokemonEffect);
51
+ //# sourceMappingURL=pokemon.effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokemon.effects.js","sourceRoot":"","sources":["../../../../src/examples/pokemons/effects/pokemon.effects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { EnhancedMiddleware } from '@vlad92msk/synapse/reactive';
2
+ import { PokemonState } from '../types';
3
+ export declare const createPokemonAlertMiddleware: () => EnhancedMiddleware<PokemonState>;
4
+ //# sourceMappingURL=pokenon.middlewares.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokenon.middlewares.d.ts","sourceRoot":"","sources":["../../../../src/examples/pokemons/middlewares/pokenon.middlewares.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAIvC,eAAO,MAAM,4BAA4B,QAAO,kBAAkB,CAAC,YAAY,CA0B9E,CAAA"}
@@ -0,0 +1,28 @@
1
+ // Создадим пользовательскую middleware для теста
2
+ // Бдем слушать события определенных типов и вызывать другое
3
+ export const createPokemonAlertMiddleware = () => (api) => (next) => async (action) => {
4
+ const result = await next(action);
5
+ // Проверяем тип после выполнения
6
+ if (action.type.includes('pokemon/next') || action.type.includes('pokemon/prev')) {
7
+ const state = await api.getState();
8
+ // Пробуем найти действие напрямую
9
+ const alertAction = api.findActionByType('pokemon/showAlert');
10
+ if (alertAction) {
11
+ await alertAction({
12
+ message: `Покемон переключен на ID: ${state.currentId}`,
13
+ type: 'info',
14
+ });
15
+ }
16
+ else {
17
+ await api.dispatch({
18
+ type: 'pokemon/showAlert',
19
+ payload: {
20
+ message: `Покемон переключен на ID: ${state.currentId}`,
21
+ type: 'info',
22
+ },
23
+ });
24
+ }
25
+ }
26
+ return result;
27
+ };
28
+ //# sourceMappingURL=pokenon.middlewares.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokenon.middlewares.js","sourceRoot":"","sources":["../../../../src/examples/pokemons/middlewares/pokenon.middlewares.ts"],"names":[],"mappings":"AAIA,iDAAiD;AACjD,4DAA4D;AAC5D,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAqC,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IACtH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAA;IACjC,iCAAiC;IACjC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACjF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;QAElC,kCAAkC;QAClC,MAAM,WAAW,GAAG,GAAG,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAA;QAE7D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC;gBAChB,OAAO,EAAE,6BAA6B,KAAK,CAAC,SAAS,EAAE;gBACvD,IAAI,EAAE,MAAM;aACb,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC,QAAQ,CAAC;gBACjB,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE;oBACP,OAAO,EAAE,6BAA6B,KAAK,CAAC,SAAS,EAAE;oBACvD,IAAI,EAAE,MAAM;iBACb;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { ISelectorModule } from '@vlad92msk/synapse/core';
2
+ import { PokemonState } from '../types';
3
+ export declare const createPokemonSelectors: (selectorModule: ISelectorModule<PokemonState>) => {
4
+ sprites: import("@vlad92msk/synapse/core").SelectorAPI<{
5
+ front_default: string;
6
+ other?: {
7
+ "official-artwork"?: {
8
+ front_default?: string;
9
+ };
10
+ };
11
+ } | undefined>;
12
+ };
13
+ //# sourceMappingURL=pokemon.selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokemon.selectors.d.ts","sourceRoot":"","sources":["../../../../src/examples/pokemons/selectors/pokemon.selectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,eAAO,MAAM,sBAAsB,GAAI,gBAAgB,eAAe,CAAC,YAAY,CAAC;;;;8BAC1E,CAAC;6BAAyB,CAAC;;;;CAKpC,CAAA"}
@@ -0,0 +1,7 @@
1
+ export const createPokemonSelectors = (selectorModule) => {
2
+ const sprites = selectorModule.createSelector((state) => state.currentPokemon?.sprites);
3
+ return {
4
+ sprites,
5
+ };
6
+ };
7
+ //# sourceMappingURL=pokemon.selectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokemon.selectors.js","sourceRoot":"","sources":["../../../../src/examples/pokemons/selectors/pokemon.selectors.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,cAA6C,EAAE,EAAE;IACtF,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IAEvF,OAAO;QACL,OAAO;KACR,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { MemoryStorage } from '@vlad92msk/synapse/core';
2
+ import { PokemonState } from '../types';
3
+ export declare function createPokemonStorage(): Promise<MemoryStorage<PokemonState>>;
4
+ export type PokemonStorage = Awaited<ReturnType<typeof createPokemonStorage>>;
5
+ //# sourceMappingURL=pokemon.storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokemon.storage.d.ts","sourceRoot":"","sources":["../../../../src/examples/pokemons/storages/pokemon.storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,wBAAsB,oBAAoB,yCAUzC;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { MemoryStorage } from '@vlad92msk/synapse/core';
2
+ export async function createPokemonStorage() {
3
+ return new MemoryStorage({
4
+ name: 'pokemon-store',
5
+ initialState: {
6
+ currentPokemon: null,
7
+ loading: true,
8
+ error: null,
9
+ currentId: 1,
10
+ },
11
+ }).initialize();
12
+ }
13
+ //# sourceMappingURL=pokemon.storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pokemon.storage.js","sourceRoot":"","sources":["../../../../src/examples/pokemons/storages/pokemon.storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAIvD,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,OAAO,IAAI,aAAa,CAAe;QACrC,IAAI,EAAE,eAAe;QACrB,YAAY,EAAE;YACZ,cAAc,EAAE,IAAI;YACpB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,CAAC;SACb;KACF,CAAC,CAAC,UAAU,EAAE,CAAA;AACjB,CAAC"}
@@ -0,0 +1,35 @@
1
+ export declare const pokemonStorage: import("../../../dist/core").IStorage<import("./types").PokemonState>, pokemonState$: import("rxjs").Observable<import("./types").PokemonState>, pokemonActions: Record<string, import("../../../dist/reactive").DispatchFunction<any, any>> & import("../../../dist/reactive").DispatchActions<{
2
+ watchCurrentId: import("../../../dist/reactive").WatcherFunction<number>;
3
+ watchLoadingState: import("../../../dist/reactive").WatcherFunction<boolean>;
4
+ loadPokemon: import("../../../dist/reactive").DispatchFunction<number, {
5
+ id: number;
6
+ }>;
7
+ loadPokemonRequest: import("../../../dist/reactive").DispatchFunction<number, {
8
+ id: number;
9
+ }>;
10
+ success: import("../../../dist/reactive").DispatchFunction<{
11
+ data?: import("./types").Pokemon;
12
+ }, {
13
+ data?: import("./types").Pokemon;
14
+ }>;
15
+ failure: import("../../../dist/reactive").DispatchFunction<Error, {
16
+ err: Error;
17
+ }>;
18
+ next: import("../../../dist/reactive").DispatchFunction<void, {
19
+ id: number;
20
+ }>;
21
+ prev: import("../../../dist/reactive").DispatchFunction<void, {
22
+ id: number;
23
+ }>;
24
+ showAlert: import("../../../dist/reactive").DispatchFunction<import("./dispatchers/pokemon.dispatcher").AlertPayload, void>;
25
+ }>, pokemonSelectors: {
26
+ sprites: import("../../../dist/core").SelectorAPI<{
27
+ front_default: string;
28
+ other?: {
29
+ "official-artwork"?: {
30
+ front_default?: string;
31
+ };
32
+ };
33
+ } | undefined>;
34
+ };
35
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/examples/pokemons/store.ts"],"names":[],"mappings":"AAQA,eAAO,MACI,cAAc,yEACf,aAAa,6DACZ,cAAc;;;;;;;;;;;;;;;;;;;;;;;;IACZ,gBAAgB;;;;8BARF,CAAC;6BAAyB,CAAC;;;;CAsBpD,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { createSynapse } from '@vlad92msk/synapse/utils';
2
+ import { pokemonEndpoints } from './api';
3
+ import { createPokemonDispatcher } from './dispatchers/pokemon.dispatcher';
4
+ import { pokemonEffects } from './effects/pokemon.effects';
5
+ import { createPokemonSelectors } from './selectors/pokemon.selectors';
6
+ import { createPokemonStorage } from './storages/pokemon.storage';
7
+ export const { storage: pokemonStorage, state$: pokemonState$, actions: pokemonActions, selectors: pokemonSelectors, } = await createSynapse({
8
+ createStorageFn: createPokemonStorage,
9
+ createDispatcherFn: createPokemonDispatcher,
10
+ createSelectorsFn: createPokemonSelectors,
11
+ createEffectConfig: (dispatcher) => ({
12
+ dispatchers: {
13
+ pokemonDispatcher: dispatcher,
14
+ },
15
+ api: {
16
+ pokemonApi: pokemonEndpoints,
17
+ },
18
+ }),
19
+ effects: [pokemonEffects],
20
+ });
21
+ //# sourceMappingURL=store.js.map