@sima-land/isomorph 9.0.7 → 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 (530) 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/dist/utils/browser/analytics/data-layer.d.ts +5 -0
  120. package/dist/utils/browser/analytics/data-layer.js +15 -0
  121. package/dist/utils/browser/analytics/data-layer.js.map +1 -0
  122. package/{helpers/analytics/index.d.ts → dist/utils/browser/analytics/oko.d.ts} +1 -6
  123. package/{helpers/analytics/index.js → dist/utils/browser/analytics/oko.js} +11 -20
  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 +50 -68
  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/utils/browser/analytics/data-layer.ts +12 -0
  193. package/src/{helpers/analytics/index.ts → utils/browser/analytics/oko.ts} +10 -15
  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/cache/helpers.d.ts +0 -4
  208. package/cache/helpers.js +0 -39
  209. package/cache/helpers.js.map +0 -1
  210. package/cache/local-storage.d.ts +0 -34
  211. package/cache/local-storage.js +0 -90
  212. package/cache/local-storage.js.map +0 -1
  213. package/cache/redis.d.ts +0 -10
  214. package/cache/redis.js +0 -54
  215. package/cache/redis.js.map +0 -1
  216. package/cache/wrap-in-trace.d.ts +0 -8
  217. package/cache/wrap-in-trace.js +0 -68
  218. package/cache/wrap-in-trace.js.map +0 -1
  219. package/config/create.d.ts +0 -8
  220. package/config/create.js +0 -32
  221. package/config/create.js.map +0 -1
  222. package/config/helpers.d.ts +0 -11
  223. package/config/helpers.js +0 -71
  224. package/config/helpers.js.map +0 -1
  225. package/config/validate.d.ts +0 -18
  226. package/config/validate.js +0 -107
  227. package/config/validate.js.map +0 -1
  228. package/container/create-inject.d.ts +0 -7
  229. package/container/create-inject.js +0 -36
  230. package/container/create-inject.js.map +0 -1
  231. package/container/get-dependencies.d.ts +0 -13
  232. package/container/get-dependencies.js +0 -54
  233. package/container/get-dependencies.js.map +0 -1
  234. package/container/index.d.ts +0 -15
  235. package/container/index.js +0 -175
  236. package/container/index.js.map +0 -1
  237. package/container/is-container.d.ts +0 -7
  238. package/container/is-container.js +0 -17
  239. package/container/is-container.js.map +0 -1
  240. package/container/service-not-found-error.d.ts +0 -10
  241. package/container/service-not-found-error.js +0 -18
  242. package/container/service-not-found-error.js.map +0 -1
  243. package/create-proxy/create-proxy-middleware/index.d.ts +0 -16
  244. package/create-proxy/create-proxy-middleware/index.js +0 -47
  245. package/create-proxy/create-proxy-middleware/index.js.map +0 -1
  246. package/create-proxy/index.d.ts +0 -12
  247. package/create-proxy/index.js +0 -25
  248. package/create-proxy/index.js.map +0 -1
  249. package/create-response-sender/index.d.ts +0 -8
  250. package/create-response-sender/index.js +0 -42
  251. package/create-response-sender/index.js.map +0 -1
  252. package/get-dynamic-data/index.d.ts +0 -8
  253. package/get-dynamic-data/index.js +0 -23
  254. package/get-dynamic-data/index.js.map +0 -1
  255. package/graceful-shutdown/index.d.ts +0 -26
  256. package/graceful-shutdown/index.js +0 -87
  257. package/graceful-shutdown/index.js.map +0 -1
  258. package/helpers/add-error-handling/index.d.ts +0 -1
  259. package/helpers/add-error-handling/index.js +0 -42
  260. package/helpers/add-error-handling/index.js.map +0 -1
  261. package/helpers/analytics/index.js.map +0 -1
  262. package/helpers/api/create-enhancer.d.ts +0 -12
  263. package/helpers/api/create-enhancer.js +0 -52
  264. package/helpers/api/create-enhancer.js.map +0 -1
  265. package/helpers/api/create-instance.d.ts +0 -11
  266. package/helpers/api/create-instance.js +0 -39
  267. package/helpers/api/create-instance.js.map +0 -1
  268. package/helpers/api/middlewares/collect-cookie-middleware.d.ts +0 -10
  269. package/helpers/api/middlewares/collect-cookie-middleware.js +0 -39
  270. package/helpers/api/middlewares/collect-cookie-middleware.js.map +0 -1
  271. package/helpers/api/middlewares/count-api-response-time.d.ts +0 -12
  272. package/helpers/api/middlewares/count-api-response-time.js +0 -39
  273. package/helpers/api/middlewares/count-api-response-time.js.map +0 -1
  274. package/helpers/api/middlewares/error-handlers-middlewares.d.ts +0 -5
  275. package/helpers/api/middlewares/error-handlers-middlewares.js +0 -114
  276. package/helpers/api/middlewares/error-handlers-middlewares.js.map +0 -1
  277. package/helpers/api/middlewares/helpers.d.ts +0 -11
  278. package/helpers/api/middlewares/helpers.js +0 -27
  279. package/helpers/api/middlewares/helpers.js.map +0 -1
  280. package/helpers/api/middlewares/pass-headers-middleware.d.ts +0 -3
  281. package/helpers/api/middlewares/pass-headers-middleware.js +0 -27
  282. package/helpers/api/middlewares/pass-headers-middleware.js.map +0 -1
  283. package/helpers/api/middlewares/prepare-request-headers.d.ts +0 -5
  284. package/helpers/api/middlewares/prepare-request-headers.js +0 -20
  285. package/helpers/api/middlewares/prepare-request-headers.js.map +0 -1
  286. package/helpers/api/middlewares/set-http-agents-middleware.d.ts +0 -15
  287. package/helpers/api/middlewares/set-http-agents-middleware.js +0 -34
  288. package/helpers/api/middlewares/set-http-agents-middleware.js.map +0 -1
  289. package/helpers/api/middlewares/stages-trace-middleware.d.ts +0 -17
  290. package/helpers/api/middlewares/stages-trace-middleware.js +0 -57
  291. package/helpers/api/middlewares/stages-trace-middleware.js.map +0 -1
  292. package/helpers/api/middlewares/trace-request-middleware.d.ts +0 -24
  293. package/helpers/api/middlewares/trace-request-middleware.js +0 -69
  294. package/helpers/api/middlewares/trace-request-middleware.js.map +0 -1
  295. package/helpers/api/server-adapter/__fixtures__/fake-keys.d.ts +0 -10
  296. package/helpers/api/server-adapter/__fixtures__/fake-keys.js +0 -61
  297. package/helpers/api/server-adapter/__fixtures__/fake-keys.js.map +0 -1
  298. package/helpers/api/server-adapter/constants.d.ts +0 -5
  299. package/helpers/api/server-adapter/constants.js +0 -16
  300. package/helpers/api/server-adapter/constants.js.map +0 -1
  301. package/helpers/api/server-adapter/helpers.d.ts +0 -26
  302. package/helpers/api/server-adapter/helpers.js +0 -208
  303. package/helpers/api/server-adapter/helpers.js.map +0 -1
  304. package/helpers/api/server-adapter/index.d.ts +0 -10
  305. package/helpers/api/server-adapter/index.js +0 -118
  306. package/helpers/api/server-adapter/index.js.map +0 -1
  307. package/helpers/development/use-dot-env.d.ts +0 -6
  308. package/helpers/development/use-dot-env.js +0 -11
  309. package/helpers/development/use-dot-env.js.map +0 -1
  310. package/helpers/get-params/index.d.ts +0 -4
  311. package/helpers/get-params/index.js +0 -51
  312. package/helpers/get-params/index.js.map +0 -1
  313. package/helpers/http/request-getters.d.ts +0 -5
  314. package/helpers/http/request-getters.js +0 -49
  315. package/helpers/http/request-getters.js.map +0 -1
  316. package/helpers/http/statuses-validator.d.ts +0 -3
  317. package/helpers/http/statuses-validator.js +0 -25
  318. package/helpers/http/statuses-validator.js.map +0 -1
  319. package/helpers/logger/create-pino-instance/index.d.ts +0 -6
  320. package/helpers/logger/create-pino-instance/index.js +0 -39
  321. package/helpers/logger/create-pino-instance/index.js.map +0 -1
  322. package/helpers/logger/format-time/index.d.ts +0 -6
  323. package/helpers/logger/format-time/index.js +0 -9
  324. package/helpers/logger/format-time/index.js.map +0 -1
  325. package/helpers/metrics/index.d.ts +0 -23
  326. package/helpers/metrics/index.js +0 -42
  327. package/helpers/metrics/index.js.map +0 -1
  328. package/helpers/prometheus/index.d.ts +0 -4
  329. package/helpers/prometheus/index.js +0 -13
  330. package/helpers/prometheus/index.js.map +0 -1
  331. package/helpers/prometheus/measure-middleware.d.ts +0 -5
  332. package/helpers/prometheus/measure-middleware.js +0 -69
  333. package/helpers/prometheus/measure-middleware.js.map +0 -1
  334. package/helpers/prometheus/metric-adapter.d.ts +0 -36
  335. package/helpers/prometheus/metric-adapter.js +0 -98
  336. package/helpers/prometheus/metric-adapter.js.map +0 -1
  337. package/helpers/react/error-handlers/index.d.ts +0 -40
  338. package/helpers/react/error-handlers/index.js +0 -52
  339. package/helpers/react/error-handlers/index.js.map +0 -1
  340. package/helpers/redux/constants.d.ts +0 -5
  341. package/helpers/redux/constants.js +0 -14
  342. package/helpers/redux/constants.js.map +0 -1
  343. package/helpers/redux/create-compose-middleware.d.ts +0 -15
  344. package/helpers/redux/create-compose-middleware.js +0 -23
  345. package/helpers/redux/create-compose-middleware.js.map +0 -1
  346. package/helpers/redux/get-dev-compose-creator.d.ts +0 -6
  347. package/helpers/redux/get-dev-compose-creator.js +0 -13
  348. package/helpers/redux/get-dev-compose-creator.js.map +0 -1
  349. package/helpers/redux/prepare-on-ready.d.ts +0 -9
  350. package/helpers/redux/prepare-on-ready.js +0 -16
  351. package/helpers/redux/prepare-on-ready.js.map +0 -1
  352. package/helpers/redux/remote-data.d.ts +0 -40
  353. package/helpers/redux/remote-data.js +0 -91
  354. package/helpers/redux/remote-data.js.map +0 -1
  355. package/helpers/redux/selector/statuses.d.ts +0 -23
  356. package/helpers/redux/selector/statuses.js +0 -34
  357. package/helpers/redux/selector/statuses.js.map +0 -1
  358. package/helpers/redux/wait-on-store-readiness.d.ts +0 -11
  359. package/helpers/redux/wait-on-store-readiness.js +0 -29
  360. package/helpers/redux/wait-on-store-readiness.js.map +0 -1
  361. package/helpers/render/get-react-markup-data.d.ts +0 -14
  362. package/helpers/render/get-react-markup-data.js +0 -20
  363. package/helpers/render/get-react-markup-data.js.map +0 -1
  364. package/helpers/render/index.d.ts +0 -21
  365. package/helpers/render/index.js +0 -72
  366. package/helpers/render/index.js.map +0 -1
  367. package/helpers/render/render-app.d.ts +0 -12
  368. package/helpers/render/render-app.js +0 -12
  369. package/helpers/render/render-app.js.map +0 -1
  370. package/helpers/saga/__fixtures__/do-safe-request.d.ts +0 -43
  371. package/helpers/saga/__fixtures__/do-safe-request.js +0 -50
  372. package/helpers/saga/__fixtures__/do-safe-request.js.map +0 -1
  373. package/helpers/saga/cache-result.d.ts +0 -46
  374. package/helpers/saga/cache-result.js +0 -71
  375. package/helpers/saga/cache-result.js.map +0 -1
  376. package/helpers/saga/create-store.d.ts +0 -20
  377. package/helpers/saga/create-store.js +0 -106
  378. package/helpers/saga/create-store.js.map +0 -1
  379. package/helpers/saga/do-safe-request.d.ts +0 -38
  380. package/helpers/saga/do-safe-request.js +0 -45
  381. package/helpers/saga/do-safe-request.js.map +0 -1
  382. package/helpers/saga/safe-request.d.ts +0 -7
  383. package/helpers/saga/safe-request.js +0 -15
  384. package/helpers/saga/safe-request.js.map +0 -1
  385. package/helpers/saga/take-chain.d.ts +0 -20
  386. package/helpers/saga/take-chain.js +0 -56
  387. package/helpers/saga/take-chain.js.map +0 -1
  388. package/helpers/tracer/create-child-tracing-middleware.d.ts +0 -7
  389. package/helpers/tracer/create-child-tracing-middleware.js +0 -40
  390. package/helpers/tracer/create-child-tracing-middleware.js.map +0 -1
  391. package/helpers/tracer/index.d.ts +0 -24
  392. package/helpers/tracer/index.js +0 -144
  393. package/helpers/tracer/index.js.map +0 -1
  394. package/helpers/utils/check-feature-by-segment.d.ts +0 -2
  395. package/helpers/utils/check-feature-by-segment.js +0 -31
  396. package/helpers/utils/check-feature-by-segment.js.map +0 -1
  397. package/helpers/utils/format-object-keys.d.ts +0 -6
  398. package/helpers/utils/format-object-keys.js +0 -27
  399. package/helpers/utils/format-object-keys.js.map +0 -1
  400. package/helpers/utils/get-ms-from-hrt.d.ts +0 -2
  401. package/helpers/utils/get-ms-from-hrt.js +0 -22
  402. package/helpers/utils/get-ms-from-hrt.js.map +0 -1
  403. package/helpers/utils/is-match-pattern-list.d.ts +0 -8
  404. package/helpers/utils/is-match-pattern-list.js +0 -16
  405. package/helpers/utils/is-match-pattern-list.js.map +0 -1
  406. package/helpers/utils/is-not-empty-array.d.ts +0 -2
  407. package/helpers/utils/is-not-empty-array.js +0 -12
  408. package/helpers/utils/is-not-empty-array.js.map +0 -1
  409. package/helpers/utils/is-not-empty-string.d.ts +0 -2
  410. package/helpers/utils/is-not-empty-string.js +0 -15
  411. package/helpers/utils/is-not-empty-string.js.map +0 -1
  412. package/helpers/utils/is-numeric.d.ts +0 -7
  413. package/helpers/utils/is-numeric.js +0 -16
  414. package/helpers/utils/is-numeric.js.map +0 -1
  415. package/helpers/utils/wrap-in-measure-event.d.ts +0 -9
  416. package/helpers/utils/wrap-in-measure-event.js +0 -50
  417. package/helpers/utils/wrap-in-measure-event.js.map +0 -1
  418. package/logger/create-logger-middleware/index.d.ts +0 -14
  419. package/logger/create-logger-middleware/index.js +0 -41
  420. package/logger/create-logger-middleware/index.js.map +0 -1
  421. package/logger/create-sentry-instance/index.d.ts +0 -29
  422. package/logger/create-sentry-instance/index.js +0 -63
  423. package/logger/create-sentry-instance/index.js.map +0 -1
  424. package/logger/create-sentry-middleware/index.d.ts +0 -14
  425. package/logger/create-sentry-middleware/index.js +0 -19
  426. package/logger/create-sentry-middleware/index.js.map +0 -1
  427. package/logger/handler-creators/index.d.ts +0 -5
  428. package/logger/handler-creators/index.js +0 -41
  429. package/logger/handler-creators/index.js.map +0 -1
  430. package/logger/initialize-sentry-creator/index.d.ts +0 -17
  431. package/logger/initialize-sentry-creator/index.js +0 -35
  432. package/logger/initialize-sentry-creator/index.js.map +0 -1
  433. package/logger/sentry-logger/index.d.ts +0 -9
  434. package/logger/sentry-logger/index.js +0 -36
  435. package/logger/sentry-logger/index.js.map +0 -1
  436. package/module-federation/__example__/webpack-config.example.d.ts +0 -366
  437. package/module-federation/__example__/webpack-config.example.js +0 -51
  438. package/module-federation/__example__/webpack-config.example.js.map +0 -1
  439. package/module-federation/enhanced-module-federation-plugin.d.ts +0 -46
  440. package/module-federation/enhanced-module-federation-plugin.js +0 -72
  441. package/module-federation/enhanced-module-federation-plugin.js.map +0 -1
  442. package/module-federation/utils/index.d.ts +0 -8
  443. package/module-federation/utils/index.js +0 -28
  444. package/module-federation/utils/index.js.map +0 -1
  445. package/observe-middleware/index.d.ts +0 -9
  446. package/observe-middleware/index.js +0 -67
  447. package/observe-middleware/index.js.map +0 -1
  448. package/set-header-middleware/create.d.ts +0 -10
  449. package/set-header-middleware/create.js +0 -16
  450. package/set-header-middleware/create.js.map +0 -1
  451. package/src/cache/helpers.js +0 -32
  452. package/src/cache/local-storage.ts +0 -92
  453. package/src/cache/redis.js +0 -79
  454. package/src/cache/wrap-in-trace.js +0 -57
  455. package/src/config/create.js +0 -33
  456. package/src/config/helpers.js +0 -71
  457. package/src/config/validate.js +0 -114
  458. package/src/container/create-inject.js +0 -32
  459. package/src/container/get-dependencies.js +0 -46
  460. package/src/container/index.js +0 -188
  461. package/src/container/is-container.js +0 -14
  462. package/src/container/service-not-found-error.js +0 -14
  463. package/src/create-proxy/create-proxy-middleware/index.js +0 -47
  464. package/src/create-proxy/index.js +0 -27
  465. package/src/create-response-sender/index.js +0 -48
  466. package/src/get-dynamic-data/index.js +0 -26
  467. package/src/graceful-shutdown/index.js +0 -97
  468. package/src/helpers/add-error-handling/index.js +0 -24
  469. package/src/helpers/api/create-enhancer.js +0 -52
  470. package/src/helpers/api/create-instance.js +0 -42
  471. package/src/helpers/api/middlewares/collect-cookie-middleware.js +0 -27
  472. package/src/helpers/api/middlewares/count-api-response-time.js +0 -31
  473. package/src/helpers/api/middlewares/error-handlers-middlewares.js +0 -124
  474. package/src/helpers/api/middlewares/helpers.js +0 -26
  475. package/src/helpers/api/middlewares/pass-headers-middleware.js +0 -19
  476. package/src/helpers/api/middlewares/prepare-request-headers.js +0 -18
  477. package/src/helpers/api/middlewares/set-http-agents-middleware.js +0 -22
  478. package/src/helpers/api/middlewares/stages-trace-middleware.js +0 -46
  479. package/src/helpers/api/server-adapter/__fixtures__/fake-keys.js +0 -58
  480. package/src/helpers/api/server-adapter/constants.js +0 -12
  481. package/src/helpers/api/server-adapter/helpers.js +0 -244
  482. package/src/helpers/api/server-adapter/index.js +0 -155
  483. package/src/helpers/development/use-dot-env.js +0 -9
  484. package/src/helpers/get-params/index.js +0 -59
  485. package/src/helpers/http/request-getters.js +0 -42
  486. package/src/helpers/http/statuses-validator.js +0 -20
  487. package/src/helpers/logger/create-pino-instance/index.js +0 -41
  488. package/src/helpers/logger/format-time/index.js +0 -6
  489. package/src/helpers/metrics/index.js +0 -40
  490. package/src/helpers/prometheus/index.js +0 -9
  491. package/src/helpers/prometheus/measure-middleware.js +0 -73
  492. package/src/helpers/prometheus/metric-adapter.js +0 -99
  493. package/src/helpers/react/error-handlers/index.tsx +0 -68
  494. package/src/helpers/redux/constants.js +0 -10
  495. package/src/helpers/redux/create-compose-middleware.js +0 -24
  496. package/src/helpers/redux/get-dev-compose-creator.js +0 -9
  497. package/src/helpers/redux/prepare-on-ready.js +0 -16
  498. package/src/helpers/redux/remote-data.js +0 -124
  499. package/src/helpers/redux/selector/statuses.js +0 -30
  500. package/src/helpers/redux/wait-on-store-readiness.js +0 -40
  501. package/src/helpers/render/get-react-markup-data.js +0 -18
  502. package/src/helpers/render/index.js +0 -69
  503. package/src/helpers/render/render-app.js +0 -15
  504. package/src/helpers/saga/__fixtures__/do-safe-request.js +0 -49
  505. package/src/helpers/saga/cache-result.js +0 -77
  506. package/src/helpers/saga/create-store.js +0 -102
  507. package/src/helpers/saga/do-safe-request.js +0 -47
  508. package/src/helpers/saga/safe-request.js +0 -11
  509. package/src/helpers/saga/take-chain.js +0 -53
  510. package/src/helpers/tracer/create-child-tracing-middleware.js +0 -42
  511. package/src/helpers/tracer/index.js +0 -171
  512. package/src/helpers/utils/check-feature-by-segment.js +0 -32
  513. package/src/helpers/utils/format-object-keys.js +0 -23
  514. package/src/helpers/utils/get-ms-from-hrt.js +0 -16
  515. package/src/helpers/utils/is-match-pattern-list.js +0 -13
  516. package/src/helpers/utils/is-not-empty-array.js +0 -8
  517. package/src/helpers/utils/is-not-empty-string.js +0 -11
  518. package/src/helpers/utils/is-numeric.ts +0 -12
  519. package/src/helpers/utils/wrap-in-measure-event.js +0 -35
  520. package/src/logger/create-logger-middleware/index.js +0 -46
  521. package/src/logger/create-sentry-instance/index.js +0 -74
  522. package/src/logger/create-sentry-middleware/index.js +0 -16
  523. package/src/logger/handler-creators/index.js +0 -38
  524. package/src/logger/initialize-sentry-creator/index.js +0 -43
  525. package/src/logger/sentry-logger/index.js +0 -33
  526. package/src/module-federation/__example__/webpack-config.example.js +0 -57
  527. package/src/module-federation/enhanced-module-federation-plugin.js +0 -92
  528. package/src/module-federation/utils/index.js +0 -32
  529. package/src/observe-middleware/index.js +0 -70
  530. package/src/set-header-middleware/create.js +0 -17
@@ -1,155 +0,0 @@
1
- import {
2
- isStream,
3
- isEventEmitter,
4
- prepareDataBuffer,
5
- createOptions,
6
- createTransport,
7
- uncompressResponse,
8
- enhanceError,
9
- createError,
10
- settle,
11
- } from './helpers';
12
-
13
- import { REQUEST_STAGES } from './constants';
14
-
15
- /**
16
- * Адаптер для Axios, создающий события на основных этапах запроса к API.
17
- * За образец использован дефолтный адаптер 'axios/lib/adapters/http.js',
18
- * но без поддержки proxy, socketPath и cancelToken за ненадобностью.
19
- * Только для NodeJS, на клиенте не использовать.
20
- * @param {Object} config Конфигурация инстанса Axios.
21
- * @return {Promise} Разрешится после запроса к API.
22
- */
23
- const serverAdapter = config => new Promise((resolve, reject) => {
24
- const {
25
- headers,
26
- data: pureData,
27
- timeout,
28
- responseType,
29
- maxContentLength,
30
- responseEncoding,
31
- emitter,
32
- } = config;
33
-
34
- const needEmit = isEventEmitter(emitter);
35
-
36
- // Регистрируем обработчик начала запроса.
37
- needEmit && emitter.emit(REQUEST_STAGES.start);
38
-
39
- // Подготовка данных запроса.
40
- let data;
41
-
42
- if (pureData && !isStream(pureData)) {
43
- data = prepareDataBuffer(pureData);
44
- if (data) {
45
- headers['Content-Length'] = data.length;
46
- } else {
47
- reject(createError(
48
- 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',
49
- config
50
- ));
51
- }
52
- } else {
53
- data = pureData;
54
- }
55
-
56
- const options = createOptions({ ...config, headers });
57
- const transport = createTransport(config);
58
-
59
- // Создаем запрос и коллбэк, обрабатывающий ответ.
60
- const req = transport.request(options, res => {
61
- // Регистрируем обработчик получения ответа.
62
- res.once('readable', () => needEmit && emitter.emit(REQUEST_STAGES.firstByteReceived));
63
-
64
- const stream = uncompressResponse(res);
65
-
66
- if (stream !== res) {
67
- delete res.headers['content-encoding'];
68
- }
69
-
70
- const response = {
71
- status: res.statusCode,
72
- statusText: res.statusMessage,
73
- headers: res.headers,
74
- config,
75
- request: res.req,
76
- };
77
-
78
- const resBuffer = [];
79
-
80
- /**
81
- * Обработчик получения порции данных.
82
- * @param {Buffer} chunk Порция данных.
83
- */
84
- const chunksHandler = chunk => {
85
- resBuffer.push(chunk);
86
- if (
87
- maxContentLength > -1
88
- && Buffer.concat(resBuffer).length > maxContentLength
89
- ) {
90
- stream.destroy();
91
- reject(createError(`maxContentLength size of ${maxContentLength} exceeded`, config, null, res.req));
92
- }
93
- };
94
-
95
- /**
96
- * Обработчик завершения получения данных.
97
- */
98
- const finishHandler = () => {
99
- const concatBuffer = Buffer.concat(resBuffer);
100
- response.data = responseType === 'arraybuffer'
101
- ? concatBuffer
102
- : concatBuffer.toString(responseEncoding);
103
-
104
- settle(resolve, reject, response);
105
-
106
- // Регистрируем обработчик завершения запроса.
107
- needEmit && emitter.emit(REQUEST_STAGES.end);
108
- };
109
- if (responseType === 'stream') {
110
- response.data = stream;
111
- settle(resolve, reject, response);
112
- } else {
113
- stream
114
- .on('data', chunksHandler)
115
- .on('error', err => {
116
- !req.aborted && reject(enhanceError(err, config, null, res.req));
117
- })
118
- .on('end', finishHandler);
119
- }
120
- });
121
-
122
- // Регистрируем обработчики событий сокета.
123
- if (needEmit) {
124
- req.on('socket', socket => {
125
- socket.connecting && socket
126
- .on('lookup', () => emitter.emit(REQUEST_STAGES.dnsLookupFinish))
127
- .on('connect', () => emitter.emit(REQUEST_STAGES.tcpConnectionConnect))
128
- .on('secureConnect', () => emitter.emit(REQUEST_STAGES.tlsHandshakeFinish));
129
- });
130
- }
131
-
132
- req.on('error', err => {
133
- !req.aborted && reject(enhanceError(err, config, null, req));
134
- });
135
-
136
- if (timeout) {
137
- req.setTimeout(timeout, () => {
138
- req.abort();
139
- reject(createError(`timeout of ${config.timeout} ms exceeded`, config, 'ECONNABORTED', req));
140
- });
141
- }
142
-
143
- // Отправка данных запроса.
144
- if (isStream(data)) {
145
- data
146
- .on('error', err => {
147
- reject(enhanceError(err, config, null, req));
148
- })
149
- .pipe(req);
150
- } else {
151
- req.end(data);
152
- }
153
- });
154
-
155
- export default serverAdapter;
@@ -1,9 +0,0 @@
1
- /**
2
- * Определяет, необходимо ли подключать dotenv и если необходимо, подключает его.
3
- * @param {string} environment Значение переменной среды NODE_ENV.
4
- */
5
- const useDotEnv = environment => {
6
- ['development', 'test'].includes(environment) && require('dotenv').config();
7
- };
8
-
9
- export default useDotEnv;
@@ -1,59 +0,0 @@
1
- import get from 'lodash/get';
2
- import isFunction from 'lodash/isFunction';
3
- import { createService } from '../../container';
4
-
5
- /**
6
- * Генерирует параметры приложения.
7
- * @param {Object} request Запрос.
8
- * @param {Object} config Конфиг приложения.
9
- * @param {Function} getValue Генератор значения.
10
- * @param {Function} modify Модификатор Значения.
11
- * @param {Object} defaultValue Значение поумолчанию.
12
- * @return {Object} Параметры приложения.
13
- */
14
- export const getParams = (request, config, getValue = () => {}, modify, defaultValue) => {
15
- let result = getValue(request);
16
- if (!result) {
17
- result = defaultValue;
18
- }
19
- if (isFunction(modify)) {
20
- result = modify(result, request, config);
21
- }
22
- return result;
23
- };
24
-
25
- /**
26
- * Парсит заголовок запроса.
27
- * @param {Object} request Запрос.
28
- * @return {Object} Параметры.
29
- */
30
- export const parseHttpHeaders = request => {
31
- /**
32
- * Node.js переводит в ASCII.
33
- * @see {https://github.com/nodejs/node/issues/17390}
34
- */
35
- const params = Buffer.from(
36
- get(request, 'headers[simaland-params]', ''),
37
- 'binary'
38
- ).toString('utf8');
39
- return params ? JSON.parse(params) : null;
40
- };
41
-
42
- export default createService(
43
- getParams,
44
- (
45
- {
46
- request,
47
- config,
48
- getValue,
49
- modify,
50
- defaultValue,
51
- }
52
- ) => [
53
- request,
54
- config,
55
- getValue,
56
- modify,
57
- defaultValue,
58
- ]
59
- );
@@ -1,42 +0,0 @@
1
- import { isIP } from 'net';
2
- import isFunction from 'lodash/isFunction';
3
-
4
- /**
5
- * Получает IP пользователя из заголовков запроса.
6
- * @param {Object} request Запрос.
7
- * @return {string} IP пользователя.
8
- */
9
- export const getXClientIp = ({ request }) => {
10
- const ip = request.headers['x-client-ip']
11
- || request.headers['x-forwarded-for']
12
- || request.connection.remoteAddress;
13
- return isIP(ip) ? ip : '';
14
- };
15
-
16
- /**
17
- * Получает метод запроса из объекта запроса.
18
- * @param {Object} request Запрос.
19
- * @return {string} Метод запроса.
20
- */
21
- export const getMethod = ({ request }) => request.method;
22
-
23
- /**
24
- * Получает статус ответа из объекта ответа.
25
- * @param {Object} response Ответ.
26
- * @return {number} Статус ответа.
27
- */
28
- export const getStatus = ({ response }) => response.statusCode;
29
-
30
- /**
31
- * Получает оригинальный url из объекта запроса.
32
- * @param {Object} request Запрос.
33
- * @return {number} Url запроса.
34
- */
35
- export const getOriginalUrl = ({ request }) => request.originalUrl;
36
-
37
- /**
38
- * Получает куки из запроса.
39
- * @param {Object} request Запрос.
40
- * @return {string} Куки.
41
- */
42
- export const getCookie = request => (request && isFunction(request.get) && request.get('cookie')) || '';
@@ -1,20 +0,0 @@
1
- /**
2
- * Валидация http статуса ответа на POST запрос.
3
- * @param {number} status Статус http ответа.
4
- * @return {boolean} Валидность.
5
- */
6
- export const validatePostStatus = status => status === 201;
7
-
8
- /**
9
- * Валидация http статуса ответа на DELETE запрос.
10
- * @param {number} status Статус http ответа.
11
- * @return {boolean} Валидность.
12
- */
13
- export const validateDeleteStatus = status => status === 204 || status === 200;
14
-
15
- /**
16
- * Валидация http статуса 200.
17
- * @param {number} status Статус http ответа.
18
- * @return {boolean} Валидность.
19
- */
20
- export const isOkStatus = status => status === 200;
@@ -1,41 +0,0 @@
1
- import pino from 'pino';
2
- import formatTime from '../format-time';
3
- import isPlainObject from 'lodash/isPlainObject';
4
-
5
- /**
6
- * Модуль создающий экземпляр логгера.
7
- * @param {Object} options Зависимости модуля.
8
- * @return {Function} Функция, которая создает логгер.
9
- */
10
- export default function createPinoInstance ({ config } = {}) {
11
- /**
12
- * Функция, которая создает экземпляр логгера.
13
- * @param {Object} param Параметры.
14
- * @param {string|number} param.timestamp Время.
15
- * @param {boolean} param.isProduction Является ли production-сборкой.
16
- * @param {boolean} param.hasColorize Нужно ли выделять цветом.
17
- * @return {Function} Экземпляр логгера.
18
- */
19
- const loggerCreator = (
20
- {
21
- timestamp,
22
- isProduction,
23
- hasColorize,
24
- }
25
- ) => {
26
- const logger = pino({
27
- timestamp,
28
- prettyPrint: hasColorize && { colorize: true },
29
- useLevelLabels: true,
30
- });
31
- logger.extreme = isProduction;
32
-
33
- return logger;
34
- };
35
-
36
- return loggerCreator({
37
- timestamp: formatTime,
38
- isProduction: isPlainObject(config) ? config.isProduction : true,
39
- hasColorize: isPlainObject(config) ? config.isDevelopment : false,
40
- });
41
- }
@@ -1,6 +0,0 @@
1
- /**
2
- * Форматирует дату.
3
- * @return {string} Строка с датой в формате ISO.
4
- */
5
- const formatTime = () => `,"time":"${new Date().toISOString()}"`;
6
- export default formatTime;
@@ -1,40 +0,0 @@
1
- /**
2
- * Формирует данные метрики из данных приложения, запроса и ответа.
3
- * @param {Object} options Опции приложения.
4
- * @param {Object} options.dependencies Зависимости сервиса сбора метрик.
5
- * @param {Object} options.dependencies.config Конфигурация приложения.
6
- * @param {import('http').IncomingMessage} options.request Запрос.
7
- * @param {import('http').ServerResponse} options.response Ответ.
8
- * @return {{route: string, place: string, statusCode: number}} Данные для отправки в метрику.
9
- */
10
- export const labelsResolver = ({ dependencies: { config }, request, response }) => ({
11
- version: config.version || 'development',
12
- route: request.baseUrl + request.path,
13
- code: response.statusCode,
14
- method: request.method,
15
- });
16
-
17
- /**
18
- * Создаёт функцию, подписывающую обработчик на определённое событие ответа сервера.
19
- * @param {string} eventName Название события.
20
- * @return {function({response: import('http').ServerResponse, callback: Function}): import('http').ServerResponse}
21
- * Функция-подписчик.
22
- */
23
- export const createResponseEventSubscriber = eventName =>
24
- ({ response, callback }) => response.once(eventName, callback);
25
-
26
- /**
27
- * Подписывает функцию-обработчик на событие начала рендеринга.
28
- * @param {import('http').ServerResponse} response Ответ.
29
- * @param {Function} callback Обработчик.
30
- * @return {import('http').ServerResponse} Ответ.
31
- */
32
- export const renderStartSubscriber = createResponseEventSubscriber('render:start');
33
-
34
- /**
35
- * Подписывает функцию-обработчик на событие конца рендеринга.
36
- * @param {import('http').ServerResponse} response Ответ.
37
- * @param {Function} callback Обработчик.
38
- * @return {import('http').ServerResponse} Ответ.
39
- */
40
- export const renderFinishSubscriber = createResponseEventSubscriber('render:finish');
@@ -1,9 +0,0 @@
1
- import PrometheusClient from 'prom-client';
2
- import { PrometheusMetric } from './metric-adapter.js';
3
- import { createMeasureMiddleware } from './measure-middleware.js';
4
-
5
- export {
6
- PrometheusClient,
7
- PrometheusMetric,
8
- createMeasureMiddleware,
9
- };
@@ -1,73 +0,0 @@
1
- import negate from 'lodash/negate';
2
- import isFunction from 'lodash/isFunction';
3
- import { isPrometheusMetric } from './metric-adapter.js';
4
- import { labelsResolver } from '../metrics';
5
- import { createObserveMiddleware, defaultStartSubscriber, defaultFinishSubscriber } from '../../observe-middleware';
6
-
7
- /**
8
- * Возвращает функцию, создающую модуль для замера метрик запросов Express-приложения.
9
- * @param {Object} dependencies Опции.
10
- * @param {Function} dependencies.resolveLabels Функция, результат которой будет использован как аргумент setLabels.
11
- * @param {Array} dependencies.startMetrics Список метрик, замеряемых при старте запроса.
12
- * @param {Array} dependencies.finishMetrics Список метрик, замеряемых при отправке ответа.
13
- * @return {Function} Функция, возвращающая промежуточный слой для использования в Express-приложении.
14
- */
15
- export const createMeasureMiddleware = (dependencies = {}) => {
16
- const {
17
- resolveLabels = labelsResolver,
18
- startMetrics = [],
19
- finishMetrics = [],
20
- startSubscriber = defaultStartSubscriber,
21
- finishSubscriber = defaultFinishSubscriber,
22
- } = dependencies || {};
23
- if (!isFunction(resolveLabels)) {
24
- throw TypeError('First argument property "resolveLabels" must be a function');
25
- }
26
-
27
- if ([startMetrics, finishMetrics].some(negate(Array.isArray))) {
28
- throw TypeError('First argument properties "startMetrics" and "finishMetrics" must be arrays');
29
- }
30
-
31
- if ([...startMetrics, ...finishMetrics].some(negate(isPrometheusMetric))) {
32
- throw TypeError('Every metric in "startMetrics" and "finishMetrics" must be instance of PrometheusMetric');
33
- }
34
-
35
- if (!isFunction(startSubscriber)) {
36
- throw TypeError('First argument property "startSubscriber" must be a function');
37
- }
38
-
39
- if (!isFunction(finishSubscriber)) {
40
- throw TypeError('First argument property "finishSubscriber" must be a function');
41
- }
42
-
43
- return createObserveMiddleware({
44
- onStart: (timestamp, request, response) => {
45
- startMetrics.forEach(metric => {
46
- metric
47
- .setLabels(resolveLabels({
48
- dependencies,
49
- metric,
50
- request,
51
- response,
52
- timestamp,
53
- }))
54
- .spot();
55
- });
56
- },
57
- onFinish: (duration, request, response) => {
58
- finishMetrics.forEach(metric => {
59
- metric
60
- .setLabels(resolveLabels({
61
- dependencies,
62
- duration,
63
- metric,
64
- request,
65
- response,
66
- }))
67
- .spot(duration);
68
- });
69
- },
70
- startSubscriber,
71
- finishSubscriber,
72
- });
73
- };
@@ -1,99 +0,0 @@
1
- import PrometheusClient from 'prom-client';
2
- import difference from 'lodash/difference';
3
-
4
- /**
5
- * Список имен конструкторов из пакета "prom-client", пригодных для создания адаптеров.
6
- * @type {Array<string>}
7
- */
8
- export const availableMetricTypes = Object.freeze([
9
- 'Counter',
10
- 'Gauge',
11
- 'Histogram',
12
- 'Summary',
13
- ]);
14
-
15
- /**
16
- * Ключ свойства адаптера с оригинальным объектом метрики.
17
- * @type {symbol}
18
- */
19
- export const originalMetricKey = Symbol('original-metric-key');
20
-
21
- /**
22
- * Возвращает оригинальный объект метрики из переданного адаптера.
23
- * @param {PrometheusMetric} adapter Объект адаптера.
24
- * @return {Object} Объект метрики.
25
- */
26
- export const getOriginalInstance = adapter => adapter
27
- ? adapter[originalMetricKey]
28
- : undefined;
29
-
30
- /**
31
- * Определяет, является ли переданное значение экземпляром класса PrometheusMetric.
32
- * @param {*} value Проверяемое значение.
33
- * @return {boolean} Переданное значение является экземпляром класса PrometheusMetric?
34
- */
35
- export const isPrometheusMetric = value => value instanceof PrometheusMetric;
36
-
37
- /**
38
- * Класс объектов-адаптеров для классов метрик из пакета "prom-client".
39
- */
40
- export class PrometheusMetric {
41
- labels = {};
42
-
43
- /**
44
- * Инициализирует объект-адаптер метрики.
45
- * @param {string} metricType Тип метрики, определяемый названием класса из пакета "prom-client".
46
- * @param {Object} options Опции, передаваемые в конструктор метрики из пакета "prom-client".
47
- */
48
- constructor (metricType = '', options = {}) {
49
- if (!availableMetricTypes.includes(metricType)) {
50
- throw Error(`First argument must be one of available types: ${availableMetricTypes.join(', ')}`);
51
- }
52
- Object.assign(this, { ...options, metricType });
53
- this[originalMetricKey] = new PrometheusClient[metricType](options);
54
- }
55
-
56
- /**
57
- * Устанавливает значения показателей по переданному объекту, где ключ - название показателя.
58
- * @param {Object} labels Объект со значениями показателей по названиям.
59
- * @return {PrometheusMetric} Экземпляр.
60
- */
61
- setLabels (labels = {}) {
62
- const newLabels = labels || {};
63
- if (Array.isArray(this.labelNames)) {
64
- if (difference(this.labelNames, Object.keys(newLabels)).length > 0) {
65
- throw Error(`Labels count must be equal to labelNames count = ${this.labelNames.length}`);
66
- }
67
- }
68
- this.labels = newLabels;
69
-
70
- return this;
71
- }
72
-
73
- /**
74
- * Фиксирует показатель метрики в сервисе Prometheus.
75
- * @param {*} value Значение фиксируемого показателя, игнорируется для типа "Counter".
76
- * @return {PrometheusMetric} Экземпляр.
77
- */
78
- spot (value) {
79
- const instance = getOriginalInstance(this);
80
-
81
- switch (this.metricType) {
82
- case 'Counter':
83
- instance.inc(this.labels, 1);
84
- break;
85
- case 'Summary':
86
- case 'Histogram':
87
- instance.observe(this.labels, value);
88
- break;
89
- case 'Gauge': {
90
- const isPositive = value > 0;
91
- const methodName = isPositive ? 'inc' : 'dec';
92
- instance[methodName](Math.abs(value));
93
- break;
94
- }
95
- }
96
-
97
- return this;
98
- }
99
- }
@@ -1,68 +0,0 @@
1
- import React from 'react';
2
-
3
- export interface Props {
4
- children: NonNullable<React.ReactNode> | null
5
- fallback: NonNullable<React.ReactNode> | null
6
- captureException?: (error: Error, errorInfo: React.ErrorInfo) => void
7
- }
8
-
9
- /**
10
- * Обработчик ошибок в React компонентах.
11
- */
12
- export class ErrorBoundary extends React.Component<Props, { hasError: boolean }> {
13
- /**
14
- * @param props Свойства компонента.
15
- * @param props.children Дочерний компонент.
16
- * @param props.fallback Запасной элемент, если возникла ошибка.
17
- * @param props.captureException Функция для логирования ошибки.
18
- */
19
- constructor (props: Props) {
20
- super(props);
21
-
22
- this.state = { hasError: false };
23
- }
24
-
25
- /** @inheritdoc */
26
- static getDerivedStateFromError () {
27
- return { hasError: true };
28
- }
29
-
30
- /** @inheritdoc */
31
- componentDidCatch (error: Error, errorInfo: React.ErrorInfo) {
32
- const { captureException } = this.props;
33
-
34
- captureException?.(error, errorInfo);
35
- }
36
-
37
- /**
38
- * Рендер.
39
- * @return Дочерний элемент либо запасное значение.
40
- */
41
- render () {
42
- const { children, fallback } = this.props;
43
-
44
- return this.state.hasError ? fallback : children;
45
- }
46
- }
47
-
48
- /**
49
- * Обертка над Suspense c перехватом ошибок.
50
- * @param props Свойства компонента.
51
- * @param props.children Дочерний компонент.
52
- * @param props.fallback Запасной элемент, если возникла ошибка.
53
- * @param props.captureException Функция для логирования ошибки.
54
- * @return Элемент.
55
- */
56
- export const SafeSuspense = ({
57
- children,
58
- fallback,
59
- captureException,
60
- }: Props) => (
61
- <React.Suspense fallback={fallback}>
62
- <ErrorBoundary
63
- children={children}
64
- fallback={fallback}
65
- captureException={captureException}
66
- />
67
- </React.Suspense>
68
- );
@@ -1,10 +0,0 @@
1
- /**
2
- * Статусы состояния данных.
3
- * @type {Object}
4
- */
5
- export const STATUSES = Object.freeze({
6
- initial: 'initial',
7
- success: 'success',
8
- fetching: 'fetching',
9
- failure: 'failure',
10
- });
@@ -1,24 +0,0 @@
1
- import { compose } from 'redux';
2
- import isFunction from 'lodash/isFunction';
3
-
4
- /**
5
- * Создаёт функцию для композиции нескольких промежуточных обработчиков для применения в сторе
6
- * и подключения redux devtools в среде разработки.
7
- * @param {Object} options Опции.
8
- * @param {Function} options.devToolsComposeCreator Функция для создания compose с redux dev tools.
9
- * @param {Function} options.getName Функция возвращающая название сервиса.
10
- * @param {Function} options.getDevToolsEnabled Функция опредяляющая нужно ли подключать dev tools.
11
- * @return {Function} Функция для объединения нескольких промежуточных обработчиков в сторе.
12
- */
13
- const createComposeMiddleware = ({
14
- devToolsComposeCreator,
15
- getName,
16
- getDevToolsEnabled,
17
- } = {}) =>
18
- isFunction(devToolsComposeCreator) && isFunction(getName) && isFunction(getDevToolsEnabled) && getDevToolsEnabled()
19
- ? devToolsComposeCreator({
20
- name: getName(),
21
- })
22
- : compose;
23
-
24
- export default createComposeMiddleware;
@@ -1,9 +0,0 @@
1
- import get from 'lodash/get';
2
-
3
- /**
4
- * Получает из глобального объекта функцию для создания функции compose c devtools.
5
- * @return {Function | null} Функция для создания функции compose либо null, если функция не найдена.
6
- */
7
- const getDevComposeCreator = () => get(window, '__REDUX_DEVTOOLS_EXTENSION_COMPOSE__', null);
8
-
9
- export default getDevComposeCreator;