@sima-land/isomorph 11.0.0-alpha.4 → 11.0.0-alpha.40
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/cache/package.json +6 -0
- package/config/package.json +6 -0
- package/di/package.json +6 -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 +5 -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/dist/cjs/preset/isomorphic/providers/index.js +42 -0
- 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/dist/cjs/utils/axios/utils/index.js +30 -0
- package/dist/cjs/utils/axios/utils/index.js.map +1 -0
- package/dist/cjs/utils/express/handler/health-check.js +19 -0
- 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/dist/cjs/utils/webpack/module-federation/utils.js +87 -0
- 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 +5 -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 +2 -0
- package/dist/types/cache/index.d.ts.map +1 -0
- package/dist/types/cache/types.d.ts +31 -0
- package/dist/types/cache/types.d.ts.map +1 -0
- package/{config → dist/types/config}/base.d.ts +3 -2
- package/dist/types/config/base.d.ts.map +1 -0
- package/dist/types/config/index.d.ts +4 -0
- package/dist/types/config/index.d.ts.map +1 -0
- package/dist/types/config/source.d.ts +8 -0
- package/dist/types/config/source.d.ts.map +1 -0
- package/dist/types/config/types.d.ts +21 -0
- package/dist/types/config/types.d.ts.map +1 -0
- package/{di → dist/types/di}/application.d.ts +6 -1
- package/dist/types/di/application.d.ts.map +1 -0
- package/{di → dist/types/di}/container.d.ts +1 -0
- package/dist/types/di/container.d.ts.map +1 -0
- package/dist/types/di/errors.d.ts +36 -0
- package/dist/types/di/errors.d.ts.map +1 -0
- package/dist/types/di/index.d.ts +7 -0
- package/dist/types/di/index.d.ts.map +1 -0
- package/dist/types/di/preset.d.ts +10 -0
- package/dist/types/di/preset.d.ts.map +1 -0
- package/{di → dist/types/di}/token.d.ts +1 -0
- package/dist/types/di/token.d.ts.map +1 -0
- package/dist/types/di/types.d.ts +87 -0
- package/dist/types/di/types.d.ts.map +1 -0
- package/dist/types/http/errors.d.ts +29 -0
- package/dist/types/http/errors.d.ts.map +1 -0
- package/dist/types/http/index.d.ts +5 -0
- package/dist/types/http/index.d.ts.map +1 -0
- package/dist/types/http/types.d.ts +3 -0
- package/dist/types/http/types.d.ts.map +1 -0
- package/dist/types/log/errors.d.ts +24 -0
- package/dist/types/log/errors.d.ts.map +1 -0
- package/dist/types/log/handler/pino.d.ts +9 -0
- package/dist/types/log/handler/pino.d.ts.map +1 -0
- package/dist/types/log/handler/sentry.d.ts +9 -0
- package/dist/types/log/handler/sentry.d.ts.map +1 -0
- package/dist/types/log/index.d.ts +4 -0
- package/dist/types/log/index.d.ts.map +1 -0
- package/{logger/index.d.ts → dist/types/log/logger.d.ts} +1 -0
- package/dist/types/log/logger.d.ts.map +1 -0
- package/dist/types/log/types.d.ts +65 -0
- package/dist/types/log/types.d.ts.map +1 -0
- package/dist/types/preset/isomorphic/constants.d.ts +8 -0
- package/dist/types/preset/isomorphic/constants.d.ts.map +1 -0
- package/dist/types/preset/isomorphic/index.d.ts +2 -0
- package/dist/types/preset/isomorphic/index.d.ts.map +1 -0
- package/dist/types/preset/isomorphic/providers/index.d.ts +23 -0
- package/dist/types/preset/isomorphic/providers/index.d.ts.map +1 -0
- package/dist/types/preset/isomorphic/types.d.ts +35 -0
- package/dist/types/preset/isomorphic/types.d.ts.map +1 -0
- package/dist/types/preset/isomorphic/utils/index.d.ts +119 -0
- package/dist/types/preset/isomorphic/utils/index.d.ts.map +1 -0
- package/dist/types/preset/node/handler/index.d.ts +11 -0
- package/dist/types/preset/node/handler/index.d.ts.map +1 -0
- package/dist/types/preset/node/handler/providers/index.d.ts +36 -0
- package/dist/types/preset/node/handler/providers/index.d.ts.map +1 -0
- package/dist/types/preset/node/handler/utils/index.d.ts +47 -0
- package/dist/types/preset/node/handler/utils/index.d.ts.map +1 -0
- package/dist/types/preset/node/index.d.ts +4 -0
- package/dist/types/preset/node/index.d.ts.map +1 -0
- package/dist/types/preset/node/node/index.d.ts +9 -0
- package/dist/types/preset/node/node/index.d.ts.map +1 -0
- package/dist/types/preset/node/node/providers/index.d.ts +113 -0
- package/dist/types/preset/node/node/providers/index.d.ts.map +1 -0
- package/{http-client/middleware/tracing.d.ts → dist/types/preset/node/node/utils/http-client/index.d.ts} +13 -3
- package/dist/types/preset/node/node/utils/http-client/index.d.ts.map +1 -0
- package/dist/types/preset/node/node/utils/http-server/index.d.ts +8 -0
- package/dist/types/preset/node/node/utils/http-server/index.d.ts.map +1 -0
- package/dist/types/preset/node/node/utils/index.d.ts +3 -0
- package/dist/types/preset/node/node/utils/index.d.ts.map +1 -0
- package/dist/types/preset/node/types.d.ts +10 -0
- package/dist/types/preset/node/types.d.ts.map +1 -0
- package/dist/types/preset/web/index.d.ts +9 -0
- package/dist/types/preset/web/index.d.ts.map +1 -0
- package/dist/types/preset/web/providers/index.d.ts +36 -0
- package/dist/types/preset/web/providers/index.d.ts.map +1 -0
- package/dist/types/tokens.d.ts +83 -0
- package/dist/types/tokens.d.ts.map +1 -0
- package/dist/types/utils/axios/index.d.ts +5 -0
- package/dist/types/utils/axios/index.d.ts.map +1 -0
- package/dist/types/utils/axios/middleware/cookie.d.ts +9 -0
- package/dist/types/utils/axios/middleware/cookie.d.ts.map +1 -0
- package/dist/types/utils/axios/middleware/log.d.ts +28 -0
- package/dist/types/utils/axios/middleware/log.d.ts.map +1 -0
- package/dist/types/utils/axios/sauce/index.d.ts +43 -0
- package/dist/types/utils/axios/sauce/index.d.ts.map +1 -0
- package/dist/types/utils/axios/utils/index.d.ts +10 -0
- package/dist/types/utils/axios/utils/index.d.ts.map +1 -0
- package/dist/types/utils/express/handler/health-check.d.ts +7 -0
- package/dist/types/utils/express/handler/health-check.d.ts.map +1 -0
- package/dist/types/utils/express/index.d.ts +3 -0
- package/dist/types/utils/express/index.d.ts.map +1 -0
- package/dist/types/utils/express/utils/index.d.ts +8 -0
- package/dist/types/utils/express/utils/index.d.ts.map +1 -0
- package/dist/types/utils/function.d.ts +29 -0
- package/dist/types/utils/function.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +3 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/{utils/number.d.ts → dist/types/utils/math.d.ts} +1 -0
- package/dist/types/utils/math.d.ts.map +1 -0
- package/dist/types/utils/react/error-handlers/index.d.ts +42 -0
- package/dist/types/utils/react/error-handlers/index.d.ts.map +1 -0
- package/dist/types/utils/react/index.d.ts +3 -0
- package/dist/types/utils/react/index.d.ts.map +1 -0
- package/dist/types/utils/redux/index.d.ts +4 -0
- package/dist/types/utils/redux/index.d.ts.map +1 -0
- package/dist/types/utils/redux/remote-data.d.ts +86 -0
- package/dist/types/utils/redux/remote-data.d.ts.map +1 -0
- package/dist/types/utils/redux-saga/index.d.ts +4 -0
- package/dist/types/utils/redux-saga/index.d.ts.map +1 -0
- package/dist/types/utils/redux-saga/middleware.d.ts +9 -0
- package/dist/types/utils/redux-saga/middleware.d.ts.map +1 -0
- package/{utils → dist/types/utils}/redux-saga/take-chain.d.ts +3 -0
- package/dist/types/utils/redux-saga/take-chain.d.ts.map +1 -0
- package/dist/types/utils/redux-saga/types.d.ts +37 -0
- package/dist/types/utils/redux-saga/types.d.ts.map +1 -0
- package/dist/types/utils/ssr/index.d.ts +42 -0
- package/dist/types/utils/ssr/index.d.ts.map +1 -0
- package/dist/types/utils/web/analytics/data-layer.d.ts +6 -0
- package/dist/types/utils/web/analytics/data-layer.d.ts.map +1 -0
- package/dist/types/utils/web/analytics/index.d.ts +3 -0
- package/dist/types/utils/web/analytics/index.d.ts.map +1 -0
- package/dist/types/utils/web/analytics/oko.d.ts +7 -0
- package/dist/types/utils/web/analytics/oko.d.ts.map +1 -0
- package/dist/types/utils/web/storage/index.d.ts +14 -0
- package/dist/types/utils/web/storage/index.d.ts.map +1 -0
- package/dist/types/utils/webpack/env/index.d.ts +19 -0
- package/dist/types/utils/webpack/env/index.d.ts.map +1 -0
- package/dist/types/utils/webpack/env/types.d.ts +12 -0
- package/dist/types/utils/webpack/env/types.d.ts.map +1 -0
- package/dist/types/utils/webpack/env/utils.d.ts +16 -0
- package/dist/types/utils/webpack/env/utils.d.ts.map +1 -0
- package/dist/types/utils/webpack/index.d.ts +7 -0
- package/dist/types/utils/webpack/index.d.ts.map +1 -0
- package/{utils → dist/types/utils}/webpack/module-federation/index.d.ts +10 -3
- package/dist/types/utils/webpack/module-federation/index.d.ts.map +1 -0
- package/{utils → dist/types/utils}/webpack/module-federation/types.d.ts +12 -3
- package/dist/types/utils/webpack/module-federation/types.d.ts.map +1 -0
- package/{utils → dist/types/utils}/webpack/module-federation/utils.d.ts +7 -0
- package/dist/types/utils/webpack/module-federation/utils.d.ts.map +1 -0
- package/http/package.json +6 -0
- package/log/package.json +6 -0
- package/package.json +232 -48
- package/preset/isomorphic/package.json +6 -0
- package/preset/isomorphic/providers/package.json +6 -0
- package/preset/isomorphic/utils/package.json +6 -0
- package/preset/node/handler/providers/package.json +6 -0
- package/preset/node/handler/utils/package.json +6 -0
- package/preset/node/node/providers/package.json +6 -0
- package/preset/node/node/utils/package.json +6 -0
- package/preset/node/package.json +6 -0
- package/preset/web/package.json +6 -0
- package/preset/web/providers/package.json +6 -0
- 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/{di/index.d.ts → src/di/index.ts} +2 -2
- 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/utils/axios/package.json +6 -0
- package/utils/express/package.json +6 -0
- package/utils/package.json +6 -0
- package/utils/react/package.json +6 -0
- package/utils/redux/package.json +6 -0
- package/utils/redux-saga/package.json +6 -0
- package/utils/ssr/package.json +6 -0
- package/utils/web/analytics/package.json +6 -0
- package/utils/webpack/package.json +6 -0
- package/cache/types.d.ts +0 -7
- 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/browser.d.ts +0 -6
- package/config/browser.js +0 -13
- package/config/browser.js.map +0 -1
- package/config/node.d.ts +0 -6
- package/config/node.js +0 -19
- package/config/node.js.map +0 -1
- package/config/types.d.ts +0 -7
- package/config/types.js +0 -3
- package/config/types.js.map +0 -1
- package/config/utils.d.ts +0 -5
- package/config/utils.js +0 -12
- package/config/utils.js.map +0 -1
- package/di/application.js +0 -71
- package/di/application.js.map +0 -1
- package/di/container.js +0 -49
- package/di/container.js.map +0 -1
- package/di/errors.d.ts +0 -21
- package/di/errors.js +0 -33
- package/di/errors.js.map +0 -1
- package/di/index.js +0 -16
- package/di/index.js.map +0 -1
- package/di/preset.d.ts +0 -9
- package/di/preset.js +0 -25
- package/di/preset.js.map +0 -1
- package/di/token.js +0 -17
- package/di/token.js.map +0 -1
- package/di/types.d.ts +0 -32
- package/di/types.js +0 -3
- package/di/types.js.map +0 -1
- package/error-tracker/browser.d.ts +0 -8
- package/error-tracker/browser.js +0 -40
- package/error-tracker/browser.js.map +0 -1
- package/error-tracker/node.d.ts +0 -8
- package/error-tracker/node.js +0 -40
- package/error-tracker/node.js.map +0 -1
- package/error-tracker/types.d.ts +0 -18
- package/error-tracker/types.js +0 -3
- package/error-tracker/types.js.map +0 -1
- package/error-tracker/utils.d.ts +0 -12
- package/error-tracker/utils.js +0 -19
- package/error-tracker/utils.js.map +0 -1
- package/http-client/middleware/cookie.d.ts +0 -19
- package/http-client/middleware/cookie.js +0 -62
- package/http-client/middleware/cookie.js.map +0 -1
- package/http-client/middleware/tracing.js +0 -67
- package/http-client/middleware/tracing.js.map +0 -1
- package/http-client/sauce/index.d.ts +0 -27
- package/http-client/sauce/index.js +0 -33
- package/http-client/sauce/index.js.map +0 -1
- package/http-client/types.d.ts +0 -6
- package/http-client/types.js +0 -3
- package/http-client/types.js.map +0 -1
- package/http-client/utils.d.ts +0 -9
- package/http-client/utils.js +0 -20
- package/http-client/utils.js.map +0 -1
- package/http-server/constants.d.ts +0 -4
- package/http-server/constants.js +0 -8
- package/http-server/constants.js.map +0 -1
- package/http-server/handler/health-check.d.ts +0 -6
- package/http-server/handler/health-check.js +0 -15
- package/http-server/handler/health-check.js.map +0 -1
- package/http-server/middleware/logging.d.ts +0 -10
- package/http-server/middleware/logging.js +0 -31
- package/http-server/middleware/logging.js.map +0 -1
- package/http-server/middleware/metrics.d.ts +0 -23
- package/http-server/middleware/metrics.js +0 -60
- package/http-server/middleware/metrics.js.map +0 -1
- package/http-server/middleware/tracing.d.ts +0 -14
- package/http-server/middleware/tracing.js +0 -51
- package/http-server/middleware/tracing.js.map +0 -1
- package/http-server/template/index.d.ts +0 -1
- package/http-server/template/index.js +0 -36
- package/http-server/template/index.js.map +0 -1
- package/http-server/types.d.ts +0 -33
- package/http-server/types.js +0 -3
- package/http-server/types.js.map +0 -1
- package/http-server/utils.d.ts +0 -30
- package/http-server/utils.js +0 -100
- package/http-server/utils.js.map +0 -1
- package/logger/handler/console.d.ts +0 -8
- package/logger/handler/console.js +0 -36
- package/logger/handler/console.js.map +0 -1
- package/logger/handler/sentry.d.ts +0 -8
- package/logger/handler/sentry.js +0 -36
- package/logger/handler/sentry.js.map +0 -1
- package/logger/index.js +0 -31
- package/logger/index.js.map +0 -1
- package/logger/types.d.ts +0 -24
- package/logger/types.js +0 -3
- package/logger/types.js.map +0 -1
- package/metrics/constants.d.ts +0 -4
- package/metrics/constants.js +0 -8
- package/metrics/constants.js.map +0 -1
- package/metrics/node.d.ts +0 -18
- package/metrics/node.js +0 -74
- package/metrics/node.js.map +0 -1
- package/preset/node/index.d.ts +0 -19
- package/preset/node/index.js +0 -121
- package/preset/node/index.js.map +0 -1
- package/preset/node/response.d.ts +0 -15
- package/preset/node/response.js +0 -77
- package/preset/node/response.js.map +0 -1
- package/saga-runner/index.d.ts +0 -8
- package/saga-runner/index.js +0 -79
- package/saga-runner/index.js.map +0 -1
- package/saga-runner/types.d.ts +0 -10
- package/saga-runner/types.js +0 -3
- package/saga-runner/types.js.map +0 -1
- package/tokens.d.ts +0 -48
- package/tokens.js +0 -49
- package/tokens.js.map +0 -1
- package/tracing/utils.d.ts +0 -9
- package/tracing/utils.js +0 -22
- package/tracing/utils.js.map +0 -1
- package/utils/browser/analytics/data-layer.d.ts +0 -5
- package/utils/browser/analytics/data-layer.js +0 -15
- package/utils/browser/analytics/data-layer.js.map +0 -1
- package/utils/browser/analytics/oko.d.ts +0 -12
- package/utils/browser/analytics/oko.js +0 -39
- package/utils/browser/analytics/oko.js.map +0 -1
- package/utils/browser/storage/index.d.ts +0 -4
- package/utils/browser/storage/index.js +0 -63
- package/utils/browser/storage/index.js.map +0 -1
- package/utils/number.js.map +0 -1
- package/utils/react/error-handlers/index.d.ts +0 -38
- package/utils/react/error-handlers/index.js +0 -47
- package/utils/react/error-handlers/index.js.map +0 -1
- package/utils/redux/remote-data.d.ts +0 -23
- package/utils/redux/remote-data.js +0 -28
- package/utils/redux/remote-data.js.map +0 -1
- package/utils/redux-saga/take-chain.js +0 -56
- package/utils/redux-saga/take-chain.js.map +0 -1
- package/utils/webpack/module-federation/index.js +0 -74
- 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 +0 -36
- package/utils/webpack/module-federation/utils.js.map +0 -1
package/src/di/errors.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Token } from './types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Ошибка, сообщающая, что в контейнере нет сервиса по заданному ключу.
|
|
5
|
+
*/
|
|
6
|
+
export class NothingBoundError extends Error {
|
|
7
|
+
readonly token: Token<unknown>;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Конструктор.
|
|
11
|
+
* @param token Токен.
|
|
12
|
+
* @param containerName Имя контейнера.
|
|
13
|
+
*/
|
|
14
|
+
constructor(token: Token<unknown>, containerName?: string) {
|
|
15
|
+
super(`Nothing bound to ${String(token)} in ${display(containerName)}`);
|
|
16
|
+
this.name = 'NothingBoundError';
|
|
17
|
+
this.token = token;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Ошибка, сообщающая, что в контейнере уже зарегистрирован компонент под таким токеном.
|
|
23
|
+
*/
|
|
24
|
+
export class AlreadyBoundError extends Error {
|
|
25
|
+
/**
|
|
26
|
+
* Конструктор.
|
|
27
|
+
* @param token Токен.
|
|
28
|
+
* @param containerName Имя контейнера.
|
|
29
|
+
*/
|
|
30
|
+
constructor(token: Token<unknown>, containerName?: string) {
|
|
31
|
+
super(`Cannot rebind token in ${display(containerName)}, already bound: ${String(token)}`);
|
|
32
|
+
this.name = 'AlreadyBoundError';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Ошибка, сообщающая, что обнаружена циклическая зависимость.
|
|
38
|
+
*/
|
|
39
|
+
export class CircularDependencyError extends Error {
|
|
40
|
+
/**
|
|
41
|
+
* Конструктор.
|
|
42
|
+
* @param trace Список токенов, в котором обнаружен цикл.
|
|
43
|
+
* @param containerName Имя контейнера.
|
|
44
|
+
*/
|
|
45
|
+
constructor(trace: Token<unknown>[], containerName?: string) {
|
|
46
|
+
const names = trace.map(String).join(' >> ');
|
|
47
|
+
super(`Circular dependency found in ${display(containerName)}, trace: ${names}`);
|
|
48
|
+
this.name = 'CircularDependencyError';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Вернёт переданное имя контейнера или заглушку.
|
|
54
|
+
* @param containerName Имя.
|
|
55
|
+
* @return Имя или заглушка.
|
|
56
|
+
*/
|
|
57
|
+
function display(containerName?: string) {
|
|
58
|
+
return containerName ?? '[unknown container]';
|
|
59
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { Token, Resolve, Provider, Container, Application, Preset } from './types';
|
|
2
|
-
export { NothingBoundError, CircularDependencyError } from './errors';
|
|
1
|
+
export type { Token, Resolve, Provider, Container, Application, Preset } from './types';
|
|
2
|
+
export { NothingBoundError, CircularDependencyError, AlreadyBoundError } from './errors';
|
|
3
3
|
export { createToken } from './token';
|
|
4
4
|
export { createContainer } from './container';
|
|
5
5
|
export { createPreset } from './preset';
|
package/src/di/preset.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
|
|
2
|
+
import type { Application, Provider, Token, Preset } from './types';
|
|
3
|
+
|
|
4
|
+
type PresetEntry<T = any> = [Token<T>, Provider<T>];
|
|
5
|
+
|
|
6
|
+
class PresetImplementation implements Preset {
|
|
7
|
+
private registry: Map<Token<any>, Provider<any>>;
|
|
8
|
+
|
|
9
|
+
constructor(defaults?: Iterable<PresetEntry>) {
|
|
10
|
+
this.registry = new Map<Token<any>, Provider<any>>(defaults);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
set<T>(token: Token<T>, provider: Provider<T>): this {
|
|
14
|
+
this.registry.set(token, provider);
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
apply(app: Application): void {
|
|
19
|
+
for (const [token, provider] of this.registry) {
|
|
20
|
+
app.bind(token).toProvider(provider);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Возвращает новый "preset" для DI-приложения - набор предустановленных компонентов которые можно переопределять.
|
|
27
|
+
* @param defaults Предустановленные зависимости.
|
|
28
|
+
* @return Preset.
|
|
29
|
+
*/
|
|
30
|
+
export function createPreset(defaults?: PresetEntry[]): Preset {
|
|
31
|
+
return new PresetImplementation(defaults);
|
|
32
|
+
}
|
package/src/di/token.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Token } from './types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Реализация токена.
|
|
5
|
+
*/
|
|
6
|
+
class TokenImplementation<T = never> implements Token<T> {
|
|
7
|
+
readonly _key: symbol;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Конструктор.
|
|
11
|
+
* @param name Имя для отладки.
|
|
12
|
+
*/
|
|
13
|
+
constructor(name?: string) {
|
|
14
|
+
this._key = Symbol(name);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Получив реестр вернет из него нужный компонент.
|
|
19
|
+
* @param registry Реестр.
|
|
20
|
+
* @return Компонент.
|
|
21
|
+
*/
|
|
22
|
+
_resolve(registry: Map<symbol, any>): T {
|
|
23
|
+
return registry.get(this._key);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @inheritdoc
|
|
28
|
+
*/
|
|
29
|
+
toString(): string {
|
|
30
|
+
return `Token(${this._key.description ?? 'unknown'})`;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Возвращает новый токен.
|
|
36
|
+
* @param name Имя токена для отладки в случае ошибок.
|
|
37
|
+
* @return Токен.
|
|
38
|
+
*/
|
|
39
|
+
export function createToken<T = never>(name?: string): Token<T> {
|
|
40
|
+
return new TokenImplementation(name);
|
|
41
|
+
}
|
package/src/di/types.ts
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Токен - ключ который можно использовать для привязки реализации и получения компонента из контейнера.
|
|
3
|
+
* За токеном можно закрепить интерфейс. В дальнейшем это поможет нне ошибиться при привязке реализации.
|
|
4
|
+
*/
|
|
5
|
+
export interface Token<T> {
|
|
6
|
+
readonly _key: symbol;
|
|
7
|
+
readonly _resolve: (registry: Map<symbol, any>) => T;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Резолвер. Получив токен вернет реализацию интерфейса, который за ним закреплён.
|
|
12
|
+
*/
|
|
13
|
+
export interface Resolve {
|
|
14
|
+
<T>(token: Token<T>): T;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Провайдер - функция, которая, получив резолвер, должна вернуть реализацию интерфейса.
|
|
19
|
+
*/
|
|
20
|
+
export interface Provider<T> {
|
|
21
|
+
(resolve: Resolve): T;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* DI-контейнер.
|
|
26
|
+
* Позволяет зарегистрировать за токеном компонент в виде функции-провайдера и в дальнейшем получить его по токену.
|
|
27
|
+
*/
|
|
28
|
+
export interface Container {
|
|
29
|
+
/**
|
|
30
|
+
* Регистрирует провайдер.
|
|
31
|
+
*/
|
|
32
|
+
set: <T = never>(token: Token<T>, provider: Provider<T>) => void;
|
|
33
|
+
|
|
34
|
+
get: Resolve;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Интерфейс привязки компонента к токену.
|
|
39
|
+
*/
|
|
40
|
+
export interface Binding<T> {
|
|
41
|
+
/**
|
|
42
|
+
* Привязывает к токену конкретное "статическое" значение.
|
|
43
|
+
*/
|
|
44
|
+
toValue: (value: T) => void;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Привязывает к токену функцию-провайдер.
|
|
48
|
+
*/
|
|
49
|
+
toProvider: (provider: Provider<T>) => void;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** @internal */
|
|
53
|
+
export type ExtractType<T extends readonly Token<any>[]> = {
|
|
54
|
+
[index in keyof T]: T[index] extends T[number] ? ReturnType<T[index]['_resolve']> : never;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* DI-Приложение. Расширенная версия DI-контейнера.
|
|
59
|
+
* Позволяет применять пресеты, задавать "родительские" приложения, вызывать callback-функции с инъекцией компонентов.
|
|
60
|
+
*/
|
|
61
|
+
export interface Application {
|
|
62
|
+
/**
|
|
63
|
+
* Добавляет пресет к приложению. Пресет будет применен в момент первой попытки получить компонент или вызвать функцию.
|
|
64
|
+
*/
|
|
65
|
+
preset(preset: Preset): void;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Получив приложение, пометит его как "родительское".
|
|
69
|
+
* При попытке достать компонент, в случае если его нет в текущем приложении, будет произведена попытка найти его в "родительском".
|
|
70
|
+
*/
|
|
71
|
+
attach(parent: Application): void;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Аналог метода set у Container. Получив токен вернет интерфейс привязки реализации.
|
|
75
|
+
* @param token Токен.
|
|
76
|
+
*/
|
|
77
|
+
bind<T>(token: Token<T>): Binding<T>;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Получив токен, вернет его реализацию если она была зарегистрирована.
|
|
81
|
+
* @param token Токен.
|
|
82
|
+
*/
|
|
83
|
+
get<T>(token: Token<T>): T;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Получив список токенов и callback-функцию, вызовет функцию с компонентами по соответствующим токенам.
|
|
87
|
+
*/
|
|
88
|
+
invoke<Tokens extends readonly Token<any>[]>(
|
|
89
|
+
tokens: [...Tokens],
|
|
90
|
+
fn: (...args: ExtractType<Tokens>) => void,
|
|
91
|
+
): void;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Пресет - набор провайдеров (с возможностью их добавлять/переопределять) который можно применить к DI-приложению.
|
|
96
|
+
*/
|
|
97
|
+
export interface Preset {
|
|
98
|
+
/** Добавляет провайдер в пресет. */
|
|
99
|
+
set: <T>(token: Token<T>, provider: Provider<T>) => this;
|
|
100
|
+
|
|
101
|
+
/** Применяет пресет к переданному приложению. */
|
|
102
|
+
apply: (app: Application) => void;
|
|
103
|
+
|
|
104
|
+
// @todo preventExtensions()
|
|
105
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { StatusError, ResponseError } from '../errors';
|
|
2
|
+
|
|
3
|
+
describe('StatusError', () => {
|
|
4
|
+
it('should have some properties', () => {
|
|
5
|
+
const response = new Response('Good', { status: 200 });
|
|
6
|
+
const error = new StatusError(response);
|
|
7
|
+
|
|
8
|
+
expect(error.name).toBe('StatusError');
|
|
9
|
+
expect(error.message).toBe(`HTTP Request failed with status ${200}`);
|
|
10
|
+
expect(error.response).toBe(response);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it('static is() should works correctly', () => {
|
|
14
|
+
expect(StatusError.is(new StatusError(new Response('error', { status: 400 })))).toBe(true);
|
|
15
|
+
expect(StatusError.is(123)).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
describe('ResponseError', () => {
|
|
20
|
+
it('should have some properties', () => {
|
|
21
|
+
const error = new ResponseError('Hello!', 400);
|
|
22
|
+
|
|
23
|
+
expect(error.name).toBe('ResponseError');
|
|
24
|
+
expect(error.message).toBe('Hello!');
|
|
25
|
+
expect(error.statusCode).toBe(400);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('should handle status missing', () => {
|
|
29
|
+
const error = new ResponseError('Hello!');
|
|
30
|
+
|
|
31
|
+
expect(error.name).toBe('ResponseError');
|
|
32
|
+
expect(error.message).toBe('Hello!');
|
|
33
|
+
expect(error.statusCode).toBe(500);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ошибка валидации статуса ответа.
|
|
3
|
+
* @todo Переименовать в HttpStatusValidationError?
|
|
4
|
+
*/
|
|
5
|
+
export class StatusError extends Error {
|
|
6
|
+
readonly response: Response;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @param response Ответ.
|
|
10
|
+
*/
|
|
11
|
+
constructor(response: Response) {
|
|
12
|
+
super(`HTTP Request failed with status ${response.status}`);
|
|
13
|
+
this.name = 'StatusError';
|
|
14
|
+
this.response = response;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Определяет, является ли переданное значение ошибкой валидации статуса.
|
|
19
|
+
* @param value Значение.
|
|
20
|
+
* @return Результат.
|
|
21
|
+
*/
|
|
22
|
+
static is(value: unknown): value is StatusError {
|
|
23
|
+
return (value as any)?.name === 'StatusError';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Ошибка в процессе формирования ответа.
|
|
29
|
+
*/
|
|
30
|
+
export class ResponseError extends Error {
|
|
31
|
+
statusCode: number;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @param message Сообщение.
|
|
35
|
+
* @param statusCode Код ответа.
|
|
36
|
+
*/
|
|
37
|
+
constructor(message: string, statusCode = 500) {
|
|
38
|
+
super(message);
|
|
39
|
+
this.name = 'ResponseError';
|
|
40
|
+
this.statusCode = statusCode;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type {
|
|
2
|
+
Handler,
|
|
3
|
+
Enhancer,
|
|
4
|
+
Middleware,
|
|
5
|
+
LogData,
|
|
6
|
+
DoneLogData,
|
|
7
|
+
FailLogData,
|
|
8
|
+
LogHandler,
|
|
9
|
+
LogHandlerFactory,
|
|
10
|
+
CookieStore,
|
|
11
|
+
} from './types';
|
|
12
|
+
export { configureFetch, applyMiddleware, createCookieStore } from '@krutoo/fetch-tools';
|
|
13
|
+
export { log, cookie, defaultHeaders, validateStatus } from '@krutoo/fetch-tools/middleware';
|
|
14
|
+
export { StatusError, ResponseError } from './errors';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DetailedError, Breadcrumb } from '..';
|
|
2
|
+
|
|
3
|
+
describe('DetailedError', () => {
|
|
4
|
+
it('name should be just "Error"', () => {
|
|
5
|
+
expect(new DetailedError('hello, world!').name).toBe('Error');
|
|
6
|
+
});
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
describe('Breadcrumb', () => {
|
|
10
|
+
it('name should be just "Error"', () => {
|
|
11
|
+
expect(new Breadcrumb({ message: 'some text' }).data).toEqual({ message: 'some text' });
|
|
12
|
+
});
|
|
13
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createLogger } from '..';
|
|
2
|
+
|
|
3
|
+
describe('createLogger', () => {
|
|
4
|
+
it('should return logger', () => {
|
|
5
|
+
const events: any[] = [];
|
|
6
|
+
const logger = createLogger();
|
|
7
|
+
|
|
8
|
+
logger.subscribe(event => events.push(event));
|
|
9
|
+
|
|
10
|
+
logger.log('a');
|
|
11
|
+
logger.info('b');
|
|
12
|
+
logger.error('c');
|
|
13
|
+
logger.warn('d');
|
|
14
|
+
logger.debug('e');
|
|
15
|
+
|
|
16
|
+
expect(events).toEqual([
|
|
17
|
+
{ type: 'log', data: 'a' },
|
|
18
|
+
{ type: 'info', data: 'b' },
|
|
19
|
+
{ type: 'error', data: 'c' },
|
|
20
|
+
{ type: 'warn', data: 'd' },
|
|
21
|
+
{ type: 'debug', data: 'e' },
|
|
22
|
+
]);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ErrorDetails, BreadcrumbDetails } from './types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Ошибка с данными.
|
|
5
|
+
*/
|
|
6
|
+
export class DetailedError extends Error {
|
|
7
|
+
data: ErrorDetails;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @param message Сообщение.
|
|
11
|
+
* @param data Данные.
|
|
12
|
+
*/
|
|
13
|
+
constructor(message?: string, data: ErrorDetails = {}) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.data = data;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Хлебная крошка.
|
|
21
|
+
*/
|
|
22
|
+
export class Breadcrumb {
|
|
23
|
+
type: string;
|
|
24
|
+
data: BreadcrumbDetails;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @param data Данные.
|
|
28
|
+
*/
|
|
29
|
+
constructor(data: BreadcrumbDetails) {
|
|
30
|
+
this.type = 'breadcrumb';
|
|
31
|
+
this.data = data;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { LogHandler } from '../types';
|
|
2
|
+
import type pino from 'pino';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Возвращает новый handler для logger'а для вывода событий в терминал.
|
|
6
|
+
* @param pinoInstance Конфиг.
|
|
7
|
+
* @return Handler.
|
|
8
|
+
*/
|
|
9
|
+
export function createPinoHandler(pinoInstance: pino.Logger): LogHandler {
|
|
10
|
+
return function pinoHandler(event) {
|
|
11
|
+
switch (event.type) {
|
|
12
|
+
case 'log':
|
|
13
|
+
case 'info':
|
|
14
|
+
pinoInstance.info(event.data);
|
|
15
|
+
break;
|
|
16
|
+
case 'warn':
|
|
17
|
+
pinoInstance.warn(event.data);
|
|
18
|
+
break;
|
|
19
|
+
case 'debug':
|
|
20
|
+
pinoInstance.debug(event.data);
|
|
21
|
+
break;
|
|
22
|
+
case 'error':
|
|
23
|
+
pinoInstance.error(event.data);
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { LogHandler } from '../types';
|
|
2
|
+
import type { Hub } from '@sentry/types';
|
|
3
|
+
import { Breadcrumb, DetailedError } from '../../log';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Возвращает новый handler для logger'а для отправки событий в Sentry.
|
|
7
|
+
* @param hubInit Sentry Hub или функция которая его вернёт.
|
|
8
|
+
* @return Handler.
|
|
9
|
+
*/
|
|
10
|
+
export function createSentryHandler(hubInit: Hub | (() => Hub)): LogHandler {
|
|
11
|
+
const getHub = typeof hubInit === 'function' ? hubInit : () => hubInit;
|
|
12
|
+
|
|
13
|
+
return event => {
|
|
14
|
+
// ВАЖНО: каждый входящий http-запрос должен иметь свой собственный hub
|
|
15
|
+
// подробности: https://github.com/getsentry/sentry-javascript/discussions/5648
|
|
16
|
+
// поэтому если передана функция - вызываем каждый раз (внутри обработчика)
|
|
17
|
+
const hub = getHub();
|
|
18
|
+
|
|
19
|
+
// error
|
|
20
|
+
if (event.type === 'error') {
|
|
21
|
+
const error = event.data;
|
|
22
|
+
|
|
23
|
+
if (error instanceof DetailedError) {
|
|
24
|
+
const { level, context, extra } = error.data;
|
|
25
|
+
|
|
26
|
+
hub.withScope(scope => {
|
|
27
|
+
if (level) {
|
|
28
|
+
scope.setLevel(level);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (context) {
|
|
32
|
+
const list = Array.isArray(context) ? context : [context];
|
|
33
|
+
|
|
34
|
+
for (const item of list) {
|
|
35
|
+
scope.setContext(item.key, item.data);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (extra) {
|
|
40
|
+
scope.setExtra(extra.key, extra.data);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
hub.captureException(error);
|
|
44
|
+
});
|
|
45
|
+
} else {
|
|
46
|
+
hub.captureException(error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// breadcrumb
|
|
51
|
+
if (event.data instanceof Breadcrumb) {
|
|
52
|
+
const breadcrumb = event.data.data;
|
|
53
|
+
|
|
54
|
+
hub.addBreadcrumb(breadcrumb);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
package/src/log/index.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Logger, LogEvent, LogLevel, LogHandler } from './types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Возвращает новый logger - объект для журналирования событий подобно console.
|
|
5
|
+
* @return Logger.
|
|
6
|
+
*/
|
|
7
|
+
export function createLogger(): Logger {
|
|
8
|
+
const handlers: LogHandler[] = [];
|
|
9
|
+
|
|
10
|
+
// eslint-disable-next-line require-jsdoc, jsdoc/require-jsdoc
|
|
11
|
+
const createMethod = (type: LogLevel) => (data: any) => {
|
|
12
|
+
const event: LogEvent = { type, data };
|
|
13
|
+
|
|
14
|
+
for (const handler of handlers) {
|
|
15
|
+
handler(event);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
log: createMethod('log'),
|
|
21
|
+
info: createMethod('info'),
|
|
22
|
+
warn: createMethod('warn'),
|
|
23
|
+
error: createMethod('error'),
|
|
24
|
+
debug: createMethod('debug'),
|
|
25
|
+
|
|
26
|
+
subscribe: handler => {
|
|
27
|
+
handlers.push(handler);
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
package/src/log/types.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { SeverityLevel, Context, Extra, Breadcrumb } from '@sentry/types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Тип события.
|
|
5
|
+
*/
|
|
6
|
+
export type LogLevel = 'error' | 'log' | 'info' | 'warn' | 'debug';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Интерфейс события.
|
|
10
|
+
*/
|
|
11
|
+
export interface LogEvent {
|
|
12
|
+
type: LogLevel;
|
|
13
|
+
data: unknown;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Интерфейс функции-обработчика события.
|
|
18
|
+
*/
|
|
19
|
+
export interface LogHandler {
|
|
20
|
+
(event: LogEvent): void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Logger.
|
|
25
|
+
* Поддерживает наиболее распространенные события жизненного цикла программы.
|
|
26
|
+
*/
|
|
27
|
+
export interface Logger {
|
|
28
|
+
error(data: any): void;
|
|
29
|
+
log(data: any): void;
|
|
30
|
+
info(data: any): void;
|
|
31
|
+
warn(data: any): void;
|
|
32
|
+
debug(data: any): void;
|
|
33
|
+
|
|
34
|
+
// @todo вынести в интерфейс SubscribableLogger?
|
|
35
|
+
subscribe(handler: LogHandler): void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Контекст ошибки.
|
|
40
|
+
*/
|
|
41
|
+
export interface ContextData {
|
|
42
|
+
key: string;
|
|
43
|
+
data: Context | null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Детали ошибки.
|
|
48
|
+
*/
|
|
49
|
+
export interface ErrorDetails {
|
|
50
|
+
level?: SeverityLevel;
|
|
51
|
+
|
|
52
|
+
context?: ContextData | ContextData[];
|
|
53
|
+
|
|
54
|
+
extra?: {
|
|
55
|
+
key: string;
|
|
56
|
+
data: Extra | null;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Детали хлебной крошки.
|
|
62
|
+
*/
|
|
63
|
+
export type BreadcrumbDetails = Breadcrumb;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Структура данных, которую необходимо выводить в терминал по соглашению внутри компании.
|
|
67
|
+
* @todo Убрать в preset'ы.
|
|
68
|
+
*/
|
|
69
|
+
export interface ConventionalFluentInfo {
|
|
70
|
+
version: string;
|
|
71
|
+
latency: number;
|
|
72
|
+
method: string;
|
|
73
|
+
remote_ip: string;
|
|
74
|
+
route: string;
|
|
75
|
+
status: number;
|
|
76
|
+
}
|