@sima-land/isomorph 11.0.0-alpha.36 → 11.0.0-alpha.38
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/README.md +25 -0
- package/dist/cjs/cache/index.js +6 -0
- package/dist/cjs/cache/index.js.map +1 -0
- package/dist/cjs/cache/types.js +6 -0
- package/dist/cjs/cache/types.js.map +1 -0
- package/dist/cjs/config/base.js +22 -0
- package/dist/cjs/config/base.js.map +1 -0
- package/dist/cjs/config/index.js +20 -0
- package/dist/cjs/config/index.js.map +1 -0
- package/dist/cjs/config/source.js +25 -0
- package/dist/cjs/config/source.js.map +1 -0
- package/dist/cjs/config/types.js +6 -0
- package/dist/cjs/config/types.js.map +1 -0
- package/dist/cjs/di/application.js +106 -0
- package/dist/cjs/di/application.js.map +1 -0
- package/dist/cjs/di/container.js +55 -0
- package/dist/cjs/di/container.js.map +1 -0
- package/dist/cjs/di/errors.js +65 -0
- package/dist/cjs/di/errors.js.map +1 -0
- package/dist/cjs/di/index.js +59 -0
- package/dist/cjs/di/index.js.map +1 -0
- package/dist/cjs/di/preset.js +32 -0
- package/dist/cjs/di/preset.js.map +1 -0
- package/dist/cjs/di/token.js +44 -0
- package/dist/cjs/di/token.js.map +1 -0
- package/dist/cjs/di/types.js +6 -0
- package/dist/cjs/di/types.js.map +1 -0
- package/dist/cjs/http/errors.js +47 -0
- package/dist/cjs/http/errors.js.map +1 -0
- package/dist/cjs/http/index.js +63 -0
- package/dist/cjs/http/index.js.map +1 -0
- package/dist/cjs/http/types.js +6 -0
- package/dist/cjs/http/types.js.map +1 -0
- package/dist/cjs/log/errors.js +35 -0
- package/dist/cjs/log/errors.js.map +1 -0
- package/dist/cjs/log/handler/pino.js +31 -0
- package/dist/cjs/log/handler/pino.js.map +1 -0
- package/dist/cjs/log/handler/sentry.js +57 -0
- package/dist/cjs/log/handler/sentry.js.map +1 -0
- package/dist/cjs/log/index.js +26 -0
- package/dist/cjs/log/index.js.map +1 -0
- package/dist/cjs/log/logger.js +35 -0
- package/dist/cjs/log/logger.js.map +1 -0
- package/dist/cjs/log/types.js +6 -0
- package/dist/cjs/log/types.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/preset/isomorphic/constants.js +14 -0
- package/dist/cjs/preset/isomorphic/constants.js.map +1 -0
- package/dist/cjs/preset/isomorphic/index.js +6 -0
- package/dist/cjs/preset/isomorphic/index.js.map +1 -0
- package/{preset → dist/cjs/preset}/isomorphic/providers/index.js +19 -15
- package/dist/cjs/preset/isomorphic/providers/index.js.map +1 -0
- package/dist/cjs/preset/isomorphic/types.js +6 -0
- package/dist/cjs/preset/isomorphic/types.js.map +1 -0
- package/dist/cjs/preset/isomorphic/utils/index.js +322 -0
- package/dist/cjs/preset/isomorphic/utils/index.js.map +1 -0
- package/dist/cjs/preset/node/handler/index.js +52 -0
- package/dist/cjs/preset/node/handler/index.js.map +1 -0
- package/dist/cjs/preset/node/handler/providers/index.js +212 -0
- package/dist/cjs/preset/node/handler/providers/index.js.map +1 -0
- package/dist/cjs/preset/node/handler/utils/index.js +132 -0
- package/dist/cjs/preset/node/handler/utils/index.js.map +1 -0
- package/dist/cjs/preset/node/index.js +26 -0
- package/dist/cjs/preset/node/index.js.map +1 -0
- package/dist/cjs/preset/node/node/index.js +61 -0
- package/dist/cjs/preset/node/node/index.js.map +1 -0
- package/dist/cjs/preset/node/node/providers/index.js +403 -0
- package/dist/cjs/preset/node/node/providers/index.js.map +1 -0
- package/dist/cjs/preset/node/node/utils/http-client/index.js +122 -0
- package/dist/cjs/preset/node/node/utils/http-client/index.js.map +1 -0
- package/dist/cjs/preset/node/node/utils/http-server/index.js +18 -0
- package/dist/cjs/preset/node/node/utils/http-server/index.js.map +1 -0
- package/dist/cjs/preset/node/node/utils/index.js +20 -0
- package/dist/cjs/preset/node/node/utils/index.js.map +1 -0
- package/dist/cjs/preset/node/types.js +6 -0
- package/dist/cjs/preset/node/types.js.map +1 -0
- package/dist/cjs/preset/web/index.js +34 -0
- package/dist/cjs/preset/web/index.js.map +1 -0
- package/dist/cjs/preset/web/providers/index.js +94 -0
- package/dist/cjs/preset/web/providers/index.js.map +1 -0
- package/dist/cjs/tokens.js +86 -0
- package/dist/cjs/tokens.js.map +1 -0
- package/dist/cjs/utils/axios/index.js +40 -0
- package/dist/cjs/utils/axios/index.js.map +1 -0
- package/dist/cjs/utils/axios/middleware/cookie.js +28 -0
- package/dist/cjs/utils/axios/middleware/cookie.js.map +1 -0
- package/dist/cjs/utils/axios/middleware/log.js +37 -0
- package/dist/cjs/utils/axios/middleware/log.js.map +1 -0
- package/dist/cjs/utils/axios/sauce/index.js +57 -0
- package/dist/cjs/utils/axios/sauce/index.js.map +1 -0
- package/{utils → dist/cjs/utils}/axios/utils/index.js +19 -14
- package/dist/cjs/utils/axios/utils/index.js.map +1 -0
- package/{utils → dist/cjs/utils}/express/handler/health-check.js +11 -7
- package/dist/cjs/utils/express/handler/health-check.js.map +1 -0
- package/dist/cjs/utils/express/index.js +20 -0
- package/dist/cjs/utils/express/index.js.map +1 -0
- package/dist/cjs/utils/express/utils/index.js +22 -0
- package/dist/cjs/utils/express/utils/index.js.map +1 -0
- package/dist/cjs/utils/function.js +44 -0
- package/dist/cjs/utils/function.js.map +1 -0
- package/dist/cjs/utils/index.js +20 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/{utils/number.js → dist/cjs/utils/math.js} +7 -5
- package/dist/cjs/utils/math.js.map +1 -0
- package/dist/cjs/utils/react/error-handlers/index.js +80 -0
- package/dist/cjs/utils/react/error-handlers/index.js.map +1 -0
- package/dist/cjs/utils/react/index.js +19 -0
- package/dist/cjs/utils/react/index.js.map +1 -0
- package/dist/cjs/utils/redux/index.js +19 -0
- package/dist/cjs/utils/redux/index.js.map +1 -0
- package/dist/cjs/utils/redux/remote-data.js +118 -0
- package/dist/cjs/utils/redux/remote-data.js.map +1 -0
- package/dist/cjs/utils/redux-saga/index.js +20 -0
- package/dist/cjs/utils/redux-saga/index.js.map +1 -0
- package/dist/cjs/utils/redux-saga/middleware.js +149 -0
- package/dist/cjs/utils/redux-saga/middleware.js.map +1 -0
- package/dist/cjs/utils/redux-saga/take-chain.js +66 -0
- package/dist/cjs/utils/redux-saga/take-chain.js.map +1 -0
- package/dist/cjs/utils/redux-saga/types.js +6 -0
- package/dist/cjs/utils/redux-saga/types.js.map +1 -0
- package/dist/cjs/utils/ssr/index.js +73 -0
- package/dist/cjs/utils/ssr/index.js.map +1 -0
- package/dist/cjs/utils/web/analytics/data-layer.js +20 -0
- package/dist/cjs/utils/web/analytics/data-layer.js.map +1 -0
- package/dist/cjs/utils/web/analytics/index.js +20 -0
- package/dist/cjs/utils/web/analytics/index.js.map +1 -0
- package/dist/cjs/utils/web/analytics/oko.js +20 -0
- package/dist/cjs/utils/web/analytics/oko.js.map +1 -0
- package/dist/cjs/utils/web/storage/index.js +75 -0
- package/dist/cjs/utils/web/storage/index.js.map +1 -0
- package/dist/cjs/utils/webpack/env/index.js +96 -0
- package/dist/cjs/utils/webpack/env/index.js.map +1 -0
- package/dist/cjs/utils/webpack/env/types.js +6 -0
- package/dist/cjs/utils/webpack/env/types.js.map +1 -0
- package/dist/cjs/utils/webpack/env/utils.js +55 -0
- package/dist/cjs/utils/webpack/env/utils.js.map +1 -0
- package/dist/cjs/utils/webpack/index.js +20 -0
- package/dist/cjs/utils/webpack/index.js.map +1 -0
- package/dist/cjs/utils/webpack/module-federation/index.js +110 -0
- package/dist/cjs/utils/webpack/module-federation/index.js.map +1 -0
- package/dist/cjs/utils/webpack/module-federation/types.js +6 -0
- package/dist/cjs/utils/webpack/module-federation/types.js.map +1 -0
- package/{utils → dist/cjs/utils}/webpack/module-federation/utils.js +26 -31
- package/dist/cjs/utils/webpack/module-federation/utils.js.map +1 -0
- package/dist/esm/cache/index.js +2 -0
- package/dist/esm/cache/index.js.map +1 -0
- package/dist/esm/cache/types.js +2 -0
- package/dist/esm/cache/types.js.map +1 -0
- package/dist/esm/config/base.js +16 -0
- package/dist/esm/config/base.js.map +1 -0
- package/dist/esm/config/index.js +3 -0
- package/dist/esm/config/index.js.map +1 -0
- package/dist/esm/config/source.js +19 -0
- package/dist/esm/config/source.js.map +1 -0
- package/dist/esm/config/types.js +2 -0
- package/dist/esm/config/types.js.map +1 -0
- package/dist/esm/di/application.js +100 -0
- package/dist/esm/di/application.js.map +1 -0
- package/dist/esm/di/container.js +49 -0
- package/dist/esm/di/container.js.map +1 -0
- package/dist/esm/di/errors.js +56 -0
- package/dist/esm/di/errors.js.map +1 -0
- package/dist/esm/di/index.js +6 -0
- package/dist/esm/di/index.js.map +1 -0
- package/dist/esm/di/preset.js +26 -0
- package/dist/esm/di/preset.js.map +1 -0
- package/dist/esm/di/token.js +38 -0
- package/dist/esm/di/token.js.map +1 -0
- package/dist/esm/di/types.js +2 -0
- package/dist/esm/di/types.js.map +1 -0
- package/dist/esm/http/errors.js +39 -0
- package/dist/esm/http/errors.js.map +1 -0
- package/dist/esm/http/index.js +4 -0
- package/dist/esm/http/index.js.map +1 -0
- package/dist/esm/http/types.js +2 -0
- package/dist/esm/http/types.js.map +1 -0
- package/dist/esm/log/errors.js +27 -0
- package/dist/esm/log/errors.js.map +1 -0
- package/dist/esm/log/handler/pino.js +25 -0
- package/dist/esm/log/handler/pino.js.map +1 -0
- package/dist/esm/log/handler/sentry.js +52 -0
- package/dist/esm/log/handler/sentry.js.map +1 -0
- package/dist/esm/log/index.js +3 -0
- package/dist/esm/log/index.js.map +1 -0
- package/dist/esm/log/logger.js +29 -0
- package/dist/esm/log/logger.js.map +1 -0
- package/dist/esm/log/types.js +2 -0
- package/dist/esm/log/types.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/preset/isomorphic/constants.js +8 -0
- package/dist/esm/preset/isomorphic/constants.js.map +1 -0
- package/dist/esm/preset/isomorphic/index.js +2 -0
- package/dist/esm/preset/isomorphic/index.js.map +1 -0
- package/dist/esm/preset/isomorphic/providers/index.js +35 -0
- package/dist/esm/preset/isomorphic/providers/index.js.map +1 -0
- package/dist/esm/preset/isomorphic/types.js +2 -0
- package/dist/esm/preset/isomorphic/types.js.map +1 -0
- package/dist/esm/preset/isomorphic/utils/index.js +309 -0
- package/dist/esm/preset/isomorphic/utils/index.js.map +1 -0
- package/dist/esm/preset/node/handler/index.js +42 -0
- package/dist/esm/preset/node/handler/index.js.map +1 -0
- package/dist/esm/preset/node/handler/providers/index.js +194 -0
- package/dist/esm/preset/node/handler/providers/index.js.map +1 -0
- package/dist/esm/preset/node/handler/utils/index.js +113 -0
- package/dist/esm/preset/node/handler/utils/index.js.map +1 -0
- package/dist/esm/preset/node/index.js +3 -0
- package/dist/esm/preset/node/index.js.map +1 -0
- package/dist/esm/preset/node/node/index.js +56 -0
- package/dist/esm/preset/node/node/index.js.map +1 -0
- package/dist/esm/preset/node/node/providers/index.js +378 -0
- package/dist/esm/preset/node/node/providers/index.js.map +1 -0
- package/dist/esm/preset/node/node/utils/http-client/index.js +114 -0
- package/dist/esm/preset/node/node/utils/http-client/index.js.map +1 -0
- package/dist/esm/preset/node/node/utils/http-server/index.js +12 -0
- package/dist/esm/preset/node/node/utils/http-server/index.js.map +1 -0
- package/dist/esm/preset/node/node/utils/index.js +3 -0
- package/dist/esm/preset/node/node/utils/index.js.map +1 -0
- package/dist/esm/preset/node/types.js +2 -0
- package/dist/esm/preset/node/types.js.map +1 -0
- package/dist/esm/preset/web/index.js +29 -0
- package/dist/esm/preset/web/index.js.map +1 -0
- package/dist/esm/preset/web/providers/index.js +85 -0
- package/dist/esm/preset/web/providers/index.js.map +1 -0
- package/dist/esm/tokens.js +81 -0
- package/dist/esm/tokens.js.map +1 -0
- package/dist/esm/utils/axios/index.js +5 -0
- package/dist/esm/utils/axios/index.js.map +1 -0
- package/dist/esm/utils/axios/middleware/cookie.js +22 -0
- package/dist/esm/utils/axios/middleware/cookie.js.map +1 -0
- package/dist/esm/utils/axios/middleware/log.js +31 -0
- package/dist/esm/utils/axios/middleware/log.js.map +1 -0
- package/dist/esm/utils/axios/sauce/index.js +50 -0
- package/dist/esm/utils/axios/sauce/index.js.map +1 -0
- package/dist/esm/utils/axios/utils/index.js +24 -0
- package/dist/esm/utils/axios/utils/index.js.map +1 -0
- package/dist/esm/utils/express/handler/health-check.js +13 -0
- package/dist/esm/utils/express/handler/health-check.js.map +1 -0
- package/dist/esm/utils/express/index.js +3 -0
- package/dist/esm/utils/express/index.js.map +1 -0
- package/dist/esm/utils/express/utils/index.js +16 -0
- package/dist/esm/utils/express/utils/index.js.map +1 -0
- package/dist/esm/utils/function.js +38 -0
- package/dist/esm/utils/function.js.map +1 -0
- package/dist/esm/utils/index.js +3 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/math.js +9 -0
- package/dist/esm/utils/math.js.map +1 -0
- package/dist/esm/utils/react/error-handlers/index.js +69 -0
- package/dist/esm/utils/react/error-handlers/index.js.map +1 -0
- package/dist/esm/utils/react/index.js +3 -0
- package/dist/esm/utils/react/index.js.map +1 -0
- package/dist/esm/utils/redux/index.js +3 -0
- package/dist/esm/utils/redux/index.js.map +1 -0
- package/dist/esm/utils/redux/remote-data.js +108 -0
- package/dist/esm/utils/redux/remote-data.js.map +1 -0
- package/dist/esm/utils/redux-saga/index.js +3 -0
- package/dist/esm/utils/redux-saga/index.js.map +1 -0
- package/dist/esm/utils/redux-saga/middleware.js +143 -0
- package/dist/esm/utils/redux-saga/middleware.js.map +1 -0
- package/dist/esm/utils/redux-saga/take-chain.js +59 -0
- package/dist/esm/utils/redux-saga/take-chain.js.map +1 -0
- package/dist/esm/utils/redux-saga/types.js +2 -0
- package/dist/esm/utils/redux-saga/types.js.map +1 -0
- package/dist/esm/utils/ssr/index.js +66 -0
- package/dist/esm/utils/ssr/index.js.map +1 -0
- package/dist/esm/utils/web/analytics/data-layer.js +14 -0
- package/dist/esm/utils/web/analytics/data-layer.js.map +1 -0
- package/dist/esm/utils/web/analytics/index.js +3 -0
- package/dist/esm/utils/web/analytics/index.js.map +1 -0
- package/dist/esm/utils/web/analytics/oko.js +14 -0
- package/dist/esm/utils/web/analytics/oko.js.map +1 -0
- package/dist/esm/utils/web/storage/index.js +69 -0
- package/dist/esm/utils/web/storage/index.js.map +1 -0
- package/dist/esm/utils/webpack/env/index.js +89 -0
- package/dist/esm/utils/webpack/env/index.js.map +1 -0
- package/dist/esm/utils/webpack/env/types.js +2 -0
- package/dist/esm/utils/webpack/env/types.js.map +1 -0
- package/dist/esm/utils/webpack/env/utils.js +48 -0
- package/dist/esm/utils/webpack/env/utils.js.map +1 -0
- package/dist/esm/utils/webpack/index.js +4 -0
- package/dist/esm/utils/webpack/index.js.map +1 -0
- package/dist/esm/utils/webpack/module-federation/index.js +96 -0
- package/dist/esm/utils/webpack/module-federation/index.js.map +1 -0
- package/dist/esm/utils/webpack/module-federation/types.js +2 -0
- package/dist/esm/utils/webpack/module-federation/types.js.map +1 -0
- package/dist/esm/utils/webpack/module-federation/utils.js +80 -0
- package/dist/esm/utils/webpack/module-federation/utils.js.map +1 -0
- package/dist/types/cache/index.d.ts +1 -0
- package/dist/types/log/index.d.ts +3 -0
- package/dist/types/preset/isomorphic/index.d.ts +1 -0
- package/{preset → dist/types/preset}/isomorphic/types.d.ts +0 -9
- package/{preset → dist/types/preset}/node/index.d.ts +1 -0
- package/dist/types/preset/node/node/utils/index.d.ts +2 -0
- package/dist/types/preset/node/types.d.ts +9 -0
- package/{tokens.d.ts → dist/types/tokens.d.ts} +2 -1
- package/{utils → dist/types/utils}/axios/sauce/index.d.ts +1 -1
- package/dist/types/utils/index.d.ts +2 -0
- package/{utils → dist/types/utils}/redux/remote-data.d.ts +8 -8
- package/{utils → dist/types/utils}/ssr/index.d.ts +1 -0
- package/dist/types/utils/web/analytics/index.d.ts +2 -0
- package/{utils → dist/types/utils}/webpack/module-federation/index.d.ts +2 -2
- package/package.json +173 -9
- package/src/cache/index.ts +1 -0
- package/src/cache/types.ts +34 -0
- package/src/config/base.ts +18 -0
- package/src/config/index.ts +3 -0
- package/src/config/source.ts +23 -0
- package/src/config/types.ts +25 -0
- package/src/di/__test__/application.test.ts +258 -0
- package/src/di/__test__/container.test.ts +103 -0
- package/src/di/__test__/errors.test.ts +56 -0
- package/src/di/__test__/preset.test.ts +23 -0
- package/src/di/__test__/token.test.ts +25 -0
- package/src/di/application.ts +126 -0
- package/src/di/container.ts +60 -0
- package/src/di/errors.ts +59 -0
- package/src/di/index.ts +6 -0
- package/src/di/preset.ts +32 -0
- package/src/di/token.ts +41 -0
- package/src/di/types.ts +105 -0
- package/src/http/__test__/errors.test.ts +35 -0
- package/src/http/errors.ts +42 -0
- package/src/http/index.ts +14 -0
- package/src/http/types.ts +8 -0
- package/src/log/__test__/errors.test.ts +13 -0
- package/src/log/__test__/logger.test.ts +24 -0
- package/src/log/errors.ts +33 -0
- package/src/log/handler/pino.ts +27 -0
- package/src/log/handler/sentry.ts +57 -0
- package/src/log/index.ts +12 -0
- package/src/log/logger.ts +30 -0
- package/src/log/types.ts +76 -0
- package/src/preset/isomorphic/constants.ts +7 -0
- package/src/preset/isomorphic/index.ts +7 -0
- package/src/preset/isomorphic/providers/index.ts +40 -0
- package/src/preset/isomorphic/types.ts +37 -0
- package/src/preset/isomorphic/utils/__test__/index.test.ts +541 -0
- package/src/preset/isomorphic/utils/index.ts +349 -0
- package/src/preset/node/handler/index.ts +46 -0
- package/src/preset/node/handler/providers/index.tsx +214 -0
- package/src/preset/node/handler/utils/index.tsx +110 -0
- package/src/preset/node/index.ts +3 -0
- package/src/preset/node/node/index.ts +73 -0
- package/src/preset/node/node/providers/index.ts +434 -0
- package/src/preset/node/node/utils/http-client/__test__/index.test.ts +232 -0
- package/src/preset/node/node/utils/http-client/index.ts +129 -0
- package/src/preset/node/node/utils/http-server/index.ts +17 -0
- package/src/preset/node/node/utils/index.ts +2 -0
- package/src/preset/node/types.ts +10 -0
- package/src/preset/web/index.ts +40 -0
- package/src/preset/web/providers/index.ts +108 -0
- package/src/tokens.ts +108 -0
- package/src/utils/axios/index.ts +12 -0
- package/src/utils/axios/middleware/__test__/cookie.test.ts +94 -0
- package/src/utils/axios/middleware/__test__/log.test.ts +121 -0
- package/src/utils/axios/middleware/cookie.ts +26 -0
- package/src/utils/axios/middleware/log.ts +52 -0
- package/src/utils/axios/sauce/index.ts +76 -0
- package/src/utils/axios/utils/__test__/index.test.ts +89 -0
- package/src/utils/axios/utils/index.ts +26 -0
- package/src/utils/express/handler/health-check.ts +13 -0
- package/src/utils/express/index.ts +2 -0
- package/src/utils/express/utils/index.ts +18 -0
- package/src/utils/function.ts +57 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/math.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 +63 -0
- package/src/utils/react/error-handlers/index.tsx +68 -0
- package/src/utils/react/index.ts +3 -0
- package/src/utils/redux/__test__/remote-data.test.ts +172 -0
- package/src/utils/redux/index.ts +4 -0
- package/src/utils/redux/remote-data.ts +138 -0
- package/src/utils/redux-saga/__test__/take-chain.test.ts +141 -0
- package/src/utils/redux-saga/index.ts +3 -0
- package/src/utils/redux-saga/middleware.ts +168 -0
- package/src/utils/redux-saga/take-chain.ts +67 -0
- package/src/utils/redux-saga/types.ts +43 -0
- package/src/utils/ssr/index.tsx +78 -0
- package/src/utils/web/analytics/__test__/data-layer.test.ts +50 -0
- package/src/utils/web/analytics/__test__/oko.test.ts +50 -0
- package/src/utils/web/analytics/data-layer.ts +12 -0
- package/src/utils/web/analytics/index.ts +2 -0
- package/src/utils/web/analytics/oko.ts +14 -0
- package/src/utils/web/storage/index.ts +84 -0
- package/src/utils/webpack/env/index.ts +91 -0
- package/src/utils/webpack/env/types.ts +14 -0
- package/src/utils/webpack/env/utils.ts +53 -0
- package/src/utils/webpack/index.ts +7 -0
- package/src/utils/webpack/module-federation/__test__/__snapshots__/utils.test.ts.snap +124 -0
- package/src/utils/webpack/module-federation/__test__/index.test.ts +311 -0
- package/src/utils/webpack/module-federation/__test__/utils.test.ts +28 -0
- package/src/utils/webpack/module-federation/index.ts +102 -0
- package/src/utils/webpack/module-federation/types.ts +54 -0
- package/src/utils/webpack/module-federation/utils.ts +104 -0
- package/cache/types.js +0 -3
- package/cache/types.js.map +0 -1
- package/config/base.js +0 -20
- package/config/base.js.map +0 -1
- package/config/index.js +0 -8
- package/config/index.js.map +0 -1
- package/config/source.js +0 -21
- package/config/source.js.map +0 -1
- package/config/types.js +0 -3
- package/config/types.js.map +0 -1
- package/di/application.js +0 -88
- package/di/application.js.map +0 -1
- package/di/container.js +0 -52
- package/di/container.js.map +0 -1
- package/di/errors.js +0 -59
- package/di/errors.js.map +0 -1
- package/di/index.js +0 -17
- package/di/index.js.map +0 -1
- package/di/preset.js +0 -27
- package/di/preset.js.map +0 -1
- package/di/token.js +0 -39
- package/di/token.js.map +0 -1
- package/di/types.js +0 -3
- package/di/types.js.map +0 -1
- package/http/errors.js +0 -42
- package/http/errors.js.map +0 -1
- package/http/index.js +0 -16
- package/http/index.js.map +0 -1
- package/http/types.js +0 -3
- package/http/types.js.map +0 -1
- package/log/errors.js +0 -31
- package/log/errors.js.map +0 -1
- package/log/handler/pino.js +0 -29
- package/log/handler/pino.js.map +0 -1
- package/log/handler/sentry.js +0 -50
- package/log/handler/sentry.js.map +0 -1
- package/log/index.d.ts +0 -3
- package/log/index.js +0 -9
- package/log/index.js.map +0 -1
- package/log/logger.js +0 -29
- package/log/logger.js.map +0 -1
- package/log/types.js +0 -3
- package/log/types.js.map +0 -1
- package/preset/isomorphic/constants.js +0 -11
- package/preset/isomorphic/constants.js.map +0 -1
- package/preset/isomorphic/providers/index.js.map +0 -1
- package/preset/isomorphic/types.js +0 -3
- package/preset/isomorphic/types.js.map +0 -1
- package/preset/isomorphic/utils/index.js +0 -289
- package/preset/isomorphic/utils/index.js.map +0 -1
- package/preset/node/handler/index.js +0 -38
- package/preset/node/handler/index.js.map +0 -1
- package/preset/node/handler/providers/index.js +0 -184
- package/preset/node/handler/providers/index.js.map +0 -1
- package/preset/node/handler/utils/index.js +0 -81
- package/preset/node/handler/utils/index.js.map +0 -1
- package/preset/node/index.js +0 -9
- package/preset/node/index.js.map +0 -1
- package/preset/node/node/index.js +0 -49
- package/preset/node/node/index.js.map +0 -1
- package/preset/node/node/providers/index.js +0 -392
- package/preset/node/node/providers/index.js.map +0 -1
- package/preset/node/node/utils/http-client/index.js +0 -109
- package/preset/node/node/utils/http-client/index.js.map +0 -1
- package/preset/node/node/utils/http-server/index.js +0 -21
- package/preset/node/node/utils/http-server/index.js.map +0 -1
- package/preset/web/index.js +0 -30
- package/preset/web/index.js.map +0 -1
- package/preset/web/providers/index.js +0 -88
- package/preset/web/providers/index.js.map +0 -1
- package/tokens.js +0 -81
- package/tokens.js.map +0 -1
- package/utils/axios/index.js +0 -13
- package/utils/axios/index.js.map +0 -1
- package/utils/axios/middleware/cookie.js +0 -26
- package/utils/axios/middleware/cookie.js.map +0 -1
- package/utils/axios/middleware/log.js +0 -26
- package/utils/axios/middleware/log.js.map +0 -1
- package/utils/axios/sauce/index.js +0 -50
- package/utils/axios/sauce/index.js.map +0 -1
- package/utils/axios/utils/index.js.map +0 -1
- package/utils/express/handler/health-check.js.map +0 -1
- package/utils/express/index.js +0 -8
- package/utils/express/index.js.map +0 -1
- package/utils/express/utils/index.js +0 -20
- package/utils/express/utils/index.js.map +0 -1
- package/utils/function.js +0 -23
- package/utils/function.js.map +0 -1
- package/utils/number.js.map +0 -1
- package/utils/react/error-handlers/index.js +0 -47
- package/utils/react/error-handlers/index.js.map +0 -1
- package/utils/react/index.js +0 -7
- package/utils/react/index.js.map +0 -1
- package/utils/redux/index.js +0 -7
- package/utils/redux/index.js.map +0 -1
- package/utils/redux/remote-data.js +0 -91
- package/utils/redux/remote-data.js.map +0 -1
- package/utils/redux-saga/index.js +0 -8
- package/utils/redux-saga/index.js.map +0 -1
- package/utils/redux-saga/middleware.js +0 -142
- package/utils/redux-saga/middleware.js.map +0 -1
- package/utils/redux-saga/take-chain.js +0 -58
- package/utils/redux-saga/take-chain.js.map +0 -1
- package/utils/redux-saga/types.js +0 -3
- package/utils/redux-saga/types.js.map +0 -1
- package/utils/ssr/index.js +0 -54
- package/utils/ssr/index.js.map +0 -1
- package/utils/web/analytics/data-layer.js +0 -16
- package/utils/web/analytics/data-layer.js.map +0 -1
- package/utils/web/analytics/oko.js +0 -16
- package/utils/web/analytics/oko.js.map +0 -1
- package/utils/web/storage/index.js +0 -69
- package/utils/web/storage/index.js.map +0 -1
- package/utils/webpack/env/index.js +0 -76
- package/utils/webpack/env/index.js.map +0 -1
- package/utils/webpack/env/types.js +0 -3
- package/utils/webpack/env/types.js.map +0 -1
- package/utils/webpack/env/utils.js +0 -52
- package/utils/webpack/env/utils.js.map +0 -1
- package/utils/webpack/index.js +0 -8
- package/utils/webpack/index.js.map +0 -1
- package/utils/webpack/module-federation/index.js +0 -81
- package/utils/webpack/module-federation/index.js.map +0 -1
- package/utils/webpack/module-federation/types.js +0 -3
- package/utils/webpack/module-federation/types.js.map +0 -1
- package/utils/webpack/module-federation/utils.js.map +0 -1
- /package/{cache → dist/types/cache}/types.d.ts +0 -0
- /package/{config → dist/types/config}/base.d.ts +0 -0
- /package/{config → dist/types/config}/index.d.ts +0 -0
- /package/{config → dist/types/config}/source.d.ts +0 -0
- /package/{config → dist/types/config}/types.d.ts +0 -0
- /package/{di → dist/types/di}/application.d.ts +0 -0
- /package/{di → dist/types/di}/container.d.ts +0 -0
- /package/{di → dist/types/di}/errors.d.ts +0 -0
- /package/{di → dist/types/di}/index.d.ts +0 -0
- /package/{di → dist/types/di}/preset.d.ts +0 -0
- /package/{di → dist/types/di}/token.d.ts +0 -0
- /package/{di → dist/types/di}/types.d.ts +0 -0
- /package/{http → dist/types/http}/errors.d.ts +0 -0
- /package/{http → dist/types/http}/index.d.ts +0 -0
- /package/{http → dist/types/http}/types.d.ts +0 -0
- /package/{log → dist/types/log}/errors.d.ts +0 -0
- /package/{log → dist/types/log}/handler/pino.d.ts +0 -0
- /package/{log → dist/types/log}/handler/sentry.d.ts +0 -0
- /package/{log → dist/types/log}/logger.d.ts +0 -0
- /package/{log → dist/types/log}/types.d.ts +0 -0
- /package/{preset → dist/types/preset}/isomorphic/constants.d.ts +0 -0
- /package/{preset → dist/types/preset}/isomorphic/providers/index.d.ts +0 -0
- /package/{preset → dist/types/preset}/isomorphic/utils/index.d.ts +0 -0
- /package/{preset → dist/types/preset}/node/handler/index.d.ts +0 -0
- /package/{preset → dist/types/preset}/node/handler/providers/index.d.ts +0 -0
- /package/{preset → dist/types/preset}/node/handler/utils/index.d.ts +0 -0
- /package/{preset → dist/types/preset}/node/node/index.d.ts +0 -0
- /package/{preset → dist/types/preset}/node/node/providers/index.d.ts +0 -0
- /package/{preset → dist/types/preset}/node/node/utils/http-client/index.d.ts +0 -0
- /package/{preset → dist/types/preset}/node/node/utils/http-server/index.d.ts +0 -0
- /package/{preset → dist/types/preset}/web/index.d.ts +0 -0
- /package/{preset → dist/types/preset}/web/providers/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/axios/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/axios/middleware/cookie.d.ts +0 -0
- /package/{utils → dist/types/utils}/axios/middleware/log.d.ts +0 -0
- /package/{utils → dist/types/utils}/axios/utils/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/express/handler/health-check.d.ts +0 -0
- /package/{utils → dist/types/utils}/express/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/express/utils/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/function.d.ts +0 -0
- /package/{utils/number.d.ts → dist/types/utils/math.d.ts} +0 -0
- /package/{utils → dist/types/utils}/react/error-handlers/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/react/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/redux/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/redux-saga/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/redux-saga/middleware.d.ts +0 -0
- /package/{utils → dist/types/utils}/redux-saga/take-chain.d.ts +0 -0
- /package/{utils → dist/types/utils}/redux-saga/types.d.ts +0 -0
- /package/{utils → dist/types/utils}/web/analytics/data-layer.d.ts +0 -0
- /package/{utils → dist/types/utils}/web/analytics/oko.d.ts +0 -0
- /package/{utils → dist/types/utils}/web/storage/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/webpack/env/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/webpack/env/types.d.ts +0 -0
- /package/{utils → dist/types/utils}/webpack/env/utils.d.ts +0 -0
- /package/{utils → dist/types/utils}/webpack/index.d.ts +0 -0
- /package/{utils → dist/types/utils}/webpack/module-federation/types.d.ts +0 -0
- /package/{utils → dist/types/utils}/webpack/module-federation/utils.d.ts +0 -0
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.provideConfigSource = provideConfigSource;
|
|
7
|
+
exports.provideHttpClientFactory = provideHttpClientFactory;
|
|
8
|
+
exports.provideHttpServerErrorMiddleware = provideHttpServerErrorMiddleware;
|
|
9
|
+
exports.provideHttpServerFactory = provideHttpServerFactory;
|
|
10
|
+
exports.provideHttpServerLogMiddleware = provideHttpServerLogMiddleware;
|
|
11
|
+
exports.provideHttpServerMetricsMiddleware = provideHttpServerMetricsMiddleware;
|
|
12
|
+
exports.provideHttpServerRequestMiddleware = provideHttpServerRequestMiddleware;
|
|
13
|
+
exports.provideHttpServerTracingMiddleware = provideHttpServerTracingMiddleware;
|
|
14
|
+
exports.provideKnownHttpApiHosts = provideKnownHttpApiHosts;
|
|
15
|
+
exports.provideLogger = provideLogger;
|
|
16
|
+
exports.provideMetricsHttpApp = provideMetricsHttpApp;
|
|
17
|
+
exports.providePinoHandler = providePinoHandler;
|
|
18
|
+
exports.provideSentryHandler = provideSentryHandler;
|
|
19
|
+
exports.provideSpanExporter = provideSpanExporter;
|
|
20
|
+
exports.provideSsrBridgeServerSide = provideSsrBridgeServerSide;
|
|
21
|
+
exports.provideTracer = provideTracer;
|
|
22
|
+
exports.provideTracerProvider = provideTracerProvider;
|
|
23
|
+
exports.provideTracerProviderResource = provideTracerProviderResource;
|
|
24
|
+
var _ssr = require("../../../../utils/ssr");
|
|
25
|
+
var _config = require("../../../../config");
|
|
26
|
+
var _log = require("../../../../log");
|
|
27
|
+
var _pino = require("../../../../log/handler/pino");
|
|
28
|
+
var _sentry = require("../../../../log/handler/sentry");
|
|
29
|
+
var _utils = require("../../../isomorphic/utils");
|
|
30
|
+
var _tokens = require("../../../../tokens");
|
|
31
|
+
var _utils2 = require("../../../../utils");
|
|
32
|
+
var _constants = require("../../../isomorphic/constants");
|
|
33
|
+
var _httpServer = require("../utils/http-server");
|
|
34
|
+
var _nodeOs = _interopRequireDefault(require("node:os"));
|
|
35
|
+
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
36
|
+
var _dotenv = require("dotenv");
|
|
37
|
+
var _node = require("@sentry/node");
|
|
38
|
+
var PromClient = _interopRequireWildcard(require("prom-client"));
|
|
39
|
+
var _express = _interopRequireDefault(require("express"));
|
|
40
|
+
var _pino2 = _interopRequireDefault(require("pino"));
|
|
41
|
+
var _pinoPretty = _interopRequireDefault(require("pino-pretty"));
|
|
42
|
+
var _api = require("@opentelemetry/api");
|
|
43
|
+
var _sdkTraceBase = require("@opentelemetry/sdk-trace-base");
|
|
44
|
+
var _exporterTraceOtlpHttp = require("@opentelemetry/exporter-trace-otlp-http");
|
|
45
|
+
var _propagatorJaeger = require("@opentelemetry/propagator-jaeger");
|
|
46
|
+
var _sdkTraceNode = require("@opentelemetry/sdk-trace-node");
|
|
47
|
+
var _resources = require("@opentelemetry/resources");
|
|
48
|
+
var _semanticConventions = require("@opentelemetry/semantic-conventions");
|
|
49
|
+
var _middlewareAxios = require("middleware-axios");
|
|
50
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
51
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
52
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
53
|
+
// Node.js specific packages
|
|
54
|
+
|
|
55
|
+
// Node.js libraries (not isomorphic)
|
|
56
|
+
|
|
57
|
+
// opentelemetry
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Провайдер источника конфигурации.
|
|
61
|
+
* @return Источник конфигурации.
|
|
62
|
+
*/
|
|
63
|
+
function provideConfigSource() {
|
|
64
|
+
const envName = process.env.NODE_ENV;
|
|
65
|
+
|
|
66
|
+
// подключаем соответствующий среде файл со значениями по умолчанию
|
|
67
|
+
if (envName) {
|
|
68
|
+
(0, _dotenv.config)({
|
|
69
|
+
path: _nodePath.default.resolve(process.cwd(), `./.env.${envName}`)
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return (0, _config.createConfigSource)(process.env);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Провайдер Logger'а.
|
|
77
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
78
|
+
* @return Logger.
|
|
79
|
+
*/
|
|
80
|
+
function provideLogger(resolve) {
|
|
81
|
+
const logger = (0, _log.createLogger)();
|
|
82
|
+
|
|
83
|
+
// @todo возможно надо придумать как не давать вызывать провайдеры внутри провайдеров
|
|
84
|
+
logger.subscribe(providePinoHandler(resolve));
|
|
85
|
+
logger.subscribe(provideSentryHandler(resolve));
|
|
86
|
+
return logger;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Провайдер обработчика логирования для Sentry.
|
|
91
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
92
|
+
* @return Обработчик.
|
|
93
|
+
*/
|
|
94
|
+
function provideSentryHandler(resolve) {
|
|
95
|
+
const source = resolve(_tokens.KnownToken.Config.source);
|
|
96
|
+
|
|
97
|
+
// экспериментально пробуем не использовать вручную созданный клиент
|
|
98
|
+
(0, _node.init)({
|
|
99
|
+
dsn: source.require('SENTRY_DSN'),
|
|
100
|
+
release: source.require('SENTRY_RELEASE'),
|
|
101
|
+
environment: source.require('SENTRY_ENVIRONMENT')
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
// ВАЖНО: передаем функцию чтобы брать текущий hub в момент вызова метода logger'а
|
|
105
|
+
// это нужно чтобы хлебные крошки в ошибках Sentry группировались по запросам
|
|
106
|
+
return (0, _sentry.createSentryHandler)(_node.getCurrentHub);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Провайдер обработчика логирования для Pino.
|
|
111
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
112
|
+
* @return Обработчик.
|
|
113
|
+
*/
|
|
114
|
+
function providePinoHandler(resolve) {
|
|
115
|
+
const config = resolve(_tokens.KnownToken.Config.base);
|
|
116
|
+
const pinoLogger = (0, _pino2.default)(config.env === 'production' ? {
|
|
117
|
+
formatters: {
|
|
118
|
+
// ВАЖНО: для Fluent необходимо наличие поля level: string
|
|
119
|
+
level: label => ({
|
|
120
|
+
level: label
|
|
121
|
+
})
|
|
122
|
+
}
|
|
123
|
+
} : (0, _pinoPretty.default)({
|
|
124
|
+
colorize: true,
|
|
125
|
+
translateTime: 'yyyy-mm-dd HH:MM:ss.l o'
|
|
126
|
+
}));
|
|
127
|
+
return (0, _pino.createPinoHandler)(pinoLogger);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Провайдер объекта Tracer.
|
|
132
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
133
|
+
* @return Tracer.
|
|
134
|
+
*/
|
|
135
|
+
function provideTracer(resolve) {
|
|
136
|
+
const config = resolve(_tokens.KnownToken.Config.base);
|
|
137
|
+
const provider = resolve(_tokens.KnownToken.Tracing.tracerProvider);
|
|
138
|
+
return provider.getTracer(config.appName, config.appVersion);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Провайдер объекта SpanExporter.
|
|
143
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
144
|
+
* @return SpanExporter.
|
|
145
|
+
*/
|
|
146
|
+
function provideSpanExporter(resolve) {
|
|
147
|
+
const source = resolve(_tokens.KnownToken.Config.source);
|
|
148
|
+
return new _exporterTraceOtlpHttp.OTLPTraceExporter({
|
|
149
|
+
url: source.require('JAEGER_AGENT_URL')
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Провайдер объекта BasicTracerProvider.
|
|
155
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
156
|
+
* @return BasicTracerProvider.
|
|
157
|
+
*/
|
|
158
|
+
function provideTracerProvider(resolve) {
|
|
159
|
+
const exporter = resolve(_tokens.KnownToken.Tracing.spanExporter);
|
|
160
|
+
const resource = resolve(_tokens.KnownToken.Tracing.tracerProviderResource);
|
|
161
|
+
const provider = new _sdkTraceNode.NodeTracerProvider({
|
|
162
|
+
resource
|
|
163
|
+
});
|
|
164
|
+
provider.addSpanProcessor(new _sdkTraceBase.BatchSpanProcessor(exporter));
|
|
165
|
+
provider.register({
|
|
166
|
+
propagator: new _propagatorJaeger.JaegerPropagator()
|
|
167
|
+
});
|
|
168
|
+
return provider;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Провайдер объекта Resource.
|
|
173
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
174
|
+
* @return Resource.
|
|
175
|
+
*/
|
|
176
|
+
function provideTracerProviderResource(resolve) {
|
|
177
|
+
const config = resolve(_tokens.KnownToken.Config.base);
|
|
178
|
+
return new _resources.Resource({
|
|
179
|
+
[_semanticConventions.SemanticResourceAttributes.HOST_NAME]: _nodeOs.default.hostname(),
|
|
180
|
+
[_semanticConventions.SemanticResourceAttributes.SERVICE_NAME]: config.appName,
|
|
181
|
+
[_semanticConventions.SemanticResourceAttributes.SERVICE_VERSION]: config.appVersion,
|
|
182
|
+
[_semanticConventions.SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT]: config.env
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Провайдер фабрики http-клиентов.
|
|
188
|
+
* @return Фабрика.
|
|
189
|
+
*/
|
|
190
|
+
function provideHttpClientFactory() {
|
|
191
|
+
return _middlewareAxios.create;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Провайдер фабрики http-серверов.
|
|
196
|
+
* @return Фабрика.
|
|
197
|
+
*/
|
|
198
|
+
function provideHttpServerFactory() {
|
|
199
|
+
return _express.default;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Провайдер промежуточного слоя учета входящих http-запросов.
|
|
204
|
+
* @return Промежуточный слой.
|
|
205
|
+
*/
|
|
206
|
+
function provideHttpServerRequestMiddleware() {
|
|
207
|
+
return _node.Handlers.requestHandler();
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Провайдер промежуточного слоя логирования входящих http-запросов.
|
|
212
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
213
|
+
* @return Промежуточный слой.
|
|
214
|
+
*/
|
|
215
|
+
function provideHttpServerLogMiddleware(resolve) {
|
|
216
|
+
const config = resolve(_tokens.KnownToken.Config.base);
|
|
217
|
+
const logger = resolve(_tokens.KnownToken.logger);
|
|
218
|
+
return (req, res, next) => {
|
|
219
|
+
const start = process.hrtime.bigint();
|
|
220
|
+
const remoteIp = (0, _httpServer.getClientIp)(req) ?? '';
|
|
221
|
+
const startMsg = {
|
|
222
|
+
type: 'http.request[incoming]',
|
|
223
|
+
version: config.appVersion,
|
|
224
|
+
route: req.originalUrl,
|
|
225
|
+
method: req.method,
|
|
226
|
+
remote_ip: remoteIp
|
|
227
|
+
};
|
|
228
|
+
logger.info(startMsg);
|
|
229
|
+
res.once('finish', () => {
|
|
230
|
+
const finish = process.hrtime.bigint();
|
|
231
|
+
const finishMsg = {
|
|
232
|
+
type: 'http.response[outgoing]',
|
|
233
|
+
version: config.appVersion,
|
|
234
|
+
route: req.originalUrl,
|
|
235
|
+
method: req.method,
|
|
236
|
+
status: res.statusCode,
|
|
237
|
+
remote_ip: remoteIp,
|
|
238
|
+
latency: (0, _utils2.toMilliseconds)(finish - start)
|
|
239
|
+
};
|
|
240
|
+
logger.info(finishMsg);
|
|
241
|
+
});
|
|
242
|
+
next();
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Провайдер промежуточного слоя сбора метрик входящих http-запросов.
|
|
248
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
249
|
+
* @return Промежуточный слой.
|
|
250
|
+
*/
|
|
251
|
+
function provideHttpServerMetricsMiddleware(resolve) {
|
|
252
|
+
const config = resolve(_tokens.KnownToken.Config.base);
|
|
253
|
+
const ConventionalLabels = {
|
|
254
|
+
HTTP_RESPONSE: ['version', 'route', 'code', 'method'],
|
|
255
|
+
SSR: ['version', 'route', 'method']
|
|
256
|
+
};
|
|
257
|
+
const requestCount = new PromClient.Counter({
|
|
258
|
+
name: 'http_request_count',
|
|
259
|
+
help: 'Incoming HTTP request count',
|
|
260
|
+
labelNames: ConventionalLabels.HTTP_RESPONSE
|
|
261
|
+
});
|
|
262
|
+
const responseDuration = new PromClient.Histogram({
|
|
263
|
+
name: 'http_response_duration_ms',
|
|
264
|
+
help: 'Duration of incoming HTTP requests in ms',
|
|
265
|
+
labelNames: ConventionalLabels.HTTP_RESPONSE,
|
|
266
|
+
buckets: [30, 100, 200, 500, 1000, 2500, 5000, 10000]
|
|
267
|
+
});
|
|
268
|
+
const renderDuration = new PromClient.Histogram({
|
|
269
|
+
name: 'render_duration_ms',
|
|
270
|
+
help: 'Duration of SSR ms',
|
|
271
|
+
labelNames: ConventionalLabels.SSR,
|
|
272
|
+
buckets: [0.1, 15, 50, 100, 250, 500, 800, 1500]
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Функция формирования labels.
|
|
277
|
+
* @param req Request.
|
|
278
|
+
* @param res Response.
|
|
279
|
+
* @return Labels.
|
|
280
|
+
*/
|
|
281
|
+
const getLabels = (req, res) => ({
|
|
282
|
+
version: config.appVersion,
|
|
283
|
+
route: req.baseUrl + req.path,
|
|
284
|
+
code: res.statusCode,
|
|
285
|
+
method: req.method
|
|
286
|
+
});
|
|
287
|
+
return (req, res, next) => {
|
|
288
|
+
const responseStart = process.hrtime.bigint();
|
|
289
|
+
requestCount.inc(getLabels(req, res), 1);
|
|
290
|
+
res.once(_constants.RESPONSE_EVENT_TYPE.renderStart, () => {
|
|
291
|
+
const renderStart = process.hrtime.bigint();
|
|
292
|
+
res.once(_constants.RESPONSE_EVENT_TYPE.renderFinish, () => {
|
|
293
|
+
const renderFinish = process.hrtime.bigint();
|
|
294
|
+
renderDuration.observe({
|
|
295
|
+
version: config.appVersion,
|
|
296
|
+
method: req.method,
|
|
297
|
+
route: req.baseUrl + req.path
|
|
298
|
+
}, (0, _utils2.toMilliseconds)(renderFinish - renderStart));
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
res.once('finish', () => {
|
|
302
|
+
const responseFinish = process.hrtime.bigint();
|
|
303
|
+
responseDuration.observe(getLabels(req, res), (0, _utils2.toMilliseconds)(responseFinish - responseStart));
|
|
304
|
+
});
|
|
305
|
+
next();
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Провайдер промежуточного слоя трассировки входящих http-запросов.
|
|
311
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
312
|
+
* @return Промежуточный слой.
|
|
313
|
+
*/
|
|
314
|
+
function provideHttpServerTracingMiddleware(resolve) {
|
|
315
|
+
const tracer = resolve(_tokens.KnownToken.Tracing.tracer);
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Возвращает набор стандартных атрибутов для спана.
|
|
319
|
+
* @param req Входящий http-запрос.
|
|
320
|
+
* @return Атрибуты.
|
|
321
|
+
*/
|
|
322
|
+
const getConventionalRequestAttrs = req => {
|
|
323
|
+
const result = {
|
|
324
|
+
'request.path': req.originalUrl
|
|
325
|
+
};
|
|
326
|
+
for (const headerName in req.headers) {
|
|
327
|
+
if (headerName.toLowerCase().startsWith('simaland-')) {
|
|
328
|
+
result[headerName] = req.header(headerName);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return result;
|
|
332
|
+
};
|
|
333
|
+
return (req, res, next) => {
|
|
334
|
+
const externalContext = _api.propagation.extract(_api.ROOT_CONTEXT, req.headers);
|
|
335
|
+
const rootSpan = tracer.startSpan('response', undefined, externalContext);
|
|
336
|
+
rootSpan.setAttributes(getConventionalRequestAttrs(req));
|
|
337
|
+
const rootContext = _api.trace.setSpan(externalContext, rootSpan);
|
|
338
|
+
res.locals.tracing = {
|
|
339
|
+
rootSpan,
|
|
340
|
+
rootContext,
|
|
341
|
+
renderSpan: null
|
|
342
|
+
};
|
|
343
|
+
res.once(_constants.RESPONSE_EVENT_TYPE.renderStart, () => {
|
|
344
|
+
res.locals.tracing.renderSpan = tracer.startSpan('render', undefined, rootContext);
|
|
345
|
+
res.once(_constants.RESPONSE_EVENT_TYPE.renderFinish, () => {
|
|
346
|
+
res.locals.tracing.renderSpan.end();
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
res.once('finish', () => {
|
|
350
|
+
rootSpan.end();
|
|
351
|
+
});
|
|
352
|
+
next();
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Провайдер промежуточного слоя обработки ошибок в рамках ответ на http-запросы.
|
|
358
|
+
* @return Промежуточный слой.
|
|
359
|
+
*/
|
|
360
|
+
function provideHttpServerErrorMiddleware() {
|
|
361
|
+
return _node.Handlers.errorHandler();
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Провайдер серверной части "моста" для передачи данных между сервером и клиентом.
|
|
366
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
367
|
+
* @return Серверная часть "моста".
|
|
368
|
+
*/
|
|
369
|
+
function provideSsrBridgeServerSide(resolve) {
|
|
370
|
+
const config = resolve(_tokens.KnownToken.Config.base);
|
|
371
|
+
return _ssr.SsrBridge.prepare(config.appName);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Провайдер известных http-хостов.
|
|
376
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
377
|
+
* @return Пул известных http-хостов.
|
|
378
|
+
*/
|
|
379
|
+
function provideKnownHttpApiHosts(resolve) {
|
|
380
|
+
const source = resolve(_tokens.KnownToken.Config.source);
|
|
381
|
+
return new _utils.HttpApiHostPool({
|
|
382
|
+
ilium: 'API_URL_ILIUM',
|
|
383
|
+
simaV3: 'API_URL_SIMALAND_V3',
|
|
384
|
+
simaV4: 'API_URL_SIMALAND_V4',
|
|
385
|
+
simaV6: 'API_URL_SIMALAND_V6'
|
|
386
|
+
}, source);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Провайдер express-приложения метрик.
|
|
391
|
+
* @return Пул известных http-хостов.
|
|
392
|
+
*/
|
|
393
|
+
function provideMetricsHttpApp() {
|
|
394
|
+
PromClient.collectDefaultMetrics();
|
|
395
|
+
const app = (0, _express.default)();
|
|
396
|
+
app.get('/', async function (req, res) {
|
|
397
|
+
const metrics = await PromClient.register.metrics();
|
|
398
|
+
res.setHeader('Content-Type', PromClient.register.contentType);
|
|
399
|
+
res.send(metrics);
|
|
400
|
+
});
|
|
401
|
+
return app;
|
|
402
|
+
}
|
|
403
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_ssr","require","_config","_log","_pino","_sentry","_utils","_tokens","_utils2","_constants","_httpServer","_nodeOs","_interopRequireDefault","_nodePath","_dotenv","_node","PromClient","_interopRequireWildcard","_express","_pino2","_pinoPretty","_api","_sdkTraceBase","_exporterTraceOtlpHttp","_propagatorJaeger","_sdkTraceNode","_resources","_semanticConventions","_middlewareAxios","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","provideConfigSource","envName","process","env","NODE_ENV","applyDotenv","path","resolve","cwd","createConfigSource","provideLogger","logger","createLogger","subscribe","providePinoHandler","provideSentryHandler","source","KnownToken","Config","init","dsn","release","environment","createSentryHandler","getCurrentHub","config","base","pinoLogger","pino","formatters","level","label","PinoPretty","colorize","translateTime","createPinoHandler","provideTracer","provider","Tracing","tracerProvider","getTracer","appName","appVersion","provideSpanExporter","OTLPTraceExporter","url","provideTracerProvider","exporter","spanExporter","resource","tracerProviderResource","NodeTracerProvider","addSpanProcessor","BatchSpanProcessor","register","propagator","JaegerPropagator","provideTracerProviderResource","Resource","SemanticResourceAttributes","HOST_NAME","os","hostname","SERVICE_NAME","SERVICE_VERSION","DEPLOYMENT_ENVIRONMENT","provideHttpClientFactory","create","provideHttpServerFactory","Express","provideHttpServerRequestMiddleware","Handlers","requestHandler","provideHttpServerLogMiddleware","req","res","next","start","hrtime","bigint","remoteIp","getClientIp","startMsg","type","version","route","originalUrl","method","remote_ip","info","once","finish","finishMsg","status","statusCode","latency","toMilliseconds","provideHttpServerMetricsMiddleware","ConventionalLabels","HTTP_RESPONSE","SSR","requestCount","Counter","name","help","labelNames","responseDuration","Histogram","buckets","renderDuration","getLabels","baseUrl","code","responseStart","inc","RESPONSE_EVENT_TYPE","renderStart","renderFinish","observe","responseFinish","provideHttpServerTracingMiddleware","tracer","getConventionalRequestAttrs","result","headerName","headers","toLowerCase","startsWith","header","externalContext","propagation","extract","ROOT_CONTEXT","rootSpan","startSpan","undefined","setAttributes","rootContext","trace","setSpan","locals","tracing","renderSpan","end","provideHttpServerErrorMiddleware","errorHandler","provideSsrBridgeServerSide","SsrBridge","prepare","provideKnownHttpApiHosts","HttpApiHostPool","ilium","simaV3","simaV4","simaV6","provideMetricsHttpApp","collectDefaultMetrics","app","metrics","setHeader","contentType","send"],"sources":["../../../../../../src/preset/node/node/providers/index.ts"],"sourcesContent":["import type { ConventionalFluentInfo, Logger, LogHandler } from '../../../../log/types';\nimport { BridgeServerSide, SsrBridge } from '../../../../utils/ssr';\nimport { ConfigSource, createConfigSource } from '../../../../config';\nimport { createLogger } from '../../../../log';\nimport { createPinoHandler } from '../../../../log/handler/pino';\nimport { createSentryHandler } from '../../../../log/handler/sentry';\nimport { HttpApiHostPool } from '../../../isomorphic/utils';\nimport { KnownToken } from '../../../../tokens';\nimport { Resolve } from '../../../../di';\nimport { StrictMap, KnownHttpApiKey } from '../../../isomorphic/types';\nimport { toMilliseconds } from '../../../../utils';\nimport { RESPONSE_EVENT_TYPE } from '../../../isomorphic/constants';\nimport { getClientIp } from '../utils/http-server';\n\n// Node.js specific packages\nimport os from 'node:os';\nimport path from 'node:path';\n\n// Node.js libraries (not isomorphic)\nimport { config as applyDotenv } from 'dotenv';\nimport { init, getCurrentHub, Handlers } from '@sentry/node';\nimport * as PromClient from 'prom-client';\nimport Express, { Application, ErrorRequestHandler, Handler, Request, Response } from 'express';\nimport pino from 'pino';\nimport PinoPretty from 'pino-pretty';\n\n// opentelemetry\nimport { propagation, ROOT_CONTEXT, trace, type Tracer } from '@opentelemetry/api';\nimport {\n BasicTracerProvider,\n BatchSpanProcessor,\n SpanExporter,\n} from '@opentelemetry/sdk-trace-base';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { JaegerPropagator } from '@opentelemetry/propagator-jaeger';\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport { Resource } from '@opentelemetry/resources';\nimport { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';\nimport { create } from 'middleware-axios';\n\n/**\n * Провайдер источника конфигурации.\n * @return Источник конфигурации.\n */\nexport function provideConfigSource(): ConfigSource {\n const envName = process.env.NODE_ENV;\n\n // подключаем соответствующий среде файл со значениями по умолчанию\n if (envName) {\n applyDotenv({ path: path.resolve(process.cwd(), `./.env.${envName}`) });\n }\n\n return createConfigSource(process.env);\n}\n\n/**\n * Провайдер Logger'а.\n * @param resolve Функция для получения зависимости по токену.\n * @return Logger.\n */\nexport function provideLogger(resolve: Resolve): Logger {\n const logger = createLogger();\n\n // @todo возможно надо придумать как не давать вызывать провайдеры внутри провайдеров\n logger.subscribe(providePinoHandler(resolve));\n logger.subscribe(provideSentryHandler(resolve));\n\n return logger;\n}\n\n/**\n * Провайдер обработчика логирования для Sentry.\n * @param resolve Функция для получения зависимости по токену.\n * @return Обработчик.\n */\nexport function provideSentryHandler(resolve: Resolve): LogHandler {\n const source = resolve(KnownToken.Config.source);\n\n // экспериментально пробуем не использовать вручную созданный клиент\n init({\n dsn: source.require('SENTRY_DSN'),\n release: source.require('SENTRY_RELEASE'),\n environment: source.require('SENTRY_ENVIRONMENT'),\n });\n\n // ВАЖНО: передаем функцию чтобы брать текущий hub в момент вызова метода logger'а\n // это нужно чтобы хлебные крошки в ошибках Sentry группировались по запросам\n return createSentryHandler(getCurrentHub);\n}\n\n/**\n * Провайдер обработчика логирования для Pino.\n * @param resolve Функция для получения зависимости по токену.\n * @return Обработчик.\n */\nexport function providePinoHandler(resolve: Resolve): LogHandler {\n const config = resolve(KnownToken.Config.base);\n\n const pinoLogger = pino(\n config.env === 'production'\n ? {\n formatters: {\n // ВАЖНО: для Fluent необходимо наличие поля level: string\n level: label => ({ level: label }),\n },\n }\n : PinoPretty({\n colorize: true,\n translateTime: 'yyyy-mm-dd HH:MM:ss.l o',\n }),\n );\n\n return createPinoHandler(pinoLogger);\n}\n\n/**\n * Провайдер объекта Tracer.\n * @param resolve Функция для получения зависимости по токену.\n * @return Tracer.\n */\nexport function provideTracer(resolve: Resolve): Tracer {\n const config = resolve(KnownToken.Config.base);\n const provider = resolve(KnownToken.Tracing.tracerProvider);\n\n return provider.getTracer(config.appName, config.appVersion);\n}\n\n/**\n * Провайдер объекта SpanExporter.\n * @param resolve Функция для получения зависимости по токену.\n * @return SpanExporter.\n */\nexport function provideSpanExporter(resolve: Resolve): SpanExporter {\n const source = resolve(KnownToken.Config.source);\n\n return new OTLPTraceExporter({\n url: source.require('JAEGER_AGENT_URL'),\n });\n}\n\n/**\n * Провайдер объекта BasicTracerProvider.\n * @param resolve Функция для получения зависимости по токену.\n * @return BasicTracerProvider.\n */\nexport function provideTracerProvider(resolve: Resolve): BasicTracerProvider {\n const exporter = resolve(KnownToken.Tracing.spanExporter);\n const resource = resolve(KnownToken.Tracing.tracerProviderResource);\n\n const provider = new NodeTracerProvider({ resource });\n\n provider.addSpanProcessor(new BatchSpanProcessor(exporter));\n provider.register({ propagator: new JaegerPropagator() });\n\n return provider;\n}\n\n/**\n * Провайдер объекта Resource.\n * @param resolve Функция для получения зависимости по токену.\n * @return Resource.\n */\nexport function provideTracerProviderResource(resolve: Resolve): Resource {\n const config = resolve(KnownToken.Config.base);\n\n return new Resource({\n [SemanticResourceAttributes.HOST_NAME]: os.hostname(),\n [SemanticResourceAttributes.SERVICE_NAME]: config.appName,\n [SemanticResourceAttributes.SERVICE_VERSION]: config.appVersion,\n [SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT]: config.env,\n });\n}\n\n/**\n * Провайдер фабрики http-клиентов.\n * @return Фабрика.\n */\nexport function provideHttpClientFactory() {\n return create;\n}\n\n/**\n * Провайдер фабрики http-серверов.\n * @return Фабрика.\n */\nexport function provideHttpServerFactory() {\n return Express;\n}\n\n/**\n * Провайдер промежуточного слоя учета входящих http-запросов.\n * @return Промежуточный слой.\n */\nexport function provideHttpServerRequestMiddleware(): Handler {\n return Handlers.requestHandler();\n}\n\n/**\n * Провайдер промежуточного слоя логирования входящих http-запросов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Промежуточный слой.\n */\nexport function provideHttpServerLogMiddleware(resolve: Resolve): Handler {\n const config = resolve(KnownToken.Config.base);\n const logger = resolve(KnownToken.logger);\n\n return (req, res, next) => {\n const start = process.hrtime.bigint();\n const remoteIp = getClientIp(req) ?? '';\n\n const startMsg: Omit<ConventionalFluentInfo, 'latency' | 'status'> & { type: string } = {\n type: 'http.request[incoming]',\n version: config.appVersion,\n route: req.originalUrl,\n method: req.method,\n remote_ip: remoteIp,\n };\n\n logger.info(startMsg);\n\n res.once('finish', () => {\n const finish = process.hrtime.bigint();\n\n const finishMsg: ConventionalFluentInfo & { type: string } = {\n type: 'http.response[outgoing]',\n version: config.appVersion,\n route: req.originalUrl,\n method: req.method,\n status: res.statusCode,\n remote_ip: remoteIp,\n latency: toMilliseconds(finish - start),\n };\n\n logger.info(finishMsg);\n });\n\n next();\n };\n}\n\n/**\n * Провайдер промежуточного слоя сбора метрик входящих http-запросов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Промежуточный слой.\n */\nexport function provideHttpServerMetricsMiddleware(resolve: Resolve): Handler {\n const config = resolve(KnownToken.Config.base);\n\n const ConventionalLabels = {\n HTTP_RESPONSE: ['version', 'route', 'code', 'method'],\n SSR: ['version', 'route', 'method'],\n } as const;\n\n const requestCount = new PromClient.Counter({\n name: 'http_request_count',\n help: 'Incoming HTTP request count',\n labelNames: ConventionalLabels.HTTP_RESPONSE,\n });\n\n const responseDuration = new PromClient.Histogram({\n name: 'http_response_duration_ms',\n help: 'Duration of incoming HTTP requests in ms',\n labelNames: ConventionalLabels.HTTP_RESPONSE,\n buckets: [30, 100, 200, 500, 1000, 2500, 5000, 10000],\n });\n\n const renderDuration = new PromClient.Histogram({\n name: 'render_duration_ms',\n help: 'Duration of SSR ms',\n labelNames: ConventionalLabels.SSR,\n buckets: [0.1, 15, 50, 100, 250, 500, 800, 1500],\n });\n\n /**\n * Функция формирования labels.\n * @param req Request.\n * @param res Response.\n * @return Labels.\n */\n const getLabels = (\n req: Request,\n res: Response,\n ): Record<(typeof ConventionalLabels.HTTP_RESPONSE)[number], string | number> => ({\n version: config.appVersion,\n route: req.baseUrl + req.path,\n code: res.statusCode,\n method: req.method,\n });\n\n return (req, res, next) => {\n const responseStart = process.hrtime.bigint();\n\n requestCount.inc(getLabels(req, res), 1);\n\n res.once(RESPONSE_EVENT_TYPE.renderStart, () => {\n const renderStart = process.hrtime.bigint();\n\n res.once(RESPONSE_EVENT_TYPE.renderFinish, () => {\n const renderFinish = process.hrtime.bigint();\n\n renderDuration.observe(\n {\n version: config.appVersion,\n method: req.method,\n route: req.baseUrl + req.path,\n },\n toMilliseconds(renderFinish - renderStart),\n );\n });\n });\n\n res.once('finish', () => {\n const responseFinish = process.hrtime.bigint();\n\n responseDuration.observe(getLabels(req, res), toMilliseconds(responseFinish - responseStart));\n });\n\n next();\n };\n}\n\n/**\n * Провайдер промежуточного слоя трассировки входящих http-запросов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Промежуточный слой.\n */\nexport function provideHttpServerTracingMiddleware(resolve: Resolve): Handler {\n const tracer = resolve(KnownToken.Tracing.tracer);\n\n /**\n * Возвращает набор стандартных атрибутов для спана.\n * @param req Входящий http-запрос.\n * @return Атрибуты.\n */\n const getConventionalRequestAttrs = (req: Request): Record<string, string | undefined> => {\n const result: Record<string, string | undefined> = {\n 'request.path': req.originalUrl,\n };\n\n for (const headerName in req.headers) {\n if (headerName.toLowerCase().startsWith('simaland-')) {\n result[headerName] = req.header(headerName);\n }\n }\n\n return result;\n };\n\n return (req, res, next) => {\n const externalContext = propagation.extract(ROOT_CONTEXT, req.headers);\n const rootSpan = tracer.startSpan('response', undefined, externalContext);\n\n rootSpan.setAttributes(getConventionalRequestAttrs(req));\n\n const rootContext = trace.setSpan(externalContext, rootSpan);\n\n res.locals.tracing = {\n rootSpan,\n rootContext,\n renderSpan: null,\n };\n\n res.once(RESPONSE_EVENT_TYPE.renderStart, () => {\n res.locals.tracing.renderSpan = tracer.startSpan('render', undefined, rootContext);\n\n res.once(RESPONSE_EVENT_TYPE.renderFinish, () => {\n res.locals.tracing.renderSpan.end();\n });\n });\n\n res.once('finish', () => {\n rootSpan.end();\n });\n\n next();\n };\n}\n\n/**\n * Провайдер промежуточного слоя обработки ошибок в рамках ответ на http-запросы.\n * @return Промежуточный слой.\n */\nexport function provideHttpServerErrorMiddleware(): ErrorRequestHandler {\n return Handlers.errorHandler();\n}\n\n/**\n * Провайдер серверной части \"моста\" для передачи данных между сервером и клиентом.\n * @param resolve Функция для получения зависимости по токену.\n * @return Серверная часть \"моста\".\n */\nexport function provideSsrBridgeServerSide(resolve: Resolve): BridgeServerSide {\n const config = resolve(KnownToken.Config.base);\n\n return SsrBridge.prepare(config.appName);\n}\n\n/**\n * Провайдер известных http-хостов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Пул известных http-хостов.\n */\nexport function provideKnownHttpApiHosts(resolve: Resolve): StrictMap<KnownHttpApiKey> {\n const source = resolve(KnownToken.Config.source);\n\n return new HttpApiHostPool(\n {\n ilium: 'API_URL_ILIUM',\n simaV3: 'API_URL_SIMALAND_V3',\n simaV4: 'API_URL_SIMALAND_V4',\n simaV6: 'API_URL_SIMALAND_V6',\n },\n source,\n );\n}\n\n/**\n * Провайдер express-приложения метрик.\n * @return Пул известных http-хостов.\n */\nexport function provideMetricsHttpApp(): Application {\n PromClient.collectDefaultMetrics();\n\n const app = Express();\n\n app.get('/', async function (req, res) {\n const metrics = await PromClient.register.metrics();\n\n res.setHeader('Content-Type', PromClient.register.contentType);\n res.send(metrics);\n });\n\n return app;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getRequestHeaders = getRequestHeaders;
|
|
7
|
+
exports.getRequestInfo = getRequestInfo;
|
|
8
|
+
exports.hideFirstId = hideFirstId;
|
|
9
|
+
exports.tracingMiddleware = tracingMiddleware;
|
|
10
|
+
var _api = require("@opentelemetry/api");
|
|
11
|
+
var _semanticConventions = require("@opentelemetry/semantic-conventions");
|
|
12
|
+
var _httpServer = require("../http-server");
|
|
13
|
+
var _utils = require("../../../../isomorphic/utils");
|
|
14
|
+
/**
|
|
15
|
+
* Возвращает новый middleware для трассировки исходящих запросов.
|
|
16
|
+
* @param tracer Трейсер.
|
|
17
|
+
* @param rootContext Контекст.
|
|
18
|
+
* @return Middleware.
|
|
19
|
+
*/
|
|
20
|
+
function tracingMiddleware(tracer, rootContext) {
|
|
21
|
+
return async function trace(config, next, defaults) {
|
|
22
|
+
const {
|
|
23
|
+
method,
|
|
24
|
+
url,
|
|
25
|
+
foundId
|
|
26
|
+
} = getRequestInfo(config, defaults);
|
|
27
|
+
const span = tracer.startSpan(`HTTP ${method} ${url}`, undefined, rootContext);
|
|
28
|
+
span.setAttributes({
|
|
29
|
+
[_semanticConventions.SemanticAttributes.HTTP_URL]: url,
|
|
30
|
+
[_semanticConventions.SemanticAttributes.HTTP_METHOD]: method,
|
|
31
|
+
'request.params': JSON.stringify({
|
|
32
|
+
...defaults.params,
|
|
33
|
+
...config.params
|
|
34
|
+
}),
|
|
35
|
+
'request.headers': JSON.stringify({
|
|
36
|
+
...defaults.headers[method.toLowerCase()],
|
|
37
|
+
...config.headers
|
|
38
|
+
}),
|
|
39
|
+
// если нашли id - добавляем в теги
|
|
40
|
+
...(foundId && {
|
|
41
|
+
'request.id': foundId
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
try {
|
|
45
|
+
await next(config);
|
|
46
|
+
} catch (error) {
|
|
47
|
+
span.setStatus({
|
|
48
|
+
code: _api.SpanStatusCode.ERROR,
|
|
49
|
+
message: 'HTTP Request failed'
|
|
50
|
+
});
|
|
51
|
+
span.end();
|
|
52
|
+
|
|
53
|
+
// не прячем ошибку
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
span.end();
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Формирует базовые данные запроса.
|
|
62
|
+
* Заменяет первое найденное число в url на "{id}", возвращая его в результате.
|
|
63
|
+
* @param config Axios-конфиг запроса.
|
|
64
|
+
* @param defaults Базовый конфиг экземпляра Axios.
|
|
65
|
+
* @return Базовые данные запроса.
|
|
66
|
+
*/
|
|
67
|
+
function getRequestInfo(config, defaults) {
|
|
68
|
+
const method = (config.method || 'GET').toUpperCase();
|
|
69
|
+
const baseURL = config.baseURL || defaults.baseURL || '';
|
|
70
|
+
|
|
71
|
+
// ВАЖНО: абстрагируем id только в url игнорируя baseURL
|
|
72
|
+
const [url, foundId] = hideFirstId(config.url || defaults.url || '');
|
|
73
|
+
return {
|
|
74
|
+
method,
|
|
75
|
+
url: (0, _utils.displayUrl)(baseURL, url),
|
|
76
|
+
foundId
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Преобразует строку вида:
|
|
82
|
+
* "/api/v2/something/123456/some-bff/123456"
|
|
83
|
+
* в строку вида:
|
|
84
|
+
* "/api/v2/something/{id}/some-bff/123456"
|
|
85
|
+
* и возвращает кортеж с этой строкой и вырезанным числом в случае если оно найдено.
|
|
86
|
+
* @param url Url.
|
|
87
|
+
* @return Кортеж со строкой и результатом поиска числа.
|
|
88
|
+
*/
|
|
89
|
+
function hideFirstId(url) {
|
|
90
|
+
const found = /\d{2,}/.exec(url);
|
|
91
|
+
return found ? [url.replace(found[0], '{id}'), Number(found[0])] : [url, undefined];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Формирует заголовки для исходящих запросов с сервера по соглашению.
|
|
96
|
+
* @param config Конфиг.
|
|
97
|
+
* @param request Входящий запрос.
|
|
98
|
+
* @return Заголовки для исходящих запросов.
|
|
99
|
+
*/
|
|
100
|
+
function getRequestHeaders(config, request) {
|
|
101
|
+
const result = {
|
|
102
|
+
'User-Agent': `simaland-${config.appName}/${config.appVersion}`
|
|
103
|
+
};
|
|
104
|
+
const clientIp = (0, _httpServer.getClientIp)(request);
|
|
105
|
+
if (clientIp) {
|
|
106
|
+
result['X-Client-Ip'] = clientIp;
|
|
107
|
+
}
|
|
108
|
+
const cookie = request.get('cookie');
|
|
109
|
+
if (cookie) {
|
|
110
|
+
result.Cookie = cookie;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// добавляем специфичные заголовки
|
|
114
|
+
for (const key of Object.keys(request.headers)) {
|
|
115
|
+
const value = request.header(key);
|
|
116
|
+
if (key.toLowerCase().indexOf('simaland-') === 0 && value) {
|
|
117
|
+
result[key] = value;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_api","require","_semanticConventions","_httpServer","_utils","tracingMiddleware","tracer","rootContext","trace","config","next","defaults","method","url","foundId","getRequestInfo","span","startSpan","undefined","setAttributes","SemanticAttributes","HTTP_URL","HTTP_METHOD","JSON","stringify","params","headers","toLowerCase","error","setStatus","code","SpanStatusCode","ERROR","message","end","toUpperCase","baseURL","hideFirstId","displayUrl","found","exec","replace","Number","getRequestHeaders","request","result","appName","appVersion","clientIp","getClientIp","cookie","get","Cookie","key","Object","keys","value","header","indexOf"],"sources":["../../../../../../../src/preset/node/node/utils/http-client/index.ts"],"sourcesContent":["import type { AxiosDefaults, AxiosRequestConfig } from 'axios';\nimport type { Middleware } from 'middleware-axios';\nimport { Context, Tracer, SpanStatusCode } from '@opentelemetry/api';\nimport { SemanticAttributes } from '@opentelemetry/semantic-conventions';\nimport { BaseConfig } from '../../../../../config';\nimport { Request } from 'express';\nimport { getClientIp } from '../http-server';\nimport { displayUrl } from '../../../../isomorphic/utils';\n\n/**\n * Возвращает новый middleware для трассировки исходящих запросов.\n * @param tracer Трейсер.\n * @param rootContext Контекст.\n * @return Middleware.\n */\nexport function tracingMiddleware(tracer: Tracer, rootContext: Context): Middleware<any> {\n return async function trace(config, next, defaults) {\n const { method, url, foundId } = getRequestInfo(config, defaults);\n const span = tracer.startSpan(`HTTP ${method} ${url}`, undefined, rootContext);\n\n span.setAttributes({\n [SemanticAttributes.HTTP_URL]: url,\n [SemanticAttributes.HTTP_METHOD]: method,\n 'request.params': JSON.stringify({\n ...defaults.params,\n ...config.params,\n }),\n 'request.headers': JSON.stringify({\n ...defaults.headers[method.toLowerCase() as 'get'],\n ...config.headers,\n }),\n\n // если нашли id - добавляем в теги\n ...(foundId && { 'request.id': foundId }),\n });\n\n try {\n await next(config);\n } catch (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: 'HTTP Request failed',\n });\n\n span.end();\n\n // не прячем ошибку\n throw error;\n }\n\n span.end();\n };\n}\n\n/**\n * Формирует базовые данные запроса.\n * Заменяет первое найденное число в url на \"{id}\", возвращая его в результате.\n * @param config Axios-конфиг запроса.\n * @param defaults Базовый конфиг экземпляра Axios.\n * @return Базовые данные запроса.\n */\nexport function getRequestInfo(\n config: AxiosRequestConfig,\n defaults: AxiosDefaults,\n): {\n method: string;\n url: string;\n foundId?: number;\n} {\n const method = (config.method || 'GET').toUpperCase();\n const baseURL = config.baseURL || defaults.baseURL || '';\n\n // ВАЖНО: абстрагируем id только в url игнорируя baseURL\n const [url, foundId] = hideFirstId(config.url || defaults.url || '');\n\n return {\n method,\n url: displayUrl(baseURL, url),\n foundId,\n };\n}\n\n/**\n * Преобразует строку вида:\n * \"/api/v2/something/123456/some-bff/123456\"\n * в строку вида:\n * \"/api/v2/something/{id}/some-bff/123456\"\n * и возвращает кортеж с этой строкой и вырезанным числом в случае если оно найдено.\n * @param url Url.\n * @return Кортеж со строкой и результатом поиска числа.\n */\nexport function hideFirstId(url: string): [string, number | undefined] {\n const found = /\\d{2,}/.exec(url);\n\n return found ? [url.replace(found[0], '{id}'), Number(found[0])] : [url, undefined];\n}\n\n/**\n * Формирует заголовки для исходящих запросов с сервера по соглашению.\n * @param config Конфиг.\n * @param request Входящий запрос.\n * @return Заголовки для исходящих запросов.\n */\nexport function getRequestHeaders(config: BaseConfig, request: Request): Record<string, string> {\n const result: Record<string, string> = {\n 'User-Agent': `simaland-${config.appName}/${config.appVersion}`,\n };\n\n const clientIp = getClientIp(request);\n if (clientIp) {\n result['X-Client-Ip'] = clientIp;\n }\n\n const cookie = request.get('cookie');\n if (cookie) {\n result.Cookie = cookie;\n }\n\n // добавляем специфичные заголовки\n for (const key of Object.keys(request.headers)) {\n const value = request.header(key);\n\n if (key.toLowerCase().indexOf('simaland-') === 0 && value) {\n result[key] = value;\n }\n }\n\n return result;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getClientIp = getClientIp;
|
|
7
|
+
var _nodeNet = _interopRequireDefault(require("node:net"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
/**
|
|
10
|
+
* Определяет IP входящего запроса.
|
|
11
|
+
* @param request Входящий запрос.
|
|
12
|
+
* @return IP.
|
|
13
|
+
*/
|
|
14
|
+
function getClientIp(request) {
|
|
15
|
+
const headerValue = request.get('x-client-ip') || request.get('x-forwarded-for') || request.socket.remoteAddress || '';
|
|
16
|
+
return _nodeNet.default.isIP(headerValue) ? headerValue : undefined;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_nodeNet","_interopRequireDefault","require","obj","__esModule","default","getClientIp","request","headerValue","get","socket","remoteAddress","net","isIP","undefined"],"sources":["../../../../../../../src/preset/node/node/utils/http-server/index.ts"],"sourcesContent":["import type { Request } from 'express';\nimport net from 'node:net';\n\n/**\n * Определяет IP входящего запроса.\n * @param request Входящий запрос.\n * @return IP.\n */\nexport function getClientIp(request: Request): string | undefined {\n const headerValue =\n request.get('x-client-ip') ||\n request.get('x-forwarded-for') ||\n request.socket.remoteAddress ||\n '';\n\n return net.isIP(headerValue) ? headerValue : undefined;\n}\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2B,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE3B;AACA;AACA;AACA;AACA;AACO,SAASG,WAAWA,CAACC,OAAgB,EAAsB;EAChE,MAAMC,WAAW,GACfD,OAAO,CAACE,GAAG,CAAC,aAAa,CAAC,IAC1BF,OAAO,CAACE,GAAG,CAAC,iBAAiB,CAAC,IAC9BF,OAAO,CAACG,MAAM,CAACC,aAAa,IAC5B,EAAE;EAEJ,OAAOC,gBAAG,CAACC,IAAI,CAACL,WAAW,CAAC,GAAGA,WAAW,GAAGM,SAAS;AACxD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "getClientIp", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _httpServer.getClientIp;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "tracingMiddleware", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _httpClient.tracingMiddleware;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
var _httpClient = require("./http-client");
|
|
19
|
+
var _httpServer = require("./http-server");
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_httpClient","require","_httpServer"],"sources":["../../../../../../src/preset/node/node/utils/index.ts"],"sourcesContent":["export { tracingMiddleware } from './http-client';\nexport { getClientIp } from './http-server';\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA"}
|