@sima-land/isomorph 10.1.0 → 11.0.0-alpha.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 (531) hide show
  1. package/LICENSE +201 -0
  2. package/dist/cache/types.d.ts +7 -0
  3. package/dist/cache/types.js +3 -0
  4. package/dist/cache/types.js.map +1 -0
  5. package/dist/config/browser.d.ts +6 -0
  6. package/dist/config/browser.js +13 -0
  7. package/dist/config/browser.js.map +1 -0
  8. package/dist/config/index.d.ts +7 -0
  9. package/dist/config/index.js +20 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/node.d.ts +6 -0
  12. package/dist/config/node.js +19 -0
  13. package/dist/config/node.js.map +1 -0
  14. package/dist/config/types.d.ts +7 -0
  15. package/dist/config/types.js +3 -0
  16. package/dist/config/types.js.map +1 -0
  17. package/dist/config/utils.d.ts +5 -0
  18. package/dist/config/utils.js +12 -0
  19. package/dist/config/utils.js.map +1 -0
  20. package/dist/container/application.d.ts +25 -0
  21. package/dist/container/application.js +63 -0
  22. package/dist/container/application.js.map +1 -0
  23. package/dist/container/index.d.ts +18 -0
  24. package/dist/container/index.js +74 -0
  25. package/dist/container/index.js.map +1 -0
  26. package/dist/container/types.d.ts +14 -0
  27. package/dist/container/types.js +3 -0
  28. package/dist/container/types.js.map +1 -0
  29. package/dist/error-tracker/browser.d.ts +8 -0
  30. package/dist/error-tracker/browser.js +40 -0
  31. package/dist/error-tracker/browser.js.map +1 -0
  32. package/dist/error-tracker/node.d.ts +8 -0
  33. package/dist/error-tracker/node.js +40 -0
  34. package/dist/error-tracker/node.js.map +1 -0
  35. package/dist/error-tracker/types.d.ts +18 -0
  36. package/dist/error-tracker/types.js +3 -0
  37. package/dist/error-tracker/types.js.map +1 -0
  38. package/dist/error-tracker/utils.d.ts +12 -0
  39. package/dist/error-tracker/utils.js +19 -0
  40. package/dist/error-tracker/utils.js.map +1 -0
  41. package/dist/http-client/middleware/cookie.d.ts +19 -0
  42. package/dist/http-client/middleware/cookie.js +62 -0
  43. package/dist/http-client/middleware/cookie.js.map +1 -0
  44. package/dist/http-client/middleware/tracing.d.ts +32 -0
  45. package/dist/http-client/middleware/tracing.js +67 -0
  46. package/dist/http-client/middleware/tracing.js.map +1 -0
  47. package/dist/http-client/types.d.ts +6 -0
  48. package/dist/http-client/types.js +3 -0
  49. package/dist/http-client/types.js.map +1 -0
  50. package/dist/http-client/utils.d.ts +36 -0
  51. package/dist/http-client/utils.js +49 -0
  52. package/dist/http-client/utils.js.map +1 -0
  53. package/dist/http-server/constants.d.ts +4 -0
  54. package/dist/http-server/constants.js +8 -0
  55. package/dist/http-server/constants.js.map +1 -0
  56. package/dist/http-server/handler/health-check.d.ts +6 -0
  57. package/dist/http-server/handler/health-check.js +15 -0
  58. package/dist/http-server/handler/health-check.js.map +1 -0
  59. package/dist/http-server/middleware/logging.d.ts +10 -0
  60. package/dist/http-server/middleware/logging.js +31 -0
  61. package/dist/http-server/middleware/logging.js.map +1 -0
  62. package/dist/http-server/middleware/metrics.d.ts +23 -0
  63. package/dist/http-server/middleware/metrics.js +60 -0
  64. package/dist/http-server/middleware/metrics.js.map +1 -0
  65. package/dist/http-server/middleware/tracing.d.ts +8 -0
  66. package/dist/http-server/middleware/tracing.js +32 -0
  67. package/dist/http-server/middleware/tracing.js.map +1 -0
  68. package/dist/http-server/types.d.ts +25 -0
  69. package/dist/http-server/types.js +3 -0
  70. package/dist/http-server/types.js.map +1 -0
  71. package/dist/http-server/utils.d.ts +26 -0
  72. package/dist/http-server/utils.js +88 -0
  73. package/dist/http-server/utils.js.map +1 -0
  74. package/dist/logger/handler/console.d.ts +8 -0
  75. package/dist/logger/handler/console.js +36 -0
  76. package/dist/logger/handler/console.js.map +1 -0
  77. package/dist/logger/handler/sentry.d.ts +8 -0
  78. package/dist/logger/handler/sentry.js +36 -0
  79. package/dist/logger/handler/sentry.js.map +1 -0
  80. package/dist/logger/index.d.ts +6 -0
  81. package/dist/logger/index.js +31 -0
  82. package/dist/logger/index.js.map +1 -0
  83. package/dist/logger/types.d.ts +24 -0
  84. package/dist/logger/types.js +3 -0
  85. package/dist/logger/types.js.map +1 -0
  86. package/dist/metrics/constants.d.ts +4 -0
  87. package/dist/metrics/constants.js +8 -0
  88. package/dist/metrics/constants.js.map +1 -0
  89. package/dist/metrics/node.d.ts +18 -0
  90. package/dist/metrics/node.js +74 -0
  91. package/dist/metrics/node.js.map +1 -0
  92. package/dist/preset/index.d.ts +7 -0
  93. package/dist/preset/index.js +23 -0
  94. package/dist/preset/index.js.map +1 -0
  95. package/dist/preset/node/index.d.ts +15 -0
  96. package/dist/preset/node/index.js +90 -0
  97. package/dist/preset/node/index.js.map +1 -0
  98. package/dist/preset/node/response.d.ts +12 -0
  99. package/dist/preset/node/response.js +52 -0
  100. package/dist/preset/node/response.js.map +1 -0
  101. package/dist/preset/types.d.ts +7 -0
  102. package/dist/preset/types.js +3 -0
  103. package/dist/preset/types.js.map +1 -0
  104. package/dist/saga-runner/index.d.ts +8 -0
  105. package/dist/saga-runner/index.js +77 -0
  106. package/dist/saga-runner/index.js.map +1 -0
  107. package/dist/saga-runner/types.d.ts +10 -0
  108. package/dist/saga-runner/types.js +3 -0
  109. package/dist/saga-runner/types.js.map +1 -0
  110. package/dist/tokens.d.ts +40 -0
  111. package/dist/tokens.js +43 -0
  112. package/dist/tokens.js.map +1 -0
  113. package/dist/tracer/node.d.ts +10 -0
  114. package/dist/tracer/node.js +38 -0
  115. package/dist/tracer/node.js.map +1 -0
  116. package/dist/tracer/types.d.ts +2 -0
  117. package/dist/tracer/types.js +3 -0
  118. package/dist/tracer/types.js.map +1 -0
  119. package/{browser → dist/utils/browser}/analytics/data-layer.d.ts +0 -0
  120. package/{browser → dist/utils/browser}/analytics/data-layer.js +1 -2
  121. package/dist/utils/browser/analytics/data-layer.js.map +1 -0
  122. package/{browser → dist/utils/browser}/analytics/oko.d.ts +0 -0
  123. package/{browser → dist/utils/browser}/analytics/oko.js +6 -7
  124. package/dist/utils/browser/analytics/oko.js.map +1 -0
  125. package/dist/utils/browser/storage/index.d.ts +4 -0
  126. package/dist/utils/browser/storage/index.js +63 -0
  127. package/dist/utils/browser/storage/index.js.map +1 -0
  128. package/dist/utils/number.d.ts +6 -0
  129. package/dist/utils/number.js +13 -0
  130. package/dist/utils/number.js.map +1 -0
  131. package/dist/utils/react/error-handlers/index.d.ts +38 -0
  132. package/dist/utils/react/error-handlers/index.js +47 -0
  133. package/dist/utils/react/error-handlers/index.js.map +1 -0
  134. package/dist/utils/redux/remote-data.d.ts +23 -0
  135. package/dist/utils/redux/remote-data.js +28 -0
  136. package/dist/utils/redux/remote-data.js.map +1 -0
  137. package/dist/utils/redux-saga/take-chain.d.ts +24 -0
  138. package/dist/utils/redux-saga/take-chain.js +56 -0
  139. package/dist/utils/redux-saga/take-chain.js.map +1 -0
  140. package/dist/utils/webpack/module-federation/index.d.ts +21 -0
  141. package/dist/utils/webpack/module-federation/index.js +74 -0
  142. package/dist/utils/webpack/module-federation/index.js.map +1 -0
  143. package/dist/utils/webpack/module-federation/types.d.ts +26 -0
  144. package/dist/utils/webpack/module-federation/types.js +3 -0
  145. package/dist/utils/webpack/module-federation/types.js.map +1 -0
  146. package/dist/utils/webpack/module-federation/utils.d.ts +15 -0
  147. package/dist/utils/webpack/module-federation/utils.js +36 -0
  148. package/dist/utils/webpack/module-federation/utils.js.map +1 -0
  149. package/package.json +49 -63
  150. package/readme.md +23 -0
  151. package/src/cache/types.ts +7 -0
  152. package/src/config/browser.ts +10 -0
  153. package/src/config/index.ts +18 -0
  154. package/src/config/node.ts +18 -0
  155. package/src/config/types.ts +9 -0
  156. package/src/config/utils.ts +7 -0
  157. package/src/container/application.ts +91 -0
  158. package/src/container/index.ts +79 -0
  159. package/src/container/types.ts +17 -0
  160. package/src/error-tracker/browser.ts +14 -0
  161. package/src/error-tracker/node.ts +14 -0
  162. package/src/error-tracker/types.ts +22 -0
  163. package/src/error-tracker/utils.ts +18 -0
  164. package/src/http-client/middleware/cookie.ts +73 -0
  165. package/src/{helpers/api/middlewares/trace-request-middleware.ts → http-client/middleware/tracing.ts} +28 -35
  166. package/src/http-client/types.ts +8 -0
  167. package/src/http-client/utils.ts +76 -0
  168. package/src/http-server/constants.ts +4 -0
  169. package/src/http-server/handler/health-check.ts +13 -0
  170. package/src/http-server/middleware/logging.ts +34 -0
  171. package/src/http-server/middleware/metrics.ts +87 -0
  172. package/src/http-server/middleware/tracing.ts +35 -0
  173. package/src/http-server/types.ts +29 -0
  174. package/src/http-server/utils.ts +105 -0
  175. package/src/logger/handler/console.ts +35 -0
  176. package/src/logger/handler/sentry.ts +38 -0
  177. package/src/logger/index.ts +31 -0
  178. package/src/logger/types.ts +28 -0
  179. package/src/metrics/constants.ts +4 -0
  180. package/src/metrics/node.ts +54 -0
  181. package/src/preset/index.ts +24 -0
  182. package/src/preset/node/index.ts +101 -0
  183. package/src/preset/node/response.ts +57 -0
  184. package/src/preset/types.ts +9 -0
  185. package/src/saga-runner/index.ts +59 -0
  186. package/src/saga-runner/types.ts +13 -0
  187. package/src/tokens.ts +54 -0
  188. package/src/tracer/node.ts +40 -0
  189. package/src/tracer/types.ts +3 -0
  190. package/src/utils/browser/analytics/__test__/data-layer.test.ts +50 -0
  191. package/src/utils/browser/analytics/__test__/oko.test.tsx +143 -0
  192. package/src/{browser → utils/browser}/analytics/data-layer.ts +0 -0
  193. package/src/{browser → utils/browser}/analytics/oko.ts +6 -4
  194. package/src/utils/browser/storage/index.ts +75 -0
  195. package/src/utils/number.ts +8 -0
  196. package/src/utils/react/error-handlers/__test__/__snapshots__/index.test.tsx.snap +27 -0
  197. package/src/utils/react/error-handlers/__test__/index.test.tsx +64 -0
  198. package/src/utils/react/error-handlers/index.tsx +62 -0
  199. package/src/utils/redux/__test__/remote-data.test.ts +50 -0
  200. package/src/utils/redux/remote-data.ts +34 -0
  201. package/src/utils/redux-saga/__test__/take-chain.test.ts +141 -0
  202. package/src/utils/redux-saga/take-chain.ts +65 -0
  203. package/src/utils/webpack/module-federation/__test__/index.test.ts +246 -0
  204. package/src/utils/webpack/module-federation/index.ts +92 -0
  205. package/src/utils/webpack/module-federation/types.ts +44 -0
  206. package/src/utils/webpack/module-federation/utils.ts +43 -0
  207. package/browser/analytics/data-layer.js.map +0 -1
  208. package/browser/analytics/oko.js.map +0 -1
  209. package/cache/helpers.d.ts +0 -4
  210. package/cache/helpers.js +0 -39
  211. package/cache/helpers.js.map +0 -1
  212. package/cache/local-storage.d.ts +0 -34
  213. package/cache/local-storage.js +0 -90
  214. package/cache/local-storage.js.map +0 -1
  215. package/cache/redis.d.ts +0 -10
  216. package/cache/redis.js +0 -54
  217. package/cache/redis.js.map +0 -1
  218. package/cache/wrap-in-trace.d.ts +0 -8
  219. package/cache/wrap-in-trace.js +0 -68
  220. package/cache/wrap-in-trace.js.map +0 -1
  221. package/config/create.d.ts +0 -8
  222. package/config/create.js +0 -32
  223. package/config/create.js.map +0 -1
  224. package/config/helpers.d.ts +0 -11
  225. package/config/helpers.js +0 -71
  226. package/config/helpers.js.map +0 -1
  227. package/config/validate.d.ts +0 -18
  228. package/config/validate.js +0 -107
  229. package/config/validate.js.map +0 -1
  230. package/container/create-inject.d.ts +0 -7
  231. package/container/create-inject.js +0 -36
  232. package/container/create-inject.js.map +0 -1
  233. package/container/get-dependencies.d.ts +0 -13
  234. package/container/get-dependencies.js +0 -54
  235. package/container/get-dependencies.js.map +0 -1
  236. package/container/index.d.ts +0 -15
  237. package/container/index.js +0 -175
  238. package/container/index.js.map +0 -1
  239. package/container/is-container.d.ts +0 -7
  240. package/container/is-container.js +0 -17
  241. package/container/is-container.js.map +0 -1
  242. package/container/service-not-found-error.d.ts +0 -10
  243. package/container/service-not-found-error.js +0 -18
  244. package/container/service-not-found-error.js.map +0 -1
  245. package/create-proxy/create-proxy-middleware/index.d.ts +0 -16
  246. package/create-proxy/create-proxy-middleware/index.js +0 -47
  247. package/create-proxy/create-proxy-middleware/index.js.map +0 -1
  248. package/create-proxy/index.d.ts +0 -12
  249. package/create-proxy/index.js +0 -25
  250. package/create-proxy/index.js.map +0 -1
  251. package/create-response-sender/index.d.ts +0 -8
  252. package/create-response-sender/index.js +0 -42
  253. package/create-response-sender/index.js.map +0 -1
  254. package/get-dynamic-data/index.d.ts +0 -8
  255. package/get-dynamic-data/index.js +0 -23
  256. package/get-dynamic-data/index.js.map +0 -1
  257. package/graceful-shutdown/index.d.ts +0 -26
  258. package/graceful-shutdown/index.js +0 -87
  259. package/graceful-shutdown/index.js.map +0 -1
  260. package/helpers/add-error-handling/index.d.ts +0 -1
  261. package/helpers/add-error-handling/index.js +0 -42
  262. package/helpers/add-error-handling/index.js.map +0 -1
  263. package/helpers/api/create-enhancer.d.ts +0 -12
  264. package/helpers/api/create-enhancer.js +0 -52
  265. package/helpers/api/create-enhancer.js.map +0 -1
  266. package/helpers/api/create-instance.d.ts +0 -11
  267. package/helpers/api/create-instance.js +0 -39
  268. package/helpers/api/create-instance.js.map +0 -1
  269. package/helpers/api/middlewares/collect-cookie-middleware.d.ts +0 -10
  270. package/helpers/api/middlewares/collect-cookie-middleware.js +0 -39
  271. package/helpers/api/middlewares/collect-cookie-middleware.js.map +0 -1
  272. package/helpers/api/middlewares/count-api-response-time.d.ts +0 -12
  273. package/helpers/api/middlewares/count-api-response-time.js +0 -39
  274. package/helpers/api/middlewares/count-api-response-time.js.map +0 -1
  275. package/helpers/api/middlewares/error-handlers-middlewares.d.ts +0 -5
  276. package/helpers/api/middlewares/error-handlers-middlewares.js +0 -114
  277. package/helpers/api/middlewares/error-handlers-middlewares.js.map +0 -1
  278. package/helpers/api/middlewares/helpers.d.ts +0 -11
  279. package/helpers/api/middlewares/helpers.js +0 -27
  280. package/helpers/api/middlewares/helpers.js.map +0 -1
  281. package/helpers/api/middlewares/pass-headers-middleware.d.ts +0 -3
  282. package/helpers/api/middlewares/pass-headers-middleware.js +0 -27
  283. package/helpers/api/middlewares/pass-headers-middleware.js.map +0 -1
  284. package/helpers/api/middlewares/prepare-request-headers.d.ts +0 -5
  285. package/helpers/api/middlewares/prepare-request-headers.js +0 -20
  286. package/helpers/api/middlewares/prepare-request-headers.js.map +0 -1
  287. package/helpers/api/middlewares/set-http-agents-middleware.d.ts +0 -15
  288. package/helpers/api/middlewares/set-http-agents-middleware.js +0 -34
  289. package/helpers/api/middlewares/set-http-agents-middleware.js.map +0 -1
  290. package/helpers/api/middlewares/stages-trace-middleware.d.ts +0 -17
  291. package/helpers/api/middlewares/stages-trace-middleware.js +0 -57
  292. package/helpers/api/middlewares/stages-trace-middleware.js.map +0 -1
  293. package/helpers/api/middlewares/trace-request-middleware.d.ts +0 -24
  294. package/helpers/api/middlewares/trace-request-middleware.js +0 -69
  295. package/helpers/api/middlewares/trace-request-middleware.js.map +0 -1
  296. package/helpers/api/server-adapter/__fixtures__/fake-keys.d.ts +0 -10
  297. package/helpers/api/server-adapter/__fixtures__/fake-keys.js +0 -61
  298. package/helpers/api/server-adapter/__fixtures__/fake-keys.js.map +0 -1
  299. package/helpers/api/server-adapter/constants.d.ts +0 -5
  300. package/helpers/api/server-adapter/constants.js +0 -16
  301. package/helpers/api/server-adapter/constants.js.map +0 -1
  302. package/helpers/api/server-adapter/helpers.d.ts +0 -26
  303. package/helpers/api/server-adapter/helpers.js +0 -208
  304. package/helpers/api/server-adapter/helpers.js.map +0 -1
  305. package/helpers/api/server-adapter/index.d.ts +0 -10
  306. package/helpers/api/server-adapter/index.js +0 -118
  307. package/helpers/api/server-adapter/index.js.map +0 -1
  308. package/helpers/development/use-dot-env.d.ts +0 -6
  309. package/helpers/development/use-dot-env.js +0 -11
  310. package/helpers/development/use-dot-env.js.map +0 -1
  311. package/helpers/get-params/index.d.ts +0 -4
  312. package/helpers/get-params/index.js +0 -51
  313. package/helpers/get-params/index.js.map +0 -1
  314. package/helpers/http/request-getters.d.ts +0 -5
  315. package/helpers/http/request-getters.js +0 -49
  316. package/helpers/http/request-getters.js.map +0 -1
  317. package/helpers/http/statuses-validator.d.ts +0 -3
  318. package/helpers/http/statuses-validator.js +0 -25
  319. package/helpers/http/statuses-validator.js.map +0 -1
  320. package/helpers/logger/create-pino-instance/index.d.ts +0 -6
  321. package/helpers/logger/create-pino-instance/index.js +0 -39
  322. package/helpers/logger/create-pino-instance/index.js.map +0 -1
  323. package/helpers/logger/format-time/index.d.ts +0 -6
  324. package/helpers/logger/format-time/index.js +0 -9
  325. package/helpers/logger/format-time/index.js.map +0 -1
  326. package/helpers/metrics/index.d.ts +0 -23
  327. package/helpers/metrics/index.js +0 -42
  328. package/helpers/metrics/index.js.map +0 -1
  329. package/helpers/prometheus/index.d.ts +0 -4
  330. package/helpers/prometheus/index.js +0 -13
  331. package/helpers/prometheus/index.js.map +0 -1
  332. package/helpers/prometheus/measure-middleware.d.ts +0 -5
  333. package/helpers/prometheus/measure-middleware.js +0 -69
  334. package/helpers/prometheus/measure-middleware.js.map +0 -1
  335. package/helpers/prometheus/metric-adapter.d.ts +0 -36
  336. package/helpers/prometheus/metric-adapter.js +0 -98
  337. package/helpers/prometheus/metric-adapter.js.map +0 -1
  338. package/helpers/react/error-handlers/index.d.ts +0 -40
  339. package/helpers/react/error-handlers/index.js +0 -52
  340. package/helpers/react/error-handlers/index.js.map +0 -1
  341. package/helpers/redux/constants.d.ts +0 -5
  342. package/helpers/redux/constants.js +0 -14
  343. package/helpers/redux/constants.js.map +0 -1
  344. package/helpers/redux/create-compose-middleware.d.ts +0 -15
  345. package/helpers/redux/create-compose-middleware.js +0 -23
  346. package/helpers/redux/create-compose-middleware.js.map +0 -1
  347. package/helpers/redux/get-dev-compose-creator.d.ts +0 -6
  348. package/helpers/redux/get-dev-compose-creator.js +0 -13
  349. package/helpers/redux/get-dev-compose-creator.js.map +0 -1
  350. package/helpers/redux/prepare-on-ready.d.ts +0 -9
  351. package/helpers/redux/prepare-on-ready.js +0 -16
  352. package/helpers/redux/prepare-on-ready.js.map +0 -1
  353. package/helpers/redux/remote-data.d.ts +0 -40
  354. package/helpers/redux/remote-data.js +0 -91
  355. package/helpers/redux/remote-data.js.map +0 -1
  356. package/helpers/redux/selector/statuses.d.ts +0 -23
  357. package/helpers/redux/selector/statuses.js +0 -34
  358. package/helpers/redux/selector/statuses.js.map +0 -1
  359. package/helpers/redux/wait-on-store-readiness.d.ts +0 -11
  360. package/helpers/redux/wait-on-store-readiness.js +0 -29
  361. package/helpers/redux/wait-on-store-readiness.js.map +0 -1
  362. package/helpers/render/get-react-markup-data.d.ts +0 -14
  363. package/helpers/render/get-react-markup-data.js +0 -20
  364. package/helpers/render/get-react-markup-data.js.map +0 -1
  365. package/helpers/render/index.d.ts +0 -21
  366. package/helpers/render/index.js +0 -72
  367. package/helpers/render/index.js.map +0 -1
  368. package/helpers/render/render-app.d.ts +0 -12
  369. package/helpers/render/render-app.js +0 -12
  370. package/helpers/render/render-app.js.map +0 -1
  371. package/helpers/saga/__fixtures__/do-safe-request.d.ts +0 -43
  372. package/helpers/saga/__fixtures__/do-safe-request.js +0 -50
  373. package/helpers/saga/__fixtures__/do-safe-request.js.map +0 -1
  374. package/helpers/saga/cache-result.d.ts +0 -46
  375. package/helpers/saga/cache-result.js +0 -71
  376. package/helpers/saga/cache-result.js.map +0 -1
  377. package/helpers/saga/create-store.d.ts +0 -20
  378. package/helpers/saga/create-store.js +0 -106
  379. package/helpers/saga/create-store.js.map +0 -1
  380. package/helpers/saga/do-safe-request.d.ts +0 -38
  381. package/helpers/saga/do-safe-request.js +0 -45
  382. package/helpers/saga/do-safe-request.js.map +0 -1
  383. package/helpers/saga/safe-request.d.ts +0 -7
  384. package/helpers/saga/safe-request.js +0 -15
  385. package/helpers/saga/safe-request.js.map +0 -1
  386. package/helpers/saga/take-chain.d.ts +0 -20
  387. package/helpers/saga/take-chain.js +0 -56
  388. package/helpers/saga/take-chain.js.map +0 -1
  389. package/helpers/tracer/create-child-tracing-middleware.d.ts +0 -7
  390. package/helpers/tracer/create-child-tracing-middleware.js +0 -40
  391. package/helpers/tracer/create-child-tracing-middleware.js.map +0 -1
  392. package/helpers/tracer/index.d.ts +0 -24
  393. package/helpers/tracer/index.js +0 -144
  394. package/helpers/tracer/index.js.map +0 -1
  395. package/helpers/utils/check-feature-by-segment.d.ts +0 -2
  396. package/helpers/utils/check-feature-by-segment.js +0 -31
  397. package/helpers/utils/check-feature-by-segment.js.map +0 -1
  398. package/helpers/utils/format-object-keys.d.ts +0 -6
  399. package/helpers/utils/format-object-keys.js +0 -27
  400. package/helpers/utils/format-object-keys.js.map +0 -1
  401. package/helpers/utils/get-ms-from-hrt.d.ts +0 -2
  402. package/helpers/utils/get-ms-from-hrt.js +0 -22
  403. package/helpers/utils/get-ms-from-hrt.js.map +0 -1
  404. package/helpers/utils/is-match-pattern-list.d.ts +0 -8
  405. package/helpers/utils/is-match-pattern-list.js +0 -16
  406. package/helpers/utils/is-match-pattern-list.js.map +0 -1
  407. package/helpers/utils/is-not-empty-array.d.ts +0 -2
  408. package/helpers/utils/is-not-empty-array.js +0 -12
  409. package/helpers/utils/is-not-empty-array.js.map +0 -1
  410. package/helpers/utils/is-not-empty-string.d.ts +0 -2
  411. package/helpers/utils/is-not-empty-string.js +0 -15
  412. package/helpers/utils/is-not-empty-string.js.map +0 -1
  413. package/helpers/utils/is-numeric.d.ts +0 -7
  414. package/helpers/utils/is-numeric.js +0 -16
  415. package/helpers/utils/is-numeric.js.map +0 -1
  416. package/helpers/utils/wrap-in-measure-event.d.ts +0 -9
  417. package/helpers/utils/wrap-in-measure-event.js +0 -50
  418. package/helpers/utils/wrap-in-measure-event.js.map +0 -1
  419. package/logger/create-logger-middleware/index.d.ts +0 -14
  420. package/logger/create-logger-middleware/index.js +0 -41
  421. package/logger/create-logger-middleware/index.js.map +0 -1
  422. package/logger/create-sentry-instance/index.d.ts +0 -29
  423. package/logger/create-sentry-instance/index.js +0 -63
  424. package/logger/create-sentry-instance/index.js.map +0 -1
  425. package/logger/create-sentry-middleware/index.d.ts +0 -14
  426. package/logger/create-sentry-middleware/index.js +0 -19
  427. package/logger/create-sentry-middleware/index.js.map +0 -1
  428. package/logger/handler-creators/index.d.ts +0 -5
  429. package/logger/handler-creators/index.js +0 -41
  430. package/logger/handler-creators/index.js.map +0 -1
  431. package/logger/initialize-sentry-creator/index.d.ts +0 -17
  432. package/logger/initialize-sentry-creator/index.js +0 -35
  433. package/logger/initialize-sentry-creator/index.js.map +0 -1
  434. package/logger/sentry-logger/index.d.ts +0 -9
  435. package/logger/sentry-logger/index.js +0 -36
  436. package/logger/sentry-logger/index.js.map +0 -1
  437. package/module-federation/__example__/webpack-config.example.d.ts +0 -366
  438. package/module-federation/__example__/webpack-config.example.js +0 -58
  439. package/module-federation/__example__/webpack-config.example.js.map +0 -1
  440. package/module-federation/enhanced-module-federation-plugin.d.ts +0 -69
  441. package/module-federation/enhanced-module-federation-plugin.js +0 -97
  442. package/module-federation/enhanced-module-federation-plugin.js.map +0 -1
  443. package/module-federation/utils/index.d.ts +0 -16
  444. package/module-federation/utils/index.js +0 -33
  445. package/module-federation/utils/index.js.map +0 -1
  446. package/observe-middleware/index.d.ts +0 -9
  447. package/observe-middleware/index.js +0 -67
  448. package/observe-middleware/index.js.map +0 -1
  449. package/set-header-middleware/create.d.ts +0 -10
  450. package/set-header-middleware/create.js +0 -16
  451. package/set-header-middleware/create.js.map +0 -1
  452. package/src/cache/helpers.js +0 -32
  453. package/src/cache/local-storage.ts +0 -92
  454. package/src/cache/redis.js +0 -79
  455. package/src/cache/wrap-in-trace.js +0 -57
  456. package/src/config/create.js +0 -33
  457. package/src/config/helpers.js +0 -71
  458. package/src/config/validate.js +0 -114
  459. package/src/container/create-inject.js +0 -32
  460. package/src/container/get-dependencies.js +0 -46
  461. package/src/container/index.js +0 -188
  462. package/src/container/is-container.js +0 -14
  463. package/src/container/service-not-found-error.js +0 -14
  464. package/src/create-proxy/create-proxy-middleware/index.js +0 -47
  465. package/src/create-proxy/index.js +0 -27
  466. package/src/create-response-sender/index.js +0 -48
  467. package/src/get-dynamic-data/index.js +0 -26
  468. package/src/graceful-shutdown/index.js +0 -97
  469. package/src/helpers/add-error-handling/index.js +0 -24
  470. package/src/helpers/api/create-enhancer.js +0 -52
  471. package/src/helpers/api/create-instance.js +0 -42
  472. package/src/helpers/api/middlewares/collect-cookie-middleware.js +0 -27
  473. package/src/helpers/api/middlewares/count-api-response-time.js +0 -31
  474. package/src/helpers/api/middlewares/error-handlers-middlewares.js +0 -124
  475. package/src/helpers/api/middlewares/helpers.js +0 -26
  476. package/src/helpers/api/middlewares/pass-headers-middleware.js +0 -19
  477. package/src/helpers/api/middlewares/prepare-request-headers.js +0 -18
  478. package/src/helpers/api/middlewares/set-http-agents-middleware.js +0 -22
  479. package/src/helpers/api/middlewares/stages-trace-middleware.js +0 -46
  480. package/src/helpers/api/server-adapter/__fixtures__/fake-keys.js +0 -58
  481. package/src/helpers/api/server-adapter/constants.js +0 -12
  482. package/src/helpers/api/server-adapter/helpers.js +0 -244
  483. package/src/helpers/api/server-adapter/index.js +0 -155
  484. package/src/helpers/development/use-dot-env.js +0 -9
  485. package/src/helpers/get-params/index.js +0 -59
  486. package/src/helpers/http/request-getters.js +0 -42
  487. package/src/helpers/http/statuses-validator.js +0 -20
  488. package/src/helpers/logger/create-pino-instance/index.js +0 -41
  489. package/src/helpers/logger/format-time/index.js +0 -6
  490. package/src/helpers/metrics/index.js +0 -40
  491. package/src/helpers/prometheus/index.js +0 -9
  492. package/src/helpers/prometheus/measure-middleware.js +0 -73
  493. package/src/helpers/prometheus/metric-adapter.js +0 -99
  494. package/src/helpers/react/error-handlers/index.tsx +0 -68
  495. package/src/helpers/redux/constants.js +0 -10
  496. package/src/helpers/redux/create-compose-middleware.js +0 -24
  497. package/src/helpers/redux/get-dev-compose-creator.js +0 -9
  498. package/src/helpers/redux/prepare-on-ready.js +0 -16
  499. package/src/helpers/redux/remote-data.js +0 -124
  500. package/src/helpers/redux/selector/statuses.js +0 -30
  501. package/src/helpers/redux/wait-on-store-readiness.js +0 -40
  502. package/src/helpers/render/get-react-markup-data.js +0 -18
  503. package/src/helpers/render/index.js +0 -69
  504. package/src/helpers/render/render-app.js +0 -15
  505. package/src/helpers/saga/__fixtures__/do-safe-request.js +0 -49
  506. package/src/helpers/saga/cache-result.js +0 -77
  507. package/src/helpers/saga/create-store.js +0 -102
  508. package/src/helpers/saga/do-safe-request.js +0 -47
  509. package/src/helpers/saga/safe-request.js +0 -11
  510. package/src/helpers/saga/take-chain.js +0 -53
  511. package/src/helpers/tracer/create-child-tracing-middleware.js +0 -42
  512. package/src/helpers/tracer/index.js +0 -171
  513. package/src/helpers/utils/check-feature-by-segment.js +0 -32
  514. package/src/helpers/utils/format-object-keys.js +0 -23
  515. package/src/helpers/utils/get-ms-from-hrt.js +0 -16
  516. package/src/helpers/utils/is-match-pattern-list.js +0 -13
  517. package/src/helpers/utils/is-not-empty-array.js +0 -8
  518. package/src/helpers/utils/is-not-empty-string.js +0 -11
  519. package/src/helpers/utils/is-numeric.ts +0 -12
  520. package/src/helpers/utils/wrap-in-measure-event.js +0 -35
  521. package/src/logger/create-logger-middleware/index.js +0 -46
  522. package/src/logger/create-sentry-instance/index.js +0 -74
  523. package/src/logger/create-sentry-middleware/index.js +0 -16
  524. package/src/logger/handler-creators/index.js +0 -38
  525. package/src/logger/initialize-sentry-creator/index.js +0 -43
  526. package/src/logger/sentry-logger/index.js +0 -33
  527. package/src/module-federation/__example__/webpack-config.example.js +0 -64
  528. package/src/module-federation/enhanced-module-federation-plugin.js +0 -119
  529. package/src/module-federation/utils/index.js +0 -39
  530. package/src/observe-middleware/index.js +0 -70
  531. package/src/set-header-middleware/create.js +0 -17
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRemoteDataReducers = exports.STATUS = void 0;
4
+ exports.STATUS = {
5
+ initial: 'initial',
6
+ fetching: 'fetching',
7
+ success: 'success',
8
+ failure: 'failure',
9
+ };
10
+ /**
11
+ * Возвращает набор обработчиков для работы с удаленными данными.
12
+ * @return Набор.
13
+ */
14
+ const createRemoteDataReducers = () => ({
15
+ request: (state) => {
16
+ state.status = exports.STATUS.fetching;
17
+ },
18
+ success: (state, action) => {
19
+ state.data = action.payload;
20
+ state.status = exports.STATUS.success;
21
+ },
22
+ failure: (state, action) => {
23
+ state.error = action.payload;
24
+ state.status = exports.STATUS.failure;
25
+ },
26
+ });
27
+ exports.createRemoteDataReducers = createRemoteDataReducers;
28
+ //# sourceMappingURL=remote-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-data.js","sourceRoot":"","sources":["../../../src/utils/redux/remote-data.ts"],"names":[],"mappings":";;;AAUa,QAAA,MAAM,GAA2B;IAC5C,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF;;;GAGG;AACI,MAAM,wBAAwB,GAAG,GAAwC,EAAE,CAAC,CAAC;IAClF,OAAO,EAAE,CAAC,KAAe,EAAE,EAAE;QAC3B,KAAK,CAAC,MAAM,GAAG,cAAM,CAAC,QAAQ,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,CAAC,KAAe,EAAE,MAAgC,EAAE,EAAE;QAC7D,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;QAC5B,KAAK,CAAC,MAAM,GAAG,cAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,CAAC,KAAe,EAAE,MAAiC,EAAE,EAAE;QAC9D,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;QAC7B,KAAK,CAAC,MAAM,GAAG,cAAM,CAAC,OAAO,CAAC;IAChC,CAAC;CACF,CAAC,CAAC;AAZU,QAAA,wBAAwB,4BAYlC"}
@@ -0,0 +1,24 @@
1
+ import { Action } from '@reduxjs/toolkit';
2
+ /**
3
+ * Накапливает экшены и генерирует эффект по таймауту.
4
+ * @param timeout Время задержки в мс.
5
+ * @param types Массив с типами ожидаемых экшенов.
6
+ * @param task Генератор.
7
+ * @param deps Аргументы для генератора.
8
+ * @return Эффект.
9
+ */
10
+ export declare function takeChain<Deps extends any[], Task extends (...someArgs: [...Deps, Action[]]) => any>(timeout: number, types: string[], task: Task, ...deps: Deps): import("redux-saga/effects").ForkEffect<unknown>;
11
+ /**
12
+ * Генерирует эффект по таймауту.
13
+ * @param timeout Время задержки в мс.
14
+ * @param types Массив с типами ожидаемых экшенов.
15
+ * @param task Генератор.
16
+ * @param deps Аргументы для генератора.
17
+ */
18
+ export declare function generateTakeChain<Deps extends any[], Task extends (...someArgs: [...Deps, Action[]]) => any>(timeout: number, types: string[], task: Task, deps: Deps): Generator<any, void, any>;
19
+ /**
20
+ * Вызывает экшен с заданной задержкой.
21
+ * @param timeout Время задержки в мс.
22
+ * @param action Тип экшена.
23
+ */
24
+ export declare function putDelayed(timeout: number, action: Action): Generator<import("redux-saga/effects").CallEffect<true> | import("redux-saga/effects").PutEffect<Action<any>>, void, unknown>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.putDelayed = exports.generateTakeChain = exports.takeChain = void 0;
4
+ const effects_1 = require("redux-saga/effects");
5
+ /**
6
+ * Накапливает экшены и генерирует эффект по таймауту.
7
+ * @param timeout Время задержки в мс.
8
+ * @param types Массив с типами ожидаемых экшенов.
9
+ * @param task Генератор.
10
+ * @param deps Аргументы для генератора.
11
+ * @return Эффект.
12
+ */
13
+ function takeChain(timeout, types, task, ...deps) {
14
+ return (0, effects_1.fork)(generateTakeChain, timeout, types, task, deps);
15
+ }
16
+ exports.takeChain = takeChain;
17
+ /**
18
+ * Генерирует эффект по таймауту.
19
+ * @param timeout Время задержки в мс.
20
+ * @param types Массив с типами ожидаемых экшенов.
21
+ * @param task Генератор.
22
+ * @param deps Аргументы для генератора.
23
+ */
24
+ function* generateTakeChain(timeout, types, task, deps) {
25
+ while (true) {
26
+ const breakAction = { type: `BREAK_${Date.now()}` };
27
+ const firstAction = yield (0, effects_1.take)(types);
28
+ const collectedActions = [firstAction];
29
+ yield (0, effects_1.fork)(putDelayed, timeout, breakAction);
30
+ while (true) {
31
+ const { action, canceled } = yield (0, effects_1.race)({
32
+ action: (0, effects_1.take)(types),
33
+ canceled: (0, effects_1.take)(breakAction.type),
34
+ });
35
+ action && collectedActions.push(action);
36
+ if (canceled ||
37
+ types.every(type => collectedActions.some(someAction => someAction.type === type))) {
38
+ // @todo убрать "as any"
39
+ yield (0, effects_1.fork)(task, ...deps, collectedActions);
40
+ break;
41
+ }
42
+ }
43
+ }
44
+ }
45
+ exports.generateTakeChain = generateTakeChain;
46
+ /**
47
+ * Вызывает экшен с заданной задержкой.
48
+ * @param timeout Время задержки в мс.
49
+ * @param action Тип экшена.
50
+ */
51
+ function* putDelayed(timeout, action) {
52
+ yield (0, effects_1.delay)(timeout);
53
+ yield (0, effects_1.put)(action);
54
+ }
55
+ exports.putDelayed = putDelayed;
56
+ //# sourceMappingURL=take-chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"take-chain.js","sourceRoot":"","sources":["../../../src/utils/redux-saga/take-chain.ts"],"names":[],"mappings":";;;AACA,gDAAkE;AAElE;;;;;;;GAOG;AACH,SAAgB,SAAS,CAGvB,OAAe,EAAE,KAAe,EAAE,IAAU,EAAE,GAAG,IAAU;IAC3D,OAAO,IAAA,cAAI,EAAC,iBAAwB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpE,CAAC;AALD,8BAKC;AAED;;;;;;GAMG;AACH,QAAe,CAAC,CAAC,iBAAiB,CAGhC,OAAe,EAAE,KAAe,EAAE,IAAU,EAAE,IAAU;IACxD,OAAO,IAAI,EAAE;QACX,MAAM,WAAW,GAAW,EAAE,IAAI,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAW,MAAM,IAAA,cAAI,EAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,IAAA,cAAI,EAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAE7C,OAAO,IAAI,EAAE;YACX,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,cAAI,EAAC;gBACtC,MAAM,EAAE,IAAA,cAAI,EAAC,KAAK,CAAC;gBACnB,QAAQ,EAAE,IAAA,cAAI,EAAC,WAAW,CAAC,IAAI,CAAC;aACjC,CAAC,CAAC;YAEH,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAExC,IACE,QAAQ;gBACR,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,EAClF;gBACA,wBAAwB;gBACxB,MAAM,IAAA,cAAI,EAAC,IAAW,EAAE,GAAG,IAAI,EAAE,gBAAgB,CAAC,CAAC;gBACnD,MAAM;aACP;SACF;KACF;AACH,CAAC;AA7BD,8CA6BC;AAED;;;;GAIG;AACH,QAAe,CAAC,CAAC,UAAU,CAAC,OAAe,EAAE,MAAc;IACzD,MAAM,IAAA,eAAK,EAAC,OAAO,CAAC,CAAC;IACrB,MAAM,IAAA,aAAG,EAAC,MAAM,CAAC,CAAC;AACpB,CAAC;AAHD,gCAGC"}
@@ -0,0 +1,21 @@
1
+ import type { ModuleFederationPluginOptions, ReadyOptions } from './types';
2
+ import { Compiler } from 'webpack';
3
+ export declare const LIBRARY_ERROR_TEXT: string;
4
+ export declare const REMOTE_ERROR_TEXT: string;
5
+ /**
6
+ * Создает плагин ModuleFederation с опциями, необходимыми для оркестрации удаленных модулей в браузере.
7
+ */
8
+ export declare class ModuleFederationPlugin {
9
+ /**
10
+ * Проверенные, готовые опции.
11
+ */
12
+ readonly readyOptions: ReadyOptions;
13
+ /**
14
+ * @param options Опции.
15
+ */
16
+ constructor(options: ModuleFederationPluginOptions);
17
+ /**
18
+ * @param compiler Компилятор.
19
+ */
20
+ apply(compiler: Compiler): void;
21
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModuleFederationPlugin = exports.REMOTE_ERROR_TEXT = exports.LIBRARY_ERROR_TEXT = void 0;
4
+ const webpack_1 = require("webpack");
5
+ const utils_1 = require("./utils");
6
+ exports.LIBRARY_ERROR_TEXT = [
7
+ 'Property "library" set internally as "global" and not overridden.',
8
+ 'For override global variable name use "containersGlobalKey" property.',
9
+ 'For override "library" type use ModuleFederationPlugin.',
10
+ ].join(' ');
11
+ exports.REMOTE_ERROR_TEXT = [
12
+ 'The value of the remote element must be a string,',
13
+ 'or an object with field "name" for dynamic resolution of "remoteEntry".',
14
+ 'Set "remoteEntryPath" field to object for a static path to "remoteEntry".',
15
+ ].join(' ');
16
+ /**
17
+ * Создает плагин ModuleFederation с опциями, необходимыми для оркестрации удаленных модулей в браузере.
18
+ */
19
+ class ModuleFederationPlugin {
20
+ /**
21
+ * @param options Опции.
22
+ */
23
+ constructor(options) {
24
+ const { name, remotes, remoteEntriesGlobalKey = '__RemoteEntriesList__', containersGlobalKey = '__FederationContainers__', } = options;
25
+ if ('library' in options) {
26
+ throw new webpack_1.WebpackError(exports.LIBRARY_ERROR_TEXT);
27
+ }
28
+ if (remotes) {
29
+ for (const value of Object.values(remotes)) {
30
+ if (typeof value !== 'string' && !value.name) {
31
+ throw new webpack_1.WebpackError(exports.REMOTE_ERROR_TEXT);
32
+ }
33
+ }
34
+ }
35
+ this.readyOptions = {
36
+ ...options,
37
+ remoteEntriesGlobalKey,
38
+ containersGlobalKey,
39
+ library: {
40
+ type: 'global',
41
+ name: [containersGlobalKey, name],
42
+ },
43
+ };
44
+ }
45
+ /**
46
+ * @param compiler Компилятор.
47
+ */
48
+ apply(compiler) {
49
+ const { remotes, remoteEntriesGlobalKey, containersGlobalKey, ...restOptions } = this.readyOptions;
50
+ const configuredRemotes = {};
51
+ if (remotes) {
52
+ for (const [key, value] of Object.entries(remotes)) {
53
+ const serviceName = typeof value === 'string' ? value : value.name;
54
+ const remoteEntryPath = typeof value === 'string' ? undefined : value.remoteEntryPath;
55
+ configuredRemotes[key] = {
56
+ external: (0, utils_1.createExternalConfig)({
57
+ serviceName,
58
+ remoteEntryPath,
59
+ remoteEntriesGlobalKey,
60
+ containersGlobalKey,
61
+ }),
62
+ };
63
+ }
64
+ }
65
+ compiler.hooks.environment.tap('[isomorph]ModuleFederationPlugin', () => {
66
+ new webpack_1.container.ModuleFederationPlugin({
67
+ ...(remotes && { remotes: configuredRemotes }),
68
+ ...restOptions,
69
+ }).apply(compiler);
70
+ });
71
+ }
72
+ }
73
+ exports.ModuleFederationPlugin = ModuleFederationPlugin;
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/webpack/module-federation/index.ts"],"names":[],"mappings":";;;AACA,qCAA4D;AAC5D,mCAA+C;AAElC,QAAA,kBAAkB,GAAG;IAChC,mEAAmE;IACnE,uEAAuE;IACvE,yDAAyD;CAC1D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEC,QAAA,iBAAiB,GAAG;IAC/B,mDAAmD;IACnD,yEAAyE;IACzE,2EAA2E;CAC5E,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ;;GAEG;AACH,MAAa,sBAAsB;IAMjC;;OAEG;IACH,YAAY,OAAsC;QAChD,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,sBAAsB,GAAG,uBAAuB,EAChD,mBAAmB,GAAG,0BAA0B,GACjD,GAAG,OAAO,CAAC;QAEZ,IAAI,SAAS,IAAI,OAAO,EAAE;YACxB,MAAM,IAAI,sBAAY,CAAC,0BAAkB,CAAC,CAAC;SAC5C;QAED,IAAI,OAAO,EAAE;YACX,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;oBAC5C,MAAM,IAAI,sBAAY,CAAC,yBAAiB,CAAC,CAAC;iBAC3C;aACF;SACF;QAED,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,OAAO;YACV,sBAAsB;YACtB,mBAAmB;YACnB,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC;aAClC;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAkB;QACtB,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,GAAG,WAAW,EAAE,GAC5E,IAAI,CAAC,YAAY,CAAC;QAEpB,MAAM,iBAAiB,GAAwB,EAAE,CAAC;QAElD,IAAI,OAAO,EAAE;YACX,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAClD,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnE,MAAM,eAAe,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;gBAEtF,iBAAiB,CAAC,GAAG,CAAC,GAAG;oBACvB,QAAQ,EAAE,IAAA,4BAAoB,EAAC;wBAC7B,WAAW;wBACX,eAAe;wBACf,sBAAsB;wBACtB,mBAAmB;qBACpB,CAAC;iBACH,CAAC;aACH;SACF;QAED,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,kCAAkC,EAAE,GAAG,EAAE;YACtE,IAAI,mBAAS,CAAC,sBAAsB,CAAC;gBACnC,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;gBAC9C,GAAG,WAAW;aACf,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxED,wDAwEC"}
@@ -0,0 +1,26 @@
1
+ import type { container } from 'webpack';
2
+ export interface RemoteProperty {
3
+ name: string;
4
+ remoteEntryPath?: string;
5
+ version?: string;
6
+ }
7
+ export declare type OriginalModuleFederationPluginOptions = ConstructorParameters<typeof container.ModuleFederationPlugin>[0];
8
+ export interface ModuleFederationPluginOptions {
9
+ /** Имя сервиса. */
10
+ name: string;
11
+ /** Имя удаленной точки входа. */
12
+ filename?: string;
13
+ /** Удаленные сервисы. */
14
+ remotes?: Record<string, string | RemoteProperty>;
15
+ /** Предоставляемые сервисы. */
16
+ exposes?: OriginalModuleFederationPluginOptions['exposes'];
17
+ /** Общие зависимости. */
18
+ shared?: OriginalModuleFederationPluginOptions['shared'];
19
+ /** Ключ свойства в глобальном объекте,в котором хранится карта точек входа в удаленные сервисы. */
20
+ remoteEntriesGlobalKey?: string;
21
+ /** Ключ свойства в глобальном объекте, в который добавляются контейнеры удаленных сервисов. */
22
+ containersGlobalKey?: string;
23
+ }
24
+ export declare type ReadyOptions = Omit<ModuleFederationPluginOptions, 'remoteEntriesGlobalKey' | 'containersGlobalKey'> & Required<Pick<ModuleFederationPluginOptions, 'remoteEntriesGlobalKey' | 'containersGlobalKey'>> & {
25
+ library: Required<OriginalModuleFederationPluginOptions>['library'];
26
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/utils/webpack/module-federation/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Возвращает скрипт инициализации удаленного модуля.
3
+ * @param params Параметры.
4
+ * @param params.serviceName Имя сервиса, содержащего удаленные модули.
5
+ * @param params.containersGlobalKey Глобальная переменная, в которую добавляются удаленные контейнеры.
6
+ * @param params.remoteEntriesGlobalKey Глобальная переменная, в которой хранятся пути к удаленным точкам входа.
7
+ * @param params.remoteEntryPath Путь к remoteEntry, если его не надо получать в runtime.
8
+ * @return Скрипт инициализации.
9
+ */
10
+ export declare function createExternalConfig({ serviceName, containersGlobalKey, remoteEntriesGlobalKey, remoteEntryPath, }: {
11
+ serviceName: string;
12
+ remoteEntriesGlobalKey: string;
13
+ containersGlobalKey: string;
14
+ remoteEntryPath?: string;
15
+ }): string;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createExternalConfig = void 0;
4
+ /**
5
+ * Возвращает скрипт инициализации удаленного модуля.
6
+ * @param params Параметры.
7
+ * @param params.serviceName Имя сервиса, содержащего удаленные модули.
8
+ * @param params.containersGlobalKey Глобальная переменная, в которую добавляются удаленные контейнеры.
9
+ * @param params.remoteEntriesGlobalKey Глобальная переменная, в которой хранятся пути к удаленным точкам входа.
10
+ * @param params.remoteEntryPath Путь к remoteEntry, если его не надо получать в runtime.
11
+ * @return Скрипт инициализации.
12
+ */
13
+ function createExternalConfig({ serviceName, containersGlobalKey, remoteEntriesGlobalKey, remoteEntryPath, }) {
14
+ return `promise new Promise((resolve, reject) => {
15
+ if (window['${remoteEntriesGlobalKey}']) {
16
+ const scriptElement = document.createElement('script');
17
+ scriptElement.onload = () => {
18
+ scriptElement.remove();
19
+ resolve(window['${containersGlobalKey}']['${serviceName}']);
20
+ };
21
+ scriptElement.onerror = () => {
22
+ scriptElement.remove();
23
+ reject(new Error('Failed loading remoteEntry for "${serviceName}".'));
24
+ };
25
+ scriptElement.src = ${remoteEntryPath
26
+ ? `'${remoteEntryPath}'`
27
+ : `window['${remoteEntriesGlobalKey}']['${serviceName}']`};
28
+ scriptElement.async = true;
29
+ document.head.append(scriptElement);
30
+ } else {
31
+ reject(new ReferenceError('Object "${remoteEntriesGlobalKey}" unavailable.'));
32
+ }
33
+ })`;
34
+ }
35
+ exports.createExternalConfig = createExternalConfig;
36
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/webpack/module-federation/utils.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAAC,EACnC,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,GAMhB;IACC,OAAO;gBACO,sBAAsB;;;;wBAId,mBAAmB,OAAO,WAAW;;;;0DAIH,WAAW;;0BAG/D,eAAe;QACb,CAAC,CAAC,IAAI,eAAe,GAAG;QACxB,CAAC,CAAC,WAAW,sBAAsB,OAAO,WAAW,IACzD;;;;yCAIqC,sBAAsB;;GAE5D,CAAC;AACJ,CAAC;AAjCD,oDAiCC"}
package/package.json CHANGED
@@ -1,83 +1,69 @@
1
1
  {
2
2
  "name": "@sima-land/isomorph",
3
- "version": "10.1.0",
4
- "description": "Set of utils that are not directly related to UI",
5
- "repository": "ssh://git@github.com:sima-land/isomorph.git",
3
+ "version": "11.0.0-alpha.0",
4
+ "description": "Tiny framework for fast start frontend microservices",
6
5
  "author": "www.sima-land.ru team",
7
6
  "license": "Apache-2.0",
8
- "private": false,
9
- "engines": {
10
- "node": ">=14.17.0"
7
+ "files": [
8
+ "src",
9
+ "dist",
10
+ "readme.md"
11
+ ],
12
+ "exports": {
13
+ "./": "./dist/"
11
14
  },
12
15
  "scripts": {
13
16
  "prepare": "",
14
- "build:before": "rimraf build",
15
- "build:main": "tsc --project tsconfig.build.json",
16
- "build:after": "node ./dist.js",
17
- "build": "npm run build:before && npm run build:main && npm run build:after",
18
17
  "type-check": "tsc -p . --noEmit",
18
+ "build:before": "rm -rf dist",
19
+ "build:main": "tsc --project tsconfig.build.json",
20
+ "build": "npm run build:before && npm run build:main",
19
21
  "lint": "eslint --cache ./src --ext .js,.jsx,.ts,.tsx",
20
22
  "test": "jest",
21
- "coverage": "jest --clearCache && jest --coverage"
22
- },
23
- "dependencies": {
24
- "axios": "^0.21.1",
25
- "express-http-proxy": "^1.5.1",
26
- "ioredis": "^4.10.0",
27
- "jaeger-client": "^3.15.0",
28
- "middleware-axios": "^2.1.1",
29
- "opentracing": "^0.14.3",
30
- "pino": "^5.13.1",
31
- "pino-pretty": "^3.2.0",
32
- "prom-client": "^11.5.2"
23
+ "test:coverage": "jest --clearCache && jest --coverage"
33
24
  },
34
25
  "devDependencies": {
35
- "@babel/core": "^7.14.2",
36
- "@babel/preset-env": "^7.14.2",
37
- "@babel/preset-react": "^7.13.13",
38
- "@babel/preset-typescript": "^7.16.5",
39
- "@sentry/browser": "^5.15.5",
40
- "@sentry/node": "5.10.2",
41
- "@sima-land/linters": "^1.0.12",
26
+ "@sima-land/linters": "^2.1.2",
27
+ "@swc/jest": "^0.2.20",
42
28
  "@testing-library/react": "^12.1.3",
43
29
  "@types/express": "^4.17.13",
44
- "@types/jaeger-client": "^3.18.2",
45
- "@types/jest": "^27.0.3",
46
- "@types/lodash": "^4.14.171",
47
- "@types/node": "^16.4.5",
48
- "@types/react": "^16.14.0",
49
- "@types/react-dom": "^17.0.5",
50
- "@types/react-redux": "^7.1.16",
30
+ "@types/jest": "^27.4.1",
31
+ "@types/lodash": "^4.14.182",
32
+ "@types/react": "^17.0.40",
33
+ "@types/react-dom": "^17.0.13",
51
34
  "@types/webpack": "^5.28.0",
52
- "@typescript-eslint/eslint-plugin": "^4.23.0",
53
- "@typescript-eslint/parser": "^4.23.0",
54
- "babel-jest": "^27.4.5",
55
- "copyfiles": "^2.4.1",
56
- "dotenv": "^8.2.0",
57
- "husky": "^7.0.1",
58
- "identity-obj-proxy": "3.0.x",
59
- "jest": "^27.4.5",
60
- "lint-staged": "^11.1.1",
61
- "lodash": "^4.17.21",
62
- "react": "^17.0.2",
63
- "react-dom": "^17.0.2",
64
- "react-redux": "^7.1.3",
65
- "redux": "^4.0.5",
66
- "redux-saga": "^1.1.3",
67
- "reduxsauce": "^1.1.2",
68
- "reselect": "^4.0.0",
69
- "rimraf": "^3.0.2",
70
- "sentry-testkit": "^3.2.1",
71
- "typescript": "^4.2.4"
35
+ "husky": "^7.0.4",
36
+ "jest": "^27.5.1",
37
+ "typescript": "^4.6.2"
38
+ },
39
+ "dependencies": {
40
+ "@humanwhocodes/env": "^2.2.0",
41
+ "@opentelemetry/api": "^1.0.4",
42
+ "@opentelemetry/exporter-jaeger": "^1.0.1",
43
+ "@opentelemetry/instrumentation": "^0.27.0",
44
+ "@opentelemetry/instrumentation-express": "^0.28.0",
45
+ "@opentelemetry/instrumentation-http": "^0.27.0",
46
+ "@opentelemetry/resources": "^1.0.1",
47
+ "@opentelemetry/sdk-trace-node": "^1.0.1",
48
+ "@opentelemetry/semantic-conventions": "^1.0.1",
49
+ "@opentelemetry/tracing": "^0.24.0",
50
+ "@sentry/browser": "^6.19.3",
51
+ "@sentry/node": "^6.19.3",
52
+ "dotenv": "^16.0.0",
53
+ "express": "^4.17.3",
54
+ "middleware-axios": "^2.1.2",
55
+ "pino": "^7.9.1",
56
+ "pino-pretty": "^7.5.4",
57
+ "prom-client": "^14.0.1",
58
+ "webpack": "^5.72.0"
72
59
  },
73
60
  "peerDependencies": {
61
+ "@reduxjs/toolkit": "^1.8.0",
62
+ "axios": "^0.24.0",
74
63
  "lodash": "^4.17.21",
75
- "react": "^16.12.0 || ^17.0.2",
76
- "react-dom": "^16.12.0 || ^17.0.2",
77
- "react-redux": "^7.1.3",
78
- "redux": "^4.0.5",
79
- "redux-saga": "^1.1.3",
80
- "reduxsauce": "^1.1.2",
81
- "reselect": "^4.0.0"
64
+ "react": "^17.0.2",
65
+ "react-dom": "^17.0.2",
66
+ "react-redux": "^7.2.6",
67
+ "redux-saga": "^1.1.3"
82
68
  }
83
69
  }
package/readme.md ADDED
@@ -0,0 +1,23 @@
1
+ # Isomorph
2
+
3
+ Минималистичный фреймворк для быстрого старта frontend-микросервисов.
4
+
5
+ ## Архитектура
6
+
7
+ ### Исходные данные
8
+
9
+ - Не используем `reflect-metadata`, так как эта надстройка много весит и медленно работает
10
+ - Не используем декораторы, так как они пока не попали в стандарт
11
+
12
+ ### Термины
13
+
14
+ **Токен** - уникальное значение, за которым можно закрепить произвольный интерфейс.
15
+ Наличие токенов обусловлено тем что в TS/JS нет рефлексий.
16
+
17
+ **Провайдер** - функция, которая занимается предоставлением реализации зависимостей, в том числе из контейнера.
18
+ Обычно провайдер просто предоставляет зависимости для реализации но может также выбрать реализацию.
19
+
20
+ ### Ограничения
21
+
22
+ - Интерфейс и реализации должны находиться в разных файлах/модулях
23
+ - Реализации не должны ничего знать про контейнер/токены
@@ -0,0 +1,7 @@
1
+ export interface Cache {
2
+ get: (key: string) => void;
3
+ set: (key: string, value: any) => void;
4
+ delete: (key: string) => void;
5
+ clear: () => void;
6
+ has: (key: string) => void;
7
+ }
@@ -0,0 +1,10 @@
1
+ import type { ConfigSource } from './types';
2
+ import { Env } from '@humanwhocodes/env';
3
+
4
+ /**
5
+ * Возвращает "источник" для конфигурации.
6
+ * @return Источник.
7
+ */
8
+ export function createConfigSource(): ConfigSource {
9
+ return new Env(process.env);
10
+ }
@@ -0,0 +1,18 @@
1
+ import type { ConfigSource, BaseConfig } from './types';
2
+
3
+ /**
4
+ * Возвращает базовую конфигурацию.
5
+ * @param source Источник.
6
+ * @return Базовая конфигурация.
7
+ */
8
+ export function createBaseConfig(source: ConfigSource): BaseConfig {
9
+ const env = source.require('NODE_ENV');
10
+ const appName = source.require('APP_NAME');
11
+ const appVersion = source.require('APP_VERSION');
12
+
13
+ return {
14
+ env,
15
+ appName,
16
+ appVersion,
17
+ };
18
+ }
@@ -0,0 +1,18 @@
1
+ import type { ConfigSource } from './types';
2
+ import { Env } from '@humanwhocodes/env';
3
+ import { config } from 'dotenv';
4
+ import { defineEnvironment } from './utils';
5
+
6
+ /**
7
+ * Возвращает "источник" для конфигурации.
8
+ * @return Источник.
9
+ */
10
+ export function createConfigSource(): ConfigSource {
11
+ // определяем среду
12
+ const envName = defineEnvironment();
13
+
14
+ // подключаем соответствующий среде файл со значениями по умолчанию
15
+ config({ path: `./.env.${envName}` });
16
+
17
+ return new Env(process.env);
18
+ }
@@ -0,0 +1,9 @@
1
+ import type { Env } from '@humanwhocodes/env';
2
+
3
+ export type ConfigSource = Env;
4
+
5
+ export interface BaseConfig {
6
+ env: string;
7
+ appName: string;
8
+ appVersion: string;
9
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Возвращает значение process.env.NODE_ENV или "unknown".
3
+ * @return Значение.
4
+ */
5
+ export function defineEnvironment(): string {
6
+ return process.env.NODE_ENV || 'unknown';
7
+ }
@@ -0,0 +1,91 @@
1
+ /* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
2
+ import type { Container, Provider, Resolve, Token } from './types';
3
+ import type { Preset } from '../preset/types';
4
+ import { createContainer, createToken, NothingBoundError } from '.';
5
+
6
+ type ExtractType<T extends readonly Token<any>[]> = {
7
+ [index in keyof T]: T[index] extends T[number] ? ReturnType<T[index]['_resolve']> : never;
8
+ };
9
+
10
+ interface Binding<T> {
11
+ toValue: (value: T) => void;
12
+ toProvider: (provider: Provider<T>) => void;
13
+ }
14
+
15
+ export class Application {
16
+ private container?: Container;
17
+ private parent?: Application;
18
+ private presets: Preset[];
19
+ private providers: Map<Token<any>, Provider<any>>;
20
+
21
+ static readonly self = createToken('application/self');
22
+
23
+ constructor() {
24
+ this.providers = new Map();
25
+ this.presets = [];
26
+ }
27
+
28
+ bind<T>(token: Token<T>): Binding<T> {
29
+ return {
30
+ toValue: value => {
31
+ this.providers.set(token, () => value);
32
+ },
33
+ toProvider: provider => {
34
+ this.providers.set(token, provider);
35
+ },
36
+ };
37
+ }
38
+
39
+ get<T>(token: Token<T>): T {
40
+ try {
41
+ return this.getContainer().get(token);
42
+ } catch (error) {
43
+ if (error instanceof NothingBoundError && this.parent) {
44
+ return this.parent.get(token);
45
+ } else {
46
+ throw error;
47
+ }
48
+ }
49
+ }
50
+
51
+ private getContainer(): Container {
52
+ if (!this.container) {
53
+ this.container = this.configureContainer();
54
+ }
55
+
56
+ return this.container;
57
+ }
58
+
59
+ private configureContainer(): Container {
60
+ const container = createContainer();
61
+
62
+ container.set(Application.self, () => this);
63
+
64
+ for (const preset of this.presets) {
65
+ preset.apply(this);
66
+ }
67
+
68
+ const resolve: Resolve = token => this.get(token);
69
+
70
+ for (const [token, provider] of this.providers) {
71
+ container.set(token, () => provider(resolve));
72
+ }
73
+
74
+ return container;
75
+ }
76
+
77
+ attach(parent: Application): void {
78
+ this.parent = parent;
79
+ }
80
+
81
+ preset(preset: Preset): void {
82
+ this.presets.push(preset);
83
+ }
84
+
85
+ invoke<Tokens extends readonly Token<any>[]>(
86
+ tokens: [...Tokens],
87
+ fn: (...args: ExtractType<Tokens>) => void,
88
+ ): void {
89
+ fn(...(tokens.map(token => this.get(token)) as any));
90
+ }
91
+ }