@sima-land/isomorph 10.1.0 → 11.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/dist/cache/types.d.ts +7 -0
- package/dist/cache/types.js +3 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/config/browser.d.ts +6 -0
- package/dist/config/browser.js +13 -0
- package/dist/config/browser.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.js +20 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/node.d.ts +6 -0
- package/dist/config/node.js +19 -0
- package/dist/config/node.js.map +1 -0
- package/dist/config/types.d.ts +7 -0
- package/dist/config/types.js +3 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/utils.d.ts +5 -0
- package/dist/config/utils.js +12 -0
- package/dist/config/utils.js.map +1 -0
- package/dist/container/application.d.ts +25 -0
- package/dist/container/application.js +63 -0
- package/dist/container/application.js.map +1 -0
- package/dist/container/index.d.ts +18 -0
- package/dist/container/index.js +74 -0
- package/dist/container/index.js.map +1 -0
- package/dist/container/types.d.ts +14 -0
- package/dist/container/types.js +3 -0
- package/dist/container/types.js.map +1 -0
- package/dist/error-tracker/browser.d.ts +8 -0
- package/dist/error-tracker/browser.js +40 -0
- package/dist/error-tracker/browser.js.map +1 -0
- package/dist/error-tracker/node.d.ts +8 -0
- package/dist/error-tracker/node.js +40 -0
- package/dist/error-tracker/node.js.map +1 -0
- package/dist/error-tracker/types.d.ts +18 -0
- package/dist/error-tracker/types.js +3 -0
- package/dist/error-tracker/types.js.map +1 -0
- package/dist/error-tracker/utils.d.ts +12 -0
- package/dist/error-tracker/utils.js +19 -0
- package/dist/error-tracker/utils.js.map +1 -0
- package/dist/http-client/middleware/cookie.d.ts +19 -0
- package/dist/http-client/middleware/cookie.js +62 -0
- package/dist/http-client/middleware/cookie.js.map +1 -0
- package/dist/http-client/middleware/tracing.d.ts +32 -0
- package/dist/http-client/middleware/tracing.js +67 -0
- package/dist/http-client/middleware/tracing.js.map +1 -0
- package/dist/http-client/types.d.ts +6 -0
- package/dist/http-client/types.js +3 -0
- package/dist/http-client/types.js.map +1 -0
- package/dist/http-client/utils.d.ts +36 -0
- package/dist/http-client/utils.js +49 -0
- package/dist/http-client/utils.js.map +1 -0
- package/dist/http-server/constants.d.ts +4 -0
- package/dist/http-server/constants.js +8 -0
- package/dist/http-server/constants.js.map +1 -0
- package/dist/http-server/handler/health-check.d.ts +6 -0
- package/dist/http-server/handler/health-check.js +15 -0
- package/dist/http-server/handler/health-check.js.map +1 -0
- package/dist/http-server/middleware/logging.d.ts +10 -0
- package/dist/http-server/middleware/logging.js +31 -0
- package/dist/http-server/middleware/logging.js.map +1 -0
- package/dist/http-server/middleware/metrics.d.ts +23 -0
- package/dist/http-server/middleware/metrics.js +60 -0
- package/dist/http-server/middleware/metrics.js.map +1 -0
- package/dist/http-server/middleware/tracing.d.ts +8 -0
- package/dist/http-server/middleware/tracing.js +32 -0
- package/dist/http-server/middleware/tracing.js.map +1 -0
- package/dist/http-server/types.d.ts +25 -0
- package/dist/http-server/types.js +3 -0
- package/dist/http-server/types.js.map +1 -0
- package/dist/http-server/utils.d.ts +26 -0
- package/dist/http-server/utils.js +88 -0
- package/dist/http-server/utils.js.map +1 -0
- package/dist/logger/handler/console.d.ts +8 -0
- package/dist/logger/handler/console.js +36 -0
- package/dist/logger/handler/console.js.map +1 -0
- package/dist/logger/handler/sentry.d.ts +8 -0
- package/dist/logger/handler/sentry.js +36 -0
- package/dist/logger/handler/sentry.js.map +1 -0
- package/dist/logger/index.d.ts +6 -0
- package/dist/logger/index.js +31 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/types.d.ts +24 -0
- package/dist/logger/types.js +3 -0
- package/dist/logger/types.js.map +1 -0
- package/dist/metrics/constants.d.ts +4 -0
- package/dist/metrics/constants.js +8 -0
- package/dist/metrics/constants.js.map +1 -0
- package/dist/metrics/node.d.ts +18 -0
- package/dist/metrics/node.js +74 -0
- package/dist/metrics/node.js.map +1 -0
- package/dist/preset/index.d.ts +7 -0
- package/dist/preset/index.js +23 -0
- package/dist/preset/index.js.map +1 -0
- package/dist/preset/node/index.d.ts +15 -0
- package/dist/preset/node/index.js +90 -0
- package/dist/preset/node/index.js.map +1 -0
- package/dist/preset/node/response.d.ts +12 -0
- package/dist/preset/node/response.js +52 -0
- package/dist/preset/node/response.js.map +1 -0
- package/dist/preset/types.d.ts +7 -0
- package/dist/preset/types.js +3 -0
- package/dist/preset/types.js.map +1 -0
- package/dist/saga-runner/index.d.ts +8 -0
- package/dist/saga-runner/index.js +77 -0
- package/dist/saga-runner/index.js.map +1 -0
- package/dist/saga-runner/types.d.ts +10 -0
- package/dist/saga-runner/types.js +3 -0
- package/dist/saga-runner/types.js.map +1 -0
- package/dist/tokens.d.ts +40 -0
- package/dist/tokens.js +43 -0
- package/dist/tokens.js.map +1 -0
- package/dist/tracer/node.d.ts +10 -0
- package/dist/tracer/node.js +38 -0
- package/dist/tracer/node.js.map +1 -0
- package/dist/tracer/types.d.ts +2 -0
- package/dist/tracer/types.js +3 -0
- package/dist/tracer/types.js.map +1 -0
- package/{browser → dist/utils/browser}/analytics/data-layer.d.ts +0 -0
- package/{browser → dist/utils/browser}/analytics/data-layer.js +1 -2
- package/dist/utils/browser/analytics/data-layer.js.map +1 -0
- package/{browser → dist/utils/browser}/analytics/oko.d.ts +0 -0
- package/{browser → dist/utils/browser}/analytics/oko.js +6 -7
- package/dist/utils/browser/analytics/oko.js.map +1 -0
- package/dist/utils/browser/storage/index.d.ts +4 -0
- package/dist/utils/browser/storage/index.js +63 -0
- package/dist/utils/browser/storage/index.js.map +1 -0
- package/dist/utils/number.d.ts +6 -0
- package/dist/utils/number.js +13 -0
- package/dist/utils/number.js.map +1 -0
- package/dist/utils/react/error-handlers/index.d.ts +38 -0
- package/dist/utils/react/error-handlers/index.js +47 -0
- package/dist/utils/react/error-handlers/index.js.map +1 -0
- package/dist/utils/redux/remote-data.d.ts +23 -0
- package/dist/utils/redux/remote-data.js +28 -0
- package/dist/utils/redux/remote-data.js.map +1 -0
- package/dist/utils/redux-saga/take-chain.d.ts +24 -0
- package/dist/utils/redux-saga/take-chain.js +56 -0
- package/dist/utils/redux-saga/take-chain.js.map +1 -0
- package/dist/utils/webpack/module-federation/index.d.ts +21 -0
- package/dist/utils/webpack/module-federation/index.js +74 -0
- package/dist/utils/webpack/module-federation/index.js.map +1 -0
- package/dist/utils/webpack/module-federation/types.d.ts +26 -0
- package/dist/utils/webpack/module-federation/types.js +3 -0
- package/dist/utils/webpack/module-federation/types.js.map +1 -0
- package/dist/utils/webpack/module-federation/utils.d.ts +15 -0
- package/dist/utils/webpack/module-federation/utils.js +36 -0
- package/dist/utils/webpack/module-federation/utils.js.map +1 -0
- package/package.json +49 -63
- package/readme.md +23 -0
- package/src/cache/types.ts +7 -0
- package/src/config/browser.ts +10 -0
- package/src/config/index.ts +18 -0
- package/src/config/node.ts +18 -0
- package/src/config/types.ts +9 -0
- package/src/config/utils.ts +7 -0
- package/src/container/application.ts +91 -0
- package/src/container/index.ts +79 -0
- package/src/container/types.ts +17 -0
- package/src/error-tracker/browser.ts +14 -0
- package/src/error-tracker/node.ts +14 -0
- package/src/error-tracker/types.ts +22 -0
- package/src/error-tracker/utils.ts +18 -0
- package/src/http-client/middleware/cookie.ts +73 -0
- package/src/{helpers/api/middlewares/trace-request-middleware.ts → http-client/middleware/tracing.ts} +28 -35
- package/src/http-client/types.ts +8 -0
- package/src/http-client/utils.ts +76 -0
- package/src/http-server/constants.ts +4 -0
- package/src/http-server/handler/health-check.ts +13 -0
- package/src/http-server/middleware/logging.ts +34 -0
- package/src/http-server/middleware/metrics.ts +87 -0
- package/src/http-server/middleware/tracing.ts +35 -0
- package/src/http-server/types.ts +29 -0
- package/src/http-server/utils.ts +105 -0
- package/src/logger/handler/console.ts +35 -0
- package/src/logger/handler/sentry.ts +38 -0
- package/src/logger/index.ts +31 -0
- package/src/logger/types.ts +28 -0
- package/src/metrics/constants.ts +4 -0
- package/src/metrics/node.ts +54 -0
- package/src/preset/index.ts +24 -0
- package/src/preset/node/index.ts +101 -0
- package/src/preset/node/response.ts +57 -0
- package/src/preset/types.ts +9 -0
- package/src/saga-runner/index.ts +59 -0
- package/src/saga-runner/types.ts +13 -0
- package/src/tokens.ts +54 -0
- package/src/tracer/node.ts +40 -0
- package/src/tracer/types.ts +3 -0
- package/src/utils/browser/analytics/__test__/data-layer.test.ts +50 -0
- package/src/utils/browser/analytics/__test__/oko.test.tsx +143 -0
- package/src/{browser → utils/browser}/analytics/data-layer.ts +0 -0
- package/src/{browser → utils/browser}/analytics/oko.ts +6 -4
- package/src/utils/browser/storage/index.ts +75 -0
- package/src/utils/number.ts +8 -0
- package/src/utils/react/error-handlers/__test__/__snapshots__/index.test.tsx.snap +27 -0
- package/src/utils/react/error-handlers/__test__/index.test.tsx +64 -0
- package/src/utils/react/error-handlers/index.tsx +62 -0
- package/src/utils/redux/__test__/remote-data.test.ts +50 -0
- package/src/utils/redux/remote-data.ts +34 -0
- package/src/utils/redux-saga/__test__/take-chain.test.ts +141 -0
- package/src/utils/redux-saga/take-chain.ts +65 -0
- package/src/utils/webpack/module-federation/__test__/index.test.ts +246 -0
- package/src/utils/webpack/module-federation/index.ts +92 -0
- package/src/utils/webpack/module-federation/types.ts +44 -0
- package/src/utils/webpack/module-federation/utils.ts +43 -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/index.d.ts +0 -15
- package/container/index.js +0 -175
- package/container/index.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/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/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,46 +0,0 @@
|
|
|
1
|
-
import isFunction from 'lodash/isFunction';
|
|
2
|
-
import isArray from 'lodash/isArray';
|
|
3
|
-
import { createObserveMiddleware } from '../../observe-middleware';
|
|
4
|
-
import { getOriginalUrl } from '../../helpers/http/request-getters';
|
|
5
|
-
import isMatchPatternList from '../../helpers/utils/is-match-pattern-list';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Конструктор для создания middleware для express-приложения.
|
|
9
|
-
* @param {Object} dependencies Зависимости.
|
|
10
|
-
* @param {Function} dependencies.pinoLogger Экземпляр логгера.
|
|
11
|
-
* @param {Function} dependencies.getDynamicData
|
|
12
|
-
* Функция, формирующая данные, которые нужно получить после завершения запроса.
|
|
13
|
-
* @param {string[]} dependencies.exclusions Массив шаблонов url для исключения из логирования.
|
|
14
|
-
* @return {Function} Middleware для express-приложения.
|
|
15
|
-
*/
|
|
16
|
-
export default function createLoggerMiddleware (dependencies = {}) {
|
|
17
|
-
const {
|
|
18
|
-
pinoLogger,
|
|
19
|
-
getDynamicData,
|
|
20
|
-
exclusions = [],
|
|
21
|
-
} = dependencies;
|
|
22
|
-
|
|
23
|
-
if (!pinoLogger) {
|
|
24
|
-
throw Error('First argument property "pinoLogger" is empty.');
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (!isFunction(getDynamicData)) {
|
|
28
|
-
throw TypeError('"getDynamicData" must be Function.');
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (!isArray(exclusions)) {
|
|
32
|
-
throw TypeError('"exclusions" must be array.');
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return createObserveMiddleware({
|
|
36
|
-
onFinish: (timestamp, request, response) => {
|
|
37
|
-
const url = getOriginalUrl({ request });
|
|
38
|
-
if (!isMatchPatternList(url, exclusions)) {
|
|
39
|
-
pinoLogger.info({
|
|
40
|
-
...getDynamicData(request, response),
|
|
41
|
-
latency: timestamp,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { createService } from '../../container';
|
|
2
|
-
import isFunction from 'lodash/isFunction';
|
|
3
|
-
import negate from 'lodash/negate';
|
|
4
|
-
|
|
5
|
-
const notFunc = negate(isFunction);
|
|
6
|
-
|
|
7
|
-
// Ключи перехватчиков, которые должен имплементировать экземпляр.
|
|
8
|
-
const CAPTURE_METHODS_KEYS = [
|
|
9
|
-
'captureException',
|
|
10
|
-
'captureMessage',
|
|
11
|
-
'addBreadcrumb',
|
|
12
|
-
'withScope',
|
|
13
|
-
'configureScope',
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* @typedef {Object} SentryInstance Экземпляр Sentry.
|
|
18
|
-
* @property {Function} init Были ли запрос совершен успешно.
|
|
19
|
-
* @property {Function} captureException Функция отправки ошибки.
|
|
20
|
-
* @property {Function} captureMessage Функция отправки сообщения.
|
|
21
|
-
* @property {Function} addBreadcrumb Функция прикрепления последовательности действий.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Создает новый экземпляр Sentry.
|
|
26
|
-
* @param {Object} sentry Объект Sentry, имплементирующий методы для создания экземпляра.
|
|
27
|
-
* @param {Function} [sentry.BrowserClient] Конструктор экземпляра в sdk браузера.
|
|
28
|
-
* @param {Function} [sentry.NodeClient] Конструктор экземпляра в sdk Node.
|
|
29
|
-
* @param {Function} sentry.Hub Конструктор концентратора (связывает экземпляр с областью видимости).
|
|
30
|
-
* @return {SentryInstance} Экземпляр Sentry.
|
|
31
|
-
*/
|
|
32
|
-
export const createSentryInstance = ({ BrowserClient, NodeClient, Hub }) => {
|
|
33
|
-
const CurrentClient = BrowserClient || NodeClient;
|
|
34
|
-
|
|
35
|
-
if (notFunc(CurrentClient)) {
|
|
36
|
-
throw new TypeError('Параметр "BrowserClient"/"NodeClient" должен быть функцией');
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (notFunc(Hub)) {
|
|
40
|
-
throw new TypeError('Параметр "Hub" должен быть функцией');
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const hub = new Hub();
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Функция инициализации нового экземпляра Sentry.
|
|
47
|
-
* @param {Object} options Опции инициализации.
|
|
48
|
-
*/
|
|
49
|
-
const init = options => {
|
|
50
|
-
const client = new CurrentClient(options);
|
|
51
|
-
hub.bindClient(client);
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
const captureMethods = Object.fromEntries(
|
|
55
|
-
CAPTURE_METHODS_KEYS.map(key => [key, (...args) => hub[key](...args)])
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
return {
|
|
59
|
-
init,
|
|
60
|
-
...captureMethods,
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Функция преобразования зависимостей сервиса в аргументы функции.
|
|
66
|
-
* @param {Object} dependencies Зависимости.
|
|
67
|
-
* @return {Array} Массив аргументов.
|
|
68
|
-
*/
|
|
69
|
-
export const deptToArg = ({ sentry }) => [sentry];
|
|
70
|
-
|
|
71
|
-
export default createService(
|
|
72
|
-
createSentryInstance,
|
|
73
|
-
deptToArg
|
|
74
|
-
);
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Handlers } from '@sentry/node';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @typedef {Object} SentryMiddleware Объект middlewares Sentry.
|
|
5
|
-
* @property {Function} request Middleware, добавляющий данные запроса в scope Sentry.
|
|
6
|
-
* @property {Function} failure Middleware, обрабатывающий ошибки.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Конструктор для создания middleware для Sentry.
|
|
11
|
-
* @return {SentryMiddleware} Объект middleware для Sentry.
|
|
12
|
-
*/
|
|
13
|
-
export const createSentryMiddleware = () => ({
|
|
14
|
-
request: Handlers.requestHandler(),
|
|
15
|
-
failure: Handlers.errorHandler(),
|
|
16
|
-
});
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Возвращает обработчик ошибки, передающий ошибку Sentry.
|
|
3
|
-
* @param {Function} captureExtendedException Метод захвата ошибки Sentry.
|
|
4
|
-
* @return {Function} Обработчик ошибки.
|
|
5
|
-
*/
|
|
6
|
-
export const createSentryHandlerForSagas = ({ sentry: { captureExtendedException } }) =>
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Обработчик ошибки, передающий ошибку методу Sentry.
|
|
10
|
-
* @param {Error} error Объект ошибки.
|
|
11
|
-
* @param {string} sagaStack Стек вызовов саг.
|
|
12
|
-
*/
|
|
13
|
-
(error, { sagaStack }) => captureExtendedException(error, sagaStack, { dataName: 'Sagas stack' });
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Возвращает обработчик ошибки, передающий ошибку Sentry.
|
|
17
|
-
* @param {Function} captureException Метод захвата ошибки Sentry.
|
|
18
|
-
* @return {Function} Обработчик ошибки.
|
|
19
|
-
*/
|
|
20
|
-
export const createSentryHandlerForStore = ({ sentry: { captureException } }) =>
|
|
21
|
-
() => captureException(new Error('Ожидание готовности store было прервано по таймауту'));
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Возвращает функцию для базовой конфигурации области действия экземпляра Sentry.
|
|
25
|
-
* @param {Object} options Опции сервиса.
|
|
26
|
-
* @param {Object} options.config Конфигурация приложения.
|
|
27
|
-
* @return {Function} Функция, конфигурирующая область действия.
|
|
28
|
-
*/
|
|
29
|
-
export const createDefaultScopeConfigurator = ({ config }) => scope => {
|
|
30
|
-
/**
|
|
31
|
-
* Добавляем к области действия контекст с текущей конфигурацией приложения.
|
|
32
|
-
* Если передается большой объект (например, если не отфильтрованы ненужные переменные окружения
|
|
33
|
-
* при создании конфига), то лучше использовать метод `setExtra`, иначе Sentry обрежет часть данных в GUI,
|
|
34
|
-
* но они все еще будут доступны в "сырых" данных.
|
|
35
|
-
* @see https://docs.sentry.io/enriching-error-data/additional-data/?platform=javascript#debugging-additional-data
|
|
36
|
-
*/
|
|
37
|
-
scope.setContext('App config', config);
|
|
38
|
-
};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import isFunction from 'lodash/isFunction';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Выполняет конфигурацию переданного сервиса Sentry.
|
|
5
|
-
* @param {Object} options Опции.
|
|
6
|
-
* @param {Object} options.sentryLoggerService Сервис Sentry.
|
|
7
|
-
* @param {Function} options.getSentryDsn Функция, возвращающая DSN Sentry.
|
|
8
|
-
* @param {Function} [options.getSentryOptions] Функция, возвращающая объект опций Sentry.
|
|
9
|
-
* @param {Function} [options.configureMainScope] Функция конфигурации основной области действия
|
|
10
|
-
* экземпляра/глобального экземпляра Sentry.
|
|
11
|
-
* @return {Function} Функция, возвращающая сконфигурированный сервис Sentry.
|
|
12
|
-
*/
|
|
13
|
-
const initializeSentryCreator = (
|
|
14
|
-
{
|
|
15
|
-
sentryLoggerService,
|
|
16
|
-
getSentryDsn,
|
|
17
|
-
getSentryOptions,
|
|
18
|
-
configureMainScope,
|
|
19
|
-
}
|
|
20
|
-
) => () => {
|
|
21
|
-
if (!isFunction(getSentryDsn)) {
|
|
22
|
-
throw new TypeError('"getSentryDsn" must be a function');
|
|
23
|
-
}
|
|
24
|
-
if (getSentryOptions && !isFunction(getSentryOptions)) {
|
|
25
|
-
throw new TypeError('"getSentryOptions" must be a function');
|
|
26
|
-
}
|
|
27
|
-
if (configureMainScope && !isFunction(configureMainScope)) {
|
|
28
|
-
throw new TypeError('"configureMainScope" must be a function');
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const sentryDSN = getSentryDsn() || '';
|
|
32
|
-
const sentryOptions = (getSentryOptions && getSentryOptions()) || {};
|
|
33
|
-
sentryLoggerService.init({
|
|
34
|
-
dsn: sentryDSN,
|
|
35
|
-
...sentryOptions,
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
if (isFunction(sentryLoggerService.configureScope) && isFunction(configureMainScope)) {
|
|
39
|
-
sentryLoggerService.configureScope(configureMainScope);
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export default initializeSentryCreator;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Сервис для логирования ошибок в Sentry.
|
|
3
|
-
* @param {Object} [options] Опции.
|
|
4
|
-
* @param {Object} [options.sentryLoggerService] Сервис Sentry.
|
|
5
|
-
* @return {Object} Сервис.
|
|
6
|
-
*/
|
|
7
|
-
export default function sentryLogger ({ sentryLoggerService } = {}) {
|
|
8
|
-
return {
|
|
9
|
-
captureException: (...args) => sentryLoggerService.captureException(...args),
|
|
10
|
-
captureMessage: (...args) => sentryLoggerService.captureMessage(...args),
|
|
11
|
-
captureBreadcrumb: (...args) => sentryLoggerService.addBreadcrumb(...args),
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Метод перехвата ошибки с дополнительными данными об ошибке.
|
|
15
|
-
* @param {Error} error Ошибка.
|
|
16
|
-
* @param {*} extendedData Дополнительные данные.
|
|
17
|
-
* @param {Object} [options] Опции.
|
|
18
|
-
* @param {string} [options.dataName] = 'details' Наименование дополнительных данных.
|
|
19
|
-
* @param {boolean} [options.dataAsContext] = false Прикрепить ли дополнительные данные как контекст ошибки.
|
|
20
|
-
* @param {string} [options.level] Уровень логирования.
|
|
21
|
-
*/
|
|
22
|
-
captureExtendedException: (error, extendedData, options) => {
|
|
23
|
-
const { dataName = 'details', dataAsContext = false, level } = options || {};
|
|
24
|
-
sentryLoggerService.withScope(scope => {
|
|
25
|
-
dataAsContext
|
|
26
|
-
? scope.setContext(dataName, extendedData)
|
|
27
|
-
: scope.setExtra(dataName, extendedData);
|
|
28
|
-
level && scope.setLevel(level);
|
|
29
|
-
sentryLoggerService.captureException(error);
|
|
30
|
-
});
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Пример конфигурации webpack c использованием EnhancedModuleFederationPlugin.
|
|
3
|
-
*/
|
|
4
|
-
const ExtendedMFPlugin = require('../enhanced-module-federation-plugin');
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Пример конфигурации удаленного приложения.
|
|
8
|
-
*/
|
|
9
|
-
const RemoteServiceConfig = {
|
|
10
|
-
entry: {},
|
|
11
|
-
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
|
|
12
|
-
plugins: [
|
|
13
|
-
new ExtendedMFPlugin(
|
|
14
|
-
{
|
|
15
|
-
name: 'remote-service-name',
|
|
16
|
-
filename:
|
|
17
|
-
`remote-service-name/${process.env.CI_COMMIT_REF_NAME}/remoteEntry.${process.env.CI_COMMIT_SHORT_SHA}.js`,
|
|
18
|
-
exposes: {
|
|
19
|
-
'./Modal': './src/desktop/index.tsx',
|
|
20
|
-
'./Screen': './src/mobile/index.tsx',
|
|
21
|
-
},
|
|
22
|
-
}
|
|
23
|
-
),
|
|
24
|
-
],
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Пример конфигурации приложения-хоста.
|
|
29
|
-
*/
|
|
30
|
-
const HostServiceConfig = {
|
|
31
|
-
entry: './src/index.js',
|
|
32
|
-
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
|
|
33
|
-
plugins: [
|
|
34
|
-
new ExtendedMFPlugin(
|
|
35
|
-
{
|
|
36
|
-
name: 'host-service-name',
|
|
37
|
-
remotes: {
|
|
38
|
-
firstRemoteService: 'first-remote-service-name', // Путь к remote entry определяется в рантайме
|
|
39
|
-
secondRemoteService: {
|
|
40
|
-
name: 'second-remote-service-name', // Путь к remote entry определяется в рантайме
|
|
41
|
-
},
|
|
42
|
-
thirdRemoteService: {
|
|
43
|
-
name: 'third-remote-service-name',
|
|
44
|
-
remoteEntryPath: '//path/to/remoteEntry.js', // Путь к remote entry задан явно
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
}
|
|
48
|
-
),
|
|
49
|
-
],
|
|
50
|
-
resolve: {
|
|
51
|
-
/**
|
|
52
|
-
* В дев версии или SSR удаленные модули недоступны, указываем компонент-заглушку.
|
|
53
|
-
*/
|
|
54
|
-
fallback: {
|
|
55
|
-
'remoteService/Modal': './src/__mocks__/stub-component.js',
|
|
56
|
-
'remoteService/Screen': './src/__mocks__/stub-component.js',
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
module.exports = [
|
|
62
|
-
RemoteServiceConfig,
|
|
63
|
-
HostServiceConfig,
|
|
64
|
-
];
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
const { ModuleFederationPlugin } = require('webpack').container;
|
|
2
|
-
const WebpackError = require('webpack').WebpackError;
|
|
3
|
-
const { createExternalConfig } = require('./utils');
|
|
4
|
-
|
|
5
|
-
const LIBRARY_ERROR_TEXT = [
|
|
6
|
-
'Property "library" set internally as "global" and not overridden.',
|
|
7
|
-
'For override global variable name use "containersGlobalKey" property.',
|
|
8
|
-
'For override "library" type use ModuleFederationPlugin.',
|
|
9
|
-
].join(' ');
|
|
10
|
-
|
|
11
|
-
const REMOTE_ERROR_TEXT = [
|
|
12
|
-
'The value of the remote element must be a string,',
|
|
13
|
-
'or an object with field `name` for dynamic resolution of `remoteEntry`.',
|
|
14
|
-
'Set `remoteEntryPath` field to object for a static path to `remoteEntry`.',
|
|
15
|
-
].join(' ');
|
|
16
|
-
|
|
17
|
-
/** @typedef {string} RemoteName Имя удаленного сервиса (обычно совпадает с именем в git). */
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @typedef {Object} RemoteProperty Опции подключения удаленного сервиса.
|
|
21
|
-
* @property {RemoteName} name Имя удаленного сервиса.
|
|
22
|
-
* @property {string} remoteEntryPath Статический путь к remoteEntry удаленного сервиса.
|
|
23
|
-
* @property {string} [version] Версия удаленного сервиса в формате semver.
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
/** @typedef {import('webpack').ModuleFederationPluginOptions} MFPluginOriginalOptions Опции. */
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @typedef EnhancedModuleFederationPluginOptions Опции.
|
|
30
|
-
* @param {string} name Имя сервиса.
|
|
31
|
-
* @param {string} filename Имя удаленной точки входа.
|
|
32
|
-
* @param {Object<string, RemoteName | RemoteProperty>} [remotes] Удаленные сервисы.
|
|
33
|
-
* @param {MFPluginOriginalOptions.exposes} [exposes] Предоставляемые сервисы.
|
|
34
|
-
* @param {MFPluginOriginalOptions.shared} [shared] Общие зависимости.
|
|
35
|
-
* @param {string} [remoteEntriesGlobalKey = '__RemoteEntriesList__'] Ключ свойства в глобальном объекте,
|
|
36
|
-
* в котором хранится карта точек входа в удаленные сервисы.
|
|
37
|
-
* @param {string} [containersGlobalKey = '__FederationContainers__'] Ключ свойства в глобальном объекте,
|
|
38
|
-
* в который добавляются контейнеры удаленных сервисов.
|
|
39
|
-
* @param {boolean} [useInDevelopment = false] Требуется ли подключение ModuleFederationPlugin в среде разработки.
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Создает плагин ModuleFederation с опциями, необходимыми для оркестрации удаленных модулей на клиенте.
|
|
44
|
-
* Плагин ModuleFederation будет добавлен в production режиме.
|
|
45
|
-
*/
|
|
46
|
-
class EnhancedModuleFederationPlugin {
|
|
47
|
-
/**
|
|
48
|
-
* @param {EnhancedModuleFederationPluginOptions} options Опции.
|
|
49
|
-
*/
|
|
50
|
-
constructor (options) {
|
|
51
|
-
const {
|
|
52
|
-
name,
|
|
53
|
-
library,
|
|
54
|
-
remotes,
|
|
55
|
-
remoteEntriesGlobalKey = '__RemoteEntriesList__',
|
|
56
|
-
containersGlobalKey = '__FederationContainers__',
|
|
57
|
-
} = options;
|
|
58
|
-
|
|
59
|
-
if (library) {
|
|
60
|
-
throw new WebpackError(LIBRARY_ERROR_TEXT);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (remotes) {
|
|
64
|
-
Object.values(remotes).forEach(value => {
|
|
65
|
-
if (typeof value !== 'string' && !value?.name) {
|
|
66
|
-
throw new WebpackError(REMOTE_ERROR_TEXT);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
this._options = {
|
|
72
|
-
...options,
|
|
73
|
-
remoteEntriesGlobalKey,
|
|
74
|
-
containersGlobalKey,
|
|
75
|
-
library: {
|
|
76
|
-
type: 'global',
|
|
77
|
-
name: [containersGlobalKey, name],
|
|
78
|
-
},
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* @param {import('webpack').Compiler} compiler Компилятор.
|
|
84
|
-
*/
|
|
85
|
-
apply (compiler) {
|
|
86
|
-
const {
|
|
87
|
-
remotes,
|
|
88
|
-
remoteEntriesGlobalKey,
|
|
89
|
-
containersGlobalKey,
|
|
90
|
-
useInDevelopment = false,
|
|
91
|
-
...originalOptions
|
|
92
|
-
} = this._options;
|
|
93
|
-
|
|
94
|
-
const configuredRemotes = {};
|
|
95
|
-
|
|
96
|
-
remotes && Object.entries(remotes).forEach(([key, value]) => {
|
|
97
|
-
const serviceName = value?.name || value;
|
|
98
|
-
const remoteEntryPath = value?.remoteEntryPath;
|
|
99
|
-
|
|
100
|
-
configuredRemotes[key] = { external: createExternalConfig({
|
|
101
|
-
serviceName,
|
|
102
|
-
remoteEntryPath,
|
|
103
|
-
remoteEntriesGlobalKey,
|
|
104
|
-
containersGlobalKey,
|
|
105
|
-
}) };
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
compiler.hooks.environment.tap('EnhancedModuleFederationPlugin', () => {
|
|
109
|
-
if (useInDevelopment || compiler.options.mode === 'production') {
|
|
110
|
-
new ModuleFederationPlugin({
|
|
111
|
-
...remotes && { remotes: configuredRemotes },
|
|
112
|
-
...originalOptions,
|
|
113
|
-
}).apply(compiler);
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
module.exports = EnhancedModuleFederationPlugin;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Возвращает скрипт инициализации удаленного модуля.
|
|
3
|
-
* @param {Object} params Параметры.
|
|
4
|
-
* @param {string} params.serviceName Имя сервиса, содержащего удаленные модули.
|
|
5
|
-
* @param {string} params.remoteEntriesGlobalKey Глобальная переменная,
|
|
6
|
-
* в которой хранятся пути к удаленным точкам входа.
|
|
7
|
-
* @param {string} params.containersGlobalKey Глобальная переменная, в которую добавляются удаленные контейнеры.
|
|
8
|
-
* @param {string} params.remoteEntryPath Путь к remoteEntry, если его не надо получать в рантайме.
|
|
9
|
-
* @return {string} Скрипт инициализации.
|
|
10
|
-
*/
|
|
11
|
-
const createExternalConfig = ({
|
|
12
|
-
serviceName,
|
|
13
|
-
remoteEntryPath,
|
|
14
|
-
remoteEntriesGlobalKey,
|
|
15
|
-
containersGlobalKey,
|
|
16
|
-
}) =>
|
|
17
|
-
`promise new Promise((resolve, reject) => {
|
|
18
|
-
if (window['${remoteEntriesGlobalKey}']) {
|
|
19
|
-
const scriptElement = document.createElement('script');
|
|
20
|
-
scriptElement.onload = () => {
|
|
21
|
-
scriptElement.remove();
|
|
22
|
-
resolve(window['${containersGlobalKey}']['${serviceName}']);
|
|
23
|
-
};
|
|
24
|
-
scriptElement.onerror = () => {
|
|
25
|
-
scriptElement.remove();
|
|
26
|
-
reject(new Error('Failed loading remoteEntry for "${serviceName}".'));
|
|
27
|
-
};
|
|
28
|
-
scriptElement.src = ${remoteEntryPath
|
|
29
|
-
? `'${remoteEntryPath}'`
|
|
30
|
-
: `window['${remoteEntriesGlobalKey}']['${serviceName}']`
|
|
31
|
-
};
|
|
32
|
-
scriptElement.async = true;
|
|
33
|
-
document.head.append(scriptElement);
|
|
34
|
-
} else {
|
|
35
|
-
reject(new ReferenceError('Object "${remoteEntriesGlobalKey}" unavailable.'));
|
|
36
|
-
}
|
|
37
|
-
})`;
|
|
38
|
-
|
|
39
|
-
module.exports = { createExternalConfig };
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import isFunction from 'lodash/isFunction';
|
|
2
|
-
import getMsFromHRT from '../helpers/utils/get-ms-from-hrt';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Немедленно выполняет функцию-обработчик при старте middleware.
|
|
6
|
-
* @param {Function} callback Функция обработчик.
|
|
7
|
-
* @return {*} Результат выполнения функции-обработчика.
|
|
8
|
-
*/
|
|
9
|
-
export const defaultStartSubscriber = ({ callback }) => callback();
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Подписчик на событие завершения процесса.
|
|
13
|
-
* @param {Object} param Параметры.
|
|
14
|
-
* @param {import('http').ServerResponse} param.response Ответ сервера.
|
|
15
|
-
* @param {Function} param.callback Функция-обработчик события.
|
|
16
|
-
* @return {import('http').ServerResponse} Имеет ли событие другие обработчики.
|
|
17
|
-
*/
|
|
18
|
-
export const defaultFinishSubscriber = ({ response, callback }) => response.once('finish', callback);
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Возвращает новую функцию - промежуточный слой для Express-приложения.
|
|
22
|
-
* @param {Object} options Опции.
|
|
23
|
-
* @param {Function} options.onStart Сработает при старте запроса, получит временную отметку старта, запрос и ответ.
|
|
24
|
-
* @param {Function} options.onFinish Сработает при отправке ответа, получит временную отметку старта, запрос и ответ.
|
|
25
|
-
* @return {Function} Функция - промежуточный слой для Express.
|
|
26
|
-
*/
|
|
27
|
-
export const createObserveMiddleware = (
|
|
28
|
-
{
|
|
29
|
-
onStart,
|
|
30
|
-
onFinish,
|
|
31
|
-
startSubscriber = defaultStartSubscriber,
|
|
32
|
-
finishSubscriber = defaultFinishSubscriber,
|
|
33
|
-
} = {}
|
|
34
|
-
) => {
|
|
35
|
-
const hasStartHandler = isFunction(onStart);
|
|
36
|
-
const hasFinishHandler = isFunction(onFinish);
|
|
37
|
-
const hasStartSubscriber = isFunction(startSubscriber);
|
|
38
|
-
const hasFinishSubscriber = isFunction(finishSubscriber);
|
|
39
|
-
|
|
40
|
-
return (request, response, next) => {
|
|
41
|
-
let startTime = process.hrtime();
|
|
42
|
-
if (hasStartSubscriber) {
|
|
43
|
-
startSubscriber({
|
|
44
|
-
request,
|
|
45
|
-
response,
|
|
46
|
-
callback: () => {
|
|
47
|
-
startTime = process.hrtime();
|
|
48
|
-
if (hasStartHandler) {
|
|
49
|
-
onStart(getMsFromHRT(startTime), request, response);
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (hasFinishSubscriber) {
|
|
56
|
-
finishSubscriber({
|
|
57
|
-
request,
|
|
58
|
-
response,
|
|
59
|
-
callback: () => {
|
|
60
|
-
const duration = process.hrtime(startTime);
|
|
61
|
-
if (hasFinishHandler) {
|
|
62
|
-
onFinish(getMsFromHRT(duration), request, response);
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
next();
|
|
69
|
-
};
|
|
70
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Фабрика для промежуточного слоя устанавливающего заголовки.
|
|
3
|
-
* @param {Object} dependencies Объект зависимостей.
|
|
4
|
-
* @param {Object} [dependencies.headers] Объект заголовков.
|
|
5
|
-
* @return {Function} Промежуточный слой приложения для установки заголовков со ссылками на клиентские ресурсы.
|
|
6
|
-
*/
|
|
7
|
-
const createSetHeaderMiddleware = ({
|
|
8
|
-
headers = {},
|
|
9
|
-
}) => (request, response, next) => {
|
|
10
|
-
Object.entries(headers).forEach(([key, value]) => {
|
|
11
|
-
response.set({ [key]: value });
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
next();
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export default createSetHeaderMiddleware;
|