@sima-land/isomorph 11.0.0-alpha.36 → 11.0.0-alpha.37

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 (567) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +25 -0
  3. package/dist/cjs/cache/index.js +6 -0
  4. package/dist/cjs/cache/index.js.map +1 -0
  5. package/dist/cjs/cache/types.js +6 -0
  6. package/dist/cjs/cache/types.js.map +1 -0
  7. package/dist/cjs/config/base.js +22 -0
  8. package/dist/cjs/config/base.js.map +1 -0
  9. package/dist/cjs/config/index.js +20 -0
  10. package/dist/cjs/config/index.js.map +1 -0
  11. package/dist/cjs/config/source.js +25 -0
  12. package/dist/cjs/config/source.js.map +1 -0
  13. package/dist/cjs/config/types.js +6 -0
  14. package/dist/cjs/config/types.js.map +1 -0
  15. package/dist/cjs/di/application.js +106 -0
  16. package/dist/cjs/di/application.js.map +1 -0
  17. package/dist/cjs/di/container.js +55 -0
  18. package/dist/cjs/di/container.js.map +1 -0
  19. package/dist/cjs/di/errors.js +65 -0
  20. package/dist/cjs/di/errors.js.map +1 -0
  21. package/dist/cjs/di/index.js +59 -0
  22. package/dist/cjs/di/index.js.map +1 -0
  23. package/dist/cjs/di/preset.js +32 -0
  24. package/dist/cjs/di/preset.js.map +1 -0
  25. package/dist/cjs/di/token.js +44 -0
  26. package/dist/cjs/di/token.js.map +1 -0
  27. package/dist/cjs/di/types.js +6 -0
  28. package/dist/cjs/di/types.js.map +1 -0
  29. package/dist/cjs/http/errors.js +47 -0
  30. package/dist/cjs/http/errors.js.map +1 -0
  31. package/dist/cjs/http/index.js +63 -0
  32. package/dist/cjs/http/index.js.map +1 -0
  33. package/dist/cjs/http/types.js +6 -0
  34. package/dist/cjs/http/types.js.map +1 -0
  35. package/dist/cjs/log/errors.js +35 -0
  36. package/dist/cjs/log/errors.js.map +1 -0
  37. package/dist/cjs/log/handler/pino.js +31 -0
  38. package/dist/cjs/log/handler/pino.js.map +1 -0
  39. package/dist/cjs/log/handler/sentry.js +57 -0
  40. package/dist/cjs/log/handler/sentry.js.map +1 -0
  41. package/dist/cjs/log/index.js +26 -0
  42. package/dist/cjs/log/index.js.map +1 -0
  43. package/dist/cjs/log/logger.js +35 -0
  44. package/dist/cjs/log/logger.js.map +1 -0
  45. package/dist/cjs/log/types.js +6 -0
  46. package/dist/cjs/log/types.js.map +1 -0
  47. package/dist/cjs/package.json +1 -0
  48. package/dist/cjs/preset/isomorphic/constants.js +14 -0
  49. package/dist/cjs/preset/isomorphic/constants.js.map +1 -0
  50. package/{preset → dist/cjs/preset}/isomorphic/providers/index.js +19 -15
  51. package/dist/cjs/preset/isomorphic/providers/index.js.map +1 -0
  52. package/dist/cjs/preset/isomorphic/types.js +6 -0
  53. package/dist/cjs/preset/isomorphic/types.js.map +1 -0
  54. package/dist/cjs/preset/isomorphic/utils/index.js +322 -0
  55. package/dist/cjs/preset/isomorphic/utils/index.js.map +1 -0
  56. package/dist/cjs/preset/node/handler/index.js +52 -0
  57. package/dist/cjs/preset/node/handler/index.js.map +1 -0
  58. package/dist/cjs/preset/node/handler/providers/index.js +212 -0
  59. package/dist/cjs/preset/node/handler/providers/index.js.map +1 -0
  60. package/dist/cjs/preset/node/handler/utils/index.js +132 -0
  61. package/dist/cjs/preset/node/handler/utils/index.js.map +1 -0
  62. package/dist/cjs/preset/node/index.js +26 -0
  63. package/dist/cjs/preset/node/index.js.map +1 -0
  64. package/dist/cjs/preset/node/node/index.js +61 -0
  65. package/dist/cjs/preset/node/node/index.js.map +1 -0
  66. package/dist/cjs/preset/node/node/providers/index.js +403 -0
  67. package/dist/cjs/preset/node/node/providers/index.js.map +1 -0
  68. package/dist/cjs/preset/node/node/utils/http-client/index.js +122 -0
  69. package/dist/cjs/preset/node/node/utils/http-client/index.js.map +1 -0
  70. package/dist/cjs/preset/node/node/utils/http-server/index.js +18 -0
  71. package/dist/cjs/preset/node/node/utils/http-server/index.js.map +1 -0
  72. package/dist/cjs/preset/node/node/utils/index.js +20 -0
  73. package/dist/cjs/preset/node/node/utils/index.js.map +1 -0
  74. package/dist/cjs/preset/web/index.js +34 -0
  75. package/dist/cjs/preset/web/index.js.map +1 -0
  76. package/dist/cjs/preset/web/providers/index.js +94 -0
  77. package/dist/cjs/preset/web/providers/index.js.map +1 -0
  78. package/dist/cjs/tokens.js +86 -0
  79. package/dist/cjs/tokens.js.map +1 -0
  80. package/dist/cjs/utils/axios/index.js +40 -0
  81. package/dist/cjs/utils/axios/index.js.map +1 -0
  82. package/dist/cjs/utils/axios/middleware/cookie.js +28 -0
  83. package/dist/cjs/utils/axios/middleware/cookie.js.map +1 -0
  84. package/dist/cjs/utils/axios/middleware/log.js +37 -0
  85. package/dist/cjs/utils/axios/middleware/log.js.map +1 -0
  86. package/dist/cjs/utils/axios/sauce/index.js +57 -0
  87. package/dist/cjs/utils/axios/sauce/index.js.map +1 -0
  88. package/{utils → dist/cjs/utils}/axios/utils/index.js +19 -14
  89. package/dist/cjs/utils/axios/utils/index.js.map +1 -0
  90. package/{utils → dist/cjs/utils}/express/handler/health-check.js +11 -7
  91. package/dist/cjs/utils/express/handler/health-check.js.map +1 -0
  92. package/dist/cjs/utils/express/index.js +20 -0
  93. package/dist/cjs/utils/express/index.js.map +1 -0
  94. package/dist/cjs/utils/express/utils/index.js +22 -0
  95. package/dist/cjs/utils/express/utils/index.js.map +1 -0
  96. package/dist/cjs/utils/function.js +44 -0
  97. package/dist/cjs/utils/function.js.map +1 -0
  98. package/dist/cjs/utils/index.js +20 -0
  99. package/dist/cjs/utils/index.js.map +1 -0
  100. package/{utils/number.js → dist/cjs/utils/math.js} +7 -5
  101. package/dist/cjs/utils/math.js.map +1 -0
  102. package/dist/cjs/utils/react/error-handlers/index.js +80 -0
  103. package/dist/cjs/utils/react/error-handlers/index.js.map +1 -0
  104. package/dist/cjs/utils/react/index.js +19 -0
  105. package/dist/cjs/utils/react/index.js.map +1 -0
  106. package/dist/cjs/utils/redux/index.js +19 -0
  107. package/dist/cjs/utils/redux/index.js.map +1 -0
  108. package/dist/cjs/utils/redux/remote-data.js +118 -0
  109. package/dist/cjs/utils/redux/remote-data.js.map +1 -0
  110. package/dist/cjs/utils/redux-saga/index.js +20 -0
  111. package/dist/cjs/utils/redux-saga/index.js.map +1 -0
  112. package/dist/cjs/utils/redux-saga/middleware.js +149 -0
  113. package/dist/cjs/utils/redux-saga/middleware.js.map +1 -0
  114. package/dist/cjs/utils/redux-saga/take-chain.js +66 -0
  115. package/dist/cjs/utils/redux-saga/take-chain.js.map +1 -0
  116. package/dist/cjs/utils/redux-saga/types.js +6 -0
  117. package/dist/cjs/utils/redux-saga/types.js.map +1 -0
  118. package/dist/cjs/utils/ssr/index.js +73 -0
  119. package/dist/cjs/utils/ssr/index.js.map +1 -0
  120. package/dist/cjs/utils/web/analytics/data-layer.js +20 -0
  121. package/dist/cjs/utils/web/analytics/data-layer.js.map +1 -0
  122. package/dist/cjs/utils/web/analytics/index.js +20 -0
  123. package/dist/cjs/utils/web/analytics/index.js.map +1 -0
  124. package/dist/cjs/utils/web/analytics/oko.js +20 -0
  125. package/dist/cjs/utils/web/analytics/oko.js.map +1 -0
  126. package/dist/cjs/utils/web/storage/index.js +75 -0
  127. package/dist/cjs/utils/web/storage/index.js.map +1 -0
  128. package/dist/cjs/utils/webpack/env/index.js +96 -0
  129. package/dist/cjs/utils/webpack/env/index.js.map +1 -0
  130. package/dist/cjs/utils/webpack/env/types.js +6 -0
  131. package/dist/cjs/utils/webpack/env/types.js.map +1 -0
  132. package/dist/cjs/utils/webpack/env/utils.js +55 -0
  133. package/dist/cjs/utils/webpack/env/utils.js.map +1 -0
  134. package/dist/cjs/utils/webpack/index.js +20 -0
  135. package/dist/cjs/utils/webpack/index.js.map +1 -0
  136. package/dist/cjs/utils/webpack/module-federation/index.js +110 -0
  137. package/dist/cjs/utils/webpack/module-federation/index.js.map +1 -0
  138. package/dist/cjs/utils/webpack/module-federation/types.js +6 -0
  139. package/dist/cjs/utils/webpack/module-federation/types.js.map +1 -0
  140. package/{utils → dist/cjs/utils}/webpack/module-federation/utils.js +26 -31
  141. package/dist/cjs/utils/webpack/module-federation/utils.js.map +1 -0
  142. package/dist/esm/cache/index.js +2 -0
  143. package/dist/esm/cache/index.js.map +1 -0
  144. package/dist/esm/cache/types.js +2 -0
  145. package/dist/esm/cache/types.js.map +1 -0
  146. package/dist/esm/config/base.js +16 -0
  147. package/dist/esm/config/base.js.map +1 -0
  148. package/dist/esm/config/index.js +3 -0
  149. package/dist/esm/config/index.js.map +1 -0
  150. package/dist/esm/config/source.js +19 -0
  151. package/dist/esm/config/source.js.map +1 -0
  152. package/dist/esm/config/types.js +2 -0
  153. package/dist/esm/config/types.js.map +1 -0
  154. package/dist/esm/di/application.js +100 -0
  155. package/dist/esm/di/application.js.map +1 -0
  156. package/dist/esm/di/container.js +49 -0
  157. package/dist/esm/di/container.js.map +1 -0
  158. package/dist/esm/di/errors.js +56 -0
  159. package/dist/esm/di/errors.js.map +1 -0
  160. package/dist/esm/di/index.js +6 -0
  161. package/dist/esm/di/index.js.map +1 -0
  162. package/dist/esm/di/preset.js +26 -0
  163. package/dist/esm/di/preset.js.map +1 -0
  164. package/dist/esm/di/token.js +38 -0
  165. package/dist/esm/di/token.js.map +1 -0
  166. package/dist/esm/di/types.js +2 -0
  167. package/dist/esm/di/types.js.map +1 -0
  168. package/dist/esm/http/errors.js +39 -0
  169. package/dist/esm/http/errors.js.map +1 -0
  170. package/dist/esm/http/index.js +4 -0
  171. package/dist/esm/http/index.js.map +1 -0
  172. package/dist/esm/http/types.js +2 -0
  173. package/dist/esm/http/types.js.map +1 -0
  174. package/dist/esm/log/errors.js +27 -0
  175. package/dist/esm/log/errors.js.map +1 -0
  176. package/dist/esm/log/handler/pino.js +25 -0
  177. package/dist/esm/log/handler/pino.js.map +1 -0
  178. package/dist/esm/log/handler/sentry.js +52 -0
  179. package/dist/esm/log/handler/sentry.js.map +1 -0
  180. package/dist/esm/log/index.js +3 -0
  181. package/dist/esm/log/index.js.map +1 -0
  182. package/dist/esm/log/logger.js +29 -0
  183. package/dist/esm/log/logger.js.map +1 -0
  184. package/dist/esm/log/types.js +2 -0
  185. package/dist/esm/log/types.js.map +1 -0
  186. package/dist/esm/package.json +1 -0
  187. package/dist/esm/preset/isomorphic/constants.js +8 -0
  188. package/dist/esm/preset/isomorphic/constants.js.map +1 -0
  189. package/dist/esm/preset/isomorphic/providers/index.js +35 -0
  190. package/dist/esm/preset/isomorphic/providers/index.js.map +1 -0
  191. package/dist/esm/preset/isomorphic/types.js +2 -0
  192. package/dist/esm/preset/isomorphic/types.js.map +1 -0
  193. package/dist/esm/preset/isomorphic/utils/index.js +309 -0
  194. package/dist/esm/preset/isomorphic/utils/index.js.map +1 -0
  195. package/dist/esm/preset/node/handler/index.js +42 -0
  196. package/dist/esm/preset/node/handler/index.js.map +1 -0
  197. package/dist/esm/preset/node/handler/providers/index.js +194 -0
  198. package/dist/esm/preset/node/handler/providers/index.js.map +1 -0
  199. package/dist/esm/preset/node/handler/utils/index.js +113 -0
  200. package/dist/esm/preset/node/handler/utils/index.js.map +1 -0
  201. package/dist/esm/preset/node/index.js +3 -0
  202. package/dist/esm/preset/node/index.js.map +1 -0
  203. package/dist/esm/preset/node/node/index.js +56 -0
  204. package/dist/esm/preset/node/node/index.js.map +1 -0
  205. package/dist/esm/preset/node/node/providers/index.js +378 -0
  206. package/dist/esm/preset/node/node/providers/index.js.map +1 -0
  207. package/dist/esm/preset/node/node/utils/http-client/index.js +114 -0
  208. package/dist/esm/preset/node/node/utils/http-client/index.js.map +1 -0
  209. package/dist/esm/preset/node/node/utils/http-server/index.js +12 -0
  210. package/dist/esm/preset/node/node/utils/http-server/index.js.map +1 -0
  211. package/dist/esm/preset/node/node/utils/index.js +3 -0
  212. package/dist/esm/preset/node/node/utils/index.js.map +1 -0
  213. package/dist/esm/preset/web/index.js +29 -0
  214. package/dist/esm/preset/web/index.js.map +1 -0
  215. package/dist/esm/preset/web/providers/index.js +85 -0
  216. package/dist/esm/preset/web/providers/index.js.map +1 -0
  217. package/dist/esm/tokens.js +81 -0
  218. package/dist/esm/tokens.js.map +1 -0
  219. package/dist/esm/utils/axios/index.js +5 -0
  220. package/dist/esm/utils/axios/index.js.map +1 -0
  221. package/dist/esm/utils/axios/middleware/cookie.js +22 -0
  222. package/dist/esm/utils/axios/middleware/cookie.js.map +1 -0
  223. package/dist/esm/utils/axios/middleware/log.js +31 -0
  224. package/dist/esm/utils/axios/middleware/log.js.map +1 -0
  225. package/dist/esm/utils/axios/sauce/index.js +50 -0
  226. package/dist/esm/utils/axios/sauce/index.js.map +1 -0
  227. package/dist/esm/utils/axios/utils/index.js +24 -0
  228. package/dist/esm/utils/axios/utils/index.js.map +1 -0
  229. package/dist/esm/utils/express/handler/health-check.js +13 -0
  230. package/dist/esm/utils/express/handler/health-check.js.map +1 -0
  231. package/dist/esm/utils/express/index.js +3 -0
  232. package/dist/esm/utils/express/index.js.map +1 -0
  233. package/dist/esm/utils/express/utils/index.js +16 -0
  234. package/dist/esm/utils/express/utils/index.js.map +1 -0
  235. package/dist/esm/utils/function.js +38 -0
  236. package/dist/esm/utils/function.js.map +1 -0
  237. package/dist/esm/utils/index.js +3 -0
  238. package/dist/esm/utils/index.js.map +1 -0
  239. package/dist/esm/utils/math.js +9 -0
  240. package/dist/esm/utils/math.js.map +1 -0
  241. package/dist/esm/utils/react/error-handlers/index.js +69 -0
  242. package/dist/esm/utils/react/error-handlers/index.js.map +1 -0
  243. package/dist/esm/utils/react/index.js +3 -0
  244. package/dist/esm/utils/react/index.js.map +1 -0
  245. package/dist/esm/utils/redux/index.js +3 -0
  246. package/dist/esm/utils/redux/index.js.map +1 -0
  247. package/dist/esm/utils/redux/remote-data.js +108 -0
  248. package/dist/esm/utils/redux/remote-data.js.map +1 -0
  249. package/dist/esm/utils/redux-saga/index.js +3 -0
  250. package/dist/esm/utils/redux-saga/index.js.map +1 -0
  251. package/dist/esm/utils/redux-saga/middleware.js +143 -0
  252. package/dist/esm/utils/redux-saga/middleware.js.map +1 -0
  253. package/dist/esm/utils/redux-saga/take-chain.js +59 -0
  254. package/dist/esm/utils/redux-saga/take-chain.js.map +1 -0
  255. package/dist/esm/utils/redux-saga/types.js +2 -0
  256. package/dist/esm/utils/redux-saga/types.js.map +1 -0
  257. package/dist/esm/utils/ssr/index.js +66 -0
  258. package/dist/esm/utils/ssr/index.js.map +1 -0
  259. package/dist/esm/utils/web/analytics/data-layer.js +14 -0
  260. package/dist/esm/utils/web/analytics/data-layer.js.map +1 -0
  261. package/dist/esm/utils/web/analytics/index.js +3 -0
  262. package/dist/esm/utils/web/analytics/index.js.map +1 -0
  263. package/dist/esm/utils/web/analytics/oko.js +14 -0
  264. package/dist/esm/utils/web/analytics/oko.js.map +1 -0
  265. package/dist/esm/utils/web/storage/index.js +69 -0
  266. package/dist/esm/utils/web/storage/index.js.map +1 -0
  267. package/dist/esm/utils/webpack/env/index.js +89 -0
  268. package/dist/esm/utils/webpack/env/index.js.map +1 -0
  269. package/dist/esm/utils/webpack/env/types.js +2 -0
  270. package/dist/esm/utils/webpack/env/types.js.map +1 -0
  271. package/dist/esm/utils/webpack/env/utils.js +48 -0
  272. package/dist/esm/utils/webpack/env/utils.js.map +1 -0
  273. package/dist/esm/utils/webpack/index.js +4 -0
  274. package/dist/esm/utils/webpack/index.js.map +1 -0
  275. package/dist/esm/utils/webpack/module-federation/index.js +96 -0
  276. package/dist/esm/utils/webpack/module-federation/index.js.map +1 -0
  277. package/dist/esm/utils/webpack/module-federation/types.js +2 -0
  278. package/dist/esm/utils/webpack/module-federation/types.js.map +1 -0
  279. package/dist/esm/utils/webpack/module-federation/utils.js +80 -0
  280. package/dist/esm/utils/webpack/module-federation/utils.js.map +1 -0
  281. package/dist/types/cache/index.d.ts +1 -0
  282. package/dist/types/log/index.d.ts +3 -0
  283. package/{preset → dist/types/preset}/isomorphic/types.d.ts +1 -0
  284. package/dist/types/preset/node/node/utils/index.d.ts +2 -0
  285. package/{utils → dist/types/utils}/axios/sauce/index.d.ts +1 -1
  286. package/dist/types/utils/index.d.ts +2 -0
  287. package/{utils → dist/types/utils}/redux/remote-data.d.ts +8 -8
  288. package/{utils → dist/types/utils}/ssr/index.d.ts +1 -0
  289. package/dist/types/utils/web/analytics/index.d.ts +2 -0
  290. package/{utils → dist/types/utils}/webpack/module-federation/index.d.ts +2 -2
  291. package/package.json +167 -9
  292. package/src/cache/index.ts +1 -0
  293. package/src/cache/types.ts +34 -0
  294. package/src/config/base.ts +18 -0
  295. package/src/config/index.ts +3 -0
  296. package/src/config/source.ts +23 -0
  297. package/src/config/types.ts +25 -0
  298. package/src/di/__test__/application.test.ts +258 -0
  299. package/src/di/__test__/container.test.ts +103 -0
  300. package/src/di/__test__/errors.test.ts +56 -0
  301. package/src/di/__test__/preset.test.ts +23 -0
  302. package/src/di/__test__/token.test.ts +25 -0
  303. package/src/di/application.ts +126 -0
  304. package/src/di/container.ts +60 -0
  305. package/src/di/errors.ts +59 -0
  306. package/src/di/index.ts +6 -0
  307. package/src/di/preset.ts +32 -0
  308. package/src/di/token.ts +41 -0
  309. package/src/di/types.ts +105 -0
  310. package/src/http/__test__/errors.test.ts +35 -0
  311. package/src/http/errors.ts +42 -0
  312. package/src/http/index.ts +14 -0
  313. package/src/http/types.ts +8 -0
  314. package/src/log/__test__/errors.test.ts +13 -0
  315. package/src/log/__test__/logger.test.ts +24 -0
  316. package/src/log/errors.ts +33 -0
  317. package/src/log/handler/pino.ts +27 -0
  318. package/src/log/handler/sentry.ts +57 -0
  319. package/src/log/index.ts +12 -0
  320. package/src/log/logger.ts +30 -0
  321. package/src/log/types.ts +76 -0
  322. package/src/preset/isomorphic/constants.ts +7 -0
  323. package/src/preset/isomorphic/providers/index.ts +40 -0
  324. package/src/preset/isomorphic/types.ts +48 -0
  325. package/src/preset/isomorphic/utils/__test__/index.test.ts +541 -0
  326. package/src/preset/isomorphic/utils/index.ts +349 -0
  327. package/src/preset/node/handler/index.ts +46 -0
  328. package/src/preset/node/handler/providers/index.tsx +214 -0
  329. package/src/preset/node/handler/utils/index.tsx +110 -0
  330. package/src/preset/node/index.ts +2 -0
  331. package/src/preset/node/node/index.ts +73 -0
  332. package/src/preset/node/node/providers/index.ts +434 -0
  333. package/src/preset/node/node/utils/http-client/__test__/index.test.ts +232 -0
  334. package/src/preset/node/node/utils/http-client/index.ts +129 -0
  335. package/src/preset/node/node/utils/http-server/index.ts +17 -0
  336. package/src/preset/node/node/utils/index.ts +2 -0
  337. package/src/preset/web/index.ts +40 -0
  338. package/src/preset/web/providers/index.ts +108 -0
  339. package/src/tokens.ts +112 -0
  340. package/src/utils/axios/index.ts +12 -0
  341. package/src/utils/axios/middleware/__test__/cookie.test.ts +94 -0
  342. package/src/utils/axios/middleware/__test__/log.test.ts +121 -0
  343. package/src/utils/axios/middleware/cookie.ts +26 -0
  344. package/src/utils/axios/middleware/log.ts +52 -0
  345. package/src/utils/axios/sauce/index.ts +76 -0
  346. package/src/utils/axios/utils/__test__/index.test.ts +89 -0
  347. package/src/utils/axios/utils/index.ts +26 -0
  348. package/src/utils/express/handler/health-check.ts +13 -0
  349. package/src/utils/express/index.ts +2 -0
  350. package/src/utils/express/utils/index.ts +18 -0
  351. package/src/utils/function.ts +57 -0
  352. package/src/utils/index.ts +2 -0
  353. package/src/utils/math.ts +8 -0
  354. package/src/utils/react/error-handlers/__test__/__snapshots__/index.test.tsx.snap +27 -0
  355. package/src/utils/react/error-handlers/__test__/index.test.tsx +63 -0
  356. package/src/utils/react/error-handlers/index.tsx +68 -0
  357. package/src/utils/react/index.ts +3 -0
  358. package/src/utils/redux/__test__/remote-data.test.ts +172 -0
  359. package/src/utils/redux/index.ts +4 -0
  360. package/src/utils/redux/remote-data.ts +138 -0
  361. package/src/utils/redux-saga/__test__/take-chain.test.ts +141 -0
  362. package/src/utils/redux-saga/index.ts +3 -0
  363. package/src/utils/redux-saga/middleware.ts +168 -0
  364. package/src/utils/redux-saga/take-chain.ts +67 -0
  365. package/src/utils/redux-saga/types.ts +43 -0
  366. package/src/utils/ssr/index.tsx +78 -0
  367. package/src/utils/web/analytics/__test__/data-layer.test.ts +50 -0
  368. package/src/utils/web/analytics/__test__/oko.test.ts +50 -0
  369. package/src/utils/web/analytics/data-layer.ts +12 -0
  370. package/src/utils/web/analytics/index.ts +2 -0
  371. package/src/utils/web/analytics/oko.ts +14 -0
  372. package/src/utils/web/storage/index.ts +84 -0
  373. package/src/utils/webpack/env/index.ts +91 -0
  374. package/src/utils/webpack/env/types.ts +14 -0
  375. package/src/utils/webpack/env/utils.ts +53 -0
  376. package/src/utils/webpack/index.ts +7 -0
  377. package/src/utils/webpack/module-federation/__test__/__snapshots__/utils.test.ts.snap +124 -0
  378. package/src/utils/webpack/module-federation/__test__/index.test.ts +311 -0
  379. package/src/utils/webpack/module-federation/__test__/utils.test.ts +28 -0
  380. package/src/utils/webpack/module-federation/index.ts +102 -0
  381. package/src/utils/webpack/module-federation/types.ts +54 -0
  382. package/src/utils/webpack/module-federation/utils.ts +104 -0
  383. package/cache/types.js +0 -3
  384. package/cache/types.js.map +0 -1
  385. package/config/base.js +0 -20
  386. package/config/base.js.map +0 -1
  387. package/config/index.js +0 -8
  388. package/config/index.js.map +0 -1
  389. package/config/source.js +0 -21
  390. package/config/source.js.map +0 -1
  391. package/config/types.js +0 -3
  392. package/config/types.js.map +0 -1
  393. package/di/application.js +0 -88
  394. package/di/application.js.map +0 -1
  395. package/di/container.js +0 -52
  396. package/di/container.js.map +0 -1
  397. package/di/errors.js +0 -59
  398. package/di/errors.js.map +0 -1
  399. package/di/index.js +0 -17
  400. package/di/index.js.map +0 -1
  401. package/di/preset.js +0 -27
  402. package/di/preset.js.map +0 -1
  403. package/di/token.js +0 -39
  404. package/di/token.js.map +0 -1
  405. package/di/types.js +0 -3
  406. package/di/types.js.map +0 -1
  407. package/http/errors.js +0 -42
  408. package/http/errors.js.map +0 -1
  409. package/http/index.js +0 -16
  410. package/http/index.js.map +0 -1
  411. package/http/types.js +0 -3
  412. package/http/types.js.map +0 -1
  413. package/log/errors.js +0 -31
  414. package/log/errors.js.map +0 -1
  415. package/log/handler/pino.js +0 -29
  416. package/log/handler/pino.js.map +0 -1
  417. package/log/handler/sentry.js +0 -50
  418. package/log/handler/sentry.js.map +0 -1
  419. package/log/index.d.ts +0 -3
  420. package/log/index.js +0 -9
  421. package/log/index.js.map +0 -1
  422. package/log/logger.js +0 -29
  423. package/log/logger.js.map +0 -1
  424. package/log/types.js +0 -3
  425. package/log/types.js.map +0 -1
  426. package/preset/isomorphic/constants.js +0 -11
  427. package/preset/isomorphic/constants.js.map +0 -1
  428. package/preset/isomorphic/providers/index.js.map +0 -1
  429. package/preset/isomorphic/types.js +0 -3
  430. package/preset/isomorphic/types.js.map +0 -1
  431. package/preset/isomorphic/utils/index.js +0 -289
  432. package/preset/isomorphic/utils/index.js.map +0 -1
  433. package/preset/node/handler/index.js +0 -38
  434. package/preset/node/handler/index.js.map +0 -1
  435. package/preset/node/handler/providers/index.js +0 -184
  436. package/preset/node/handler/providers/index.js.map +0 -1
  437. package/preset/node/handler/utils/index.js +0 -81
  438. package/preset/node/handler/utils/index.js.map +0 -1
  439. package/preset/node/index.js +0 -9
  440. package/preset/node/index.js.map +0 -1
  441. package/preset/node/node/index.js +0 -49
  442. package/preset/node/node/index.js.map +0 -1
  443. package/preset/node/node/providers/index.js +0 -392
  444. package/preset/node/node/providers/index.js.map +0 -1
  445. package/preset/node/node/utils/http-client/index.js +0 -109
  446. package/preset/node/node/utils/http-client/index.js.map +0 -1
  447. package/preset/node/node/utils/http-server/index.js +0 -21
  448. package/preset/node/node/utils/http-server/index.js.map +0 -1
  449. package/preset/web/index.js +0 -30
  450. package/preset/web/index.js.map +0 -1
  451. package/preset/web/providers/index.js +0 -88
  452. package/preset/web/providers/index.js.map +0 -1
  453. package/tokens.js +0 -81
  454. package/tokens.js.map +0 -1
  455. package/utils/axios/index.js +0 -13
  456. package/utils/axios/index.js.map +0 -1
  457. package/utils/axios/middleware/cookie.js +0 -26
  458. package/utils/axios/middleware/cookie.js.map +0 -1
  459. package/utils/axios/middleware/log.js +0 -26
  460. package/utils/axios/middleware/log.js.map +0 -1
  461. package/utils/axios/sauce/index.js +0 -50
  462. package/utils/axios/sauce/index.js.map +0 -1
  463. package/utils/axios/utils/index.js.map +0 -1
  464. package/utils/express/handler/health-check.js.map +0 -1
  465. package/utils/express/index.js +0 -8
  466. package/utils/express/index.js.map +0 -1
  467. package/utils/express/utils/index.js +0 -20
  468. package/utils/express/utils/index.js.map +0 -1
  469. package/utils/function.js +0 -23
  470. package/utils/function.js.map +0 -1
  471. package/utils/number.js.map +0 -1
  472. package/utils/react/error-handlers/index.js +0 -47
  473. package/utils/react/error-handlers/index.js.map +0 -1
  474. package/utils/react/index.js +0 -7
  475. package/utils/react/index.js.map +0 -1
  476. package/utils/redux/index.js +0 -7
  477. package/utils/redux/index.js.map +0 -1
  478. package/utils/redux/remote-data.js +0 -91
  479. package/utils/redux/remote-data.js.map +0 -1
  480. package/utils/redux-saga/index.js +0 -8
  481. package/utils/redux-saga/index.js.map +0 -1
  482. package/utils/redux-saga/middleware.js +0 -142
  483. package/utils/redux-saga/middleware.js.map +0 -1
  484. package/utils/redux-saga/take-chain.js +0 -58
  485. package/utils/redux-saga/take-chain.js.map +0 -1
  486. package/utils/redux-saga/types.js +0 -3
  487. package/utils/redux-saga/types.js.map +0 -1
  488. package/utils/ssr/index.js +0 -54
  489. package/utils/ssr/index.js.map +0 -1
  490. package/utils/web/analytics/data-layer.js +0 -16
  491. package/utils/web/analytics/data-layer.js.map +0 -1
  492. package/utils/web/analytics/oko.js +0 -16
  493. package/utils/web/analytics/oko.js.map +0 -1
  494. package/utils/web/storage/index.js +0 -69
  495. package/utils/web/storage/index.js.map +0 -1
  496. package/utils/webpack/env/index.js +0 -76
  497. package/utils/webpack/env/index.js.map +0 -1
  498. package/utils/webpack/env/types.js +0 -3
  499. package/utils/webpack/env/types.js.map +0 -1
  500. package/utils/webpack/env/utils.js +0 -52
  501. package/utils/webpack/env/utils.js.map +0 -1
  502. package/utils/webpack/index.js +0 -8
  503. package/utils/webpack/index.js.map +0 -1
  504. package/utils/webpack/module-federation/index.js +0 -81
  505. package/utils/webpack/module-federation/index.js.map +0 -1
  506. package/utils/webpack/module-federation/types.js +0 -3
  507. package/utils/webpack/module-federation/types.js.map +0 -1
  508. package/utils/webpack/module-federation/utils.js.map +0 -1
  509. /package/{cache → dist/types/cache}/types.d.ts +0 -0
  510. /package/{config → dist/types/config}/base.d.ts +0 -0
  511. /package/{config → dist/types/config}/index.d.ts +0 -0
  512. /package/{config → dist/types/config}/source.d.ts +0 -0
  513. /package/{config → dist/types/config}/types.d.ts +0 -0
  514. /package/{di → dist/types/di}/application.d.ts +0 -0
  515. /package/{di → dist/types/di}/container.d.ts +0 -0
  516. /package/{di → dist/types/di}/errors.d.ts +0 -0
  517. /package/{di → dist/types/di}/index.d.ts +0 -0
  518. /package/{di → dist/types/di}/preset.d.ts +0 -0
  519. /package/{di → dist/types/di}/token.d.ts +0 -0
  520. /package/{di → dist/types/di}/types.d.ts +0 -0
  521. /package/{http → dist/types/http}/errors.d.ts +0 -0
  522. /package/{http → dist/types/http}/index.d.ts +0 -0
  523. /package/{http → dist/types/http}/types.d.ts +0 -0
  524. /package/{log → dist/types/log}/errors.d.ts +0 -0
  525. /package/{log → dist/types/log}/handler/pino.d.ts +0 -0
  526. /package/{log → dist/types/log}/handler/sentry.d.ts +0 -0
  527. /package/{log → dist/types/log}/logger.d.ts +0 -0
  528. /package/{log → dist/types/log}/types.d.ts +0 -0
  529. /package/{preset → dist/types/preset}/isomorphic/constants.d.ts +0 -0
  530. /package/{preset → dist/types/preset}/isomorphic/providers/index.d.ts +0 -0
  531. /package/{preset → dist/types/preset}/isomorphic/utils/index.d.ts +0 -0
  532. /package/{preset → dist/types/preset}/node/handler/index.d.ts +0 -0
  533. /package/{preset → dist/types/preset}/node/handler/providers/index.d.ts +0 -0
  534. /package/{preset → dist/types/preset}/node/handler/utils/index.d.ts +0 -0
  535. /package/{preset → dist/types/preset}/node/index.d.ts +0 -0
  536. /package/{preset → dist/types/preset}/node/node/index.d.ts +0 -0
  537. /package/{preset → dist/types/preset}/node/node/providers/index.d.ts +0 -0
  538. /package/{preset → dist/types/preset}/node/node/utils/http-client/index.d.ts +0 -0
  539. /package/{preset → dist/types/preset}/node/node/utils/http-server/index.d.ts +0 -0
  540. /package/{preset → dist/types/preset}/web/index.d.ts +0 -0
  541. /package/{preset → dist/types/preset}/web/providers/index.d.ts +0 -0
  542. /package/{tokens.d.ts → dist/types/tokens.d.ts} +0 -0
  543. /package/{utils → dist/types/utils}/axios/index.d.ts +0 -0
  544. /package/{utils → dist/types/utils}/axios/middleware/cookie.d.ts +0 -0
  545. /package/{utils → dist/types/utils}/axios/middleware/log.d.ts +0 -0
  546. /package/{utils → dist/types/utils}/axios/utils/index.d.ts +0 -0
  547. /package/{utils → dist/types/utils}/express/handler/health-check.d.ts +0 -0
  548. /package/{utils → dist/types/utils}/express/index.d.ts +0 -0
  549. /package/{utils → dist/types/utils}/express/utils/index.d.ts +0 -0
  550. /package/{utils → dist/types/utils}/function.d.ts +0 -0
  551. /package/{utils/number.d.ts → dist/types/utils/math.d.ts} +0 -0
  552. /package/{utils → dist/types/utils}/react/error-handlers/index.d.ts +0 -0
  553. /package/{utils → dist/types/utils}/react/index.d.ts +0 -0
  554. /package/{utils → dist/types/utils}/redux/index.d.ts +0 -0
  555. /package/{utils → dist/types/utils}/redux-saga/index.d.ts +0 -0
  556. /package/{utils → dist/types/utils}/redux-saga/middleware.d.ts +0 -0
  557. /package/{utils → dist/types/utils}/redux-saga/take-chain.d.ts +0 -0
  558. /package/{utils → dist/types/utils}/redux-saga/types.d.ts +0 -0
  559. /package/{utils → dist/types/utils}/web/analytics/data-layer.d.ts +0 -0
  560. /package/{utils → dist/types/utils}/web/analytics/oko.d.ts +0 -0
  561. /package/{utils → dist/types/utils}/web/storage/index.d.ts +0 -0
  562. /package/{utils → dist/types/utils}/webpack/env/index.d.ts +0 -0
  563. /package/{utils → dist/types/utils}/webpack/env/types.d.ts +0 -0
  564. /package/{utils → dist/types/utils}/webpack/env/utils.d.ts +0 -0
  565. /package/{utils → dist/types/utils}/webpack/index.d.ts +0 -0
  566. /package/{utils → dist/types/utils}/webpack/module-federation/types.d.ts +0 -0
  567. /package/{utils → dist/types/utils}/webpack/module-federation/utils.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.js","names":["safetyAsync","fn","format","value","safetyWrapper","args","ok","result","error"],"sources":["../../../src/utils/function.ts"],"sourcesContent":["interface SafetyDoneInfo<T> {\n ok: true;\n result: T;\n}\n\ninterface SafetyFailInfo {\n ok: false;\n error: unknown;\n}\n\nexport type SafetyInfo<T> = SafetyDoneInfo<T> | SafetyFailInfo;\n\ninterface SafetyFormatter<T, F> {\n (info: SafetyInfo<T>): F | Promise<F>;\n}\n\n/**\n * Возвращает функцию, результатом которой является promise, который никогда не переходит в состояние rejected.\n * При перехвате исключения результат будет содержать ошибку.\n * @param fn Оборачиваемая функция.\n * @return Функция.\n */\nexport function safetyAsync<T, P extends any[]>(\n fn: (...args: P) => Promise<T>,\n): (...args: P) => Promise<SafetyInfo<T>>;\n\n/**\n * Возвращает функцию, результатом которой является promise, который никогда не переходит в состояние rejected.\n * При перехвате исключения результат будет содержать ошибку.\n * @param fn Оборачиваемая функция.\n * @param format Получив базовую информацию об ответе должна вернуть отформатированную информацию.\n * @return Функция.\n */\nexport function safetyAsync<T, P extends any[], F>(\n fn: (...args: P) => Promise<T>,\n format: SafetyFormatter<T, F>,\n): (...args: P) => Promise<F>;\n\n/**\n * Возвращает функцию, результатом которой является promise, который никогда не переходит в состояние rejected.\n * При перехвате исключения результат будет содержать ошибку.\n * @param fn Оборачиваемая функция.\n * @param format Получив базовую информацию об ответе должна вернуть отформатированную информацию.\n * @return Функция.\n */\nexport function safetyAsync<T, P extends any[], F>(\n fn: (...args: P) => Promise<T>,\n format: SafetyFormatter<T, F> = value => value as F,\n): (...args: P) => Promise<F> {\n return async function safetyWrapper(...args: P) {\n try {\n return format({ ok: true, result: await fn(...args) });\n } catch (error) {\n return format({ ok: false, error });\n }\n };\n}\n"],"mappings":";;;;;;AAgBA;AACA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,WAAWA,CACzBC,EAA8B,EAC9BC,MAA6B,GAAGC,KAAK,IAAIA,KAAU,EACvB;EAC5B,OAAO,eAAeC,aAAaA,CAAC,GAAGC,IAAO,EAAE;IAC9C,IAAI;MACF,OAAOH,MAAM,CAAC;QAAEI,EAAE,EAAE,IAAI;QAAEC,MAAM,EAAE,MAAMN,EAAE,CAAC,GAAGI,IAAI;MAAE,CAAC,CAAC;IACxD,CAAC,CAAC,OAAOG,KAAK,EAAE;MACd,OAAON,MAAM,CAAC;QAAEI,EAAE,EAAE,KAAK;QAAEE;MAAM,CAAC,CAAC;IACrC;EACF,CAAC;AACH"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "safetyAsync", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _function.safetyAsync;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "toMilliseconds", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _math.toMilliseconds;
16
+ }
17
+ });
18
+ var _function = require("./function");
19
+ var _math = require("./math");
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_function","require","_math"],"sources":["../../../src/utils/index.ts"],"sourcesContent":["export { safetyAsync, type SafetyInfo } from './function';\nexport { toMilliseconds } from './math';\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA"}
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toMilliseconds = void 0;
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.toMilliseconds = toMilliseconds;
4
7
  /**
5
8
  * Переводит наносекунды в миллисекунды.
6
9
  * @param nanoseconds Наносекунды.
7
10
  * @return Миллисекунды.
8
11
  */
9
12
  function toMilliseconds(nanoseconds) {
10
- return Number(nanoseconds / 1000000n);
13
+ return Number(nanoseconds / 1000000n);
11
14
  }
12
- exports.toMilliseconds = toMilliseconds;
13
- //# sourceMappingURL=number.js.map
15
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","names":["toMilliseconds","nanoseconds","Number"],"sources":["../../../src/utils/math.ts"],"sourcesContent":["/**\n * Переводит наносекунды в миллисекунды.\n * @param nanoseconds Наносекунды.\n * @return Миллисекунды.\n */\nexport function toMilliseconds(nanoseconds: bigint): number {\n return Number(nanoseconds / 1000000n);\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACO,SAASA,cAAcA,CAACC,WAAmB,EAAU;EAC1D,OAAOC,MAAM,CAACD,WAAW,GAAG,QAAQ,CAAC;AACvC"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ErrorBoundary = void 0;
7
+ exports.SafeSuspense = SafeSuspense;
8
+ var _react = require("react");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ /**
11
+ * Опции компонентов ErrorBoundary и SafeSuspense.
12
+ */
13
+
14
+ /**
15
+ * Компонент-предохранитель. Обработчик ошибок в React-компонентах.
16
+ */
17
+ class ErrorBoundary extends _react.Component {
18
+ /**
19
+ * @param props Свойства.
20
+ */
21
+ constructor(props) {
22
+ super(props);
23
+ this.state = {
24
+ hasError: false
25
+ };
26
+ }
27
+
28
+ /** @inheritDoc */
29
+ static getDerivedStateFromError() {
30
+ return {
31
+ hasError: true
32
+ };
33
+ }
34
+
35
+ /** @inheritDoc */
36
+ componentDidCatch(error, errorInfo) {
37
+ // @todo добавить возможность брать onError из специального контекста (это упростит передачу из di-контейнера)
38
+ const {
39
+ onError
40
+ } = this.props;
41
+ onError?.(error, errorInfo);
42
+ }
43
+
44
+ /**
45
+ * Рендер.
46
+ * @return Дочерний элемент либо запасное значение.
47
+ */
48
+ render() {
49
+ const {
50
+ children,
51
+ fallback
52
+ } = this.props;
53
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
54
+ children: this.state.hasError ? fallback : children
55
+ });
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Обертка над Suspense c перехватом ошибок.
61
+ * @todo Возможно этот компонент не нужен...
62
+ * @param props Свойства.
63
+ * @return Элемент.
64
+ */
65
+ exports.ErrorBoundary = ErrorBoundary;
66
+ function SafeSuspense({
67
+ children,
68
+ fallback,
69
+ onError
70
+ }) {
71
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Suspense, {
72
+ fallback: fallback,
73
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ErrorBoundary, {
74
+ fallback: fallback,
75
+ onError: onError,
76
+ children: children
77
+ })
78
+ });
79
+ }
80
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_react","require","_jsxRuntime","ErrorBoundary","Component","constructor","props","state","hasError","getDerivedStateFromError","componentDidCatch","error","errorInfo","onError","render","children","fallback","jsx","Fragment","exports","SafeSuspense","Suspense"],"sources":["../../../../../src/utils/react/error-handlers/index.tsx"],"sourcesContent":["import { Component, ErrorInfo, ReactNode, Suspense } from 'react';\n\n/**\n * Опции компонентов ErrorBoundary и SafeSuspense.\n */\nexport interface Props {\n /** Дочерний элемент. */\n children: NonNullable<ReactNode> | null;\n\n /** Содержимое, которое будет выведено если возникла ошибка. */\n fallback: NonNullable<ReactNode> | null;\n\n /** Функция для логирования ошибок. */\n onError?: (error: Error, errorInfo: ErrorInfo) => void;\n}\n\n/**\n * Компонент-предохранитель. Обработчик ошибок в React-компонентах.\n */\nexport class ErrorBoundary extends Component<Props, { hasError: boolean }> {\n /**\n * @param props Свойства.\n */\n constructor(props: Props) {\n super(props);\n\n this.state = { hasError: false };\n }\n\n /** @inheritDoc */\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n /** @inheritDoc */\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n // @todo добавить возможность брать onError из специального контекста (это упростит передачу из di-контейнера)\n const { onError } = this.props;\n\n onError?.(error, errorInfo);\n }\n\n /**\n * Рендер.\n * @return Дочерний элемент либо запасное значение.\n */\n render() {\n const { children, fallback } = this.props;\n\n return <>{this.state.hasError ? fallback : children}</>;\n }\n}\n\n/**\n * Обертка над Suspense c перехватом ошибок.\n * @todo Возможно этот компонент не нужен...\n * @param props Свойства.\n * @return Элемент.\n */\nexport function SafeSuspense({ children, fallback, onError }: Props) {\n return (\n <Suspense fallback={fallback}>\n <ErrorBoundary fallback={fallback} onError={onError}>\n {children}\n </ErrorBoundary>\n </Suspense>\n );\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAAkE,IAAAC,WAAA,GAAAD,OAAA;AAElE;AACA;AACA;;AAYA;AACA;AACA;AACO,MAAME,aAAa,SAASC,gBAAS,CAA+B;EACzE;AACF;AACA;EACEC,WAAWA,CAACC,KAAY,EAAE;IACxB,KAAK,CAACA,KAAK,CAAC;IAEZ,IAAI,CAACC,KAAK,GAAG;MAAEC,QAAQ,EAAE;IAAM,CAAC;EAClC;;EAEA;EACA,OAAOC,wBAAwBA,CAAA,EAAG;IAChC,OAAO;MAAED,QAAQ,EAAE;IAAK,CAAC;EAC3B;;EAEA;EACAE,iBAAiBA,CAACC,KAAY,EAAEC,SAAoB,EAAE;IACpD;IACA,MAAM;MAAEC;IAAQ,CAAC,GAAG,IAAI,CAACP,KAAK;IAE9BO,OAAO,GAAGF,KAAK,EAAEC,SAAS,CAAC;EAC7B;;EAEA;AACF;AACA;AACA;EACEE,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,QAAQ;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACV,KAAK;IAEzC,oBAAO,IAAAJ,WAAA,CAAAe,GAAA,EAAAf,WAAA,CAAAgB,QAAA;MAAAH,QAAA,EAAG,IAAI,CAACR,KAAK,CAACC,QAAQ,GAAGQ,QAAQ,GAAGD;IAAQ,CAAG,CAAC;EACzD;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AALAI,OAAA,CAAAhB,aAAA,GAAAA,aAAA;AAMO,SAASiB,YAAYA,CAAC;EAAEL,QAAQ;EAAEC,QAAQ;EAAEH;AAAe,CAAC,EAAE;EACnE,oBACE,IAAAX,WAAA,CAAAe,GAAA,EAACjB,MAAA,CAAAqB,QAAQ;IAACL,QAAQ,EAAEA,QAAS;IAAAD,QAAA,eAC3B,IAAAb,WAAA,CAAAe,GAAA,EAACd,aAAa;MAACa,QAAQ,EAAEA,QAAS;MAACH,OAAO,EAAEA,OAAQ;MAAAE,QAAA,EACjDA;IAAQ,CACI;EAAC,CACR,CAAC;AAEf"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ErrorBoundary", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _errorHandlers.ErrorBoundary;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "SafeSuspense", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _errorHandlers.SafeSuspense;
16
+ }
17
+ });
18
+ var _errorHandlers = require("./error-handlers");
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_errorHandlers","require"],"sources":["../../../../src/utils/react/index.ts"],"sourcesContent":["import { ErrorBoundary, SafeSuspense } from './error-handlers';\n\nexport { ErrorBoundary, SafeSuspense };\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "RemoteData", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _remoteData.RemoteData;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "STATUS", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _remoteData.STATUS;
16
+ }
17
+ });
18
+ var _remoteData = require("./remote-data");
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_remoteData","require"],"sources":["../../../../src/utils/redux/index.ts"],"sourcesContent":["import { Status, RemoteDataState, STATUS, RemoteData } from './remote-data';\n\nexport type { Status, RemoteDataState };\nexport { STATUS, RemoteData };\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.STATUS = exports.RemoteData = void 0;
7
+ var redux = _interopRequireWildcard(require("@reduxjs/toolkit"));
8
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
9
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
+ /* eslint-disable require-jsdoc */
11
+
12
+ // @todo "* as" сделано для работы в Node.js ESM но есть подозрение что на tree shaking плохо скажется
13
+
14
+ const {
15
+ createAction,
16
+ createSelector
17
+ } = redux;
18
+
19
+ /**
20
+ * Статус загрузки данных.
21
+ */
22
+
23
+ /**
24
+ * Базовая структура хранилища удаленных данных.
25
+ */
26
+
27
+ /**
28
+ * Возможные статусы загрузки данных.
29
+ */
30
+ const STATUS = exports.STATUS = {
31
+ initial: 'initial',
32
+ fetching: 'fetching',
33
+ success: 'success',
34
+ failure: 'failure'
35
+ };
36
+
37
+ /** Работа с удаленными данными. */
38
+ class RemoteData {
39
+ static get STATUS() {
40
+ return STATUS;
41
+ }
42
+
43
+ /**
44
+ * Возвращает action'ы для работы с удаленными данными.
45
+ * @param name Префикс имён.
46
+ * @return Набор.
47
+ */
48
+ static createActions(name) {
49
+ return {
50
+ request: createAction(`${name}/request`),
51
+ success: createAction(`${name}/success`),
52
+ failure: createAction(`${name}/failure`)
53
+ };
54
+ }
55
+
56
+ /**
57
+ * Возвращает набор обработчиков для работы с удаленными данными.
58
+ * @return Набор.
59
+ */
60
+ static createHandlers() {
61
+ // ВАЖНО: не используем возможности immer здесь чтобы набор можно было использовать без immer.
62
+ return {
63
+ request(state) {
64
+ return {
65
+ ...state,
66
+ status: STATUS.fetching
67
+ };
68
+ },
69
+ success(state, action) {
70
+ return {
71
+ ...state,
72
+ data: action.payload,
73
+ status: STATUS.success,
74
+ fetchCount: (state.fetchCount ?? 0) + 1
75
+ };
76
+ },
77
+ failure(state, action) {
78
+ return {
79
+ ...state,
80
+ error: action.payload,
81
+ status: STATUS.failure,
82
+ fetchCount: (state.fetchCount ?? 0) + 1
83
+ };
84
+ }
85
+ };
86
+ }
87
+
88
+ /**
89
+ * Применяет обработчики для работы с удаленными данными.
90
+ * @param actions Набор action'ов.
91
+ * @param builder Builder.
92
+ */
93
+ static applyHandlers(actions, builder) {
94
+ const handlers = RemoteData.createHandlers();
95
+
96
+ // @todo разобраться с проблемой когда убираешь ".type"
97
+ builder.addCase(actions.request.type, handlers.request);
98
+ builder.addCase(actions.success.type, handlers.success);
99
+ builder.addCase(actions.failure.type, handlers.failure);
100
+ }
101
+
102
+ /**
103
+ * Возвращает новый набор селекторов данных.
104
+ * @param selectRoot Функция получения состояния.
105
+ * @return Набор селекторов.
106
+ */
107
+ static createSelectors(selectRoot) {
108
+ return {
109
+ isInitial: createSelector(selectRoot, state => state.status === 'initial'),
110
+ isFetching: createSelector(selectRoot, state => state.status === 'fetching'),
111
+ isSuccess: createSelector(selectRoot, state => state.status === 'success'),
112
+ isFailed: createSelector(selectRoot, state => state.status === 'failure'),
113
+ wasFetched: createSelector(selectRoot, state => (state.fetchCount ?? 0) > 0)
114
+ };
115
+ }
116
+ }
117
+ exports.RemoteData = RemoteData;
118
+ //# sourceMappingURL=remote-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-data.js","names":["redux","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createAction","createSelector","STATUS","exports","initial","fetching","success","failure","RemoteData","createActions","name","request","createHandlers","state","status","action","data","payload","fetchCount","error","applyHandlers","actions","builder","handlers","addCase","type","createSelectors","selectRoot","isInitial","isFetching","isSuccess","isFailed","wasFetched"],"sources":["../../../../src/utils/redux/remote-data.ts"],"sourcesContent":["/* eslint-disable require-jsdoc */\n\n// @todo \"* as\" сделано для работы в Node.js ESM но есть подозрение что на tree shaking плохо скажется\nimport * as redux from '@reduxjs/toolkit';\n\nconst { createAction, createSelector } = redux;\n\ninterface RemoteDataActions<TData, TError = unknown, TPayload = void> {\n request: redux.PayloadActionCreator<TPayload, string>;\n success: redux.PayloadActionCreator<TData, string>;\n failure: redux.PayloadActionCreator<TError, string>;\n}\n\n/**\n * Статус загрузки данных.\n */\nexport type Status = 'initial' | 'fetching' | 'success' | 'failure';\n\n/**\n * Базовая структура хранилища удаленных данных.\n */\nexport interface RemoteDataState<TData, TError> {\n /** Загружаемые данные. */\n readonly data: TData;\n\n /** Данные ошибки запроса. */\n readonly error: TError;\n\n /** Статус загрузки данных. */\n readonly status: Status;\n\n /** Количество запросов. */\n readonly fetchCount?: number;\n}\n\n/**\n * Возможные статусы загрузки данных.\n */\nexport const STATUS: Record<Status, Status> = {\n initial: 'initial',\n fetching: 'fetching',\n success: 'success',\n failure: 'failure',\n} as const;\n\n/** Работа с удаленными данными. */\nexport abstract class RemoteData {\n static get STATUS() {\n return STATUS;\n }\n\n /**\n * Возвращает action'ы для работы с удаленными данными.\n * @param name Префикс имён.\n * @return Набор.\n */\n static createActions<TData = never, TError = never, TPayload = void>(\n name: string,\n ): RemoteDataActions<TData, TError, TPayload> {\n return {\n request: createAction<TPayload>(`${name}/request`),\n success: createAction<TData>(`${name}/success`),\n failure: createAction<TError>(`${name}/failure`),\n } as const;\n }\n\n /**\n * Возвращает набор обработчиков для работы с удаленными данными.\n * @return Набор.\n */\n static createHandlers<\n TData,\n TError,\n S extends RemoteDataState<TData, TError> = RemoteDataState<TData, TError>,\n >() {\n // ВАЖНО: не используем возможности immer здесь чтобы набор можно было использовать без immer.\n return {\n request(state: S | redux.Draft<S>): S | redux.Draft<S> {\n return {\n ...state,\n status: STATUS.fetching,\n };\n },\n\n success(state: S | redux.Draft<S>, action: redux.PayloadAction<TData>): S | redux.Draft<S> {\n return {\n ...state,\n data: action.payload,\n status: STATUS.success,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n\n failure(state: S | redux.Draft<S>, action: redux.PayloadAction<TError>): S | redux.Draft<S> {\n return {\n ...state,\n error: action.payload,\n status: STATUS.failure,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n } as const;\n }\n\n /**\n * Применяет обработчики для работы с удаленными данными.\n * @param actions Набор action'ов.\n * @param builder Builder.\n */\n static applyHandlers<TData, TError>(\n actions: RemoteDataActions<TData, TError, any | never>,\n builder: Pick<redux.ActionReducerMapBuilder<RemoteDataState<TData, TError>>, 'addCase'>,\n ): void {\n const handlers = RemoteData.createHandlers<TData, TError>();\n\n // @todo разобраться с проблемой когда убираешь \".type\"\n builder.addCase(actions.request.type, handlers.request);\n builder.addCase(actions.success.type, handlers.success);\n builder.addCase(actions.failure.type, handlers.failure);\n }\n\n /**\n * Возвращает новый набор селекторов данных.\n * @param selectRoot Функция получения состояния.\n * @return Набор селекторов.\n */\n static createSelectors<S extends RemoteDataState<unknown, unknown>, R = unknown>(\n selectRoot: (root: R) => S,\n ) {\n return {\n isInitial: createSelector(selectRoot, state => state.status === 'initial'),\n isFetching: createSelector(selectRoot, state => state.status === 'fetching'),\n isSuccess: createSelector(selectRoot, state => state.status === 'success'),\n isFailed: createSelector(selectRoot, state => state.status === 'failure'),\n wasFetched: createSelector(selectRoot, state => (state.fetchCount ?? 0) > 0),\n } as const;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "createSagaMiddleware", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _middleware.createSagaMiddleware;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "takeChain", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _takeChain.takeChain;
16
+ }
17
+ });
18
+ var _takeChain = require("./take-chain");
19
+ var _middleware = require("./middleware");
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_takeChain","require","_middleware"],"sources":["../../../../src/utils/redux-saga/index.ts"],"sourcesContent":["export type { SagaExtendedMiddleware, SagaMiddlewareHandler } from './types';\nexport { takeChain } from './take-chain';\nexport { createSagaMiddleware } from './middleware';\n"],"mappings":";;;;;;;;;;;;;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createSagaMiddleware = createSagaExtendedMiddleware;
7
+ var _reduxSaga = _interopRequireWildcard(require("redux-saga"));
8
+ var _effects = require("redux-saga/effects");
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ /* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
12
+
13
+ /**
14
+ * Возвращает расширенную версию SagaMiddleware.
15
+ * @param handler Обработчик событий.
16
+ * @return Middleware.
17
+ */
18
+ function createSagaExtendedMiddleware(handler) {
19
+ return new MiddlewareControl(handler).toMiddleware();
20
+ }
21
+ class MiddlewareControl {
22
+ constructor(handler) {
23
+ this.handler = handler;
24
+ this.sagaMiddleware = (0, _reduxSaga.default)({
25
+ onError: (error, info) => {
26
+ handler.onSagaError(error, info);
27
+ }
28
+ });
29
+ }
30
+ toMiddleware() {
31
+ const middleware = api => {
32
+ this.api = api;
33
+ return this.sagaMiddleware(api);
34
+ };
35
+ middleware.timeout = (milliseconds, config) => {
36
+ this.configInterrupt(milliseconds, config);
37
+ return middleware;
38
+ };
39
+ middleware.run = async (saga, ...args) => {
40
+ await this.run(saga, ...args);
41
+ };
42
+ return middleware;
43
+ }
44
+ configInterrupt(milliseconds, config) {
45
+ this.interruptTimeout = milliseconds;
46
+ this.interruptStrategy = config?.strategy ?? 'cancel-task';
47
+ }
48
+ async run(saga, ...args) {
49
+ const {
50
+ interruptTimeout
51
+ } = this;
52
+ if (typeof interruptTimeout === 'number' && Number.isFinite(interruptTimeout)) {
53
+ switch (this.interruptStrategy) {
54
+ case 'cancel-task':
55
+ await this.runWithBreakTask({
56
+ saga,
57
+ args,
58
+ timeout: interruptTimeout
59
+ });
60
+ return;
61
+ case 'dispatch-end':
62
+ await this.runWithBreakMiddleware({
63
+ saga,
64
+ args,
65
+ timeout: interruptTimeout
66
+ });
67
+ return;
68
+ }
69
+ }
70
+ await this.sagaMiddleware.run(saga, ...args).toPromise();
71
+ }
72
+ async runWithBreakTask(data) {
73
+ const result = await this.sagaMiddleware.run(runWithTimeLimit, data).toPromise();
74
+ if (!result.done) {
75
+ this.handler.onTimeoutInterrupt({
76
+ timeout: data.timeout
77
+ });
78
+ }
79
+ }
80
+ async runWithBreakMiddleware(data) {
81
+ const {
82
+ saga,
83
+ args,
84
+ timeout
85
+ } = data;
86
+ const {
87
+ api
88
+ } = this;
89
+ if (!api) {
90
+ const error = new Error('Middleware is not applied to the store');
91
+ this.handler.onConfigError(error);
92
+ throw error;
93
+ }
94
+ const promises = [];
95
+ let ready = false;
96
+ let timerId;
97
+ promises.push(this.sagaMiddleware.run(saga, ...args).toPromise().then(() => {
98
+ ready = true;
99
+ }).finally(() => {
100
+ // вне зависимости от результата отключаем таймер если он есть
101
+ timerId !== undefined && clearTimeout(timerId);
102
+ }));
103
+ promises.push(new Promise(resolve => {
104
+ timerId = setTimeout(() => {
105
+ if (!ready) {
106
+ this.handler.onTimeoutInterrupt({
107
+ timeout
108
+ });
109
+ api.dispatch(_reduxSaga.END);
110
+ }
111
+ resolve();
112
+ }, timeout);
113
+ }));
114
+ await Promise.race(promises);
115
+ }
116
+ }
117
+ function* runWithTimeLimit(data) {
118
+ const {
119
+ saga,
120
+ args,
121
+ timeout
122
+ } = data;
123
+ const task = yield (0, _effects.fork)(saga, ...args);
124
+ const [needCancel, taskResult] = yield (0, _effects.race)([(0, _effects.delay)(timeout, true), (0, _effects.call)(() => task.toPromise())]);
125
+ if (needCancel) {
126
+ yield (0, _effects.cancel)(task);
127
+
128
+ // ВАЖНО: если делать throw ... - ошибка попадет в onError (createSagaMiddleware)
129
+ // чтобы не логировать лишний раз возвращаем значение
130
+ return {
131
+ done: false,
132
+ error: new SagaCancelSignal()
133
+ };
134
+ } else {
135
+ return {
136
+ done: true,
137
+ value: taskResult
138
+ };
139
+ }
140
+ }
141
+
142
+ // @todo в будущем можно заменить все ожидаемые исключения (только внутри фреймворка) на этот тип
143
+
144
+ class SagaCancelSignal {
145
+ constructor() {
146
+ this.name = 'SagaCancelSignal';
147
+ }
148
+ }
149
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","names":["_reduxSaga","_interopRequireWildcard","require","_effects","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createSagaExtendedMiddleware","handler","MiddlewareControl","toMiddleware","constructor","sagaMiddleware","createSagaMiddleware","onError","error","info","onSagaError","middleware","api","timeout","milliseconds","config","configInterrupt","run","saga","args","interruptTimeout","interruptStrategy","strategy","Number","isFinite","runWithBreakTask","runWithBreakMiddleware","toPromise","data","result","runWithTimeLimit","done","onTimeoutInterrupt","Error","onConfigError","promises","ready","timerId","push","then","finally","undefined","clearTimeout","Promise","resolve","setTimeout","dispatch","END","race","task","fork","needCancel","taskResult","delay","cancel","SagaCancelSignal","value","name"],"sources":["../../../../src/utils/redux-saga/middleware.ts"],"sourcesContent":["/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */\nimport { MiddlewareAPI } from '@reduxjs/toolkit';\nimport {\n SagaExtendedMiddleware,\n SagaInterruptConfig,\n SagaMiddlewareHandler,\n SagaTimeoutRunData,\n} from './types';\nimport createSagaMiddleware, { END, Saga, Task, SagaMiddleware } from 'redux-saga';\nimport { call, cancel, delay, fork, race } from 'redux-saga/effects';\n\n/**\n * Возвращает расширенную версию SagaMiddleware.\n * @param handler Обработчик событий.\n * @return Middleware.\n */\nfunction createSagaExtendedMiddleware(handler: SagaMiddlewareHandler): SagaExtendedMiddleware {\n return new MiddlewareControl(handler).toMiddleware();\n}\n\nclass MiddlewareControl {\n private api?: MiddlewareAPI;\n private interruptTimeout?: number;\n private interruptStrategy?: SagaInterruptConfig['strategy'];\n private handler: SagaMiddlewareHandler;\n private sagaMiddleware: SagaMiddleware;\n\n constructor(handler: SagaMiddlewareHandler) {\n this.handler = handler;\n\n this.sagaMiddleware = createSagaMiddleware({\n onError: (error, info) => {\n handler.onSagaError(error, info);\n },\n });\n }\n\n toMiddleware(): SagaExtendedMiddleware {\n const middleware: SagaExtendedMiddleware = api => {\n this.api = api;\n return this.sagaMiddleware(api);\n };\n\n middleware.timeout = (milliseconds, config) => {\n this.configInterrupt(milliseconds, config);\n return middleware;\n };\n\n middleware.run = async (saga, ...args) => {\n await this.run(saga, ...args);\n };\n\n return middleware;\n }\n\n private configInterrupt(milliseconds: number, config?: SagaInterruptConfig) {\n this.interruptTimeout = milliseconds;\n this.interruptStrategy = config?.strategy ?? 'cancel-task';\n }\n\n private async run<S extends Saga>(saga: S, ...args: Parameters<S>): Promise<void> {\n const { interruptTimeout } = this;\n\n if (typeof interruptTimeout === 'number' && Number.isFinite(interruptTimeout)) {\n switch (this.interruptStrategy) {\n case 'cancel-task':\n await this.runWithBreakTask({ saga, args, timeout: interruptTimeout });\n return;\n case 'dispatch-end':\n await this.runWithBreakMiddleware({ saga, args, timeout: interruptTimeout });\n return;\n }\n }\n\n await this.sagaMiddleware.run(saga, ...args).toPromise();\n }\n\n private async runWithBreakTask<S extends Saga>(data: SagaTimeoutRunData<S>): Promise<void> {\n const result: Either<unknown, unknown> = await this.sagaMiddleware\n .run(runWithTimeLimit, data)\n .toPromise();\n\n if (!result.done) {\n this.handler.onTimeoutInterrupt({ timeout: data.timeout });\n }\n }\n\n private async runWithBreakMiddleware<S extends Saga>(data: SagaTimeoutRunData<S>): Promise<void> {\n const { saga, args, timeout } = data;\n const { api } = this;\n\n if (!api) {\n const error = new Error('Middleware is not applied to the store');\n\n this.handler.onConfigError(error);\n\n throw error;\n }\n\n const promises: Promise<void>[] = [];\n\n let ready = false;\n let timerId: ReturnType<typeof setTimeout>;\n\n promises.push(\n this.sagaMiddleware\n .run(saga, ...args)\n .toPromise()\n .then(() => {\n ready = true;\n })\n .finally(() => {\n // вне зависимости от результата отключаем таймер если он есть\n timerId !== undefined && clearTimeout(timerId);\n }),\n );\n\n promises.push(\n new Promise<void>(resolve => {\n timerId = setTimeout(() => {\n if (!ready) {\n this.handler.onTimeoutInterrupt({ timeout });\n api.dispatch(END);\n }\n\n resolve();\n }, timeout);\n }),\n );\n\n await Promise.race(promises);\n }\n}\n\nfunction* runWithTimeLimit<S extends Saga>(\n data: SagaTimeoutRunData<S>,\n): Generator<any, Either<SagaCancelSignal, ReturnType<S>>, any> {\n const { saga, args, timeout } = data;\n const task: Task = yield fork(saga, ...args);\n\n const [needCancel, taskResult]: [boolean, ReturnType<S>] = yield race([\n delay(timeout, true),\n call(() => task.toPromise()),\n ]);\n\n if (needCancel) {\n yield cancel(task);\n\n // ВАЖНО: если делать throw ... - ошибка попадет в onError (createSagaMiddleware)\n // чтобы не логировать лишний раз возвращаем значение\n return { done: false, error: new SagaCancelSignal() };\n } else {\n return { done: true, value: taskResult };\n }\n}\n\n// @todo в будущем можно заменить все ожидаемые исключения (только внутри фреймворка) на этот тип\ntype Either<E, V> = { done: false; error: E } | { done: true; value: V };\n\nclass SagaCancelSignal {\n name: string;\n\n constructor() {\n this.name = 'SagaCancelSignal';\n }\n}\n\nexport { createSagaExtendedMiddleware as createSagaMiddleware };\n"],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateTakeChain = generateTakeChain;
7
+ exports.putDelayed = putDelayed;
8
+ exports.takeChain = takeChain;
9
+ var _effects = require("redux-saga/effects");
10
+ /**
11
+ * Накапливает экшены и генерирует эффект по таймауту.
12
+ * @param timeout Время задержки в мс.
13
+ * @param types Массив с типами ожидаемых экшенов.
14
+ * @param task Генератор.
15
+ * @param deps Аргументы для генератора.
16
+ * @return Эффект.
17
+ */
18
+ function takeChain(timeout, types, task, ...deps) {
19
+ return (0, _effects.fork)(generateTakeChain, timeout, types, task, deps);
20
+ }
21
+
22
+ /**
23
+ * Генерирует эффект по таймауту.
24
+ * @internal
25
+ * @param timeout Время задержки в мс.
26
+ * @param types Массив с типами ожидаемых экшенов.
27
+ * @param task Генератор.
28
+ * @param deps Аргументы для генератора.
29
+ */
30
+ function* generateTakeChain(timeout, types, task, deps) {
31
+ while (true) {
32
+ const breakAction = {
33
+ type: `BREAK_${Date.now()}`
34
+ };
35
+ const firstAction = yield (0, _effects.take)(types);
36
+ const collectedActions = [firstAction];
37
+ yield (0, _effects.fork)(putDelayed, timeout, breakAction);
38
+ while (true) {
39
+ const {
40
+ action,
41
+ canceled
42
+ } = yield (0, _effects.race)({
43
+ action: (0, _effects.take)(types),
44
+ canceled: (0, _effects.take)(breakAction.type)
45
+ });
46
+ action && collectedActions.push(action);
47
+ if (canceled || types.every(type => collectedActions.some(someAction => someAction.type === type))) {
48
+ // @todo убрать "as any"
49
+ yield (0, _effects.fork)(task, ...deps, collectedActions);
50
+ break;
51
+ }
52
+ }
53
+ }
54
+ }
55
+
56
+ /**
57
+ * Вызывает экшен с заданной задержкой.
58
+ * @internal
59
+ * @param timeout Время задержки в мс.
60
+ * @param action Тип экшена.
61
+ */
62
+ function* putDelayed(timeout, action) {
63
+ yield (0, _effects.delay)(timeout);
64
+ yield (0, _effects.put)(action);
65
+ }
66
+ //# sourceMappingURL=take-chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"take-chain.js","names":["_effects","require","takeChain","timeout","types","task","deps","fork","generateTakeChain","breakAction","type","Date","now","firstAction","take","collectedActions","putDelayed","action","canceled","race","push","every","some","someAction","delay","put"],"sources":["../../../../src/utils/redux-saga/take-chain.ts"],"sourcesContent":["import { Action } from '@reduxjs/toolkit';\nimport { delay, fork, put, race, take } from 'redux-saga/effects';\n\n/**\n * Накапливает экшены и генерирует эффект по таймауту.\n * @param timeout Время задержки в мс.\n * @param types Массив с типами ожидаемых экшенов.\n * @param task Генератор.\n * @param deps Аргументы для генератора.\n * @return Эффект.\n */\nexport function takeChain<\n Deps extends any[],\n Task extends (...someArgs: [...Deps, Action[]]) => any,\n>(timeout: number, types: string[], task: Task, ...deps: Deps) {\n return fork(generateTakeChain as any, timeout, types, task, deps);\n}\n\n/**\n * Генерирует эффект по таймауту.\n * @internal\n * @param timeout Время задержки в мс.\n * @param types Массив с типами ожидаемых экшенов.\n * @param task Генератор.\n * @param deps Аргументы для генератора.\n */\nexport function* generateTakeChain<\n Deps extends any[],\n Task extends (...someArgs: [...Deps, Action[]]) => any,\n>(timeout: number, types: string[], task: Task, deps: Deps): Generator<any, void, any> {\n while (true) {\n const breakAction: Action = { type: `BREAK_${Date.now()}` };\n const firstAction: Action = yield take(types);\n const collectedActions = [firstAction];\n\n yield fork(putDelayed, timeout, breakAction);\n\n while (true) {\n const { action, canceled } = yield race({\n action: take(types),\n canceled: take(breakAction.type),\n });\n\n action && collectedActions.push(action);\n\n if (\n canceled ||\n types.every(type => collectedActions.some(someAction => someAction.type === type))\n ) {\n // @todo убрать \"as any\"\n yield fork(task as any, ...deps, collectedActions);\n break;\n }\n }\n }\n}\n\n/**\n * Вызывает экшен с заданной задержкой.\n * @internal\n * @param timeout Время задержки в мс.\n * @param action Тип экшена.\n */\nexport function* putDelayed(timeout: number, action: Action) {\n yield delay(timeout);\n yield put(action);\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,SAASA,CAGvBC,OAAe,EAAEC,KAAe,EAAEC,IAAU,EAAE,GAAGC,IAAU,EAAE;EAC7D,OAAO,IAAAC,aAAI,EAACC,iBAAiB,EAASL,OAAO,EAAEC,KAAK,EAAEC,IAAI,EAAEC,IAAI,CAAC;AACnE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,UAAUE,iBAAiBA,CAGhCL,OAAe,EAAEC,KAAe,EAAEC,IAAU,EAAEC,IAAU,EAA6B;EACrF,OAAO,IAAI,EAAE;IACX,MAAMG,WAAmB,GAAG;MAAEC,IAAI,EAAG,SAAQC,IAAI,CAACC,GAAG,CAAC,CAAE;IAAE,CAAC;IAC3D,MAAMC,WAAmB,GAAG,MAAM,IAAAC,aAAI,EAACV,KAAK,CAAC;IAC7C,MAAMW,gBAAgB,GAAG,CAACF,WAAW,CAAC;IAEtC,MAAM,IAAAN,aAAI,EAACS,UAAU,EAAEb,OAAO,EAAEM,WAAW,CAAC;IAE5C,OAAO,IAAI,EAAE;MACX,MAAM;QAAEQ,MAAM;QAAEC;MAAS,CAAC,GAAG,MAAM,IAAAC,aAAI,EAAC;QACtCF,MAAM,EAAE,IAAAH,aAAI,EAACV,KAAK,CAAC;QACnBc,QAAQ,EAAE,IAAAJ,aAAI,EAACL,WAAW,CAACC,IAAI;MACjC,CAAC,CAAC;MAEFO,MAAM,IAAIF,gBAAgB,CAACK,IAAI,CAACH,MAAM,CAAC;MAEvC,IACEC,QAAQ,IACRd,KAAK,CAACiB,KAAK,CAACX,IAAI,IAAIK,gBAAgB,CAACO,IAAI,CAACC,UAAU,IAAIA,UAAU,CAACb,IAAI,KAAKA,IAAI,CAAC,CAAC,EAClF;QACA;QACA,MAAM,IAAAH,aAAI,EAACF,IAAI,EAAS,GAAGC,IAAI,EAAES,gBAAgB,CAAC;QAClD;MACF;IACF;EACF;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,UAAUC,UAAUA,CAACb,OAAe,EAAEc,MAAc,EAAE;EAC3D,MAAM,IAAAO,cAAK,EAACrB,OAAO,CAAC;EACpB,MAAM,IAAAsB,YAAG,EAACR,MAAM,CAAC;AACnB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/utils/redux-saga/types.ts"],"sourcesContent":["import type { Middleware } from '@reduxjs/toolkit';\nimport type { Saga, SagaMiddlewareOptions } from 'redux-saga';\n\n/** Опции остановки redux-saga. */\nexport interface SagaInterruptConfig {\n strategy?: 'dispatch-end' | 'cancel-task';\n}\n\n/** Информация, которая приходит вторым аргументом в обработчик ошибки SagaMiddleware. */\nexport type SagaErrorInfo = Parameters<Required<SagaMiddlewareOptions>['onError']>[1];\n\n/** Информация об остановке redux-saga. */\nexport interface SagaInterruptInfo {\n timeout: number;\n}\n\n/** Опции запуска redux-saga с остановкой по таймауту. */\nexport interface SagaTimeoutRunData<S extends Saga> {\n saga: S;\n args: Parameters<S>;\n timeout: number;\n}\n\n/** Кастомная версия SagaMiddleware. */\nexport interface SagaExtendedMiddleware extends Middleware {\n /**\n * Установить временное ограничение работы саги.\n * Если сага не успела выполнится до истечения этого ограничения она будет принудительно завершена.\n */\n timeout(milliseconds: number, config?: SagaInterruptConfig): this;\n\n /**\n * Запускает сагу.\n */\n run: <S extends Saga>(saga: S, ...args: Parameters<S>) => Promise<void>;\n}\n\n/** Обработчик событий SagaExtendedMiddleware. */\nexport interface SagaMiddlewareHandler {\n onSagaError(error: Error, errorInfo: SagaErrorInfo): Promise<void> | void;\n onConfigError(error: Error): Promise<void> | void;\n onTimeoutInterrupt(info: SagaInterruptInfo): Promise<void> | void;\n}\n"],"mappings":""}