@sima-land/isomorph 10.0.0 → 11.0.0-alpha.1
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.
- package/cache/types.d.ts +7 -0
- package/cache/types.js +3 -0
- package/cache/types.js.map +1 -0
- package/config/browser.d.ts +6 -0
- package/config/browser.js +13 -0
- package/config/browser.js.map +1 -0
- package/config/index.d.ts +7 -0
- package/config/index.js +20 -0
- package/config/index.js.map +1 -0
- package/config/node.d.ts +6 -0
- package/config/node.js +19 -0
- package/config/node.js.map +1 -0
- package/config/types.d.ts +7 -0
- package/config/types.js +3 -0
- package/config/types.js.map +1 -0
- package/config/utils.d.ts +5 -0
- package/config/utils.js +12 -0
- package/config/utils.js.map +1 -0
- package/container/application.d.ts +25 -0
- package/container/application.js +63 -0
- package/container/application.js.map +1 -0
- package/container/index.d.ts +16 -13
- package/container/index.js +60 -161
- package/container/index.js.map +1 -1
- package/container/types.d.ts +14 -0
- package/container/types.js +3 -0
- package/container/types.js.map +1 -0
- package/error-tracker/browser.d.ts +8 -0
- package/error-tracker/browser.js +40 -0
- package/error-tracker/browser.js.map +1 -0
- package/error-tracker/node.d.ts +8 -0
- package/error-tracker/node.js +40 -0
- package/error-tracker/node.js.map +1 -0
- package/error-tracker/types.d.ts +18 -0
- package/error-tracker/types.js +3 -0
- package/error-tracker/types.js.map +1 -0
- package/error-tracker/utils.d.ts +12 -0
- package/error-tracker/utils.js +19 -0
- package/error-tracker/utils.js.map +1 -0
- package/http-client/middleware/cookie.d.ts +19 -0
- package/http-client/middleware/cookie.js +62 -0
- package/http-client/middleware/cookie.js.map +1 -0
- package/http-client/middleware/tracing.d.ts +32 -0
- package/http-client/middleware/tracing.js +67 -0
- package/http-client/middleware/tracing.js.map +1 -0
- package/http-client/types.d.ts +6 -0
- package/http-client/types.js +3 -0
- package/http-client/types.js.map +1 -0
- package/http-client/utils.d.ts +36 -0
- package/http-client/utils.js +49 -0
- package/http-client/utils.js.map +1 -0
- package/http-server/constants.d.ts +4 -0
- package/http-server/constants.js +8 -0
- package/http-server/constants.js.map +1 -0
- package/http-server/handler/health-check.d.ts +6 -0
- package/http-server/handler/health-check.js +15 -0
- package/http-server/handler/health-check.js.map +1 -0
- package/http-server/middleware/logging.d.ts +10 -0
- package/http-server/middleware/logging.js +31 -0
- package/http-server/middleware/logging.js.map +1 -0
- package/http-server/middleware/metrics.d.ts +23 -0
- package/http-server/middleware/metrics.js +60 -0
- package/http-server/middleware/metrics.js.map +1 -0
- package/http-server/middleware/tracing.d.ts +8 -0
- package/http-server/middleware/tracing.js +32 -0
- package/http-server/middleware/tracing.js.map +1 -0
- package/http-server/template/index.d.ts +1 -0
- package/http-server/template/index.js +36 -0
- package/http-server/template/index.js.map +1 -0
- package/http-server/types.d.ts +33 -0
- package/http-server/types.js +3 -0
- package/http-server/types.js.map +1 -0
- package/http-server/utils.d.ts +30 -0
- package/http-server/utils.js +100 -0
- package/http-server/utils.js.map +1 -0
- package/logger/handler/console.d.ts +8 -0
- package/logger/handler/console.js +36 -0
- package/logger/handler/console.js.map +1 -0
- package/logger/handler/sentry.d.ts +8 -0
- package/logger/handler/sentry.js +36 -0
- package/logger/handler/sentry.js.map +1 -0
- package/logger/index.d.ts +6 -0
- package/logger/index.js +31 -0
- package/logger/index.js.map +1 -0
- package/logger/types.d.ts +24 -0
- package/logger/types.js +3 -0
- package/logger/types.js.map +1 -0
- package/metrics/constants.d.ts +4 -0
- package/metrics/constants.js +8 -0
- package/metrics/constants.js.map +1 -0
- package/metrics/node.d.ts +18 -0
- package/metrics/node.js +74 -0
- package/metrics/node.js.map +1 -0
- package/package.json +44 -63
- package/preset/index.d.ts +7 -0
- package/preset/index.js +25 -0
- package/preset/index.js.map +1 -0
- package/preset/node/index.d.ts +15 -0
- package/preset/node/index.js +90 -0
- package/preset/node/index.js.map +1 -0
- package/preset/node/response.d.ts +17 -0
- package/preset/node/response.js +78 -0
- package/preset/node/response.js.map +1 -0
- package/preset/types.d.ts +7 -0
- package/preset/types.js +3 -0
- package/preset/types.js.map +1 -0
- package/saga-runner/index.d.ts +8 -0
- package/saga-runner/index.js +79 -0
- package/saga-runner/index.js.map +1 -0
- package/saga-runner/types.d.ts +10 -0
- package/saga-runner/types.js +3 -0
- package/saga-runner/types.js.map +1 -0
- package/tokens.d.ts +41 -0
- package/tokens.js +44 -0
- package/tokens.js.map +1 -0
- package/tracer/node.d.ts +10 -0
- package/tracer/node.js +38 -0
- package/tracer/node.js.map +1 -0
- package/tracer/types.d.ts +2 -0
- package/tracer/types.js +3 -0
- package/tracer/types.js.map +1 -0
- package/{browser → utils/browser}/analytics/data-layer.d.ts +0 -0
- package/{browser → utils/browser}/analytics/data-layer.js +1 -2
- package/utils/browser/analytics/data-layer.js.map +1 -0
- package/{browser → utils/browser}/analytics/oko.d.ts +0 -0
- package/{browser → utils/browser}/analytics/oko.js +6 -7
- package/utils/browser/analytics/oko.js.map +1 -0
- package/utils/browser/storage/index.d.ts +4 -0
- package/utils/browser/storage/index.js +63 -0
- package/utils/browser/storage/index.js.map +1 -0
- package/utils/number.d.ts +6 -0
- package/utils/number.js +13 -0
- package/utils/number.js.map +1 -0
- package/utils/react/error-handlers/index.d.ts +38 -0
- package/utils/react/error-handlers/index.js +47 -0
- package/utils/react/error-handlers/index.js.map +1 -0
- package/utils/redux/remote-data.d.ts +23 -0
- package/utils/redux/remote-data.js +28 -0
- package/utils/redux/remote-data.js.map +1 -0
- package/utils/redux-saga/take-chain.d.ts +24 -0
- package/utils/redux-saga/take-chain.js +56 -0
- package/utils/redux-saga/take-chain.js.map +1 -0
- package/utils/webpack/module-federation/index.d.ts +21 -0
- package/utils/webpack/module-federation/index.js +74 -0
- package/utils/webpack/module-federation/index.js.map +1 -0
- package/utils/webpack/module-federation/types.d.ts +26 -0
- package/utils/webpack/module-federation/types.js +3 -0
- package/utils/webpack/module-federation/types.js.map +1 -0
- package/utils/webpack/module-federation/utils.d.ts +15 -0
- package/utils/webpack/module-federation/utils.js +36 -0
- package/utils/webpack/module-federation/utils.js.map +1 -0
- package/browser/analytics/data-layer.js.map +0 -1
- package/browser/analytics/oko.js.map +0 -1
- package/cache/helpers.d.ts +0 -4
- package/cache/helpers.js +0 -39
- package/cache/helpers.js.map +0 -1
- package/cache/local-storage.d.ts +0 -34
- package/cache/local-storage.js +0 -90
- package/cache/local-storage.js.map +0 -1
- package/cache/redis.d.ts +0 -10
- package/cache/redis.js +0 -54
- package/cache/redis.js.map +0 -1
- package/cache/wrap-in-trace.d.ts +0 -8
- package/cache/wrap-in-trace.js +0 -68
- package/cache/wrap-in-trace.js.map +0 -1
- package/config/create.d.ts +0 -8
- package/config/create.js +0 -32
- package/config/create.js.map +0 -1
- package/config/helpers.d.ts +0 -11
- package/config/helpers.js +0 -71
- package/config/helpers.js.map +0 -1
- package/config/validate.d.ts +0 -18
- package/config/validate.js +0 -107
- package/config/validate.js.map +0 -1
- package/container/create-inject.d.ts +0 -7
- package/container/create-inject.js +0 -36
- package/container/create-inject.js.map +0 -1
- package/container/get-dependencies.d.ts +0 -13
- package/container/get-dependencies.js +0 -54
- package/container/get-dependencies.js.map +0 -1
- package/container/is-container.d.ts +0 -7
- package/container/is-container.js +0 -17
- package/container/is-container.js.map +0 -1
- package/container/service-not-found-error.d.ts +0 -10
- package/container/service-not-found-error.js +0 -18
- package/container/service-not-found-error.js.map +0 -1
- package/create-proxy/create-proxy-middleware/index.d.ts +0 -16
- package/create-proxy/create-proxy-middleware/index.js +0 -47
- package/create-proxy/create-proxy-middleware/index.js.map +0 -1
- package/create-proxy/index.d.ts +0 -12
- package/create-proxy/index.js +0 -25
- package/create-proxy/index.js.map +0 -1
- package/create-response-sender/index.d.ts +0 -8
- package/create-response-sender/index.js +0 -42
- package/create-response-sender/index.js.map +0 -1
- package/get-dynamic-data/index.d.ts +0 -8
- package/get-dynamic-data/index.js +0 -23
- package/get-dynamic-data/index.js.map +0 -1
- package/graceful-shutdown/index.d.ts +0 -26
- package/graceful-shutdown/index.js +0 -87
- package/graceful-shutdown/index.js.map +0 -1
- package/helpers/add-error-handling/index.d.ts +0 -1
- package/helpers/add-error-handling/index.js +0 -42
- package/helpers/add-error-handling/index.js.map +0 -1
- package/helpers/api/create-enhancer.d.ts +0 -12
- package/helpers/api/create-enhancer.js +0 -52
- package/helpers/api/create-enhancer.js.map +0 -1
- package/helpers/api/create-instance.d.ts +0 -11
- package/helpers/api/create-instance.js +0 -39
- package/helpers/api/create-instance.js.map +0 -1
- package/helpers/api/middlewares/collect-cookie-middleware.d.ts +0 -10
- package/helpers/api/middlewares/collect-cookie-middleware.js +0 -39
- package/helpers/api/middlewares/collect-cookie-middleware.js.map +0 -1
- package/helpers/api/middlewares/count-api-response-time.d.ts +0 -12
- package/helpers/api/middlewares/count-api-response-time.js +0 -39
- package/helpers/api/middlewares/count-api-response-time.js.map +0 -1
- package/helpers/api/middlewares/error-handlers-middlewares.d.ts +0 -5
- package/helpers/api/middlewares/error-handlers-middlewares.js +0 -114
- package/helpers/api/middlewares/error-handlers-middlewares.js.map +0 -1
- package/helpers/api/middlewares/helpers.d.ts +0 -11
- package/helpers/api/middlewares/helpers.js +0 -27
- package/helpers/api/middlewares/helpers.js.map +0 -1
- package/helpers/api/middlewares/pass-headers-middleware.d.ts +0 -3
- package/helpers/api/middlewares/pass-headers-middleware.js +0 -27
- package/helpers/api/middlewares/pass-headers-middleware.js.map +0 -1
- package/helpers/api/middlewares/prepare-request-headers.d.ts +0 -5
- package/helpers/api/middlewares/prepare-request-headers.js +0 -20
- package/helpers/api/middlewares/prepare-request-headers.js.map +0 -1
- package/helpers/api/middlewares/set-http-agents-middleware.d.ts +0 -15
- package/helpers/api/middlewares/set-http-agents-middleware.js +0 -34
- package/helpers/api/middlewares/set-http-agents-middleware.js.map +0 -1
- package/helpers/api/middlewares/stages-trace-middleware.d.ts +0 -17
- package/helpers/api/middlewares/stages-trace-middleware.js +0 -57
- package/helpers/api/middlewares/stages-trace-middleware.js.map +0 -1
- package/helpers/api/middlewares/trace-request-middleware.d.ts +0 -24
- package/helpers/api/middlewares/trace-request-middleware.js +0 -69
- package/helpers/api/middlewares/trace-request-middleware.js.map +0 -1
- package/helpers/api/server-adapter/__fixtures__/fake-keys.d.ts +0 -10
- package/helpers/api/server-adapter/__fixtures__/fake-keys.js +0 -61
- package/helpers/api/server-adapter/__fixtures__/fake-keys.js.map +0 -1
- package/helpers/api/server-adapter/constants.d.ts +0 -5
- package/helpers/api/server-adapter/constants.js +0 -16
- package/helpers/api/server-adapter/constants.js.map +0 -1
- package/helpers/api/server-adapter/helpers.d.ts +0 -26
- package/helpers/api/server-adapter/helpers.js +0 -208
- package/helpers/api/server-adapter/helpers.js.map +0 -1
- package/helpers/api/server-adapter/index.d.ts +0 -10
- package/helpers/api/server-adapter/index.js +0 -118
- package/helpers/api/server-adapter/index.js.map +0 -1
- package/helpers/development/use-dot-env.d.ts +0 -6
- package/helpers/development/use-dot-env.js +0 -11
- package/helpers/development/use-dot-env.js.map +0 -1
- package/helpers/get-params/index.d.ts +0 -4
- package/helpers/get-params/index.js +0 -51
- package/helpers/get-params/index.js.map +0 -1
- package/helpers/http/request-getters.d.ts +0 -5
- package/helpers/http/request-getters.js +0 -49
- package/helpers/http/request-getters.js.map +0 -1
- package/helpers/http/statuses-validator.d.ts +0 -3
- package/helpers/http/statuses-validator.js +0 -25
- package/helpers/http/statuses-validator.js.map +0 -1
- package/helpers/logger/create-pino-instance/index.d.ts +0 -6
- package/helpers/logger/create-pino-instance/index.js +0 -39
- package/helpers/logger/create-pino-instance/index.js.map +0 -1
- package/helpers/logger/format-time/index.d.ts +0 -6
- package/helpers/logger/format-time/index.js +0 -9
- package/helpers/logger/format-time/index.js.map +0 -1
- package/helpers/metrics/index.d.ts +0 -23
- package/helpers/metrics/index.js +0 -42
- package/helpers/metrics/index.js.map +0 -1
- package/helpers/prometheus/index.d.ts +0 -4
- package/helpers/prometheus/index.js +0 -13
- package/helpers/prometheus/index.js.map +0 -1
- package/helpers/prometheus/measure-middleware.d.ts +0 -5
- package/helpers/prometheus/measure-middleware.js +0 -69
- package/helpers/prometheus/measure-middleware.js.map +0 -1
- package/helpers/prometheus/metric-adapter.d.ts +0 -36
- package/helpers/prometheus/metric-adapter.js +0 -98
- package/helpers/prometheus/metric-adapter.js.map +0 -1
- package/helpers/react/error-handlers/index.d.ts +0 -40
- package/helpers/react/error-handlers/index.js +0 -52
- package/helpers/react/error-handlers/index.js.map +0 -1
- package/helpers/redux/constants.d.ts +0 -5
- package/helpers/redux/constants.js +0 -14
- package/helpers/redux/constants.js.map +0 -1
- package/helpers/redux/create-compose-middleware.d.ts +0 -15
- package/helpers/redux/create-compose-middleware.js +0 -23
- package/helpers/redux/create-compose-middleware.js.map +0 -1
- package/helpers/redux/get-dev-compose-creator.d.ts +0 -6
- package/helpers/redux/get-dev-compose-creator.js +0 -13
- package/helpers/redux/get-dev-compose-creator.js.map +0 -1
- package/helpers/redux/prepare-on-ready.d.ts +0 -9
- package/helpers/redux/prepare-on-ready.js +0 -16
- package/helpers/redux/prepare-on-ready.js.map +0 -1
- package/helpers/redux/remote-data.d.ts +0 -40
- package/helpers/redux/remote-data.js +0 -91
- package/helpers/redux/remote-data.js.map +0 -1
- package/helpers/redux/selector/statuses.d.ts +0 -23
- package/helpers/redux/selector/statuses.js +0 -34
- package/helpers/redux/selector/statuses.js.map +0 -1
- package/helpers/redux/wait-on-store-readiness.d.ts +0 -11
- package/helpers/redux/wait-on-store-readiness.js +0 -29
- package/helpers/redux/wait-on-store-readiness.js.map +0 -1
- package/helpers/render/get-react-markup-data.d.ts +0 -14
- package/helpers/render/get-react-markup-data.js +0 -20
- package/helpers/render/get-react-markup-data.js.map +0 -1
- package/helpers/render/index.d.ts +0 -21
- package/helpers/render/index.js +0 -72
- package/helpers/render/index.js.map +0 -1
- package/helpers/render/render-app.d.ts +0 -12
- package/helpers/render/render-app.js +0 -12
- package/helpers/render/render-app.js.map +0 -1
- package/helpers/saga/__fixtures__/do-safe-request.d.ts +0 -43
- package/helpers/saga/__fixtures__/do-safe-request.js +0 -50
- package/helpers/saga/__fixtures__/do-safe-request.js.map +0 -1
- package/helpers/saga/cache-result.d.ts +0 -46
- package/helpers/saga/cache-result.js +0 -71
- package/helpers/saga/cache-result.js.map +0 -1
- package/helpers/saga/create-store.d.ts +0 -20
- package/helpers/saga/create-store.js +0 -106
- package/helpers/saga/create-store.js.map +0 -1
- package/helpers/saga/do-safe-request.d.ts +0 -38
- package/helpers/saga/do-safe-request.js +0 -45
- package/helpers/saga/do-safe-request.js.map +0 -1
- package/helpers/saga/safe-request.d.ts +0 -7
- package/helpers/saga/safe-request.js +0 -15
- package/helpers/saga/safe-request.js.map +0 -1
- package/helpers/saga/take-chain.d.ts +0 -20
- package/helpers/saga/take-chain.js +0 -56
- package/helpers/saga/take-chain.js.map +0 -1
- package/helpers/tracer/create-child-tracing-middleware.d.ts +0 -7
- package/helpers/tracer/create-child-tracing-middleware.js +0 -40
- package/helpers/tracer/create-child-tracing-middleware.js.map +0 -1
- package/helpers/tracer/index.d.ts +0 -24
- package/helpers/tracer/index.js +0 -144
- package/helpers/tracer/index.js.map +0 -1
- package/helpers/utils/check-feature-by-segment.d.ts +0 -2
- package/helpers/utils/check-feature-by-segment.js +0 -31
- package/helpers/utils/check-feature-by-segment.js.map +0 -1
- package/helpers/utils/format-object-keys.d.ts +0 -6
- package/helpers/utils/format-object-keys.js +0 -27
- package/helpers/utils/format-object-keys.js.map +0 -1
- package/helpers/utils/get-ms-from-hrt.d.ts +0 -2
- package/helpers/utils/get-ms-from-hrt.js +0 -22
- package/helpers/utils/get-ms-from-hrt.js.map +0 -1
- package/helpers/utils/is-match-pattern-list.d.ts +0 -8
- package/helpers/utils/is-match-pattern-list.js +0 -16
- package/helpers/utils/is-match-pattern-list.js.map +0 -1
- package/helpers/utils/is-not-empty-array.d.ts +0 -2
- package/helpers/utils/is-not-empty-array.js +0 -12
- package/helpers/utils/is-not-empty-array.js.map +0 -1
- package/helpers/utils/is-not-empty-string.d.ts +0 -2
- package/helpers/utils/is-not-empty-string.js +0 -15
- package/helpers/utils/is-not-empty-string.js.map +0 -1
- package/helpers/utils/is-numeric.d.ts +0 -7
- package/helpers/utils/is-numeric.js +0 -16
- package/helpers/utils/is-numeric.js.map +0 -1
- package/helpers/utils/wrap-in-measure-event.d.ts +0 -9
- package/helpers/utils/wrap-in-measure-event.js +0 -50
- package/helpers/utils/wrap-in-measure-event.js.map +0 -1
- package/logger/create-logger-middleware/index.d.ts +0 -14
- package/logger/create-logger-middleware/index.js +0 -41
- package/logger/create-logger-middleware/index.js.map +0 -1
- package/logger/create-sentry-instance/index.d.ts +0 -29
- package/logger/create-sentry-instance/index.js +0 -63
- package/logger/create-sentry-instance/index.js.map +0 -1
- package/logger/create-sentry-middleware/index.d.ts +0 -14
- package/logger/create-sentry-middleware/index.js +0 -19
- package/logger/create-sentry-middleware/index.js.map +0 -1
- package/logger/handler-creators/index.d.ts +0 -5
- package/logger/handler-creators/index.js +0 -41
- package/logger/handler-creators/index.js.map +0 -1
- package/logger/initialize-sentry-creator/index.d.ts +0 -17
- package/logger/initialize-sentry-creator/index.js +0 -35
- package/logger/initialize-sentry-creator/index.js.map +0 -1
- package/logger/sentry-logger/index.d.ts +0 -9
- package/logger/sentry-logger/index.js +0 -36
- package/logger/sentry-logger/index.js.map +0 -1
- package/module-federation/__example__/webpack-config.example.d.ts +0 -366
- package/module-federation/__example__/webpack-config.example.js +0 -51
- package/module-federation/__example__/webpack-config.example.js.map +0 -1
- package/module-federation/enhanced-module-federation-plugin.d.ts +0 -46
- package/module-federation/enhanced-module-federation-plugin.js +0 -72
- package/module-federation/enhanced-module-federation-plugin.js.map +0 -1
- package/module-federation/utils/index.d.ts +0 -8
- package/module-federation/utils/index.js +0 -28
- package/module-federation/utils/index.js.map +0 -1
- package/observe-middleware/index.d.ts +0 -9
- package/observe-middleware/index.js +0 -67
- package/observe-middleware/index.js.map +0 -1
- package/set-header-middleware/create.d.ts +0 -10
- package/set-header-middleware/create.js +0 -16
- package/set-header-middleware/create.js.map +0 -1
- package/src/browser/analytics/data-layer.ts +0 -12
- package/src/browser/analytics/oko.ts +0 -42
- package/src/cache/helpers.js +0 -32
- package/src/cache/local-storage.ts +0 -92
- package/src/cache/redis.js +0 -79
- package/src/cache/wrap-in-trace.js +0 -57
- package/src/config/create.js +0 -33
- package/src/config/helpers.js +0 -71
- package/src/config/validate.js +0 -114
- package/src/container/create-inject.js +0 -32
- package/src/container/get-dependencies.js +0 -46
- package/src/container/index.js +0 -188
- package/src/container/is-container.js +0 -14
- package/src/container/service-not-found-error.js +0 -14
- package/src/create-proxy/create-proxy-middleware/index.js +0 -47
- package/src/create-proxy/index.js +0 -27
- package/src/create-response-sender/index.js +0 -48
- package/src/get-dynamic-data/index.js +0 -26
- package/src/graceful-shutdown/index.js +0 -97
- package/src/helpers/add-error-handling/index.js +0 -24
- package/src/helpers/api/create-enhancer.js +0 -52
- package/src/helpers/api/create-instance.js +0 -42
- package/src/helpers/api/middlewares/collect-cookie-middleware.js +0 -27
- package/src/helpers/api/middlewares/count-api-response-time.js +0 -31
- package/src/helpers/api/middlewares/error-handlers-middlewares.js +0 -124
- package/src/helpers/api/middlewares/helpers.js +0 -26
- package/src/helpers/api/middlewares/pass-headers-middleware.js +0 -19
- package/src/helpers/api/middlewares/prepare-request-headers.js +0 -18
- package/src/helpers/api/middlewares/set-http-agents-middleware.js +0 -22
- package/src/helpers/api/middlewares/stages-trace-middleware.js +0 -46
- package/src/helpers/api/middlewares/trace-request-middleware.ts +0 -86
- package/src/helpers/api/server-adapter/__fixtures__/fake-keys.js +0 -58
- package/src/helpers/api/server-adapter/constants.js +0 -12
- package/src/helpers/api/server-adapter/helpers.js +0 -244
- package/src/helpers/api/server-adapter/index.js +0 -155
- package/src/helpers/development/use-dot-env.js +0 -9
- package/src/helpers/get-params/index.js +0 -59
- package/src/helpers/http/request-getters.js +0 -42
- package/src/helpers/http/statuses-validator.js +0 -20
- package/src/helpers/logger/create-pino-instance/index.js +0 -41
- package/src/helpers/logger/format-time/index.js +0 -6
- package/src/helpers/metrics/index.js +0 -40
- package/src/helpers/prometheus/index.js +0 -9
- package/src/helpers/prometheus/measure-middleware.js +0 -73
- package/src/helpers/prometheus/metric-adapter.js +0 -99
- package/src/helpers/react/error-handlers/index.tsx +0 -68
- package/src/helpers/redux/constants.js +0 -10
- package/src/helpers/redux/create-compose-middleware.js +0 -24
- package/src/helpers/redux/get-dev-compose-creator.js +0 -9
- package/src/helpers/redux/prepare-on-ready.js +0 -16
- package/src/helpers/redux/remote-data.js +0 -124
- package/src/helpers/redux/selector/statuses.js +0 -30
- package/src/helpers/redux/wait-on-store-readiness.js +0 -40
- package/src/helpers/render/get-react-markup-data.js +0 -18
- package/src/helpers/render/index.js +0 -69
- package/src/helpers/render/render-app.js +0 -15
- package/src/helpers/saga/__fixtures__/do-safe-request.js +0 -49
- package/src/helpers/saga/cache-result.js +0 -77
- package/src/helpers/saga/create-store.js +0 -102
- package/src/helpers/saga/do-safe-request.js +0 -47
- package/src/helpers/saga/safe-request.js +0 -11
- package/src/helpers/saga/take-chain.js +0 -53
- package/src/helpers/tracer/create-child-tracing-middleware.js +0 -42
- package/src/helpers/tracer/index.js +0 -171
- package/src/helpers/utils/check-feature-by-segment.js +0 -32
- package/src/helpers/utils/format-object-keys.js +0 -23
- package/src/helpers/utils/get-ms-from-hrt.js +0 -16
- package/src/helpers/utils/is-match-pattern-list.js +0 -13
- package/src/helpers/utils/is-not-empty-array.js +0 -8
- package/src/helpers/utils/is-not-empty-string.js +0 -11
- package/src/helpers/utils/is-numeric.ts +0 -12
- package/src/helpers/utils/wrap-in-measure-event.js +0 -35
- package/src/logger/create-logger-middleware/index.js +0 -46
- package/src/logger/create-sentry-instance/index.js +0 -74
- package/src/logger/create-sentry-middleware/index.js +0 -16
- package/src/logger/handler-creators/index.js +0 -38
- package/src/logger/initialize-sentry-creator/index.js +0 -43
- package/src/logger/sentry-logger/index.js +0 -33
- package/src/module-federation/__example__/webpack-config.example.js +0 -57
- package/src/module-federation/enhanced-module-federation-plugin.js +0 -92
- package/src/module-federation/utils/index.js +0 -32
- package/src/observe-middleware/index.js +0 -70
- package/src/set-header-middleware/create.js +0 -17
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import isFunction from 'lodash/isFunction';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Возвращает функцию с обработкой ошибки обработчика роута Express.
|
|
5
|
-
* @param {Function} handler Обработчик роута Express.
|
|
6
|
-
* @param {Function} [errorHandler] Обработчик ошибки роута Express.
|
|
7
|
-
* @return {Function} Обработчик роута обернутого для отлова ошибок.
|
|
8
|
-
*/
|
|
9
|
-
export const addErrorHandling = (handler, errorHandler) => {
|
|
10
|
-
if (!isFunction(handler)) {
|
|
11
|
-
throw new Error('Аргумент "handler" должен быть функцией.');
|
|
12
|
-
}
|
|
13
|
-
return async (request, response, next, ...args) => {
|
|
14
|
-
try {
|
|
15
|
-
await handler(request, response, next, ...args);
|
|
16
|
-
} catch (err) {
|
|
17
|
-
if (isFunction(errorHandler)) {
|
|
18
|
-
await errorHandler(err, request, response, next, ...args);
|
|
19
|
-
} else {
|
|
20
|
-
await next(err);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
};
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { createService } from '../../container';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Конструктор для создания функции для применения middleware к экземпляру axios.
|
|
5
|
-
* @param {Array} middlewares Middleware, которые должны быть применены.
|
|
6
|
-
* @return {function(Object): Object} Функция для применения middleware к экземпляру axios.
|
|
7
|
-
*/
|
|
8
|
-
export const applyMiddleware = (...middlewares) =>
|
|
9
|
-
instance =>
|
|
10
|
-
middlewares.reduce(
|
|
11
|
-
(currentInstance, middleware) => currentInstance.use(middleware),
|
|
12
|
-
instance
|
|
13
|
-
);
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Функция для сборки middleware в функцию для применения к экземпляру axios.
|
|
17
|
-
* @param {Array<Function>} constructors Функции-конструкторы middleware.
|
|
18
|
-
* @param {Object} params Параметры для конструкторов.
|
|
19
|
-
* @return {function(Object): Object} Функция для применения созданных middleware к экземпляру axios.
|
|
20
|
-
*/
|
|
21
|
-
export const createEnhancer = (constructors, params) =>
|
|
22
|
-
applyMiddleware(
|
|
23
|
-
...Array.isArray(constructors) ? constructors.map(constructor => constructor(params)) : []
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Преобразует опции сервиса в аргументы функции.
|
|
28
|
-
* @param {Object} param Параметры.
|
|
29
|
-
* @param {Array<Function>} param.constructors Функции-конструкторы middleware.
|
|
30
|
-
* @param {Object} param.params Параметры для конструкторов.
|
|
31
|
-
* @return {Array} Массив агрументов для использования в функции.
|
|
32
|
-
*/
|
|
33
|
-
export const mapServiceOptionsToArgs = (
|
|
34
|
-
{
|
|
35
|
-
constructors,
|
|
36
|
-
...params
|
|
37
|
-
}
|
|
38
|
-
) => [
|
|
39
|
-
constructors,
|
|
40
|
-
params,
|
|
41
|
-
];
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Функция для сборки middleware в функцию для применения к экземпляру axios для использования в контейнере.
|
|
45
|
-
* @type {Function}
|
|
46
|
-
*/
|
|
47
|
-
const enhancerConstructor = createService(
|
|
48
|
-
createEnhancer,
|
|
49
|
-
mapServiceOptionsToArgs
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
export default enhancerConstructor;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { create } from 'middleware-axios';
|
|
2
|
-
import isFunction from 'lodash/isFunction';
|
|
3
|
-
import { createService } from '../../container';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Функция для создания экземпляра axios с возможностью передать обработчик для применения middleware.
|
|
7
|
-
* @param {Object} config Конфигурация для axios.
|
|
8
|
-
* @param {Function} enhancer Функция для применения middleware к экземпляру.
|
|
9
|
-
* @return {Object} Экземпляр axios с применёнными middleware.
|
|
10
|
-
*/
|
|
11
|
-
export const createInstance = (config, enhancer) => {
|
|
12
|
-
const instance = create(config);
|
|
13
|
-
return isFunction(enhancer) ? enhancer(instance) : instance;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Преобразует опции сервиса в аргументы функции.
|
|
18
|
-
* @param {Object} param Параметры.
|
|
19
|
-
* @param {Object} param.config Конфигурация для axios.
|
|
20
|
-
* @param {Function} param.enhancer Функция для применения middleware к экземпляру.
|
|
21
|
-
* @return {Array} Массив агрументов для использования в функции.
|
|
22
|
-
*/
|
|
23
|
-
export const mapServiceOptionsToArgs = (
|
|
24
|
-
{
|
|
25
|
-
config,
|
|
26
|
-
enhancer,
|
|
27
|
-
}
|
|
28
|
-
) => [
|
|
29
|
-
config,
|
|
30
|
-
enhancer,
|
|
31
|
-
];
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Конструктор экземпляра axios для использования в контейнере.
|
|
35
|
-
* @type {Function}
|
|
36
|
-
*/
|
|
37
|
-
const instanceConstructor = createService(
|
|
38
|
-
createInstance,
|
|
39
|
-
mapServiceOptionsToArgs
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
export default instanceConstructor;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import uniq from 'lodash/uniq';
|
|
2
|
-
import get from 'lodash/get';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Создаёт middleware для сбора cookie со всех запросов в API и их передачи в ответ сервера.
|
|
6
|
-
* @param {Object} options Параметры для создания middleware.
|
|
7
|
-
* @param {Object} options.response Ответ на запрос в сервис.
|
|
8
|
-
* @return {function(Object, Function): Promise} Middleware для сбора cookie со всех запросов в API.
|
|
9
|
-
*/
|
|
10
|
-
const createCollectCookieMiddleware = ({ response }) =>
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Middleware для сбора cookie со всех запросов в API.
|
|
14
|
-
* @param {Object} requestConfig Конфигурация запроса API.
|
|
15
|
-
* @param {Function} next Функция для передачи контекста выполнения следующему middleware.
|
|
16
|
-
* @return {Promise} Промис.
|
|
17
|
-
*/
|
|
18
|
-
async (requestConfig, next) => {
|
|
19
|
-
const apiResponse = await next(requestConfig);
|
|
20
|
-
const initialCookie = response.get('set-cookie') || [];
|
|
21
|
-
const additionalCookie = get(apiResponse, 'headers.set-cookie', []);
|
|
22
|
-
if (additionalCookie.length) {
|
|
23
|
-
response.set('set-cookie', uniq([...initialCookie, ...additionalCookie]));
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export default createCollectCookieMiddleware;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { getMsFromHRT } from '../../utils/get-ms-from-hrt';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Создаёт middleware, собирающий данные о времени ответа запросов в API.
|
|
5
|
-
* @param {Object} param Параметры.
|
|
6
|
-
* @param {Object} param.response Ответ.
|
|
7
|
-
* @param {string} param.timeDataKey Ключ свойства в response.locals для сохранения замеров времени.
|
|
8
|
-
* @return {function(Object, Function)} Middleware для сохранения времени ответа API.
|
|
9
|
-
*/
|
|
10
|
-
const createCountApiResponseTimeMiddleware = ({ response, timeDataKey }) =>
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Middleware для сбора данных о времени ответа запросов в API.
|
|
14
|
-
* @param {Object} requestConfig Конфигурация запроса API.
|
|
15
|
-
* @param {Function} next Функция для передачи контекста выполнения следующему middleware.
|
|
16
|
-
* @return {Promise} Промис.
|
|
17
|
-
*/
|
|
18
|
-
async (requestConfig, next) => {
|
|
19
|
-
const startTime = process.hrtime();
|
|
20
|
-
const apiResponse = await next(requestConfig);
|
|
21
|
-
const url = apiResponse.config.url.replace(/\/\d+/gi, '/ID');
|
|
22
|
-
const method = apiResponse.config.method.toUpperCase();
|
|
23
|
-
|
|
24
|
-
if (!response.locals[timeDataKey]) {
|
|
25
|
-
response.locals[timeDataKey] = {};
|
|
26
|
-
}
|
|
27
|
-
response.locals[timeDataKey][`${method} ${url}`] = getMsFromHRT(process.hrtime(startTime));
|
|
28
|
-
return response;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export default createCountApiResponseTimeMiddleware;
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { createService } from '../../../container';
|
|
2
|
-
import pick from 'lodash/pick';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Отправляет крошки http запроса.
|
|
6
|
-
* @param {Function} sendBreadcrumb Функция отправки крошек.
|
|
7
|
-
* @param {Object} response Объект в формате ответа Axios, содержащий данные об ответе.
|
|
8
|
-
* @param {boolean} asRequest Обработать как событие запроса.
|
|
9
|
-
* @private
|
|
10
|
-
*/
|
|
11
|
-
export const _sendHttpBreadcrumb = (sendBreadcrumb, response, asRequest = false) => {
|
|
12
|
-
const statusCode = asRequest ? 'FETCHING' : response?.status || 'UNKNOWN';
|
|
13
|
-
const { url, baseURL, method, params } = response?.config || {};
|
|
14
|
-
|
|
15
|
-
const fullURL = baseURL ? `${baseURL.replace(/\/$/, '')}${url}` : url;
|
|
16
|
-
|
|
17
|
-
const breadcrumb = {
|
|
18
|
-
category: asRequest ? 'http.request' : 'http.response',
|
|
19
|
-
type: 'http',
|
|
20
|
-
data: {
|
|
21
|
-
url: fullURL,
|
|
22
|
-
status_code: statusCode,
|
|
23
|
-
method: method && method.toUpperCase(),
|
|
24
|
-
params,
|
|
25
|
-
},
|
|
26
|
-
level: asRequest || (statusCode >= 200 && statusCode < 300) ? 'info' : 'error',
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
sendBreadcrumb && sendBreadcrumb(breadcrumb);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Создаёт middleware, добавляющий хлебные крошки о запросе в API в сервис логирования ошибок.
|
|
34
|
-
* @param {Object} sentry Сервис логирования.
|
|
35
|
-
* @param {Function} sentry.captureBreadcrumb Функция сбора хлебных крошек.
|
|
36
|
-
* @return {function(Object, Function)} Middleware для добавления крошек.
|
|
37
|
-
* @private
|
|
38
|
-
*/
|
|
39
|
-
const _createAttachBreadcrumbsMiddleware = ({ captureBreadcrumb }) =>
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Middleware добавления крошек в сервис логирования.
|
|
43
|
-
* @param {Object} requestConfig Конфигурация запроса API.
|
|
44
|
-
* @param {Function} next Функция для передачи контекста выполнения следующему middleware.
|
|
45
|
-
* @return {Promise} Промис.
|
|
46
|
-
*/
|
|
47
|
-
async (config, next, defaults) => {
|
|
48
|
-
try {
|
|
49
|
-
_sendHttpBreadcrumb(captureBreadcrumb, { config: { ...defaults, ...config } }, true);
|
|
50
|
-
|
|
51
|
-
const apiResponse = await next(config);
|
|
52
|
-
|
|
53
|
-
_sendHttpBreadcrumb(captureBreadcrumb, apiResponse);
|
|
54
|
-
} catch (error) {
|
|
55
|
-
error.isAxiosError && error.response && _sendHttpBreadcrumb(captureBreadcrumb, error.response);
|
|
56
|
-
|
|
57
|
-
throw error;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Создаёт middleware, отправляющий исключения при запросе в API в сервис логирования ошибок.
|
|
63
|
-
* @param {Object} sentry Сервис логирования.
|
|
64
|
-
* @param {Function} sentry.captureExtendedException Функция отправки исключения.
|
|
65
|
-
* @return {function(Object, Function)} Middleware для захвата исключения.
|
|
66
|
-
* @private
|
|
67
|
-
*/
|
|
68
|
-
const _createHandleExceptionMiddleware = ({ captureExtendedException }) =>
|
|
69
|
-
async (config, next, defaults) => {
|
|
70
|
-
try {
|
|
71
|
-
await next(config);
|
|
72
|
-
} catch (error) {
|
|
73
|
-
const { status } = error.response || {};
|
|
74
|
-
const { logLevelConfig } = config;
|
|
75
|
-
|
|
76
|
-
captureExtendedException && captureExtendedException(
|
|
77
|
-
error,
|
|
78
|
-
pick(
|
|
79
|
-
{ ...defaults, ...config },
|
|
80
|
-
['url', 'baseURL', 'method', 'headers', 'params', 'data']
|
|
81
|
-
),
|
|
82
|
-
{
|
|
83
|
-
dataName: 'Request details',
|
|
84
|
-
dataAsContext: true,
|
|
85
|
-
level: _getLevelFromConfig(status, logLevelConfig),
|
|
86
|
-
}
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Функция преобразования конфига уровней логирования запроса в уровень логирования Sentry.
|
|
93
|
-
* @param {number} statusCode Код ответа сервера.
|
|
94
|
-
* @param {Object} logLevelConfig Конфиг уровней логирования. `{ default: 'error', 422: 'warning', 419: 'error' }`.
|
|
95
|
-
* @return {string} Log level.
|
|
96
|
-
* @private
|
|
97
|
-
*/
|
|
98
|
-
export const _getLevelFromConfig = (statusCode, logLevelConfig = {}) => {
|
|
99
|
-
let level = logLevelConfig.default || 'warning';
|
|
100
|
-
|
|
101
|
-
if (statusCode && logLevelConfig[statusCode]) {
|
|
102
|
-
level = logLevelConfig[statusCode];
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return level;
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Функция преобразования зависимостей сервиса в аргументы функции.
|
|
110
|
-
* @param {Object} dependencies Зависимости.
|
|
111
|
-
* @return {Array} Массив аргументов.
|
|
112
|
-
* @private
|
|
113
|
-
*/
|
|
114
|
-
export const _deptToArg = ({ sentry }) => [sentry];
|
|
115
|
-
|
|
116
|
-
export const createAttachBreadcrumbsMiddleware = createService(
|
|
117
|
-
_createAttachBreadcrumbsMiddleware,
|
|
118
|
-
_deptToArg
|
|
119
|
-
);
|
|
120
|
-
|
|
121
|
-
export const createHandleExceptionMiddleware = createService(
|
|
122
|
-
_createHandleExceptionMiddleware,
|
|
123
|
-
_deptToArg
|
|
124
|
-
);
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import pipe from 'lodash/fp/pipe';
|
|
2
|
-
import path from 'lodash/fp/path';
|
|
3
|
-
import pickBy from 'lodash/fp/pickBy';
|
|
4
|
-
|
|
5
|
-
// Префикс сервисных заголовков.
|
|
6
|
-
const SERVICE_PREFIX = 'Simaland-';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Возвращает объект заголовков, содержащих в своем названии префикс сервисных заголовков.
|
|
10
|
-
* @param {import('http').IncomingMessage} request Запрос приложения.
|
|
11
|
-
* @param {Object} request.headers Заголовки запроса.
|
|
12
|
-
* @return {Object.<string, string>} Коллекция сервисных заголовков.
|
|
13
|
-
*/
|
|
14
|
-
export const getServiceHeaders = pipe(
|
|
15
|
-
path('headers'),
|
|
16
|
-
pickBy((value, key) => key.toLowerCase().indexOf(SERVICE_PREFIX.toLowerCase()) === 0)
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
/** Формирует из параметров конфигурации и возвращает User-Agent.
|
|
20
|
-
* @param {Object} config Конфигурация приложения.
|
|
21
|
-
* @param {string} config.serviceName Название сервиса из конфигурации.
|
|
22
|
-
* @param {string} config.version Версия приложения.
|
|
23
|
-
* @return {string} User-Agent.
|
|
24
|
-
*/
|
|
25
|
-
export const getServiceUserAgent = ({ serviceName, version } = {}) =>
|
|
26
|
-
serviceName && version ? `simaland-${serviceName}/${version}` : '';
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Создаёт middleware для добавления заголовков в запросы API.
|
|
3
|
-
* @param {Object} options Параметры для создания middleware.
|
|
4
|
-
* @param {Object} options.headers Объект заголовков для добавления к запросу в API.
|
|
5
|
-
* @return {function(Object, Function): Promise} Middleware для использования в API.
|
|
6
|
-
*/
|
|
7
|
-
export const createPassHeadersMiddleware = ({ headers }) =>
|
|
8
|
-
async (requestConfig, next) => {
|
|
9
|
-
if (!requestConfig.headers) {
|
|
10
|
-
requestConfig.headers = {};
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
requestConfig.headers = {
|
|
14
|
-
...requestConfig.headers,
|
|
15
|
-
...headers,
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
await next(requestConfig);
|
|
19
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import omit from 'lodash/omit';
|
|
2
|
-
import { getCookie, getXClientIp } from '../../http/request-getters';
|
|
3
|
-
import { getServiceHeaders, getServiceUserAgent } from './helpers';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Формирует объект заголовков из конфигурации приложения и запроса к приложению.
|
|
7
|
-
* @param {Object} options Опции сервиса.
|
|
8
|
-
* @param {Object} options.config Конфигурация приложения.
|
|
9
|
-
* @param {import('http').IncomingMessage} options.request Запрос приложения.
|
|
10
|
-
* @param {string|string[]} options.exclude Заголовки, которые требуется исключить из итогового списка.
|
|
11
|
-
* @return {Object} Заголовки.
|
|
12
|
-
*/
|
|
13
|
-
export const prepareRequestHeaders = ({ config, request, exclude = [] }) => omit({
|
|
14
|
-
'X-Client-Ip': getXClientIp({ request }),
|
|
15
|
-
'User-Agent': getServiceUserAgent(config),
|
|
16
|
-
Cookie: getCookie(request),
|
|
17
|
-
...getServiceHeaders(request),
|
|
18
|
-
}, exclude);
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import http from 'http';
|
|
2
|
-
import https from 'https';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Добавляет в конфигурацию запроса опции httpAgent и httpsAgent.
|
|
6
|
-
* @param {Object} options Параметры для создания middleware.
|
|
7
|
-
* @param {https.Agent} options.httpsAgent Кастомизированный экземпляр https.Agent.
|
|
8
|
-
* @param {http.Agent} options.httpAgent Кастомизированный экземпляр http.Agent.
|
|
9
|
-
* @return {function(Object, Function):Promise} Middleware для использования в API.
|
|
10
|
-
*/
|
|
11
|
-
const createSetHttpAgentsMiddleware = ({ httpsAgent, httpAgent }) =>
|
|
12
|
-
async (requestConfig, next) => {
|
|
13
|
-
if (httpAgent instanceof http.Agent) {
|
|
14
|
-
requestConfig.httpAgent = httpAgent;
|
|
15
|
-
}
|
|
16
|
-
if (httpsAgent instanceof https.Agent) {
|
|
17
|
-
requestConfig.httpsAgent = httpsAgent;
|
|
18
|
-
}
|
|
19
|
-
await next(requestConfig);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export default createSetHttpAgentsMiddleware;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import EventEmitter from 'events';
|
|
2
|
-
import { REQUEST_STAGES } from '../server-adapter/constants';
|
|
3
|
-
import { FORMAT_HTTP_HEADERS } from 'opentracing';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Класс, наследующий от EventEmitter.
|
|
7
|
-
*/
|
|
8
|
-
export class StageRequestEmitter extends EventEmitter {}
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Создаёт middleware для трассировки этапов запроса в API.
|
|
12
|
-
* @param {Object} options Параметры для создания middleware.
|
|
13
|
-
* @param {Object} options.tracer Объект трейсера.
|
|
14
|
-
* @return {function(Object, Function): Promise} Middleware для трассироваки запросов в API.
|
|
15
|
-
*/
|
|
16
|
-
const createStagesTraceRequestMiddleware = ({ tracer }) =>
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Middleware для трассировки этапов запроса в API.
|
|
20
|
-
* @param {Object} requestConfig Параметры для создания middleware.
|
|
21
|
-
* @param {Function} next Функция для получения данных.
|
|
22
|
-
* @return {Promise} Promise.
|
|
23
|
-
*/
|
|
24
|
-
async (requestConfig, next) => {
|
|
25
|
-
const parentSpanContext = tracer.extract(FORMAT_HTTP_HEADERS, requestConfig.headers);
|
|
26
|
-
const emitter = new StageRequestEmitter();
|
|
27
|
-
|
|
28
|
-
let currentSpan;
|
|
29
|
-
Object.values(REQUEST_STAGES).map(stage => emitter.on(stage, () => {
|
|
30
|
-
if (currentSpan) {
|
|
31
|
-
currentSpan
|
|
32
|
-
.setOperationName(stage.replace('finish:', ''))
|
|
33
|
-
.finish();
|
|
34
|
-
}
|
|
35
|
-
if (stage !== REQUEST_STAGES.end) {
|
|
36
|
-
currentSpan = tracer.startSpan('', { childOf: parentSpanContext });
|
|
37
|
-
}
|
|
38
|
-
}));
|
|
39
|
-
requestConfig.emitter = emitter;
|
|
40
|
-
|
|
41
|
-
await next(requestConfig);
|
|
42
|
-
|
|
43
|
-
emitter.removeAllListeners();
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
export default createStagesTraceRequestMiddleware;
|
|
@@ -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
|
-
});
|