@sima-land/isomorph 10.1.0 → 11.0.0-alpha.2

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 (479) hide show
  1. package/cache/types.d.ts +7 -0
  2. package/cache/types.js +3 -0
  3. package/cache/types.js.map +1 -0
  4. package/config/browser.d.ts +6 -0
  5. package/config/browser.js +13 -0
  6. package/config/browser.js.map +1 -0
  7. package/config/index.d.ts +7 -0
  8. package/config/index.js +20 -0
  9. package/config/index.js.map +1 -0
  10. package/config/node.d.ts +6 -0
  11. package/config/node.js +19 -0
  12. package/config/node.js.map +1 -0
  13. package/config/types.d.ts +7 -0
  14. package/config/types.js +3 -0
  15. package/config/types.js.map +1 -0
  16. package/config/utils.d.ts +5 -0
  17. package/config/utils.js +12 -0
  18. package/config/utils.js.map +1 -0
  19. package/container/application.d.ts +25 -0
  20. package/container/application.js +63 -0
  21. package/container/application.js.map +1 -0
  22. package/container/index.d.ts +16 -13
  23. package/container/index.js +60 -161
  24. package/container/index.js.map +1 -1
  25. package/container/types.d.ts +14 -0
  26. package/container/types.js +3 -0
  27. package/container/types.js.map +1 -0
  28. package/error-tracker/browser.d.ts +8 -0
  29. package/error-tracker/browser.js +40 -0
  30. package/error-tracker/browser.js.map +1 -0
  31. package/error-tracker/node.d.ts +8 -0
  32. package/error-tracker/node.js +40 -0
  33. package/error-tracker/node.js.map +1 -0
  34. package/error-tracker/types.d.ts +18 -0
  35. package/error-tracker/types.js +3 -0
  36. package/error-tracker/types.js.map +1 -0
  37. package/error-tracker/utils.d.ts +12 -0
  38. package/error-tracker/utils.js +19 -0
  39. package/error-tracker/utils.js.map +1 -0
  40. package/http-client/middleware/cookie.d.ts +19 -0
  41. package/http-client/middleware/cookie.js +62 -0
  42. package/http-client/middleware/cookie.js.map +1 -0
  43. package/http-client/middleware/tracing.d.ts +32 -0
  44. package/http-client/middleware/tracing.js +67 -0
  45. package/http-client/middleware/tracing.js.map +1 -0
  46. package/http-client/sauce/index.d.ts +27 -0
  47. package/http-client/sauce/index.js +33 -0
  48. package/http-client/sauce/index.js.map +1 -0
  49. package/http-client/types.d.ts +6 -0
  50. package/http-client/types.js +3 -0
  51. package/http-client/types.js.map +1 -0
  52. package/http-client/utils.d.ts +9 -0
  53. package/http-client/utils.js +20 -0
  54. package/http-client/utils.js.map +1 -0
  55. package/http-server/constants.d.ts +4 -0
  56. package/http-server/constants.js +8 -0
  57. package/http-server/constants.js.map +1 -0
  58. package/http-server/handler/health-check.d.ts +6 -0
  59. package/http-server/handler/health-check.js +15 -0
  60. package/http-server/handler/health-check.js.map +1 -0
  61. package/http-server/middleware/logging.d.ts +10 -0
  62. package/http-server/middleware/logging.js +31 -0
  63. package/http-server/middleware/logging.js.map +1 -0
  64. package/http-server/middleware/metrics.d.ts +23 -0
  65. package/http-server/middleware/metrics.js +60 -0
  66. package/http-server/middleware/metrics.js.map +1 -0
  67. package/http-server/middleware/tracing.d.ts +8 -0
  68. package/http-server/middleware/tracing.js +33 -0
  69. package/http-server/middleware/tracing.js.map +1 -0
  70. package/http-server/template/index.d.ts +1 -0
  71. package/http-server/template/index.js +36 -0
  72. package/http-server/template/index.js.map +1 -0
  73. package/http-server/types.d.ts +33 -0
  74. package/http-server/types.js +3 -0
  75. package/http-server/types.js.map +1 -0
  76. package/http-server/utils.d.ts +30 -0
  77. package/http-server/utils.js +100 -0
  78. package/http-server/utils.js.map +1 -0
  79. package/logger/handler/console.d.ts +8 -0
  80. package/logger/handler/console.js +36 -0
  81. package/logger/handler/console.js.map +1 -0
  82. package/logger/handler/sentry.d.ts +8 -0
  83. package/logger/handler/sentry.js +36 -0
  84. package/logger/handler/sentry.js.map +1 -0
  85. package/logger/index.d.ts +6 -0
  86. package/logger/index.js +31 -0
  87. package/logger/index.js.map +1 -0
  88. package/logger/types.d.ts +24 -0
  89. package/logger/types.js +3 -0
  90. package/logger/types.js.map +1 -0
  91. package/metrics/constants.d.ts +4 -0
  92. package/metrics/constants.js +8 -0
  93. package/metrics/constants.js.map +1 -0
  94. package/metrics/node.d.ts +18 -0
  95. package/metrics/node.js +74 -0
  96. package/metrics/node.js.map +1 -0
  97. package/package.json +44 -63
  98. package/preset/index.d.ts +7 -0
  99. package/preset/index.js +25 -0
  100. package/preset/index.js.map +1 -0
  101. package/preset/node/index.d.ts +15 -0
  102. package/preset/node/index.js +90 -0
  103. package/preset/node/index.js.map +1 -0
  104. package/preset/node/response.d.ts +17 -0
  105. package/preset/node/response.js +78 -0
  106. package/preset/node/response.js.map +1 -0
  107. package/preset/types.d.ts +7 -0
  108. package/preset/types.js +3 -0
  109. package/preset/types.js.map +1 -0
  110. package/saga-runner/index.d.ts +8 -0
  111. package/saga-runner/index.js +79 -0
  112. package/saga-runner/index.js.map +1 -0
  113. package/saga-runner/types.d.ts +10 -0
  114. package/saga-runner/types.js +3 -0
  115. package/saga-runner/types.js.map +1 -0
  116. package/tokens.d.ts +41 -0
  117. package/tokens.js +44 -0
  118. package/tokens.js.map +1 -0
  119. package/tracer/node.d.ts +10 -0
  120. package/tracer/node.js +38 -0
  121. package/tracer/node.js.map +1 -0
  122. package/tracer/types.d.ts +2 -0
  123. package/tracer/types.js +3 -0
  124. package/tracer/types.js.map +1 -0
  125. package/{browser → utils/browser}/analytics/data-layer.d.ts +0 -0
  126. package/{browser → utils/browser}/analytics/data-layer.js +1 -2
  127. package/utils/browser/analytics/data-layer.js.map +1 -0
  128. package/{browser → utils/browser}/analytics/oko.d.ts +0 -0
  129. package/{browser → utils/browser}/analytics/oko.js +6 -7
  130. package/utils/browser/analytics/oko.js.map +1 -0
  131. package/utils/browser/storage/index.d.ts +4 -0
  132. package/utils/browser/storage/index.js +63 -0
  133. package/utils/browser/storage/index.js.map +1 -0
  134. package/utils/number.d.ts +6 -0
  135. package/utils/number.js +13 -0
  136. package/utils/number.js.map +1 -0
  137. package/utils/react/error-handlers/index.d.ts +38 -0
  138. package/utils/react/error-handlers/index.js +47 -0
  139. package/utils/react/error-handlers/index.js.map +1 -0
  140. package/utils/redux/remote-data.d.ts +23 -0
  141. package/utils/redux/remote-data.js +28 -0
  142. package/utils/redux/remote-data.js.map +1 -0
  143. package/utils/redux-saga/take-chain.d.ts +24 -0
  144. package/utils/redux-saga/take-chain.js +56 -0
  145. package/utils/redux-saga/take-chain.js.map +1 -0
  146. package/utils/webpack/module-federation/index.d.ts +21 -0
  147. package/utils/webpack/module-federation/index.js +74 -0
  148. package/utils/webpack/module-federation/index.js.map +1 -0
  149. package/utils/webpack/module-federation/types.d.ts +26 -0
  150. package/utils/webpack/module-federation/types.js +3 -0
  151. package/utils/webpack/module-federation/types.js.map +1 -0
  152. package/utils/webpack/module-federation/utils.d.ts +15 -0
  153. package/utils/webpack/module-federation/utils.js +36 -0
  154. package/utils/webpack/module-federation/utils.js.map +1 -0
  155. package/browser/analytics/data-layer.js.map +0 -1
  156. package/browser/analytics/oko.js.map +0 -1
  157. package/cache/helpers.d.ts +0 -4
  158. package/cache/helpers.js +0 -39
  159. package/cache/helpers.js.map +0 -1
  160. package/cache/local-storage.d.ts +0 -34
  161. package/cache/local-storage.js +0 -90
  162. package/cache/local-storage.js.map +0 -1
  163. package/cache/redis.d.ts +0 -10
  164. package/cache/redis.js +0 -54
  165. package/cache/redis.js.map +0 -1
  166. package/cache/wrap-in-trace.d.ts +0 -8
  167. package/cache/wrap-in-trace.js +0 -68
  168. package/cache/wrap-in-trace.js.map +0 -1
  169. package/config/create.d.ts +0 -8
  170. package/config/create.js +0 -32
  171. package/config/create.js.map +0 -1
  172. package/config/helpers.d.ts +0 -11
  173. package/config/helpers.js +0 -71
  174. package/config/helpers.js.map +0 -1
  175. package/config/validate.d.ts +0 -18
  176. package/config/validate.js +0 -107
  177. package/config/validate.js.map +0 -1
  178. package/container/create-inject.d.ts +0 -7
  179. package/container/create-inject.js +0 -36
  180. package/container/create-inject.js.map +0 -1
  181. package/container/get-dependencies.d.ts +0 -13
  182. package/container/get-dependencies.js +0 -54
  183. package/container/get-dependencies.js.map +0 -1
  184. package/container/is-container.d.ts +0 -7
  185. package/container/is-container.js +0 -17
  186. package/container/is-container.js.map +0 -1
  187. package/container/service-not-found-error.d.ts +0 -10
  188. package/container/service-not-found-error.js +0 -18
  189. package/container/service-not-found-error.js.map +0 -1
  190. package/create-proxy/create-proxy-middleware/index.d.ts +0 -16
  191. package/create-proxy/create-proxy-middleware/index.js +0 -47
  192. package/create-proxy/create-proxy-middleware/index.js.map +0 -1
  193. package/create-proxy/index.d.ts +0 -12
  194. package/create-proxy/index.js +0 -25
  195. package/create-proxy/index.js.map +0 -1
  196. package/create-response-sender/index.d.ts +0 -8
  197. package/create-response-sender/index.js +0 -42
  198. package/create-response-sender/index.js.map +0 -1
  199. package/get-dynamic-data/index.d.ts +0 -8
  200. package/get-dynamic-data/index.js +0 -23
  201. package/get-dynamic-data/index.js.map +0 -1
  202. package/graceful-shutdown/index.d.ts +0 -26
  203. package/graceful-shutdown/index.js +0 -87
  204. package/graceful-shutdown/index.js.map +0 -1
  205. package/helpers/add-error-handling/index.d.ts +0 -1
  206. package/helpers/add-error-handling/index.js +0 -42
  207. package/helpers/add-error-handling/index.js.map +0 -1
  208. package/helpers/api/create-enhancer.d.ts +0 -12
  209. package/helpers/api/create-enhancer.js +0 -52
  210. package/helpers/api/create-enhancer.js.map +0 -1
  211. package/helpers/api/create-instance.d.ts +0 -11
  212. package/helpers/api/create-instance.js +0 -39
  213. package/helpers/api/create-instance.js.map +0 -1
  214. package/helpers/api/middlewares/collect-cookie-middleware.d.ts +0 -10
  215. package/helpers/api/middlewares/collect-cookie-middleware.js +0 -39
  216. package/helpers/api/middlewares/collect-cookie-middleware.js.map +0 -1
  217. package/helpers/api/middlewares/count-api-response-time.d.ts +0 -12
  218. package/helpers/api/middlewares/count-api-response-time.js +0 -39
  219. package/helpers/api/middlewares/count-api-response-time.js.map +0 -1
  220. package/helpers/api/middlewares/error-handlers-middlewares.d.ts +0 -5
  221. package/helpers/api/middlewares/error-handlers-middlewares.js +0 -114
  222. package/helpers/api/middlewares/error-handlers-middlewares.js.map +0 -1
  223. package/helpers/api/middlewares/helpers.d.ts +0 -11
  224. package/helpers/api/middlewares/helpers.js +0 -27
  225. package/helpers/api/middlewares/helpers.js.map +0 -1
  226. package/helpers/api/middlewares/pass-headers-middleware.d.ts +0 -3
  227. package/helpers/api/middlewares/pass-headers-middleware.js +0 -27
  228. package/helpers/api/middlewares/pass-headers-middleware.js.map +0 -1
  229. package/helpers/api/middlewares/prepare-request-headers.d.ts +0 -5
  230. package/helpers/api/middlewares/prepare-request-headers.js +0 -20
  231. package/helpers/api/middlewares/prepare-request-headers.js.map +0 -1
  232. package/helpers/api/middlewares/set-http-agents-middleware.d.ts +0 -15
  233. package/helpers/api/middlewares/set-http-agents-middleware.js +0 -34
  234. package/helpers/api/middlewares/set-http-agents-middleware.js.map +0 -1
  235. package/helpers/api/middlewares/stages-trace-middleware.d.ts +0 -17
  236. package/helpers/api/middlewares/stages-trace-middleware.js +0 -57
  237. package/helpers/api/middlewares/stages-trace-middleware.js.map +0 -1
  238. package/helpers/api/middlewares/trace-request-middleware.d.ts +0 -24
  239. package/helpers/api/middlewares/trace-request-middleware.js +0 -69
  240. package/helpers/api/middlewares/trace-request-middleware.js.map +0 -1
  241. package/helpers/api/server-adapter/__fixtures__/fake-keys.d.ts +0 -10
  242. package/helpers/api/server-adapter/__fixtures__/fake-keys.js +0 -61
  243. package/helpers/api/server-adapter/__fixtures__/fake-keys.js.map +0 -1
  244. package/helpers/api/server-adapter/constants.d.ts +0 -5
  245. package/helpers/api/server-adapter/constants.js +0 -16
  246. package/helpers/api/server-adapter/constants.js.map +0 -1
  247. package/helpers/api/server-adapter/helpers.d.ts +0 -26
  248. package/helpers/api/server-adapter/helpers.js +0 -208
  249. package/helpers/api/server-adapter/helpers.js.map +0 -1
  250. package/helpers/api/server-adapter/index.d.ts +0 -10
  251. package/helpers/api/server-adapter/index.js +0 -118
  252. package/helpers/api/server-adapter/index.js.map +0 -1
  253. package/helpers/development/use-dot-env.d.ts +0 -6
  254. package/helpers/development/use-dot-env.js +0 -11
  255. package/helpers/development/use-dot-env.js.map +0 -1
  256. package/helpers/get-params/index.d.ts +0 -4
  257. package/helpers/get-params/index.js +0 -51
  258. package/helpers/get-params/index.js.map +0 -1
  259. package/helpers/http/request-getters.d.ts +0 -5
  260. package/helpers/http/request-getters.js +0 -49
  261. package/helpers/http/request-getters.js.map +0 -1
  262. package/helpers/http/statuses-validator.d.ts +0 -3
  263. package/helpers/http/statuses-validator.js +0 -25
  264. package/helpers/http/statuses-validator.js.map +0 -1
  265. package/helpers/logger/create-pino-instance/index.d.ts +0 -6
  266. package/helpers/logger/create-pino-instance/index.js +0 -39
  267. package/helpers/logger/create-pino-instance/index.js.map +0 -1
  268. package/helpers/logger/format-time/index.d.ts +0 -6
  269. package/helpers/logger/format-time/index.js +0 -9
  270. package/helpers/logger/format-time/index.js.map +0 -1
  271. package/helpers/metrics/index.d.ts +0 -23
  272. package/helpers/metrics/index.js +0 -42
  273. package/helpers/metrics/index.js.map +0 -1
  274. package/helpers/prometheus/index.d.ts +0 -4
  275. package/helpers/prometheus/index.js +0 -13
  276. package/helpers/prometheus/index.js.map +0 -1
  277. package/helpers/prometheus/measure-middleware.d.ts +0 -5
  278. package/helpers/prometheus/measure-middleware.js +0 -69
  279. package/helpers/prometheus/measure-middleware.js.map +0 -1
  280. package/helpers/prometheus/metric-adapter.d.ts +0 -36
  281. package/helpers/prometheus/metric-adapter.js +0 -98
  282. package/helpers/prometheus/metric-adapter.js.map +0 -1
  283. package/helpers/react/error-handlers/index.d.ts +0 -40
  284. package/helpers/react/error-handlers/index.js +0 -52
  285. package/helpers/react/error-handlers/index.js.map +0 -1
  286. package/helpers/redux/constants.d.ts +0 -5
  287. package/helpers/redux/constants.js +0 -14
  288. package/helpers/redux/constants.js.map +0 -1
  289. package/helpers/redux/create-compose-middleware.d.ts +0 -15
  290. package/helpers/redux/create-compose-middleware.js +0 -23
  291. package/helpers/redux/create-compose-middleware.js.map +0 -1
  292. package/helpers/redux/get-dev-compose-creator.d.ts +0 -6
  293. package/helpers/redux/get-dev-compose-creator.js +0 -13
  294. package/helpers/redux/get-dev-compose-creator.js.map +0 -1
  295. package/helpers/redux/prepare-on-ready.d.ts +0 -9
  296. package/helpers/redux/prepare-on-ready.js +0 -16
  297. package/helpers/redux/prepare-on-ready.js.map +0 -1
  298. package/helpers/redux/remote-data.d.ts +0 -40
  299. package/helpers/redux/remote-data.js +0 -91
  300. package/helpers/redux/remote-data.js.map +0 -1
  301. package/helpers/redux/selector/statuses.d.ts +0 -23
  302. package/helpers/redux/selector/statuses.js +0 -34
  303. package/helpers/redux/selector/statuses.js.map +0 -1
  304. package/helpers/redux/wait-on-store-readiness.d.ts +0 -11
  305. package/helpers/redux/wait-on-store-readiness.js +0 -29
  306. package/helpers/redux/wait-on-store-readiness.js.map +0 -1
  307. package/helpers/render/get-react-markup-data.d.ts +0 -14
  308. package/helpers/render/get-react-markup-data.js +0 -20
  309. package/helpers/render/get-react-markup-data.js.map +0 -1
  310. package/helpers/render/index.d.ts +0 -21
  311. package/helpers/render/index.js +0 -72
  312. package/helpers/render/index.js.map +0 -1
  313. package/helpers/render/render-app.d.ts +0 -12
  314. package/helpers/render/render-app.js +0 -12
  315. package/helpers/render/render-app.js.map +0 -1
  316. package/helpers/saga/__fixtures__/do-safe-request.d.ts +0 -43
  317. package/helpers/saga/__fixtures__/do-safe-request.js +0 -50
  318. package/helpers/saga/__fixtures__/do-safe-request.js.map +0 -1
  319. package/helpers/saga/cache-result.d.ts +0 -46
  320. package/helpers/saga/cache-result.js +0 -71
  321. package/helpers/saga/cache-result.js.map +0 -1
  322. package/helpers/saga/create-store.d.ts +0 -20
  323. package/helpers/saga/create-store.js +0 -106
  324. package/helpers/saga/create-store.js.map +0 -1
  325. package/helpers/saga/do-safe-request.d.ts +0 -38
  326. package/helpers/saga/do-safe-request.js +0 -45
  327. package/helpers/saga/do-safe-request.js.map +0 -1
  328. package/helpers/saga/safe-request.d.ts +0 -7
  329. package/helpers/saga/safe-request.js +0 -15
  330. package/helpers/saga/safe-request.js.map +0 -1
  331. package/helpers/saga/take-chain.d.ts +0 -20
  332. package/helpers/saga/take-chain.js +0 -56
  333. package/helpers/saga/take-chain.js.map +0 -1
  334. package/helpers/tracer/create-child-tracing-middleware.d.ts +0 -7
  335. package/helpers/tracer/create-child-tracing-middleware.js +0 -40
  336. package/helpers/tracer/create-child-tracing-middleware.js.map +0 -1
  337. package/helpers/tracer/index.d.ts +0 -24
  338. package/helpers/tracer/index.js +0 -144
  339. package/helpers/tracer/index.js.map +0 -1
  340. package/helpers/utils/check-feature-by-segment.d.ts +0 -2
  341. package/helpers/utils/check-feature-by-segment.js +0 -31
  342. package/helpers/utils/check-feature-by-segment.js.map +0 -1
  343. package/helpers/utils/format-object-keys.d.ts +0 -6
  344. package/helpers/utils/format-object-keys.js +0 -27
  345. package/helpers/utils/format-object-keys.js.map +0 -1
  346. package/helpers/utils/get-ms-from-hrt.d.ts +0 -2
  347. package/helpers/utils/get-ms-from-hrt.js +0 -22
  348. package/helpers/utils/get-ms-from-hrt.js.map +0 -1
  349. package/helpers/utils/is-match-pattern-list.d.ts +0 -8
  350. package/helpers/utils/is-match-pattern-list.js +0 -16
  351. package/helpers/utils/is-match-pattern-list.js.map +0 -1
  352. package/helpers/utils/is-not-empty-array.d.ts +0 -2
  353. package/helpers/utils/is-not-empty-array.js +0 -12
  354. package/helpers/utils/is-not-empty-array.js.map +0 -1
  355. package/helpers/utils/is-not-empty-string.d.ts +0 -2
  356. package/helpers/utils/is-not-empty-string.js +0 -15
  357. package/helpers/utils/is-not-empty-string.js.map +0 -1
  358. package/helpers/utils/is-numeric.d.ts +0 -7
  359. package/helpers/utils/is-numeric.js +0 -16
  360. package/helpers/utils/is-numeric.js.map +0 -1
  361. package/helpers/utils/wrap-in-measure-event.d.ts +0 -9
  362. package/helpers/utils/wrap-in-measure-event.js +0 -50
  363. package/helpers/utils/wrap-in-measure-event.js.map +0 -1
  364. package/logger/create-logger-middleware/index.d.ts +0 -14
  365. package/logger/create-logger-middleware/index.js +0 -41
  366. package/logger/create-logger-middleware/index.js.map +0 -1
  367. package/logger/create-sentry-instance/index.d.ts +0 -29
  368. package/logger/create-sentry-instance/index.js +0 -63
  369. package/logger/create-sentry-instance/index.js.map +0 -1
  370. package/logger/create-sentry-middleware/index.d.ts +0 -14
  371. package/logger/create-sentry-middleware/index.js +0 -19
  372. package/logger/create-sentry-middleware/index.js.map +0 -1
  373. package/logger/handler-creators/index.d.ts +0 -5
  374. package/logger/handler-creators/index.js +0 -41
  375. package/logger/handler-creators/index.js.map +0 -1
  376. package/logger/initialize-sentry-creator/index.d.ts +0 -17
  377. package/logger/initialize-sentry-creator/index.js +0 -35
  378. package/logger/initialize-sentry-creator/index.js.map +0 -1
  379. package/logger/sentry-logger/index.d.ts +0 -9
  380. package/logger/sentry-logger/index.js +0 -36
  381. package/logger/sentry-logger/index.js.map +0 -1
  382. package/module-federation/__example__/webpack-config.example.d.ts +0 -366
  383. package/module-federation/__example__/webpack-config.example.js +0 -58
  384. package/module-federation/__example__/webpack-config.example.js.map +0 -1
  385. package/module-federation/enhanced-module-federation-plugin.d.ts +0 -69
  386. package/module-federation/enhanced-module-federation-plugin.js +0 -97
  387. package/module-federation/enhanced-module-federation-plugin.js.map +0 -1
  388. package/module-federation/utils/index.d.ts +0 -16
  389. package/module-federation/utils/index.js +0 -33
  390. package/module-federation/utils/index.js.map +0 -1
  391. package/observe-middleware/index.d.ts +0 -9
  392. package/observe-middleware/index.js +0 -67
  393. package/observe-middleware/index.js.map +0 -1
  394. package/set-header-middleware/create.d.ts +0 -10
  395. package/set-header-middleware/create.js +0 -16
  396. package/set-header-middleware/create.js.map +0 -1
  397. package/src/browser/analytics/data-layer.ts +0 -12
  398. package/src/browser/analytics/oko.ts +0 -42
  399. package/src/cache/helpers.js +0 -32
  400. package/src/cache/local-storage.ts +0 -92
  401. package/src/cache/redis.js +0 -79
  402. package/src/cache/wrap-in-trace.js +0 -57
  403. package/src/config/create.js +0 -33
  404. package/src/config/helpers.js +0 -71
  405. package/src/config/validate.js +0 -114
  406. package/src/container/create-inject.js +0 -32
  407. package/src/container/get-dependencies.js +0 -46
  408. package/src/container/index.js +0 -188
  409. package/src/container/is-container.js +0 -14
  410. package/src/container/service-not-found-error.js +0 -14
  411. package/src/create-proxy/create-proxy-middleware/index.js +0 -47
  412. package/src/create-proxy/index.js +0 -27
  413. package/src/create-response-sender/index.js +0 -48
  414. package/src/get-dynamic-data/index.js +0 -26
  415. package/src/graceful-shutdown/index.js +0 -97
  416. package/src/helpers/add-error-handling/index.js +0 -24
  417. package/src/helpers/api/create-enhancer.js +0 -52
  418. package/src/helpers/api/create-instance.js +0 -42
  419. package/src/helpers/api/middlewares/collect-cookie-middleware.js +0 -27
  420. package/src/helpers/api/middlewares/count-api-response-time.js +0 -31
  421. package/src/helpers/api/middlewares/error-handlers-middlewares.js +0 -124
  422. package/src/helpers/api/middlewares/helpers.js +0 -26
  423. package/src/helpers/api/middlewares/pass-headers-middleware.js +0 -19
  424. package/src/helpers/api/middlewares/prepare-request-headers.js +0 -18
  425. package/src/helpers/api/middlewares/set-http-agents-middleware.js +0 -22
  426. package/src/helpers/api/middlewares/stages-trace-middleware.js +0 -46
  427. package/src/helpers/api/middlewares/trace-request-middleware.ts +0 -86
  428. package/src/helpers/api/server-adapter/__fixtures__/fake-keys.js +0 -58
  429. package/src/helpers/api/server-adapter/constants.js +0 -12
  430. package/src/helpers/api/server-adapter/helpers.js +0 -244
  431. package/src/helpers/api/server-adapter/index.js +0 -155
  432. package/src/helpers/development/use-dot-env.js +0 -9
  433. package/src/helpers/get-params/index.js +0 -59
  434. package/src/helpers/http/request-getters.js +0 -42
  435. package/src/helpers/http/statuses-validator.js +0 -20
  436. package/src/helpers/logger/create-pino-instance/index.js +0 -41
  437. package/src/helpers/logger/format-time/index.js +0 -6
  438. package/src/helpers/metrics/index.js +0 -40
  439. package/src/helpers/prometheus/index.js +0 -9
  440. package/src/helpers/prometheus/measure-middleware.js +0 -73
  441. package/src/helpers/prometheus/metric-adapter.js +0 -99
  442. package/src/helpers/react/error-handlers/index.tsx +0 -68
  443. package/src/helpers/redux/constants.js +0 -10
  444. package/src/helpers/redux/create-compose-middleware.js +0 -24
  445. package/src/helpers/redux/get-dev-compose-creator.js +0 -9
  446. package/src/helpers/redux/prepare-on-ready.js +0 -16
  447. package/src/helpers/redux/remote-data.js +0 -124
  448. package/src/helpers/redux/selector/statuses.js +0 -30
  449. package/src/helpers/redux/wait-on-store-readiness.js +0 -40
  450. package/src/helpers/render/get-react-markup-data.js +0 -18
  451. package/src/helpers/render/index.js +0 -69
  452. package/src/helpers/render/render-app.js +0 -15
  453. package/src/helpers/saga/__fixtures__/do-safe-request.js +0 -49
  454. package/src/helpers/saga/cache-result.js +0 -77
  455. package/src/helpers/saga/create-store.js +0 -102
  456. package/src/helpers/saga/do-safe-request.js +0 -47
  457. package/src/helpers/saga/safe-request.js +0 -11
  458. package/src/helpers/saga/take-chain.js +0 -53
  459. package/src/helpers/tracer/create-child-tracing-middleware.js +0 -42
  460. package/src/helpers/tracer/index.js +0 -171
  461. package/src/helpers/utils/check-feature-by-segment.js +0 -32
  462. package/src/helpers/utils/format-object-keys.js +0 -23
  463. package/src/helpers/utils/get-ms-from-hrt.js +0 -16
  464. package/src/helpers/utils/is-match-pattern-list.js +0 -13
  465. package/src/helpers/utils/is-not-empty-array.js +0 -8
  466. package/src/helpers/utils/is-not-empty-string.js +0 -11
  467. package/src/helpers/utils/is-numeric.ts +0 -12
  468. package/src/helpers/utils/wrap-in-measure-event.js +0 -35
  469. package/src/logger/create-logger-middleware/index.js +0 -46
  470. package/src/logger/create-sentry-instance/index.js +0 -74
  471. package/src/logger/create-sentry-middleware/index.js +0 -16
  472. package/src/logger/handler-creators/index.js +0 -38
  473. package/src/logger/initialize-sentry-creator/index.js +0 -43
  474. package/src/logger/sentry-logger/index.js +0 -33
  475. package/src/module-federation/__example__/webpack-config.example.js +0 -64
  476. package/src/module-federation/enhanced-module-federation-plugin.js +0 -119
  477. package/src/module-federation/utils/index.js +0 -39
  478. package/src/observe-middleware/index.js +0 -70
  479. package/src/set-header-middleware/create.js +0 -17
@@ -1,86 +0,0 @@
1
- import type { AxiosRequestConfig } from 'axios';
2
- import type { Middleware } from 'middleware-axios';
3
- import { Tracer, Tags, FORMAT_HTTP_HEADERS, SpanContext } from 'opentracing';
4
-
5
- /**
6
- * Создаёт middleware для трассировки запросов в API.
7
- * @param options Параметры для создания middleware.
8
- * @param options.tracer Объект трейсера.
9
- * @param options.context Объект родительского контекста.
10
- * @return Middleware для трассировки запросов в API.
11
- */
12
- const createTraceRequestMiddleware = ({ tracer, context }: {
13
- tracer: Tracer;
14
- context: SpanContext;
15
- }): Middleware<any> => async function (config, next, defaults) {
16
- const { method, url, foundId } = getRequestInfo(config, defaults);
17
-
18
- const span = tracer.startSpan(`HTTP ${method} ${url}`, {
19
- childOf: context,
20
- });
21
-
22
- if (!config.headers) {
23
- config.headers = {};
24
- }
25
-
26
- span.addTags({
27
- [Tags.HTTP_URL]: url,
28
- [Tags.HTTP_METHOD]: method,
29
- 'request.params': { ...config.params },
30
- 'request.headers': { ...config.headers },
31
-
32
- // если нашли id - добавляем в теги
33
- ...(foundId && { 'request.id': foundId }),
34
- });
35
-
36
- tracer.inject(span, FORMAT_HTTP_HEADERS, config.headers);
37
-
38
- const response = await next(config);
39
-
40
- span.setTag(Tags.HTTP_STATUS_CODE, response.status);
41
- span.finish();
42
- };
43
-
44
- /**
45
- * Формирует базовые данные запроса.
46
- * Заменяет первое найденное число в url на "{id}", возвращая его в результате.
47
- * @param config Axios-конфиг запроса.
48
- * @param defaults Базовый конфиг экземпляра Axios.
49
- * @return Базовые данные запроса.
50
- */
51
- const getRequestInfo = (
52
- config: AxiosRequestConfig,
53
- defaults: AxiosRequestConfig
54
- ): {
55
- method: string;
56
- url: string;
57
- foundId?: number;
58
- } => {
59
- const method = (config.method || 'GET').toUpperCase();
60
- const baseURL = config.baseURL || defaults.baseURL || '';
61
-
62
- // ВАЖНО: абстрагируем id только в url игнорируя baseURL
63
- const [url, foundId] = hideFirstId(config.url || defaults.url || '');
64
- const readyUrl = `${baseURL}${url}`;
65
-
66
- return { method, url: readyUrl, foundId };
67
- };
68
-
69
- /**
70
- * Преобразует строку вида:
71
- * "/api/v2/something/123456/some-bff/123456"
72
- * в строку вида:
73
- * "/api/v2/something/{id}/some-bff/123456"
74
- * и возвращает кортеж с этой строкой и вырезанным числом в случае если оно найдено.
75
- * @param url Url.
76
- * @return Кортеж со строкой и результатом поиска числа.
77
- */
78
- export const hideFirstId = (url: string): [string, number | undefined] => {
79
- const found = /\d{2,}/.exec(url);
80
-
81
- return found
82
- ? [url.replace(found[0], '{id}'), Number(found[0])]
83
- : [url, undefined];
84
- };
85
-
86
- export default createTraceRequestMiddleware;
@@ -1,58 +0,0 @@
1
- /**
2
- * Сертификат TLS для https.
3
- * @type {string}
4
- */
5
- export const fakeCert = `-----BEGIN CERTIFICATE-----
6
- MIIDazCCAlOgAwIBAgIUAufH+Il0B8cP7bvU8PedE9F0b9MwDQYJKoZIhvcNAQEL
7
- BQAwRTELMAkGA1UEBhMCUlUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
8
- GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMDAyMTUwNzM5MzRaFw0yMDAz
9
- MTYwNzM5MzRaMEUxCzAJBgNVBAYTAlJVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
10
- HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
11
- AQUAA4IBDwAwggEKAoIBAQDFuY/Pld4KGeLtvbFrnwjjqPHdYiJw6UM6GjEuzAHN
12
- fLjYjzCxbsae/UO+QyyLlZ0apQKHiznBga8Bc3JNZQ2O9xZ9BTUnJdvfq2ZgyGE8
13
- 9l4EWOd6I3MBLdzby9+NRs/mNSB10OkhOyYwcbjL8aR6QHzT570bg2Ab8mcLkKit
14
- aPD6Jtk+iOMdRdudKIcv3fvBxKPwYPsvDtpEaSIjysimQKF40uk7yTu1r0liuknE
15
- CObowqiH1zt+OTCutgpIAo7MuuE8ga7fQlq9IzlgIpgl2W12NjEYDB87jQ3FT7Dn
16
- qy5uZq4r9b5oQ4tRLgsP/yVLac0vCzwoA8EB2+0bxsiVAgMBAAGjUzBRMB0GA1Ud
17
- DgQWBBSQYsuIbKB5tOmH2hbLaWKkrfzLEzAfBgNVHSMEGDAWgBSQYsuIbKB5tOmH
18
- 2hbLaWKkrfzLEzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBp
19
- HzTKEe5F81Mdqeb84/+TeR7H6GTMXE8jl/wIXprkapG7FizRQ/nlGQSYHJ/U9R2w
20
- lTvnr0logj2f4Hz1WdyRCaE5BMTwSVPlbIPjfXBzvB140jlJpGzr5qbnMkwjymZT
21
- nRydKP1DdwlYnl6BwgZ7xGCyB2k9bWSfYu9918AXE/AKcan5siHlYWhobP1uVMIl
22
- JksaKH9nnQ/oZK/KZA1YoTc47ZqIGbNnHHFLuQ7BEClXRL4ixxrLLK2Kjxtd6PXD
23
- r1LpsSnEDuQ3MzzeKNduPolMdct8ioKJ2OA81ts/cImB4t80TdWujbL/oUXkHbdN
24
- YyJK3ZaLm/5uzOOHIuSu
25
- -----END CERTIFICATE-----`;
26
-
27
- /**
28
- * Ключ TLS для https.
29
- * @type {string}
30
- */
31
- export const fakeKey = `-----BEGIN PRIVATE KEY-----
32
- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDFuY/Pld4KGeLt
33
- vbFrnwjjqPHdYiJw6UM6GjEuzAHNfLjYjzCxbsae/UO+QyyLlZ0apQKHiznBga8B
34
- c3JNZQ2O9xZ9BTUnJdvfq2ZgyGE89l4EWOd6I3MBLdzby9+NRs/mNSB10OkhOyYw
35
- cbjL8aR6QHzT570bg2Ab8mcLkKitaPD6Jtk+iOMdRdudKIcv3fvBxKPwYPsvDtpE
36
- aSIjysimQKF40uk7yTu1r0liuknECObowqiH1zt+OTCutgpIAo7MuuE8ga7fQlq9
37
- IzlgIpgl2W12NjEYDB87jQ3FT7Dnqy5uZq4r9b5oQ4tRLgsP/yVLac0vCzwoA8EB
38
- 2+0bxsiVAgMBAAECggEAEYBoW16PpeM+s/6LetQ77DLjHc527/mlyrnQyqyiKDc3
39
- AWxDSiFdEWunmGrHwZ8/pcEfZTIMrbU18XHvlywvtAzo/637U3jFapn4WO7DtKq2
40
- Dbp02tnSbzNJDmeQZSf0dRMUyXjxedCLg9Q9IEhGX8/ffL5RfeL2GeMt/dcTJy4v
41
- 4Oo6GXP3YH/Ts+RxsHC9gWg3HukqwEycRYhaBCXSR4GEZE2wqhzkcVf9PxHpzHkT
42
- ktISa55bEMwhGtQewmXlCqlSiISLHQkJvkP83GOh6k/14jsPrToPasA+hBGNfj9K
43
- O+6fi4pxxmM8N7DgkLRHm9WQbYq5ZCCCklqkFxVJjQKBgQDxWjyC97U41dgFIoes
44
- JA++Nb39uyIHyh7s+JQt5miBNvns6KSKLqVql5lPeAa8Mj97orvLQUW/T0ogMTUJ
45
- JcwKTLF4TNqYMPKupoZk3fnrgGuclTVjjU2hSqrzp7XFP+vLNuktkVg2HoRrgT29
46
- qgDTQThZZQTTqEtgbIseaeqBXwKBgQDRuYGdeRaeTJVTVgmvAlfAvWuNUBvLNxHh
47
- 0ObCLIiFbF9g8bSd/WeqLyUs1zBQslxIXvnhIO9dPcDGqX3u+SSUzcc//YGYFvAB
48
- 6I1sTNPi+RsEz9bAM6/EpWQkbaaPpwHITz0YXGReou76nRirl0s5zqdbYWKkvk0n
49
- ZXgQVCe2iwKBgFv20k/lKzx431M1kRTauNT1jWt9Pr5RGe+Z2HyU6wUxeZH4I5oz
50
- o/w1v8k0JvzW+LGXlI8iU/1NrSUPGvJdYJ4cExOP1Utge1hpQ5RzsKM3z8leYXWJ
51
- hicLWJB3Ox/p92L7jWY7l60ne7WrDWeTu7TDiUEm6OvtmKspMOlp2l1pAoGBAMG1
52
- SdadJRsJOVNDwKX4z/yh+FkJiOJl9wpP3ROz9lTmCCKOnXjfuYQjD38fMu0WEM53
53
- iu05clz40LmtizfSvssCVerwx2YmqX/Zv+Yr//lAhIgpP/0+wDYtXRWYgaNlaewN
54
- 5CxACiSu8XRg7YxvrXezPDjW9jmb279rpT3PvO6JAoGAMN3sEr5Utws14g3BDaIc
55
- 9jHvYKKc05oqRbnfHkJmQBaphfj8DYwIgVrHc63RTadp6eK50gpEMk9cZiw3xu7I
56
- YQsOyH4x06NoPGelxkhX/rxOXOVtNmCNpMjgxoQJRm3WXNza476l3xDk2BltfTL6
57
- aawhzRoba6tWmXzyog3whEs=
58
- -----END PRIVATE KEY-----`;
@@ -1,12 +0,0 @@
1
- /**
2
- * Стадии запроса к API.
3
- * @type {Object}
4
- */
5
- export const REQUEST_STAGES = Object.freeze({
6
- start: 'start:request',
7
- dnsLookupFinish: 'finish:DNS Lookup',
8
- tcpConnectionConnect: 'finish:TCP Connection',
9
- tlsHandshakeFinish: 'finish:TLS Handshake',
10
- firstByteReceived: 'finish:Time to First Byte',
11
- end: 'finish:Data Loading',
12
- });
@@ -1,244 +0,0 @@
1
- import isArrayBuffer from 'lodash/isArrayBuffer';
2
- import isFunction from 'lodash/isFunction';
3
- import isString from 'lodash/isString';
4
- import pipe from 'lodash/fp/pipe';
5
- import get from 'lodash/fp/get';
6
- import eq from 'lodash/fp/eq';
7
-
8
- import { http as httpFollow, https as httpsFollow } from 'follow-redirects';
9
- import http from 'http';
10
- import https from 'https';
11
- import zlib from 'zlib';
12
-
13
- /**
14
- * Проверяет, что переданный аргумент поддерживает метод экземпляра Stream.
15
- */
16
- export const isStream = pipe(
17
- get('pipe'),
18
- isFunction
19
- );
20
-
21
- /**
22
- * Проверяет, что переданный аргумент поддерживает метод экземпляра EventEmitter.
23
- */
24
- export const isEventEmitter = pipe(
25
- get('emit'),
26
- isFunction
27
- );
28
-
29
- /**
30
- * Проверяет, что переданный аргумент соответствует протоколу `https`.
31
- */
32
- export const isHttps = eq('https:');
33
-
34
- /**
35
- * Возвращает экземпляр Buffer созданный из переданных данных.
36
- * @param {Buffer|ArrayBuffer|string} data Данные.
37
- * @return {Buffer|undefined} Данные.
38
- */
39
- export const prepareDataBuffer = data => {
40
- let result;
41
- if (isString(data)) {
42
- result = Buffer.from(data, 'utf-8');
43
- } else if (Buffer.isBuffer(data)) {
44
- result = data;
45
- } else if (isArrayBuffer(data)) {
46
- result = Buffer.from(new Uint8Array(data));
47
- }
48
- return result;
49
- };
50
-
51
- /**
52
- * Создает экземпляр URL из объединенного пути с базой. Если путь абсолютный - использует только его.
53
- * @param {string} input Путь для объединения.
54
- * @param {string} base База.
55
- * @return {URL} Объект URL.
56
- */
57
- export const createConcatURL = (input, base) => {
58
- const cleanInput = input ? input.replace(/^\/(?!\/)/, '') : '';
59
- const cleanBase = base ? base.replace(/\/?$/, '/') : undefined;
60
- return new URL(cleanInput, cleanBase);
61
- };
62
-
63
- /**
64
- * Возвращает подходящий интерфейс транспорта в зависимости от конфигурации.
65
- * @param {Object} config Конфигурация.
66
- * @param {string} config.url Относительный URL запроса.
67
- * @param {string} config.baseURL Базовый URL.
68
- * @param {Object} config.transport Кастомный транспорт, переданный в конфигурации.
69
- * @param {number} config.maxRedirects Максимальное количество редиректов.
70
- * @return {Object} Транспорт.
71
- */
72
- export const createTransport = ({
73
- url,
74
- baseURL,
75
- transport,
76
- maxRedirects,
77
- }) => {
78
- const { protocol } = createConcatURL(url, baseURL);
79
- const isHttpsRequest = isHttps(protocol);
80
-
81
- let result;
82
- if (transport) {
83
- result = transport;
84
- } else if (maxRedirects === 0) {
85
- result = isHttpsRequest ? https : http;
86
- } else {
87
- result = isHttpsRequest ? httpsFollow : httpFollow;
88
- }
89
- return result;
90
- };
91
-
92
- /**
93
- * Объединяет имеющиеся параметры запроса с переданными и возвращает сериализованный путь с параметрами запроса.
94
- * @param {URL} url Экземпляр URL.
95
- * @param {Object|string|URLSearchParams} [params] Параметры запроса.
96
- * @param {Function} [paramsSerializer] Функция для сериализации переданных параметров.
97
- * @return {string} Путь с параметрами.
98
- */
99
- export const buildRequestPath = (url, params, paramsSerializer) => {
100
- const outlineSearchParams = new URLSearchParams(
101
- isFunction(paramsSerializer)
102
- ? paramsSerializer(params)
103
- : params
104
- );
105
- outlineSearchParams.forEach((value, name) => url.searchParams.append(name, value));
106
- return url.href.replace(url.origin, '');
107
- };
108
-
109
- /**
110
- * Формирует объект опций для запроса на основании переданной конфигурации.
111
- * @param {Object} config Конфигурация.
112
- * @return {Object} Опции.
113
- */
114
- export const createOptions = ({
115
- url,
116
- baseURL,
117
- method,
118
- headers,
119
- httpAgent,
120
- httpsAgent,
121
- params,
122
- paramsSerializer,
123
- maxRedirects,
124
- maxContentLength,
125
- }) => {
126
- const fullURL = createConcatURL(url, baseURL);
127
- const {
128
- protocol,
129
- hostname,
130
- port,
131
- } = fullURL;
132
-
133
- const agent = isHttps(protocol) ? httpsAgent : httpAgent;
134
-
135
- const result = {
136
- path: buildRequestPath(fullURL, params, paramsSerializer),
137
- method: method.toUpperCase(),
138
- agents: { http: httpAgent, https: httpsAgent },
139
- headers,
140
- agent,
141
- hostname,
142
- port: Number(port) || undefined,
143
- };
144
-
145
- if (maxRedirects) {
146
- result.maxRedirects = maxRedirects;
147
- }
148
-
149
- if (maxContentLength && maxContentLength > -1) {
150
- result.maxBodyLength = maxContentLength;
151
- }
152
- return result;
153
- };
154
-
155
- /**
156
- * Возвращает декомпресированный запрос либо исходный запрос, если не было заголовка о компрессии.
157
- * @param {import('stream').Readable} response Запрос.
158
- * @return {import('stream').Readable} Обработанный запрос.
159
- */
160
- export const uncompressResponse = response => {
161
- const isCompress = [
162
- 'gzip',
163
- 'compress',
164
- 'deflate',
165
- ].includes(response.headers['content-encoding']);
166
-
167
- return isCompress && response.statusCode !== 204
168
- ? response.pipe(zlib.createUnzip())
169
- : response;
170
- };
171
-
172
- /**
173
- * Возвращает ошибку, дополненную свойствами из запроса.
174
- * @param {Error} error Ошибка.
175
- * @param {Object} config Конфиг.
176
- * @param {string} code Код ошибки.
177
- * @param {import('http').ClientRequest} request Запрос.
178
- * @param {import('http').IncomingMessage} response Ответ.
179
- * @return {Error} Расширенная ошибка.
180
- */
181
- export const enhanceError = (error, config, code, request, response) => {
182
- const enhance = {
183
- config,
184
- request,
185
- response,
186
- isAxiosError: true,
187
-
188
- /**
189
- * Возвращает объект для передачи в JSON.stringify().
190
- * @return {Object} Объект.
191
- */
192
- toJSON () {
193
- return {
194
- message: this.message,
195
- name: this.name,
196
- description: this.description,
197
- number: this.number,
198
- fileName: this.fileName,
199
- lineNumber: this.lineNumber,
200
- columnNumber: this.columnNumber,
201
- stack: this.stack,
202
- config: this.config,
203
- code: this.code,
204
- };
205
- },
206
- };
207
-
208
- if (code) {
209
- enhance.code = code;
210
- }
211
-
212
- return Object.assign(error, enhance);
213
- };
214
-
215
- /**
216
- * Создает расширенную ошибку из текста и параметров запроса.
217
- * @param {string} message Текст ошибки.
218
- * @param {Array} rest Параметры запроса.
219
- * @return {Error} Ошибка.
220
- */
221
- export const createError = (message, ...rest) => enhanceError(new Error(message), ...rest);
222
-
223
- /**
224
- * Валидирует код ответа и разрешает промис.
225
- * @param {Function} resolve Разрешает промис.
226
- * @param {Function} reject Отклоняет промис.
227
- * @param {import('http').IncomingMessage} response Ответ на запрос.
228
- */
229
- export const settle = (resolve, reject, response) => {
230
- const { status, config, request } = response;
231
- const { validateStatus } = config || {};
232
-
233
- if (!validateStatus || validateStatus(status)) {
234
- resolve(response);
235
- } else {
236
- reject(createError(
237
- `Request failed with status code ${status}`,
238
- config,
239
- null,
240
- request,
241
- response
242
- ));
243
- }
244
- };
@@ -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;