@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
package/src/config/helpers.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import isString from 'lodash/isString';
|
|
2
|
-
import isFunction from 'lodash/isFunction';
|
|
3
|
-
import { RULE_TYPES } from './validate';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Станадртный валидатор, проверяет на непустую строку.
|
|
7
|
-
* @param {*} value Значение, которое нужно провалидировать.
|
|
8
|
-
* @return {boolean} Валидно ли значение.
|
|
9
|
-
*/
|
|
10
|
-
export const defaultValidate = value => isString(value) && value.length > 0;
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Возвращает текст ошибки про умолчанию.
|
|
14
|
-
* @param {string} property Свойство для которого получена ошибка.
|
|
15
|
-
* @return {string} Текст ошибки.
|
|
16
|
-
*/
|
|
17
|
-
export const getDefaultError = property =>
|
|
18
|
-
`Ошибка конфигрурации приложения: Поле "${property}" заполнено некорректно`;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Возвращает текст ошибки для переданной строки ошибки.
|
|
22
|
-
* @param {string} property Свойство для которого получена ошибка.
|
|
23
|
-
* @param {string} error Текст ошибки.
|
|
24
|
-
* @return {string} Полный текст ошибки.
|
|
25
|
-
*/
|
|
26
|
-
export const getStringError = (property, error) =>
|
|
27
|
-
`Ошибка конфигурации. Поле "${property}": ${error}`;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Выбрасывает ошибку.
|
|
31
|
-
* @param {string} errorText Текст ошибки.
|
|
32
|
-
*/
|
|
33
|
-
export const throwError = errorText => {
|
|
34
|
-
throw new Error(errorText);
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Выводит в лог ошибку.
|
|
39
|
-
* @param {string} errorText Текст ошибки.
|
|
40
|
-
*/
|
|
41
|
-
export const consoleError = errorText => {
|
|
42
|
-
// eslint-disable-next-line no-console
|
|
43
|
-
console.error(errorText);
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Вызывает ошибку.
|
|
48
|
-
* @param {Object} errorData Данные необходимые для вывода ошибки.
|
|
49
|
-
* @param {string} errorData.property Проверяемое свойство конфига.
|
|
50
|
-
* @param {*} errorData.value Проверяемое значение.
|
|
51
|
-
* @param {Function|string} [errorData.error] Либо функция, вызвающая ошибку, либо текст ошибки.
|
|
52
|
-
* @param {'error'|'warning'} errorData.type Тип валидации.
|
|
53
|
-
*/
|
|
54
|
-
export const callError = ({
|
|
55
|
-
property,
|
|
56
|
-
value,
|
|
57
|
-
error,
|
|
58
|
-
type,
|
|
59
|
-
}) => {
|
|
60
|
-
if (isFunction(error)) {
|
|
61
|
-
error(property, value);
|
|
62
|
-
} else {
|
|
63
|
-
const errorText = isString(error)
|
|
64
|
-
? getStringError(property, error)
|
|
65
|
-
: getDefaultError(property);
|
|
66
|
-
|
|
67
|
-
type === RULE_TYPES.error
|
|
68
|
-
? throwError(errorText)
|
|
69
|
-
: consoleError(errorText);
|
|
70
|
-
}
|
|
71
|
-
};
|
package/src/config/validate.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
defaultValidate,
|
|
3
|
-
callError,
|
|
4
|
-
} from './helpers';
|
|
5
|
-
import isFunction from 'lodash/isFunction';
|
|
6
|
-
import isPlainObject from 'lodash/isPlainObject';
|
|
7
|
-
|
|
8
|
-
export const RULE_TYPES = Object.freeze({
|
|
9
|
-
error: 'error',
|
|
10
|
-
warning: 'warning',
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Возвращает массив валидаторов.
|
|
15
|
-
* @param {Object|Array|Function} validation Функция-валидатор, либо объект-валидатор,
|
|
16
|
-
* либо массив объектов-валидаторов.
|
|
17
|
-
* @return {Array} Массив валидаторов.
|
|
18
|
-
*/
|
|
19
|
-
export const getValidatorsList = validation => {
|
|
20
|
-
let result = validation;
|
|
21
|
-
|
|
22
|
-
if (isFunction(validation)) {
|
|
23
|
-
result = [{ validate: validation }];
|
|
24
|
-
} else if (isPlainObject(validation)) {
|
|
25
|
-
result = [validation];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return result;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Проверяет значение на корректность.
|
|
33
|
-
* @param {Function} validate Функция-валидатор.
|
|
34
|
-
* @param {*} value Значение.
|
|
35
|
-
* @return {boolean} Валидно ли значение.
|
|
36
|
-
*/
|
|
37
|
-
export const checkValue = (validate, value) => isFunction(validate)
|
|
38
|
-
? !validate(value)
|
|
39
|
-
: !defaultValidate(value);
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Валидирует значение свойства конфигурации.
|
|
43
|
-
* @param {string} property Название свойства.
|
|
44
|
-
* @param {*} value Значение, которое нужно провалидировать.
|
|
45
|
-
* @param {Object} rules Правила валидации,.
|
|
46
|
-
* @param {Object|Array|Function} rules.validation Функция-валидатор, либо объект-валидатор,
|
|
47
|
-
* либо массив объектов-валидаторов.
|
|
48
|
-
*/
|
|
49
|
-
export const validateValue = (
|
|
50
|
-
property,
|
|
51
|
-
value,
|
|
52
|
-
{
|
|
53
|
-
validation = defaultValidate,
|
|
54
|
-
...restRules
|
|
55
|
-
}
|
|
56
|
-
) => {
|
|
57
|
-
const validatorsList = getValidatorsList(validation);
|
|
58
|
-
const failedValidator = validatorsList.find(({ validate }) =>
|
|
59
|
-
checkValue(validate, value));
|
|
60
|
-
|
|
61
|
-
failedValidator && callError({
|
|
62
|
-
property,
|
|
63
|
-
value,
|
|
64
|
-
...restRules,
|
|
65
|
-
...failedValidator,
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Валидирует определенное свойство конфигурации.
|
|
71
|
-
* @param {Object} config Объект конфигурации.
|
|
72
|
-
* @param {string} property Название свойства.
|
|
73
|
-
* @param {Object} rules Объект с описанием правил валидидации свойство.
|
|
74
|
-
*/
|
|
75
|
-
export const validateProperty = (config, property, rules) => {
|
|
76
|
-
const value = config[property];
|
|
77
|
-
const rulesList = Array.isArray(rules) ? rules : [rules];
|
|
78
|
-
|
|
79
|
-
if (value === undefined) {
|
|
80
|
-
const { error, type } = rules;
|
|
81
|
-
callError({ property, value, error, type });
|
|
82
|
-
} else {
|
|
83
|
-
rulesList.forEach(rule => {
|
|
84
|
-
validateValue(property, value, rule);
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Валидирует конфигурацию.
|
|
91
|
-
* @param {Object} config Конфигурация, которую нужно провалидировать.
|
|
92
|
-
* @param {Object} validationConfig Конфигурация валидатора.
|
|
93
|
-
* @return {Object} Конфигурация приложения.
|
|
94
|
-
*/
|
|
95
|
-
const validateConfig = (
|
|
96
|
-
config,
|
|
97
|
-
validationConfig
|
|
98
|
-
) => {
|
|
99
|
-
if (!isPlainObject(config)) {
|
|
100
|
-
throw new TypeError('Конфигурация приложения должна быть чистым объектом');
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (!isPlainObject(validationConfig)) {
|
|
104
|
-
throw new TypeError('Конфигурация валидатора должна быть чистым объектом');
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
Object.entries(validationConfig).forEach(([property, rules]) => {
|
|
108
|
-
validateProperty(config, property, rules);
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
return config;
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
export default validateConfig;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import isFunction from 'lodash/isFunction';
|
|
2
|
-
import getDependencies from './get-dependencies';
|
|
3
|
-
import isContainer from './is-container';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Создаёт функцию для инъекции зависимостей из контейнера в функции.
|
|
7
|
-
* @param {Function} getContainer Функция для получения экземпляра контейнера.
|
|
8
|
-
* @return {Function} Функция для инъекции зависимостей из контейнера.
|
|
9
|
-
*/
|
|
10
|
-
const createInject = getContainer => ({
|
|
11
|
-
target,
|
|
12
|
-
dependencies = [],
|
|
13
|
-
registerArgs,
|
|
14
|
-
}) => async (...args) => {
|
|
15
|
-
const container = getContainer();
|
|
16
|
-
|
|
17
|
-
// Если не получили контейнера, то выходим с ошибкой.
|
|
18
|
-
if (!isContainer(container)) {
|
|
19
|
-
throw new TypeError('Полученный результат выполнения функции getContainer не реализует интерфейс контейнера.');
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Если требуется регистрируем аргументы функции как сервисы в контейнере.
|
|
23
|
-
if (isFunction(registerArgs)) {
|
|
24
|
-
registerArgs(container, ...args);
|
|
25
|
-
}
|
|
26
|
-
return target(
|
|
27
|
-
...args,
|
|
28
|
-
...Object.values(await getDependencies(container, dependencies))
|
|
29
|
-
);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export default createInject;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import isString from 'lodash/isString';
|
|
2
|
-
import isPlainObject from 'lodash/isPlainObject';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Определяет, является ли зависимость статической, то есть не требующей инициализации.
|
|
6
|
-
* @param {Object} dependency Конфигурация зависимости.
|
|
7
|
-
* @param {string} dependency.name Название зависимости.
|
|
8
|
-
* @param {*} dependency.value Значение зависимости.
|
|
9
|
-
* @return {boolean} Является ли зависимость статической.
|
|
10
|
-
*/
|
|
11
|
-
export const isStaticDependency = ({ name, value }) =>
|
|
12
|
-
typeof name === 'string'
|
|
13
|
-
&& typeof value !== 'undefined';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Создает объект зависимостей на основе их названий.
|
|
17
|
-
* @param {Object} container Экземпляр контейнера в котором должен осуществляться поиск зависимостей.
|
|
18
|
-
* @param {Object} dependencies Список зависимостей.
|
|
19
|
-
* @param {string} serviceName Названия сервиса.
|
|
20
|
-
* @return {Object} Объект зависимостей.
|
|
21
|
-
*/
|
|
22
|
-
const getDependencies = (
|
|
23
|
-
container,
|
|
24
|
-
dependencies = [],
|
|
25
|
-
serviceName
|
|
26
|
-
) => dependencies.reduce(async (prevPromise, dependency) => {
|
|
27
|
-
const result = await prevPromise;
|
|
28
|
-
if (isString(dependency)) {
|
|
29
|
-
result[dependency] = await container.get(dependency, serviceName);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (isPlainObject(dependency)) {
|
|
33
|
-
if (isStaticDependency(dependency)) {
|
|
34
|
-
result[dependency.name] = dependency.value;
|
|
35
|
-
} else {
|
|
36
|
-
const [necessaryName, necessaryDepName] = Object.entries(dependency).shift() || [];
|
|
37
|
-
if (necessaryName && necessaryDepName) {
|
|
38
|
-
result[necessaryName] = await container.get(necessaryDepName);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return result;
|
|
44
|
-
}, Promise.resolve({}));
|
|
45
|
-
|
|
46
|
-
export default getDependencies;
|
package/src/container/index.js
DELETED
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import isString from 'lodash/isString';
|
|
2
|
-
import isFunction from 'lodash/isFunction';
|
|
3
|
-
import ServiceNotFoundError from './service-not-found-error';
|
|
4
|
-
import getDependencies from './get-dependencies';
|
|
5
|
-
import isContainer from './is-container';
|
|
6
|
-
import isNotEmptyString from '../helpers/utils/is-not-empty-string';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Оборачивает функцию для использования в контейнере.
|
|
10
|
-
* @param {Function} fn Функция, которую необходимо обернуть.
|
|
11
|
-
* @param {Function} dependenciesToArgs Функция для преобразования зависимостей сервиса в аргументы функции.
|
|
12
|
-
* @return {Function} Функция-сервис, для использования в контейнере.
|
|
13
|
-
*/
|
|
14
|
-
export const createService = (
|
|
15
|
-
fn,
|
|
16
|
-
dependenciesToArgs
|
|
17
|
-
) => (dependencies, ...args) => fn(...dependenciesToArgs(dependencies), ...args);
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Создаёт функцию для получения синглтона контейнера с заданными параметрами.
|
|
21
|
-
* @param {Object} options Опции для создания контейнера.
|
|
22
|
-
* @return {function(): Object} Функция для получения контейнера-синглтона.
|
|
23
|
-
*/
|
|
24
|
-
export const createSingleton = options => {
|
|
25
|
-
let container;
|
|
26
|
-
return () => {
|
|
27
|
-
if (!container) {
|
|
28
|
-
container = create(options);
|
|
29
|
-
}
|
|
30
|
-
return container;
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Создаёт функцию-фабрику для создания нового экземпляра контейнера при её вызове.
|
|
36
|
-
* @param {Object} options Опции для создания контейнера.
|
|
37
|
-
* @return {function(): Object} Функция-фабрика для получения экземпляра контейнера с заданными параметрами.
|
|
38
|
-
*/
|
|
39
|
-
export const createFactory = options => () => create(options);
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Реализует наследование контейнера от другого контейнера.
|
|
43
|
-
* @param {Object} container Дочерний контейнер.
|
|
44
|
-
* @param {Object} parentContainer Родительский контейнер.
|
|
45
|
-
* @return {Object} Контейнер с поиском зависимости в родителе.
|
|
46
|
-
*/
|
|
47
|
-
const inherit = (
|
|
48
|
-
container,
|
|
49
|
-
parentContainer
|
|
50
|
-
) => {
|
|
51
|
-
let result = container;
|
|
52
|
-
if (isContainer(parentContainer)) {
|
|
53
|
-
result = {
|
|
54
|
-
...container,
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Оборачивает получение зависимости для добавления поиска в родительском контейнере.
|
|
58
|
-
* @param {string} name Название зависимости.
|
|
59
|
-
* @return {*} Зависимость.
|
|
60
|
-
* @throws {TypeError} Выдаст ошибку если параметр "name" не строка.
|
|
61
|
-
* @throws {Error} Выдаст ошибку если параметр "name" не строка или пустая строка.
|
|
62
|
-
* @throws {ServiceNotFoundError} Выдаст ошибку при попытке вызвать незарегистрированный сервис.
|
|
63
|
-
*/
|
|
64
|
-
async get (name) {
|
|
65
|
-
let dependency;
|
|
66
|
-
try {
|
|
67
|
-
dependency = await container.get(name);
|
|
68
|
-
} catch (e) {
|
|
69
|
-
if (e instanceof ServiceNotFoundError) {
|
|
70
|
-
dependency = await parentContainer.get(name);
|
|
71
|
-
} else {
|
|
72
|
-
throw e;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return dependency;
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
return result;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Функция создает IoC-контейнер.
|
|
84
|
-
* @param {Object} options Дополнительные опции для IoC-контейнера.
|
|
85
|
-
* @param {Array} options.services Массив сервисов, которые нужно зарегистрировать.
|
|
86
|
-
* @param {Object} options.parent Родительский контейнер.
|
|
87
|
-
* @return {Object} IoC Container.
|
|
88
|
-
* @throws {TypeError} Выдаст ошибку если параметр "services" не массив.
|
|
89
|
-
*/
|
|
90
|
-
export default function create ({ services = [], parent = null } = {}) {
|
|
91
|
-
if (!Array.isArray(services)) {
|
|
92
|
-
throw new TypeError('Параметр "services" должен быть массивом');
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const registry = {};
|
|
96
|
-
|
|
97
|
-
const container = inherit({
|
|
98
|
-
/**
|
|
99
|
-
* Добавляет зависимость в список зависимостей.
|
|
100
|
-
* @param {Object} options Опции необходимые для добавления зависимости.
|
|
101
|
-
* @param {string} options.name Название зависимости.
|
|
102
|
-
* @param {Function} options.singleton Функция-синглтон.
|
|
103
|
-
* @param {Function} options.factory Функция-конструктор.
|
|
104
|
-
* @param {*} options.value Переданная зависимость.
|
|
105
|
-
* @param {Array} options.dependencies Массив зависимостей.
|
|
106
|
-
* @throws {Error} Выдаст ошибку если параметр "name" не строка или пустая строка.
|
|
107
|
-
* @throws {Error} Выдаст ошибку если не передан ни один из параметров "factory", "singleton" или "value".
|
|
108
|
-
*/
|
|
109
|
-
set ({ name, singleton, factory, value, dependencies = [] } = {}) {
|
|
110
|
-
if (!isString(name) || name === '') {
|
|
111
|
-
throw new Error('Параметр "name" должен быть непустой строкой');
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if (factory !== undefined && !isFunction(factory)) {
|
|
115
|
-
throw new TypeError('Параметр "factory" должен быть функцией');
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
if (singleton !== undefined && !isFunction(singleton)) {
|
|
119
|
-
throw new TypeError('Параметр "singleton" должен быть функцией');
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (factory === undefined && value === undefined && singleton === undefined) {
|
|
123
|
-
throw Error(`Сервис ${name} не зарегистрирован,
|
|
124
|
-
так как обязательно должен быть передан один из параметров "factory", "singleton" или "value"`);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
registry[name] = {
|
|
128
|
-
name,
|
|
129
|
-
singleton,
|
|
130
|
-
factory,
|
|
131
|
-
dependencies,
|
|
132
|
-
value,
|
|
133
|
-
};
|
|
134
|
-
},
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Получает зависимость по ее названию.
|
|
138
|
-
* @param {string} name Название зависимости.
|
|
139
|
-
* @param {string} serviceName Название сервиса.
|
|
140
|
-
* @return {*} Зависимость.
|
|
141
|
-
* @throws {TypeError} Выдаст ошибку если параметр "name" не строка.
|
|
142
|
-
* @throws {Error} Выдаст ошибку если параметр "name" не строка или пустая строка.
|
|
143
|
-
* @throws {ServiceNotFoundError} Выдаст ошибку при попытке вызвать незарегистрированный сервис.
|
|
144
|
-
*/
|
|
145
|
-
async get (name, serviceName = '') {
|
|
146
|
-
if (!isString(name) || name === '') {
|
|
147
|
-
throw new Error('Параметр "name" должен быть непустой строкой');
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const service = registry[name];
|
|
151
|
-
let dependency;
|
|
152
|
-
|
|
153
|
-
if (!service) {
|
|
154
|
-
throw new ServiceNotFoundError(
|
|
155
|
-
isNotEmptyString(serviceName)
|
|
156
|
-
? `Не найдена зависимость "${name}" в цепочке вызовов "${serviceName}"`
|
|
157
|
-
: `Сервис "${name}" не зарегистрирован`
|
|
158
|
-
);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
if (service.singleton && !service.value) {
|
|
162
|
-
service.value = await service.singleton(
|
|
163
|
-
{
|
|
164
|
-
...await getDependencies(container, service.dependencies, `${serviceName}/${name}`),
|
|
165
|
-
}
|
|
166
|
-
);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
if (service.value !== undefined) {
|
|
170
|
-
dependency = service.value;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
if (service.factory) {
|
|
174
|
-
dependency = await service.factory(
|
|
175
|
-
{
|
|
176
|
-
...await getDependencies(container, service.dependencies, `${serviceName}/${name}`),
|
|
177
|
-
}
|
|
178
|
-
);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
return dependency;
|
|
182
|
-
},
|
|
183
|
-
}, parent);
|
|
184
|
-
|
|
185
|
-
services.forEach(service => container.set(service));
|
|
186
|
-
|
|
187
|
-
return container;
|
|
188
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import isPlainObject from 'lodash/isPlainObject';
|
|
2
|
-
import isFunction from 'lodash/isFunction';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Проверяет является ли переданный экземпляр контейнером.
|
|
6
|
-
* @param {*} instance Предполагаемый экземпляр контейнера.
|
|
7
|
-
* @return {boolean} Является ли переданный экземпляр контейнером.
|
|
8
|
-
*/
|
|
9
|
-
const isContainer = instance =>
|
|
10
|
-
isPlainObject(instance)
|
|
11
|
-
&& isFunction(instance.get)
|
|
12
|
-
&& isFunction(instance.set);
|
|
13
|
-
|
|
14
|
-
export default isContainer;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ошибка поиска сервиса в контейнере.
|
|
3
|
-
*/
|
|
4
|
-
export default class ServiceNotFoundError extends Error {
|
|
5
|
-
/**
|
|
6
|
-
* Конструктор.
|
|
7
|
-
* @param {...*} args Аргументы.
|
|
8
|
-
*/
|
|
9
|
-
constructor (...args) {
|
|
10
|
-
super(...args);
|
|
11
|
-
this.name = this.constructor.name;
|
|
12
|
-
Error.captureStackTrace && Error.captureStackTrace(this, this.constructor);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import get from 'lodash/get';
|
|
2
|
-
import pipe from 'lodash/fp/pipe';
|
|
3
|
-
import isFunction from 'lodash/isFunction';
|
|
4
|
-
import expressProxy from 'express-http-proxy';
|
|
5
|
-
|
|
6
|
-
const urlApi = require('url');
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Получает обработчик с прокинутым path из config url.
|
|
10
|
-
* @param {string} path Часть пути после хоста.
|
|
11
|
-
* @return {Function} Обработчик для передачи URL запроса из оригинальной версии с клиента в проксирующий запрос.
|
|
12
|
-
*/
|
|
13
|
-
export const getRequestPathResolver = path => request => request && path + request.originalUrl;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Функция создающая обработчик запроса.
|
|
17
|
-
* @param {string} header Отслеживаемый заголовок.
|
|
18
|
-
* @param {Array} map Массив обработчика.
|
|
19
|
-
* @param {Object} config Конфигурация приложения.
|
|
20
|
-
* @param {Object} proxyOptions Пользовательская конфигурация прокси.
|
|
21
|
-
* @return {Function} Функция, обрабатывающая запрос.
|
|
22
|
-
*/
|
|
23
|
-
export default function createProxyMiddleware (header, map, config, proxyOptions = {}) {
|
|
24
|
-
return (req, res, next) => {
|
|
25
|
-
const headerType = get(req, `headers['${header.toLowerCase()}']`, null);
|
|
26
|
-
const getUrl = headerType ? map[headerType] : null;
|
|
27
|
-
const proxyInstance = isFunction(getUrl) ? expressProxy(getUrl(config), {
|
|
28
|
-
proxyReqPathResolver: getRequestPathResolver(getUrlPath(getUrl(config))), ...proxyOptions,
|
|
29
|
-
}) : null;
|
|
30
|
-
|
|
31
|
-
if (proxyInstance) {
|
|
32
|
-
proxyInstance(req, res, next);
|
|
33
|
-
} else {
|
|
34
|
-
next();
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Получает path из url без слэша в конце.
|
|
41
|
-
* @param {string} url Url.
|
|
42
|
-
* @return {string} Path или пустую строку.
|
|
43
|
-
*/
|
|
44
|
-
export const getUrlPath = pipe(
|
|
45
|
-
urlApi.parse,
|
|
46
|
-
url => url.path && url.path.replace(/\/$/, '')
|
|
47
|
-
);
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import createProxyMiddleware from './create-proxy-middleware';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Конструктор сервиса проксирования.
|
|
5
|
-
* @param {Object} param Параметры.
|
|
6
|
-
* @param {Object} param.config Конфигурация приложения.
|
|
7
|
-
* @param {Object} param.config.proxy Конфигурация прокси.
|
|
8
|
-
* @return {Function} Функция-конструктор.
|
|
9
|
-
*/
|
|
10
|
-
export default function createProxy (
|
|
11
|
-
{
|
|
12
|
-
config,
|
|
13
|
-
config: {
|
|
14
|
-
proxy,
|
|
15
|
-
},
|
|
16
|
-
}
|
|
17
|
-
) {
|
|
18
|
-
return app => {
|
|
19
|
-
if (!Array.isArray(proxy)) {
|
|
20
|
-
throw TypeError('Параметр proxy должен быть массивом');
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
proxy.forEach(({ url, header, map, proxyOptions }) => {
|
|
24
|
-
app.use(url, createProxyMiddleware(header, map, config, proxyOptions));
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import propOr from 'lodash/fp/propOr';
|
|
2
|
-
|
|
3
|
-
const getDataLayer = propOr({}, ['app', 'dataLayer']);
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Возвращает функцию ответа на запрос, подходящую для текущего окружения.
|
|
7
|
-
* @param {Object} dependencies Зависимости.
|
|
8
|
-
* @param {boolean} dependencies.config.isProduction Флаг production среды.
|
|
9
|
-
* @param {Object} dependencies.response Объект ответа.
|
|
10
|
-
* @return {Function} Функция ответа на запрос.
|
|
11
|
-
*/
|
|
12
|
-
export default function createResponseSender ({ config: { isProduction }, response }) {
|
|
13
|
-
/**
|
|
14
|
-
* Функция ответа на запрос в формате HTML.
|
|
15
|
-
* @param {Object} options Опции.
|
|
16
|
-
* @param {string} options.markup Разметка.
|
|
17
|
-
*/
|
|
18
|
-
const htmlSender = ({ markup }) => { response.send(markup); };
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Функция ответа на запрос в формате JSON.
|
|
22
|
-
* @param {Object} options Опции.
|
|
23
|
-
* @param {string} options.markup Разметка.
|
|
24
|
-
* @param {{css: string, js: string, criticalJs: string[]}} options.assets Ссылки на ресурсы приложения.
|
|
25
|
-
* @param {Object} options.store Стор приложения.
|
|
26
|
-
*/
|
|
27
|
-
const jsonSender = ({
|
|
28
|
-
markup,
|
|
29
|
-
assets: {
|
|
30
|
-
css,
|
|
31
|
-
js,
|
|
32
|
-
criticalJs,
|
|
33
|
-
},
|
|
34
|
-
store,
|
|
35
|
-
}) => {
|
|
36
|
-
const payload = {
|
|
37
|
-
markup,
|
|
38
|
-
bundle_css: css || '',
|
|
39
|
-
bundle_js: js || '',
|
|
40
|
-
critical_js: criticalJs || [],
|
|
41
|
-
meta: getDataLayer(store.getState()),
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
response.json(payload);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
return isProduction ? jsonSender : htmlSender;
|
|
48
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { getMethod, getStatus, getXClientIp, getOriginalUrl } from '../helpers/http/request-getters';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Получает данные API для логирования.
|
|
5
|
-
* @param {Object} params Входные параметры.
|
|
6
|
-
* @param {Object} params.response Ответ.
|
|
7
|
-
* @param {string} params.timeDataKey Поле в response.local, из которого следует запрашивать log data.
|
|
8
|
-
* @return {number} Статус ответа.
|
|
9
|
-
*/
|
|
10
|
-
export const getApiLogData = ({ response, timeDataKey }) => response.locals[timeDataKey] || {};
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Возвращает динамически получаемые данные.
|
|
14
|
-
* @param {Object} dependencies Зависимости.
|
|
15
|
-
* @param {Object} dependencies.config Конфигурация.
|
|
16
|
-
* @param {string} dependencies.timeDataKey Поле в response.local, из которого следует запрашивать log data.
|
|
17
|
-
* @return {Object} Объект с данными.
|
|
18
|
-
*/
|
|
19
|
-
export const getDynamicData = ({ config, timeDataKey = 'logData' }) => (request, response) => ({
|
|
20
|
-
remote_ip: getXClientIp({ request }),
|
|
21
|
-
method: getMethod({ request }),
|
|
22
|
-
status: getStatus({ response }),
|
|
23
|
-
route: getOriginalUrl({ request }),
|
|
24
|
-
...getApiLogData({ response, timeDataKey }),
|
|
25
|
-
version: config.version,
|
|
26
|
-
});
|