@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.
- 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/sauce/index.d.ts +27 -0
- package/http-client/sauce/index.js +33 -0
- package/http-client/sauce/index.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 +9 -0
- package/http-client/utils.js +20 -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 +33 -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 -58
- package/module-federation/__example__/webpack-config.example.js.map +0 -1
- package/module-federation/enhanced-module-federation-plugin.d.ts +0 -69
- package/module-federation/enhanced-module-federation-plugin.js +0 -97
- package/module-federation/enhanced-module-federation-plugin.js.map +0 -1
- package/module-federation/utils/index.d.ts +0 -16
- package/module-federation/utils/index.js +0 -33
- 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 -64
- package/src/module-federation/enhanced-module-federation-plugin.js +0 -119
- package/src/module-federation/utils/index.js +0 -39
- package/src/observe-middleware/index.js +0 -70
- package/src/set-header-middleware/create.js +0 -17
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import isFunction from 'lodash/isFunction';
|
|
2
|
-
import wrapInMeasureEvent from '../utils/wrap-in-measure-event';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Создаёт функцию для рендеринга приложения, навешивая необходимые события.
|
|
6
|
-
* @param {Object} param Параметры.
|
|
7
|
-
* @param {Function} param.render Пользовательская функция для рендеринга приложения.
|
|
8
|
-
* @param {import('http').ServerResponse} param.response Ответ.
|
|
9
|
-
* @return {Function} Функция, обёрнутая в событие для измерения времени рендеринга.
|
|
10
|
-
*/
|
|
11
|
-
export const prepareRenderFunction = ({
|
|
12
|
-
render,
|
|
13
|
-
response,
|
|
14
|
-
}) => wrapInMeasureEvent(
|
|
15
|
-
{
|
|
16
|
-
fn: render,
|
|
17
|
-
startEvent: 'render:start',
|
|
18
|
-
endEvent: 'render:finish',
|
|
19
|
-
emitter: response,
|
|
20
|
-
}
|
|
21
|
-
);
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Возвращает шаблон, который подходит текущей конфигурации.
|
|
25
|
-
* @param {Object} data Данные.
|
|
26
|
-
* @param {Object} data.templates Шаблоны.
|
|
27
|
-
* @param {Object} data.config Конфигурация со средой выполнения.
|
|
28
|
-
* @return {Object} Шаблон совпадающий со средой выполнения.
|
|
29
|
-
*/
|
|
30
|
-
export const getTemplate = ({ templates, config } = {}) => {
|
|
31
|
-
for (const templateName in templates) {
|
|
32
|
-
const { checker, template } = validateTemplate(templates[templateName]);
|
|
33
|
-
if (checker(config)) {
|
|
34
|
-
return template;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Проверка templates на валидность.
|
|
41
|
-
* @param {Object} templateObject Шаблон.
|
|
42
|
-
* @return {Object} [templateObject] Валидный шаблон.
|
|
43
|
-
*/
|
|
44
|
-
export function validateTemplate (templateObject) {
|
|
45
|
-
const { checker, template } = templateObject || {};
|
|
46
|
-
if ([checker, template].some(value => !isFunction(value))) {
|
|
47
|
-
const jsonView = JSON.stringify(templateObject, jsonStringifyReplacer, 2);
|
|
48
|
-
throw Error(`
|
|
49
|
-
Template object must contain properties "checker" and "template" that must be a functions.
|
|
50
|
-
${jsonView}
|
|
51
|
-
`.trim());
|
|
52
|
-
} else {
|
|
53
|
-
return templateObject;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Преобразует функцию в строку.
|
|
59
|
-
* @param {string} key Ключ объекта.
|
|
60
|
-
* @param {*} value Значение объекта.
|
|
61
|
-
* @return {*} [value] Преобразованное значение объекта.
|
|
62
|
-
*/
|
|
63
|
-
export function jsonStringifyReplacer (key, value) {
|
|
64
|
-
let result = value;
|
|
65
|
-
if (!JSON.stringify(value)) {
|
|
66
|
-
result = Object.prototype.toString.call(value);
|
|
67
|
-
}
|
|
68
|
-
return result;
|
|
69
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Выводит данные в шаблон.
|
|
3
|
-
* @param {Object} data Исхоные данные для рендеринга.
|
|
4
|
-
* @param {Function} data.template Функция-шаблон, для вывода данных в разметку.
|
|
5
|
-
* @param {Function} data.getAppData Функция формирующая настройки приложения.
|
|
6
|
-
* @return {string} Разметка, в виде строки, полученная в результате рендеринга шаблона.
|
|
7
|
-
*/
|
|
8
|
-
const renderApp = ({
|
|
9
|
-
template,
|
|
10
|
-
getAppData,
|
|
11
|
-
}) => template({
|
|
12
|
-
...getAppData(),
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
export default renderApp;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
export const data = {
|
|
2
|
-
id: 500,
|
|
3
|
-
trademark: {},
|
|
4
|
-
notices_text_all: ['text', 'text'],
|
|
5
|
-
files: [
|
|
6
|
-
{
|
|
7
|
-
filename: 'test_1.pdf',
|
|
8
|
-
title: 'Тест-1',
|
|
9
|
-
size: 13,
|
|
10
|
-
url: 'https://test-1.pgf',
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
filename: 'test_2.pdf',
|
|
14
|
-
title: 'Тест-2',
|
|
15
|
-
size: 31,
|
|
16
|
-
url: 'https://test-2.pgf',
|
|
17
|
-
},
|
|
18
|
-
],
|
|
19
|
-
modifier: {
|
|
20
|
-
isPicture: false,
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export const error = {
|
|
25
|
-
message: 'Error message',
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const errorWithConfig = {
|
|
29
|
-
message: 'Error message',
|
|
30
|
-
config: {
|
|
31
|
-
url: 'test-error-url',
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export const errorWithResponse = {
|
|
36
|
-
message: 'Error message',
|
|
37
|
-
response: {
|
|
38
|
-
status: 500,
|
|
39
|
-
data: {
|
|
40
|
-
test: 'test',
|
|
41
|
-
},
|
|
42
|
-
headers: {
|
|
43
|
-
test: 'test',
|
|
44
|
-
},
|
|
45
|
-
config: {
|
|
46
|
-
test: 'test',
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
};
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { call } from 'redux-saga/effects';
|
|
2
|
-
import isFunction from 'lodash/isFunction';
|
|
3
|
-
import isPlainObject from 'lodash/isPlainObject';
|
|
4
|
-
import doSafeRequest from './do-safe-request';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Проверяет наличие данных, запрошенных из кэша.
|
|
8
|
-
* @param {*} data Данные, запрошенных из кэша.
|
|
9
|
-
* @return {boolean} Получен ли ответ.
|
|
10
|
-
*/
|
|
11
|
-
export const validateCacheDefault = data => Boolean(data);
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Проверяет валидность ответа API.
|
|
15
|
-
* @param {Object} response Ответ API.
|
|
16
|
-
* @return {boolean} Результат проверки.
|
|
17
|
-
*/
|
|
18
|
-
export const validateResultDefault = response =>
|
|
19
|
-
Boolean(response) && isPlainObject(response) && Boolean(response.ok);
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* @typedef {Object} Cache Объект кэша.
|
|
23
|
-
* @property {Function} get Функция, получающая данные из кэша.
|
|
24
|
-
* @property {Function} set Функция, записывающая данные в кэш.
|
|
25
|
-
* @property {boolean} status Статус доступности кэша.
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Запрашивает данные с сервера с кэшированием.
|
|
30
|
-
* @param {Object} options Настройки кэширования.
|
|
31
|
-
* @param {Cache} options.cache Объект кэша.
|
|
32
|
-
* @param {string} options.key Ключ для сохранения.
|
|
33
|
-
* @param {Function} options.captureException Обработчик ошибки.
|
|
34
|
-
* @param {Function} options.validateCache Функция для проверки валидности данных кэша.
|
|
35
|
-
* @param {Function} options.validateResult Функция для проверки валидности результата при сохранении в кэш.
|
|
36
|
-
* @param {Function} options.fn Функция для получения данных.
|
|
37
|
-
* @param {Array} options.args Аргументы функции для запроса данных.
|
|
38
|
-
* @return {import('./do-safe-request').ServerResponse} Результат.
|
|
39
|
-
*/
|
|
40
|
-
export default function * cacheResult ({
|
|
41
|
-
cache,
|
|
42
|
-
key,
|
|
43
|
-
captureException,
|
|
44
|
-
validateCache = validateCacheDefault,
|
|
45
|
-
validateResult = validateResultDefault,
|
|
46
|
-
fn = doSafeRequest,
|
|
47
|
-
args = [],
|
|
48
|
-
duration = 3600,
|
|
49
|
-
}) {
|
|
50
|
-
const { get, set, status } = cache || {};
|
|
51
|
-
let isCacheAvailable = status && isFunction(get) && isFunction(set);
|
|
52
|
-
const canDoRequest = isFunction(validateCache) && isFunction(fn);
|
|
53
|
-
let result;
|
|
54
|
-
try {
|
|
55
|
-
result = isCacheAvailable && (yield call(get, key));
|
|
56
|
-
if (validateCache(result)) {
|
|
57
|
-
result = JSON.parse(result);
|
|
58
|
-
}
|
|
59
|
-
} catch (error) {
|
|
60
|
-
if (isFunction(captureException)) {
|
|
61
|
-
captureException(error);
|
|
62
|
-
}
|
|
63
|
-
isCacheAvailable = false;
|
|
64
|
-
result = null;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (canDoRequest && !validateCache(result)) {
|
|
68
|
-
result = yield call(fn, ...args);
|
|
69
|
-
const isResultValid = isFunction(validateResult) && validateResult(result);
|
|
70
|
-
|
|
71
|
-
if (isCacheAvailable && isResultValid) {
|
|
72
|
-
yield call(set, key, JSON.stringify(result), duration);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return result;
|
|
77
|
-
}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { applyMiddleware, createStore as createReduxStore } from 'redux';
|
|
2
|
-
import createSagaMiddleware, { END } from 'redux-saga';
|
|
3
|
-
import isFunction from 'lodash/isFunction';
|
|
4
|
-
import { createService } from '../../container';
|
|
5
|
-
import waitOnStoreReadiness from '../redux/wait-on-store-readiness';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Создаёт функцию для обработки успешного завершения подготовки стора.
|
|
9
|
-
* @param {Function} onReady Опциональный обработчик успешного завершения.
|
|
10
|
-
* @return {Function} Функция для обработки успешного завершения подготовки стора.
|
|
11
|
-
*/
|
|
12
|
-
export const createSagaReadyHandler = onReady => store => {
|
|
13
|
-
store.dispatch(END);
|
|
14
|
-
isFunction(onReady) && onReady(store);
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Создаёт store с применённым middleware саг.
|
|
19
|
-
* @param {Function} reducer Редьюсер.
|
|
20
|
-
* @param {Function} initialSaga Инициализирующая сага.
|
|
21
|
-
* @param {Object} options Необязательные опции.
|
|
22
|
-
* @param {Function} options.isReady Функция для определения готовности store.
|
|
23
|
-
* @param {Object} options.initialState Начальное состояние.
|
|
24
|
-
* @param {Function} options.compose Функция для применения middleware.
|
|
25
|
-
* @param {Array} options.middleware Список дополнительных middleware.
|
|
26
|
-
* @param {Function} options.onReady Функция которая будет выполнена по готовности store.
|
|
27
|
-
* @param {number} options.timeout Максимальное время ожидания готовности store.
|
|
28
|
-
* @param {Function} [options.onTimeout] Функция обработчик события таймаута ожидания готовности store.
|
|
29
|
-
* @param {Function} [options.onSagasErrorHandler] Корневой обработчик ошибок в сагах.
|
|
30
|
-
* @return {Object} Объект со store и функцией runSaga для запуска саг.
|
|
31
|
-
*/
|
|
32
|
-
export const createStore = (
|
|
33
|
-
reducer,
|
|
34
|
-
initialSaga,
|
|
35
|
-
{
|
|
36
|
-
isReady,
|
|
37
|
-
initialState = {},
|
|
38
|
-
compose = input => input,
|
|
39
|
-
middleware = [],
|
|
40
|
-
onReady,
|
|
41
|
-
timeout,
|
|
42
|
-
onTimeout,
|
|
43
|
-
onSagasErrorHandler,
|
|
44
|
-
} = {}
|
|
45
|
-
) => {
|
|
46
|
-
const sagaMiddleware = createSagaMiddleware(
|
|
47
|
-
isFunction(onSagasErrorHandler)
|
|
48
|
-
? { onError: onSagasErrorHandler }
|
|
49
|
-
: {}
|
|
50
|
-
);
|
|
51
|
-
let store = createReduxStore(
|
|
52
|
-
reducer,
|
|
53
|
-
initialState,
|
|
54
|
-
compose(applyMiddleware(sagaMiddleware, ...middleware))
|
|
55
|
-
);
|
|
56
|
-
if (isFunction(isReady)) {
|
|
57
|
-
store = waitOnStoreReadiness(
|
|
58
|
-
store,
|
|
59
|
-
isReady,
|
|
60
|
-
createSagaReadyHandler(onReady),
|
|
61
|
-
onTimeout,
|
|
62
|
-
timeout
|
|
63
|
-
);
|
|
64
|
-
} else if (isFunction(onReady)) {
|
|
65
|
-
throw new TypeError(
|
|
66
|
-
'Third argument property "onReady" is a function, when property "isReady" is not a function. '
|
|
67
|
-
+ 'The "onReady" function will never be called.'
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
return {
|
|
71
|
-
store,
|
|
72
|
-
runSaga: () => sagaMiddleware.run(initialSaga).toPromise(),
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Преобразует опции сервиса в аргументы функции.
|
|
78
|
-
* @param {Object} param Параметры.
|
|
79
|
-
* @param {Function} param.reducer Редьюсер.
|
|
80
|
-
* @param {Function} param.initialSaga Инициализирующая сага.
|
|
81
|
-
* @param {Object} param.options Остальные, необязательные опции.
|
|
82
|
-
* @return {Array} Массив агрументов для использования в функции.
|
|
83
|
-
*/
|
|
84
|
-
export const mapServiceOptionsToArgs = (
|
|
85
|
-
{
|
|
86
|
-
reducer,
|
|
87
|
-
initialSaga,
|
|
88
|
-
...options
|
|
89
|
-
}
|
|
90
|
-
) => [
|
|
91
|
-
reducer,
|
|
92
|
-
initialSaga,
|
|
93
|
-
options,
|
|
94
|
-
];
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* @type {Function} Сервис создания store для использования совместно с контейнером
|
|
98
|
-
*/
|
|
99
|
-
export const createStoreService = createService(
|
|
100
|
-
createStore,
|
|
101
|
-
mapServiceOptionsToArgs
|
|
102
|
-
);
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { call } from 'redux-saga/effects';
|
|
2
|
-
import get from 'lodash/get';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @typedef {Object} ServerResponse Ответ сервера.
|
|
6
|
-
* @property {boolean} ok Были ли запрос совершен успешно.
|
|
7
|
-
* @property {Object|null} error Объект ошибки.
|
|
8
|
-
* @property {Object|string|null} data Данные ответа.
|
|
9
|
-
* @property {number|null} status Статус ответа.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Безопасно запрашивает данные c сервера, с обработкой и логированием ошибок, обрабатывает ответ.
|
|
14
|
-
* @param {Function} performRequest Функция, выполняющая запрос.
|
|
15
|
-
* @param {Object} [options] Опции.
|
|
16
|
-
* @param {Array} [options.args] Аргументы функции, выполняющей запрос.
|
|
17
|
-
* @return {ServerResponse} Ответ сервера.
|
|
18
|
-
*/
|
|
19
|
-
export default function * doSafeRequest (
|
|
20
|
-
performRequest,
|
|
21
|
-
options
|
|
22
|
-
) {
|
|
23
|
-
const {
|
|
24
|
-
args = [],
|
|
25
|
-
} = options || {};
|
|
26
|
-
|
|
27
|
-
let response;
|
|
28
|
-
let ok = false;
|
|
29
|
-
let originalError = null;
|
|
30
|
-
|
|
31
|
-
try {
|
|
32
|
-
response = yield call(performRequest, ...args);
|
|
33
|
-
ok = true;
|
|
34
|
-
} catch (error) {
|
|
35
|
-
// пытаемся получить данные ответа из ошибки
|
|
36
|
-
response = error.response;
|
|
37
|
-
|
|
38
|
-
// добавляем в результат объект ошибки
|
|
39
|
-
originalError = error;
|
|
40
|
-
}
|
|
41
|
-
return {
|
|
42
|
-
ok,
|
|
43
|
-
error: originalError,
|
|
44
|
-
data: get(response, 'data', null),
|
|
45
|
-
status: get(response, 'status', null),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { call } from 'redux-saga/effects';
|
|
2
|
-
import doSafeRequest from './do-safe-request';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Обёрнутая в эффект call сага doSafeRequest.
|
|
6
|
-
* @param {Array} args Аргументы для вызова саги.
|
|
7
|
-
* @return {import('@redux-saga/core/effects').CallEffect} Эффект.
|
|
8
|
-
*/
|
|
9
|
-
const safeRequest = (...args) => call(doSafeRequest, ...args);
|
|
10
|
-
|
|
11
|
-
export default safeRequest;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { delay, fork, put, race, take } from 'redux-saga/effects';
|
|
2
|
-
import propEq from 'lodash/fp/propEq';
|
|
3
|
-
import now from 'lodash/now';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Накапливает экшены и генерирует эффект по таймауту.
|
|
7
|
-
* @param {number} timeout Время задержки в мс.
|
|
8
|
-
* @param {Array} types Массив с типами экшенов.
|
|
9
|
-
* @param {Function} task Генератор.
|
|
10
|
-
* @param {...*} args Аргументы для генератора.
|
|
11
|
-
* @return {Object} Эффект.
|
|
12
|
-
*/
|
|
13
|
-
export const takeChain = (timeout, types, task, ...args) =>
|
|
14
|
-
fork(generateTakeChain, timeout, types, task, ...args);
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Генерирует эффект по таймауту.
|
|
18
|
-
* @param {number} timeout Время задержки в мс.
|
|
19
|
-
* @param {Array} types Массив с типами экшенов.
|
|
20
|
-
* @param {Function} task Генератор.
|
|
21
|
-
* @param {...*} args Аргументы для генератора.
|
|
22
|
-
*/
|
|
23
|
-
export function * generateTakeChain (timeout, types, task, ...args) {
|
|
24
|
-
while (true) {
|
|
25
|
-
const BREAK_TYPE = `BREAK_${now()}`;
|
|
26
|
-
const collectedActions = [yield take(types)];
|
|
27
|
-
|
|
28
|
-
yield fork(putDelayed, timeout, BREAK_TYPE);
|
|
29
|
-
|
|
30
|
-
while (true) {
|
|
31
|
-
const { action, canceled } = yield race({
|
|
32
|
-
action: take(types),
|
|
33
|
-
canceled: take(BREAK_TYPE),
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
action && collectedActions.push(action);
|
|
37
|
-
if (canceled || types.every(type => collectedActions.some(propEq('type', type)))) {
|
|
38
|
-
yield fork(task, ...args, collectedActions);
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Вызывает экшен с заданной задержкой.
|
|
47
|
-
* @param {number} timeout Время задержки в мс.
|
|
48
|
-
* @param {string} type Тип экшена.
|
|
49
|
-
*/
|
|
50
|
-
export function * putDelayed (timeout, type) {
|
|
51
|
-
yield delay(timeout);
|
|
52
|
-
yield put({ type });
|
|
53
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { createObserveMiddleware } from '../../observe-middleware';
|
|
2
|
-
import isString from 'lodash/isString';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Возвращает функцию, создающую middleware для добавления в трэйсер длительности внутреннего процесса
|
|
6
|
-
* при обработке запроса.
|
|
7
|
-
* @param {Object} dependencies Опции.
|
|
8
|
-
* @param {string} dependencies.spanName Имя span'а.
|
|
9
|
-
* @param {Object} dependencies.tracer Экземпляр трэйсера.
|
|
10
|
-
* @param {Function} dependencies.startSubscriber Подписчик на событие начала рендеринга.
|
|
11
|
-
* @param {Function} dependencies.finishSubscriber Подписчик на событие конца рендеринга.
|
|
12
|
-
* @param {string} [dependencies.parentSpan='span'] Иимя родительского спана в response.locals.
|
|
13
|
-
* @return {Function} Middleware приложения Express.
|
|
14
|
-
*/
|
|
15
|
-
export const createChildTracingMiddleware = ({
|
|
16
|
-
spanName,
|
|
17
|
-
tracer,
|
|
18
|
-
startSubscriber,
|
|
19
|
-
finishSubscriber,
|
|
20
|
-
parentSpan = 'span',
|
|
21
|
-
}) => {
|
|
22
|
-
if (!isString(spanName)) {
|
|
23
|
-
throw new TypeError('"spanName" properties must be a string');
|
|
24
|
-
}
|
|
25
|
-
return createObserveMiddleware({
|
|
26
|
-
onStart: (timestamp, request, response) => {
|
|
27
|
-
response.locals[spanName] = tracer.startSpan(
|
|
28
|
-
spanName,
|
|
29
|
-
{
|
|
30
|
-
childOf: response.locals[parentSpan],
|
|
31
|
-
}
|
|
32
|
-
);
|
|
33
|
-
},
|
|
34
|
-
onFinish: (duration, request, response) => {
|
|
35
|
-
response.locals[spanName]
|
|
36
|
-
.setTag(`${spanName} duration`, `${duration} ms`)
|
|
37
|
-
.finish();
|
|
38
|
-
},
|
|
39
|
-
startSubscriber,
|
|
40
|
-
finishSubscriber,
|
|
41
|
-
});
|
|
42
|
-
};
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import { initTracerFromEnv } from 'jaeger-client';
|
|
2
|
-
import { FORMAT_HTTP_HEADERS } from 'opentracing';
|
|
3
|
-
import { createObserveMiddleware } from '../../observe-middleware/';
|
|
4
|
-
import isFunction from 'lodash/isFunction';
|
|
5
|
-
import get from 'lodash/get';
|
|
6
|
-
import { createService } from '../../container';
|
|
7
|
-
import isPlainObject from 'lodash/isPlainObject';
|
|
8
|
-
import { getOriginalUrl } from '../http/request-getters';
|
|
9
|
-
import mapValues from 'lodash/fp/mapValues';
|
|
10
|
-
|
|
11
|
-
const mapValuesWithKey = mapValues.convert({ cap: false });
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Возвращает новый объект, в котором заменено значение свойств, имена которых содержат 'Password'.
|
|
15
|
-
*/
|
|
16
|
-
const filterSecrets = mapValuesWithKey((value, key) => key.includes('Password') ? '[Filtered]' : value);
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Запускает трассировку входящего http-запроса.
|
|
20
|
-
* @param {Object} tracer Экземпляр трейсера.
|
|
21
|
-
* @param {string} key Ключ.
|
|
22
|
-
* @param {Object} httpRequest Запрос.
|
|
23
|
-
* @param {Object} [payload] Дополнительная информация для добавления к спану.
|
|
24
|
-
* @return {Object} Спан.
|
|
25
|
-
*/
|
|
26
|
-
export const traceIncomingRequest = (tracer, key, httpRequest, payload) =>
|
|
27
|
-
tracer
|
|
28
|
-
.startSpan(
|
|
29
|
-
key,
|
|
30
|
-
{
|
|
31
|
-
childOf: tracer.extract(FORMAT_HTTP_HEADERS, httpRequest.headers),
|
|
32
|
-
}
|
|
33
|
-
)
|
|
34
|
-
.addTags(isPlainObject(payload) ? payload : {});
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Создаёт новый или возвращает существующий экземпляр jaeger-трейсера.
|
|
38
|
-
* @param {Object} dependencies Зависимости.
|
|
39
|
-
* @param {Object} dependencies.tracerConfig Основные параметры конфигурации трейсера.
|
|
40
|
-
* @param {string} dependencies.tracerConfig.serviceName Название сервиса.
|
|
41
|
-
* @param {number} dependencies.tracerConfig.version Версия сборки.
|
|
42
|
-
* @param {Object} [dependencies.additionalConfig={}] Дополнительные параметры конфигурации трейсера.
|
|
43
|
-
* @return {import('opentracing').Tracer} Объект трейсера.
|
|
44
|
-
*/
|
|
45
|
-
export const getTracer = ({
|
|
46
|
-
tracerConfig: {
|
|
47
|
-
version,
|
|
48
|
-
serviceName,
|
|
49
|
-
},
|
|
50
|
-
additionalConfig = {},
|
|
51
|
-
}) => initTracerFromEnv(
|
|
52
|
-
{
|
|
53
|
-
serviceName,
|
|
54
|
-
...additionalConfig,
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
tags: {
|
|
58
|
-
[`${serviceName}.version`]: version,
|
|
59
|
-
},
|
|
60
|
-
}
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Возвращает функцию - промежуточный слой для маршрутов express-приложения.
|
|
65
|
-
* Сигнализирует о начале и конце запроса.
|
|
66
|
-
* @param {Function} createSpan Функция возвращающая новый объект span, вызываемая при старте запроса.
|
|
67
|
-
* @param {Function} onSpanFinish Функция получающая созданный span, вызываемая при ответе.
|
|
68
|
-
* @param {Object} [options] Необязательные опции.
|
|
69
|
-
* @param {string} [options.spanKey='span'] Ключ, под которым будет сохранен span в response.locals.
|
|
70
|
-
* @return {Function} Функция - промежуточный слой для маршрутов.
|
|
71
|
-
* @private
|
|
72
|
-
*/
|
|
73
|
-
export const _createTracingMiddleware = (
|
|
74
|
-
createSpan,
|
|
75
|
-
onSpanFinish,
|
|
76
|
-
{ spanKey = 'span' } = {}
|
|
77
|
-
) => {
|
|
78
|
-
const hasSpanCreator = isFunction(createSpan);
|
|
79
|
-
const hasFinishHandler = isFunction(onSpanFinish);
|
|
80
|
-
|
|
81
|
-
return createObserveMiddleware({
|
|
82
|
-
onStart: (startTime, request, response) => {
|
|
83
|
-
if (hasSpanCreator) {
|
|
84
|
-
response.locals[spanKey] = createSpan(request, response);
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
onFinish: (duration, request, response) => {
|
|
88
|
-
if (hasFinishHandler) {
|
|
89
|
-
onSpanFinish(request, response, response.locals[spanKey]);
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
});
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Получает контекст из объекта текущего ответа.
|
|
97
|
-
* @param {Object} response Объект с параметрами текущего ответа.
|
|
98
|
-
* @return {Object|null} Текущий контекст.
|
|
99
|
-
*/
|
|
100
|
-
export const getSpanContext = ({ response }) => {
|
|
101
|
-
let context;
|
|
102
|
-
if (isFunction(get(response, 'locals.span.context'))) {
|
|
103
|
-
context = response.locals.span.context();
|
|
104
|
-
}
|
|
105
|
-
return context || null;
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Функция преобразования зависимостей сервиса в аргументы функции.
|
|
110
|
-
* @param {Object} dependencies Зависимости.
|
|
111
|
-
* @return {Array} Массив аргументов.
|
|
112
|
-
* @private
|
|
113
|
-
*/
|
|
114
|
-
export const _deptToArg = ({ createSpan, onSpanFinish, options }) => [createSpan, onSpanFinish, options];
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Возвращает сервис для создания промежуточного слоя трассировки.
|
|
118
|
-
* @return {Function} Сервис.
|
|
119
|
-
*/
|
|
120
|
-
export const tracingMiddlewareCreator = createService(
|
|
121
|
-
_createTracingMiddleware,
|
|
122
|
-
_deptToArg
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Сервис для создания span-ов трейсинга.
|
|
127
|
-
* @param {Object} dependencies Параметры сервиса.
|
|
128
|
-
* @param {Object} dependencies.jaegerTracer Трейсер.
|
|
129
|
-
* @param {Object} dependencies.config Конфигурация приложения.
|
|
130
|
-
* @return {Function} Функция для создания спана.
|
|
131
|
-
*/
|
|
132
|
-
export const createSpanCreator = ({ jaegerTracer, config }) => request => traceIncomingRequest(
|
|
133
|
-
jaegerTracer,
|
|
134
|
-
'incoming-http-request',
|
|
135
|
-
request,
|
|
136
|
-
_getRequestContext(request, config)
|
|
137
|
-
);
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Обработчик завершения трейса.
|
|
141
|
-
* @param {import('http').IncomingMessage} req Запрос.
|
|
142
|
-
* @param {import('http').ServerResponse} res Ответ.
|
|
143
|
-
* @param {import('opentracing').Span} span Спан.
|
|
144
|
-
*/
|
|
145
|
-
export const spanFinishHandler = (req, res, span) => {
|
|
146
|
-
span.finish();
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Возвращает контекст, в котором обрабатывается запрос к сервису, для добавления в span.
|
|
151
|
-
* @param {import('http').IncomingMessage} request Запрос.
|
|
152
|
-
* @param {Object} config Конфигурация приложения.
|
|
153
|
-
* @return {Object} Контекст.
|
|
154
|
-
* @private
|
|
155
|
-
*/
|
|
156
|
-
export const _getRequestContext = (request, config) => {
|
|
157
|
-
const context = {
|
|
158
|
-
'request.path': getOriginalUrl({ request }),
|
|
159
|
-
'app.config': isPlainObject(config) ? filterSecrets(config) : '',
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
if (isPlainObject(request.headers) && isFunction(request.get)) {
|
|
163
|
-
Object.keys(request.headers).forEach(key => {
|
|
164
|
-
if (key.toLowerCase().startsWith('simaland-')) {
|
|
165
|
-
context[`request.headers.${key}`] = request.get(key);
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
return context;
|
|
171
|
-
};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import pipe from 'lodash/fp/pipe';
|
|
2
|
-
import isString from 'lodash/isString';
|
|
3
|
-
import split from 'lodash/fp/split';
|
|
4
|
-
import map from 'lodash/fp/map';
|
|
5
|
-
import compact from 'lodash/compact';
|
|
6
|
-
import get from 'lodash/get';
|
|
7
|
-
import trim from 'lodash/trim';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Конвертирует строку со списком сегментов в массив.
|
|
11
|
-
* @param {string} segments Строка со списком сегментов.
|
|
12
|
-
* @return {Array} Массив со списком сегментов.
|
|
13
|
-
*/
|
|
14
|
-
const convertSegmentsToArray = pipe(
|
|
15
|
-
value => isString(value) ? value : '',
|
|
16
|
-
split(','),
|
|
17
|
-
compact,
|
|
18
|
-
map(trim)
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Возвращает функцию, определяющую включена ли заданная фича.
|
|
23
|
-
* @param {string} feature Название фичи.
|
|
24
|
-
* @return {function(string, string[]): boolean} Функция.
|
|
25
|
-
*/
|
|
26
|
-
export const checkFeatureBySegment = feature => (userSegment, allFeatures) => {
|
|
27
|
-
const segments = convertSegmentsToArray(get(allFeatures, feature));
|
|
28
|
-
|
|
29
|
-
return segments.includes('ALL') || segments.includes(userSegment);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export default checkFeatureBySegment;
|