@sima-land/isomorph 11.0.0-alpha.45 → 11.0.0-alpha.47
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/README.md +1 -0
- package/dist/cjs/config/source.js +2 -0
- package/dist/cjs/config/source.js.map +1 -1
- package/dist/cjs/config/types.js.map +1 -1
- package/dist/cjs/http/index.js +6 -12
- package/dist/cjs/http/index.js.map +1 -1
- package/dist/cjs/http/types.js.map +1 -1
- package/dist/cjs/log/errors.js.map +1 -1
- package/dist/cjs/package.json +4 -3
- package/dist/cjs/preset/bun/index.js +3 -2
- package/dist/cjs/preset/bun/index.js.map +1 -1
- package/dist/cjs/preset/bun/providers/serve-middleware.js +1 -1
- package/dist/cjs/preset/bun/providers/serve-middleware.js.map +1 -1
- package/dist/cjs/preset/bun-handler/index.js +0 -2
- package/dist/cjs/preset/bun-handler/index.js.map +1 -1
- package/dist/cjs/preset/bun-handler/providers/fetch-middleware.js +1 -2
- package/dist/cjs/preset/bun-handler/providers/fetch-middleware.js.map +1 -1
- package/dist/cjs/preset/bun-handler/providers/handler-main.js +6 -24
- package/dist/cjs/preset/bun-handler/providers/handler-main.js.map +1 -1
- package/dist/cjs/preset/node/index.js +9 -2
- package/dist/cjs/preset/node/index.js.map +1 -1
- package/dist/cjs/preset/node/providers/express-metrics-middleware.js +1 -1
- package/dist/cjs/preset/node/providers/express-metrics-middleware.js.map +1 -1
- package/dist/cjs/preset/node/providers/main-express-app.js +62 -0
- package/dist/cjs/preset/node/providers/main-express-app.js.map +1 -0
- package/dist/cjs/preset/node/providers/{metrics-http-app.js → metrics-express-app.js} +3 -3
- package/dist/cjs/preset/node/providers/metrics-express-app.js.map +1 -0
- package/dist/cjs/preset/node/types.js.map +1 -1
- package/dist/cjs/preset/{server → node}/utils/get-fetch-tracing.js +2 -2
- package/dist/cjs/preset/node/utils/get-fetch-tracing.js.map +1 -0
- package/dist/cjs/preset/node/utils/get-handler-metrics.js.map +1 -0
- package/dist/cjs/preset/node/utils/get-page-response-format.js +1 -0
- package/dist/cjs/preset/node/utils/get-page-response-format.js.map +1 -1
- package/dist/cjs/preset/{server → node}/utils/get-serve-measuring.js +1 -1
- package/dist/cjs/preset/node/utils/get-serve-measuring.js.map +1 -0
- package/dist/cjs/preset/node-handler/index.js +2 -2
- package/dist/cjs/preset/node-handler/index.js.map +1 -1
- package/dist/cjs/preset/node-handler/providers/axios-middleware.js +1 -2
- package/dist/cjs/preset/node-handler/providers/axios-middleware.js.map +1 -1
- package/dist/cjs/preset/node-handler/providers/fetch-middleware.js +2 -3
- package/dist/cjs/preset/node-handler/providers/fetch-middleware.js.map +1 -1
- package/dist/cjs/preset/node-handler/providers/handler-main.js +1 -14
- package/dist/cjs/preset/node-handler/providers/handler-main.js.map +1 -1
- package/dist/cjs/preset/server/index.js +6 -0
- package/dist/cjs/preset/server/index.js.map +1 -1
- package/dist/cjs/preset/server/providers/fetch-middleware.js.map +1 -0
- package/dist/cjs/preset/server/providers/format-page-response.js +4 -1
- package/dist/cjs/preset/server/providers/format-page-response.js.map +1 -1
- package/dist/cjs/preset/server/providers/serve.js +47 -0
- package/dist/cjs/preset/server/providers/serve.js.map +1 -0
- package/dist/cjs/preset/server/types.js.map +1 -1
- package/dist/cjs/preset/server/utils/get-forwarded-headers.js +6 -0
- package/dist/cjs/preset/server/utils/get-forwarded-headers.js.map +1 -1
- package/dist/cjs/preset/server/utils/get-page-response-format.js +1 -0
- package/dist/cjs/preset/server/utils/get-page-response-format.js.map +1 -1
- package/dist/cjs/preset/server/utils/get-serve-error-logging.js +2 -2
- package/dist/cjs/preset/server/utils/get-serve-error-logging.js.map +1 -1
- package/dist/cjs/preset/server/utils/get-serve-logging.js +3 -4
- package/dist/cjs/preset/server/utils/get-serve-logging.js.map +1 -1
- package/dist/cjs/preset/web/providers/axios-middleware.js.map +1 -1
- package/dist/cjs/tokens.js +16 -5
- package/dist/cjs/tokens.js.map +1 -1
- package/dist/cjs/utils/axios/index.js +0 -7
- package/dist/cjs/utils/axios/index.js.map +1 -1
- package/dist/cjs/utils/express/handler/health-check.js.map +1 -1
- package/dist/cjs/utils/express/utils/index.js.map +1 -1
- package/dist/esm/config/source.js +1 -0
- package/dist/esm/config/source.js.map +1 -1
- package/dist/esm/config/types.js.map +1 -1
- package/dist/esm/http/index.js +2 -2
- package/dist/esm/http/index.js.map +1 -1
- package/dist/esm/http/types.js.map +1 -1
- package/dist/esm/log/errors.js.map +1 -1
- package/dist/esm/package.json +4 -3
- package/dist/esm/preset/bun/index.js +3 -2
- package/dist/esm/preset/bun/index.js.map +1 -1
- package/dist/esm/preset/bun/providers/serve-middleware.js +1 -1
- package/dist/esm/preset/bun/providers/serve-middleware.js.map +1 -1
- package/dist/esm/preset/bun-handler/index.js +0 -2
- package/dist/esm/preset/bun-handler/index.js.map +1 -1
- package/dist/esm/preset/bun-handler/providers/fetch-middleware.js +2 -3
- package/dist/esm/preset/bun-handler/providers/fetch-middleware.js.map +1 -1
- package/dist/esm/preset/bun-handler/providers/handler-main.js +6 -24
- package/dist/esm/preset/bun-handler/providers/handler-main.js.map +1 -1
- package/dist/esm/preset/node/index.js +9 -4
- package/dist/esm/preset/node/index.js.map +1 -1
- package/dist/esm/preset/node/providers/express-metrics-middleware.js +1 -1
- package/dist/esm/preset/node/providers/express-metrics-middleware.js.map +1 -1
- package/dist/esm/preset/node/providers/main-express-app.js +56 -0
- package/dist/esm/preset/node/providers/main-express-app.js.map +1 -0
- package/dist/esm/preset/node/providers/{metrics-http-app.js → metrics-express-app.js} +2 -2
- package/dist/esm/preset/node/providers/metrics-express-app.js.map +1 -0
- package/dist/esm/preset/node/types.js.map +1 -1
- package/dist/esm/preset/{server → node}/utils/get-fetch-tracing.js +2 -2
- package/dist/esm/preset/node/utils/get-fetch-tracing.js.map +1 -0
- package/dist/esm/preset/node/utils/get-handler-metrics.js.map +1 -0
- package/dist/esm/preset/node/utils/get-page-response-format.js +1 -0
- package/dist/esm/preset/node/utils/get-page-response-format.js.map +1 -1
- package/dist/esm/preset/{server → node}/utils/get-serve-measuring.js +1 -1
- package/dist/esm/preset/node/utils/get-serve-measuring.js.map +1 -0
- package/dist/esm/preset/node-handler/index.js +2 -2
- package/dist/esm/preset/node-handler/index.js.map +1 -1
- package/dist/esm/preset/node-handler/providers/axios-middleware.js +2 -3
- package/dist/esm/preset/node-handler/providers/axios-middleware.js.map +1 -1
- package/dist/esm/preset/node-handler/providers/fetch-middleware.js +3 -4
- package/dist/esm/preset/node-handler/providers/fetch-middleware.js.map +1 -1
- package/dist/esm/preset/node-handler/providers/handler-main.js +1 -14
- package/dist/esm/preset/node-handler/providers/handler-main.js.map +1 -1
- package/dist/esm/preset/server/index.js +1 -1
- package/dist/esm/preset/server/index.js.map +1 -1
- package/dist/esm/preset/server/providers/fetch-middleware.js.map +1 -0
- package/dist/esm/preset/server/providers/format-page-response.js +4 -1
- package/dist/esm/preset/server/providers/format-page-response.js.map +1 -1
- package/dist/esm/preset/server/providers/serve.js +41 -0
- package/dist/esm/preset/server/providers/serve.js.map +1 -0
- package/dist/esm/preset/server/types.js.map +1 -1
- package/dist/esm/preset/server/utils/get-forwarded-headers.js +6 -0
- package/dist/esm/preset/server/utils/get-forwarded-headers.js.map +1 -1
- package/dist/esm/preset/server/utils/get-page-response-format.js +1 -0
- package/dist/esm/preset/server/utils/get-page-response-format.js.map +1 -1
- package/dist/esm/preset/server/utils/get-serve-error-logging.js +2 -2
- package/dist/esm/preset/server/utils/get-serve-error-logging.js.map +1 -1
- package/dist/esm/preset/server/utils/get-serve-logging.js +3 -4
- package/dist/esm/preset/server/utils/get-serve-logging.js.map +1 -1
- package/dist/esm/preset/web/providers/axios-middleware.js.map +1 -1
- package/dist/esm/tokens.js +16 -5
- package/dist/esm/tokens.js.map +1 -1
- package/dist/esm/utils/axios/index.js +0 -1
- package/dist/esm/utils/axios/index.js.map +1 -1
- package/dist/esm/utils/express/handler/health-check.js.map +1 -1
- package/dist/esm/utils/express/utils/index.js.map +1 -1
- package/dist/types/config/source.d.ts.map +1 -1
- package/dist/types/config/types.d.ts.map +1 -1
- package/dist/types/http/index.d.ts +3 -3
- package/dist/types/http/index.d.ts.map +1 -1
- package/dist/types/http/types.d.ts +3 -3
- package/dist/types/http/types.d.ts.map +1 -1
- package/dist/types/log/errors.d.ts +1 -1
- package/dist/types/log/errors.d.ts.map +1 -1
- package/dist/types/preset/bun/index.d.ts.map +1 -1
- package/dist/types/preset/bun-handler/index.d.ts.map +1 -1
- package/dist/types/preset/bun-handler/providers/fetch-middleware.d.ts.map +1 -1
- package/dist/types/preset/bun-handler/providers/handler-main.d.ts +1 -1
- package/dist/types/preset/bun-handler/providers/handler-main.d.ts.map +1 -1
- package/dist/types/preset/node/index.d.ts +1 -0
- package/dist/types/preset/node/index.d.ts.map +1 -1
- package/dist/types/preset/node/providers/main-express-app.d.ts +9 -0
- package/dist/types/preset/node/providers/main-express-app.d.ts.map +1 -0
- package/dist/types/preset/node/providers/{metrics-http-app.d.ts → metrics-express-app.d.ts} +2 -2
- package/dist/types/preset/node/providers/metrics-express-app.d.ts.map +1 -0
- package/dist/types/preset/node/types.d.ts +6 -4
- package/dist/types/preset/node/types.d.ts.map +1 -1
- package/dist/types/preset/node/utils/get-fetch-tracing.d.ts.map +1 -0
- package/dist/types/preset/node/utils/get-handler-metrics.d.ts.map +1 -0
- package/dist/types/preset/node/utils/get-page-response-format.d.ts +1 -0
- package/dist/types/preset/node/utils/get-page-response-format.d.ts.map +1 -1
- package/dist/types/preset/{server → node}/utils/get-serve-measuring.d.ts +1 -1
- package/dist/types/preset/node/utils/get-serve-measuring.d.ts.map +1 -0
- package/dist/types/preset/node-handler/providers/axios-middleware.d.ts.map +1 -1
- package/dist/types/preset/node-handler/providers/fetch-middleware.d.ts.map +1 -1
- package/dist/types/preset/node-handler/providers/handler-main.d.ts.map +1 -1
- package/dist/types/preset/server/index.d.ts +2 -2
- package/dist/types/preset/server/index.d.ts.map +1 -1
- package/dist/types/preset/server/providers/fetch-middleware.d.ts.map +1 -0
- package/dist/types/preset/server/providers/format-page-response.d.ts.map +1 -1
- package/dist/types/preset/server/providers/serve.d.ts.map +1 -0
- package/dist/types/preset/server/types.d.ts +6 -1
- package/dist/types/preset/server/types.d.ts.map +1 -1
- package/dist/types/preset/server/utils/get-forwarded-headers.d.ts.map +1 -1
- package/dist/types/preset/server/utils/get-page-response-format.d.ts +1 -0
- package/dist/types/preset/server/utils/get-page-response-format.d.ts.map +1 -1
- package/dist/types/preset/server/utils/get-serve-error-logging.d.ts.map +1 -1
- package/dist/types/preset/server/utils/get-serve-logging.d.ts.map +1 -1
- package/dist/types/preset/web/providers/axios-middleware.d.ts +3 -2
- package/dist/types/preset/web/providers/axios-middleware.d.ts.map +1 -1
- package/dist/types/preset/web/providers/fetch-middleware.d.ts +1 -1
- package/dist/types/preset/web/providers/fetch-middleware.d.ts.map +1 -1
- package/dist/types/tokens.d.ts +21 -10
- package/dist/types/tokens.d.ts.map +1 -1
- package/dist/types/utils/axios/index.d.ts +0 -1
- package/dist/types/utils/axios/index.d.ts.map +1 -1
- package/dist/types/utils/express/handler/health-check.d.ts +2 -2
- package/dist/types/utils/express/handler/health-check.d.ts.map +1 -1
- package/dist/types/utils/express/utils/index.d.ts +2 -2
- package/dist/types/utils/express/utils/index.d.ts.map +1 -1
- package/package.json +4 -3
- package/dist/cjs/preset/bun/providers/fetch-middleware.js.map +0 -1
- package/dist/cjs/preset/bun/providers/serve.js +0 -33
- package/dist/cjs/preset/bun/providers/serve.js.map +0 -1
- package/dist/cjs/preset/bun-handler/providers/cookie-store.js +0 -15
- package/dist/cjs/preset/bun-handler/providers/cookie-store.js.map +0 -1
- package/dist/cjs/preset/node/providers/metrics-http-app.js.map +0 -1
- package/dist/cjs/preset/node-handler/providers/cookie-store.js +0 -18
- package/dist/cjs/preset/node-handler/providers/cookie-store.js.map +0 -1
- package/dist/cjs/preset/server/utils/get-fetch-tracing.js.map +0 -1
- package/dist/cjs/preset/server/utils/get-handler-metrics.js.map +0 -1
- package/dist/cjs/preset/server/utils/get-serve-measuring.js.map +0 -1
- package/dist/cjs/utils/axios/middleware/cookie.js +0 -28
- package/dist/cjs/utils/axios/middleware/cookie.js.map +0 -1
- package/dist/esm/preset/bun/providers/fetch-middleware.js.map +0 -1
- package/dist/esm/preset/bun/providers/serve.js +0 -27
- package/dist/esm/preset/bun/providers/serve.js.map +0 -1
- package/dist/esm/preset/bun-handler/providers/cookie-store.js +0 -9
- package/dist/esm/preset/bun-handler/providers/cookie-store.js.map +0 -1
- package/dist/esm/preset/node/providers/metrics-http-app.js.map +0 -1
- package/dist/esm/preset/node-handler/providers/cookie-store.js +0 -13
- package/dist/esm/preset/node-handler/providers/cookie-store.js.map +0 -1
- package/dist/esm/preset/server/utils/get-fetch-tracing.js.map +0 -1
- package/dist/esm/preset/server/utils/get-handler-metrics.js.map +0 -1
- package/dist/esm/preset/server/utils/get-serve-measuring.js.map +0 -1
- package/dist/esm/utils/axios/middleware/cookie.js +0 -22
- package/dist/esm/utils/axios/middleware/cookie.js.map +0 -1
- package/dist/types/preset/bun/providers/fetch-middleware.d.ts.map +0 -1
- package/dist/types/preset/bun/providers/serve.d.ts.map +0 -1
- package/dist/types/preset/bun-handler/providers/cookie-store.d.ts +0 -4
- package/dist/types/preset/bun-handler/providers/cookie-store.d.ts.map +0 -1
- package/dist/types/preset/node/providers/metrics-http-app.d.ts.map +0 -1
- package/dist/types/preset/node-handler/providers/cookie-store.d.ts +0 -9
- package/dist/types/preset/node-handler/providers/cookie-store.d.ts.map +0 -1
- package/dist/types/preset/server/utils/get-fetch-tracing.d.ts.map +0 -1
- package/dist/types/preset/server/utils/get-handler-metrics.d.ts.map +0 -1
- package/dist/types/preset/server/utils/get-serve-measuring.d.ts.map +0 -1
- package/dist/types/utils/axios/middleware/cookie.d.ts +0 -9
- package/dist/types/utils/axios/middleware/cookie.d.ts.map +0 -1
- /package/dist/cjs/preset/{server → node}/utils/get-handler-metrics.js +0 -0
- /package/dist/cjs/preset/{bun → server}/providers/fetch-middleware.js +0 -0
- /package/dist/esm/preset/{server → node}/utils/get-handler-metrics.js +0 -0
- /package/dist/esm/preset/{bun → server}/providers/fetch-middleware.js +0 -0
- /package/dist/types/preset/{server → node}/utils/get-fetch-tracing.d.ts +0 -0
- /package/dist/types/preset/{server → node}/utils/get-handler-metrics.d.ts +0 -0
- /package/dist/types/preset/{bun → server}/providers/fetch-middleware.d.ts +0 -0
- /package/dist/types/preset/{bun → server}/providers/serve.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler-main.js","names":["KnownToken","applyMiddleware","HelmetContext","formatHandlerError","provideHandlerMain","resolve","config","Config","base","logger","assetsInit","Http","Handler","Page","assets","render","
|
|
1
|
+
{"version":3,"file":"handler-main.js","names":["KnownToken","applyMiddleware","HelmetContext","formatHandlerError","provideHandlerMain","resolve","config","Config","base","logger","assetsInit","Http","Handler","Page","assets","render","Helmet","helmet","abortController","Fetch","formatResponse","getAssets","handler","jsx","React","createElement","Provider","value","title","appName","body","headers","Response","error","response","log","level","status","redirectLocation","Location","enhancer","request","next","abort"],"sources":["../../../../../src/preset/bun-handler/providers/handler-main.tsx"],"sourcesContent":["/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { applyMiddleware } from '../../../http';\nimport { HelmetContext } from '../../server/utils/regular-helmet';\nimport { formatHandlerError } from '../../server/utils/format-handler-error';\n\nexport function provideHandlerMain(resolve: Resolve) {\n const config = resolve(KnownToken.Config.base);\n const logger = resolve(KnownToken.logger);\n const assetsInit = resolve(KnownToken.Http.Handler.Page.assets);\n const render = resolve(KnownToken.Http.Handler.Page.render);\n const Helmet = resolve(KnownToken.Http.Handler.Page.helmet);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n const formatResponse = resolve(KnownToken.Http.Handler.Page.formatResponse);\n\n const getAssets = typeof assetsInit === 'function' ? assetsInit : () => assetsInit;\n\n const handler = async (): Promise<Response> => {\n try {\n const assets = await getAssets();\n\n const jsx = (\n <HelmetContext.Provider value={{ title: config.appName, assets }}>\n <Helmet>{await render()}</Helmet>\n </HelmetContext.Provider>\n );\n\n const { body, headers } = await formatResponse(jsx, assets);\n\n return new Response(body, { headers });\n } catch (error) {\n const { response, log } = formatHandlerError(error);\n\n if (log.level && logger[log.level]) {\n logger[log.level](error);\n }\n\n if (response.status > 299 && response.status < 400 && response.redirectLocation) {\n return new Response(null, {\n status: response.status,\n headers: {\n Location: response.redirectLocation,\n },\n });\n } else {\n return new Response(response.body, {\n status: response.status,\n });\n }\n }\n };\n\n const enhancer = applyMiddleware(\n // ВАЖНО: прерываем исходящие в рамках обработчика http-запросы\n async (request, next) => {\n try {\n return await next(request);\n } finally {\n abortController.abort();\n }\n },\n );\n\n return enhancer(handler);\n}\n"],"mappings":"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"}
|
|
@@ -13,13 +13,13 @@ import { provideExpressRequestMiddleware } from "./providers/express-request-mid
|
|
|
13
13
|
import { provideExpressTracingMiddleware } from "./providers/express-tracing-middleware.js";
|
|
14
14
|
import { provideKnownHttpApiHosts } from "../server/providers/known-http-api-hosts.js";
|
|
15
15
|
import { provideLogger } from "./providers/logger.js";
|
|
16
|
-
import {
|
|
16
|
+
import { provideMetricsExpressApp } from "./providers/metrics-express-app.js";
|
|
17
17
|
import { provideSpanExporter } from "./providers/span-exporter.js";
|
|
18
18
|
import { provideSsrBridgeServerSide } from "../server/providers/ssr-bridge-server-side.js";
|
|
19
19
|
import { provideTracer } from "./providers/tracer.js";
|
|
20
20
|
import { provideTracerProvider } from "./providers/tracer-provider.js";
|
|
21
21
|
import { provideTracerProviderResource } from "./providers/tracer-provider-resource.js";
|
|
22
|
-
|
|
22
|
+
import { provideMainExpressApp } from "./providers/main-express-app.js";
|
|
23
23
|
/**
|
|
24
24
|
* Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.
|
|
25
25
|
* @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.
|
|
@@ -43,17 +43,23 @@ export function PresetNode(customize) {
|
|
|
43
43
|
preset.set(KnownToken.Tracing.tracerProviderResource, provideTracerProviderResource);
|
|
44
44
|
|
|
45
45
|
// metrics
|
|
46
|
-
preset.set(KnownToken.Metrics.
|
|
46
|
+
preset.set(KnownToken.Metrics.expressApp, provideMetricsExpressApp);
|
|
47
47
|
|
|
48
48
|
// fetch
|
|
49
49
|
preset.set(KnownToken.Http.fetch, provideFetch);
|
|
50
50
|
preset.set(KnownToken.Http.Fetch.middleware, () => []);
|
|
51
|
+
preset.set(KnownToken.Http.Serve.Proxy.config, () => null);
|
|
51
52
|
|
|
52
53
|
// axios
|
|
53
54
|
preset.set(KnownToken.Axios.factory, provideAxiosFactory);
|
|
54
55
|
preset.set(KnownToken.Axios.middleware, () => []);
|
|
55
56
|
|
|
56
57
|
// express
|
|
58
|
+
preset.set(KnownToken.Express.app, provideMainExpressApp);
|
|
59
|
+
preset.set(KnownToken.Express.pageRoutes, () => []);
|
|
60
|
+
preset.set(KnownToken.Express.serviceRoutes, resolve => [['/healthcheck', resolve(KnownToken.Express.Handlers.healthCheck)]]);
|
|
61
|
+
preset.set(KnownToken.Express.middleware, resolve => [resolve(KnownToken.Express.Middleware.request), resolve(KnownToken.Express.Middleware.log), resolve(KnownToken.Express.Middleware.metrics), resolve(KnownToken.Express.Middleware.tracing)]);
|
|
62
|
+
preset.set(KnownToken.Express.endMiddleware, resolve => [resolve(KnownToken.Express.Middleware.error)]);
|
|
57
63
|
preset.set(KnownToken.Express.factory, provideExpressFactory);
|
|
58
64
|
preset.set(KnownToken.Express.Handlers.healthCheck, healthCheck);
|
|
59
65
|
preset.set(KnownToken.Express.Middleware.request, provideExpressRequestMiddleware);
|
|
@@ -74,7 +80,6 @@ export function PresetNode(customize) {
|
|
|
74
80
|
}
|
|
75
81
|
return preset;
|
|
76
82
|
}
|
|
77
|
-
|
|
78
83
|
// доступные утилиты
|
|
79
84
|
export { getClientIp } from "./utils/get-client-ip.js";
|
|
80
85
|
export { getForwardedHeaders } from "./utils/get-forwarded-headers.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["KnownToken","provideAxiosFactory","provideFetch","provideBaseConfig","createPreset","healthCheck","provideConfigSource","provideExpressErrorMiddleware","provideExpressFactory","provideExpressLogMiddleware","provideExpressMetricsMiddleware","provideExpressRequestMiddleware","provideExpressTracingMiddleware","provideKnownHttpApiHosts","provideLogger","
|
|
1
|
+
{"version":3,"file":"index.js","names":["KnownToken","provideAxiosFactory","provideFetch","provideBaseConfig","createPreset","healthCheck","provideConfigSource","provideExpressErrorMiddleware","provideExpressFactory","provideExpressLogMiddleware","provideExpressMetricsMiddleware","provideExpressRequestMiddleware","provideExpressTracingMiddleware","provideKnownHttpApiHosts","provideLogger","provideMetricsExpressApp","provideSpanExporter","provideSsrBridgeServerSide","provideTracer","provideTracerProvider","provideTracerProviderResource","provideMainExpressApp","PresetNode","customize","preset","set","Config","source","base","logger","Tracing","tracer","spanExporter","tracerProvider","tracerProviderResource","Metrics","expressApp","Http","fetch","Fetch","middleware","Serve","Proxy","config","Axios","factory","Express","app","pageRoutes","serviceRoutes","resolve","Handlers","Middleware","request","log","metrics","tracing","endMiddleware","error","Api","knownHosts","SsrBridge","serverSide","override","bind","getClientIp","getForwardedHeaders","getPageResponseFormat","HandlerProvider"],"sources":["../../../../src/preset/node/index.ts"],"sourcesContent":["import { KnownToken } from '../../tokens';\nimport { provideAxiosFactory } from '../isomorphic/providers/axios-factory';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideBaseConfig } from '../isomorphic/providers/base-config';\nimport { Preset, createPreset } from '../../di';\nimport { PresetTuner } from '../isomorphic/types';\nimport { healthCheck } from '../../utils/express/handler/health-check';\nimport { provideConfigSource } from './providers/config-source';\nimport { provideExpressErrorMiddleware } from './providers/express-error-middleware';\nimport { provideExpressFactory } from './providers/express-factory';\nimport { provideExpressLogMiddleware } from './providers/express-log-middleware';\nimport { provideExpressMetricsMiddleware } from './providers/express-metrics-middleware';\nimport { provideExpressRequestMiddleware } from './providers/express-request-middleware';\nimport { provideExpressTracingMiddleware } from './providers/express-tracing-middleware';\nimport { provideKnownHttpApiHosts } from '../server/providers/known-http-api-hosts';\nimport { provideLogger } from './providers/logger';\nimport { provideMetricsExpressApp } from './providers/metrics-express-app';\nimport { provideSpanExporter } from './providers/span-exporter';\nimport { provideSsrBridgeServerSide } from '../server/providers/ssr-bridge-server-side';\nimport { provideTracer } from './providers/tracer';\nimport { provideTracerProvider } from './providers/tracer-provider';\nimport { provideTracerProviderResource } from './providers/tracer-provider-resource';\nimport { provideMainExpressApp } from './providers/main-express-app';\nimport { ExpressRouteList } from './types';\n\n/**\n * Возвращает preset с зависимостями по умолчанию для frontend-микросервисов на Node.js.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @return Preset.\n */\nexport function PresetNode(customize?: PresetTuner): Preset {\n // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости\n const preset = createPreset();\n\n // config\n preset.set(KnownToken.Config.source, provideConfigSource);\n preset.set(KnownToken.Config.base, provideBaseConfig);\n\n // log\n preset.set(KnownToken.logger, provideLogger);\n\n // tracing\n preset.set(KnownToken.Tracing.tracer, provideTracer);\n preset.set(KnownToken.Tracing.spanExporter, provideSpanExporter);\n preset.set(KnownToken.Tracing.tracerProvider, provideTracerProvider);\n preset.set(KnownToken.Tracing.tracerProviderResource, provideTracerProviderResource);\n\n // metrics\n preset.set(KnownToken.Metrics.expressApp, provideMetricsExpressApp);\n\n // fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.middleware, () => []);\n preset.set(KnownToken.Http.Serve.Proxy.config, () => null);\n\n // axios\n preset.set(KnownToken.Axios.factory, provideAxiosFactory);\n preset.set(KnownToken.Axios.middleware, () => []);\n\n // express\n preset.set(KnownToken.Express.app, provideMainExpressApp);\n preset.set(KnownToken.Express.pageRoutes, () => []);\n preset.set(\n KnownToken.Express.serviceRoutes,\n (resolve): ExpressRouteList => [\n ['/healthcheck', resolve(KnownToken.Express.Handlers.healthCheck)],\n ],\n );\n preset.set(KnownToken.Express.middleware, resolve => [\n resolve(KnownToken.Express.Middleware.request),\n resolve(KnownToken.Express.Middleware.log),\n resolve(KnownToken.Express.Middleware.metrics),\n resolve(KnownToken.Express.Middleware.tracing),\n ]);\n preset.set(KnownToken.Express.endMiddleware, resolve => [\n resolve(KnownToken.Express.Middleware.error),\n ]);\n preset.set(KnownToken.Express.factory, provideExpressFactory);\n preset.set(KnownToken.Express.Handlers.healthCheck, healthCheck);\n preset.set(KnownToken.Express.Middleware.request, provideExpressRequestMiddleware);\n preset.set(KnownToken.Express.Middleware.log, provideExpressLogMiddleware);\n preset.set(KnownToken.Express.Middleware.metrics, provideExpressMetricsMiddleware);\n preset.set(KnownToken.Express.Middleware.tracing, provideExpressTracingMiddleware);\n preset.set(KnownToken.Express.Middleware.error, provideExpressErrorMiddleware);\n\n // http api\n preset.set(KnownToken.Http.Api.knownHosts, provideKnownHttpApiHosts);\n\n // ssr bridge\n preset.set(KnownToken.SsrBridge.serverSide, provideSsrBridgeServerSide);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n\nexport type { ExpressHandlerContext, ExpressRouteList } from './types';\n\n// доступные утилиты\nexport { getClientIp } from './utils/get-client-ip';\nexport { getForwardedHeaders } from './utils/get-forwarded-headers';\nexport { getPageResponseFormat } from './utils/get-page-response-format';\nexport { HandlerProvider } from './utils/handler-provider';\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getHandlerMetrics } from "
|
|
1
|
+
import { getHandlerMetrics } from "../utils/get-handler-metrics.js";
|
|
2
2
|
import { KnownToken } from "../../../tokens.js";
|
|
3
3
|
import { PAGE_HANDLER_EVENT_TYPE } from "./../../server/index.js";
|
|
4
4
|
import { toMilliseconds } from "./../../../utils/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express-metrics-middleware.js","names":["getHandlerMetrics","KnownToken","PAGE_HANDLER_EVENT_TYPE","toMilliseconds","provideExpressMetricsMiddleware","resolve","config","Config","base","requestCount","renderDuration","responseDuration","getLabels","req","res","version","appVersion","route","baseUrl","path","code","statusCode","method","getRenderLabels","request","url","next","responseStart","process","hrtime","bigint","inc","once","renderStart","renderFinish","observe","responseFinish"],"sources":["../../../../../src/preset/node/providers/express-metrics-middleware.ts"],"sourcesContent":["import type express from 'express';\nimport type { Resolve } from '../../../di';\nimport { LABEL_NAMES, getHandlerMetrics } from '
|
|
1
|
+
{"version":3,"file":"express-metrics-middleware.js","names":["getHandlerMetrics","KnownToken","PAGE_HANDLER_EVENT_TYPE","toMilliseconds","provideExpressMetricsMiddleware","resolve","config","Config","base","requestCount","renderDuration","responseDuration","getLabels","req","res","version","appVersion","route","baseUrl","path","code","statusCode","method","getRenderLabels","request","url","next","responseStart","process","hrtime","bigint","inc","once","renderStart","renderFinish","observe","responseFinish"],"sources":["../../../../../src/preset/node/providers/express-metrics-middleware.ts"],"sourcesContent":["import type express from 'express';\nimport type { Resolve } from '../../../di';\nimport { LABEL_NAMES, getHandlerMetrics } from '../utils/get-handler-metrics';\nimport { KnownToken } from '../../../tokens';\nimport { PAGE_HANDLER_EVENT_TYPE } from '../../server';\nimport { toMilliseconds } from '../../../utils';\n\n/**\n * Провайдер промежуточного слоя сбора метрик входящих http-запросов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Промежуточный слой.\n */\nexport function provideExpressMetricsMiddleware(resolve: Resolve): express.Handler {\n const config = resolve(KnownToken.Config.base);\n const { requestCount, renderDuration, responseDuration } = getHandlerMetrics();\n\n /**\n * Функция формирования labels.\n * @param req Request.\n * @param res Response.\n * @return Labels.\n */\n const getLabels = (\n req: express.Request,\n res: express.Response,\n ): Record<(typeof LABEL_NAMES.httpResponse)[number], string | number> => ({\n version: config.appVersion,\n route: req.baseUrl + req.path,\n code: res.statusCode,\n method: req.method,\n });\n\n /** @inheritdoc */\n const getRenderLabels = (request: express.Request) =>\n ({\n version: config.appVersion,\n method: request.method,\n route: request.url,\n }) satisfies Record<(typeof LABEL_NAMES.pageRender)[number], string | number>;\n\n return (req, res, next) => {\n const responseStart = process.hrtime.bigint();\n\n requestCount.inc(getLabels(req, res), 1);\n\n res.once(PAGE_HANDLER_EVENT_TYPE.renderStart, () => {\n const renderStart = process.hrtime.bigint();\n\n res.once(PAGE_HANDLER_EVENT_TYPE.renderFinish, () => {\n const renderFinish = process.hrtime.bigint();\n\n renderDuration.observe(getRenderLabels(req), toMilliseconds(renderFinish - renderStart));\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"],"mappings":"AAEA,SAAsBA,iBAAiB,QAAQ,iCAA8B;AAC7E,SAASC,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,uBAAuB,QAAQ,yBAAc;AACtD,SAASC,cAAc,QAAQ,2BAAgB;;AAE/C;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,+BAA+BA,CAACC,OAAgB,EAAmB;EACjF,MAAMC,MAAM,GAAGD,OAAO,CAACJ,UAAU,CAACM,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAM;IAAEC,YAAY;IAAEC,cAAc;IAAEC;EAAiB,CAAC,GAAGX,iBAAiB,CAAC,CAAC;;EAE9E;AACF;AACA;AACA;AACA;AACA;EACE,MAAMY,SAAS,GAAGA,CAChBC,GAAoB,EACpBC,GAAqB,MACmD;IACxEC,OAAO,EAAET,MAAM,CAACU,UAAU;IAC1BC,KAAK,EAAEJ,GAAG,CAACK,OAAO,GAAGL,GAAG,CAACM,IAAI;IAC7BC,IAAI,EAAEN,GAAG,CAACO,UAAU;IACpBC,MAAM,EAAET,GAAG,CAACS;EACd,CAAC,CAAC;;EAEF;EACA,MAAMC,eAAe,GAAIC,OAAwB,KAC9C;IACCT,OAAO,EAAET,MAAM,CAACU,UAAU;IAC1BM,MAAM,EAAEE,OAAO,CAACF,MAAM;IACtBL,KAAK,EAAEO,OAAO,CAACC;EACjB,CAAC,CAA4E;EAE/E,OAAO,CAACZ,GAAG,EAAEC,GAAG,EAAEY,IAAI,KAAK;IACzB,MAAMC,aAAa,GAAGC,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IAE7CrB,YAAY,CAACsB,GAAG,CAACnB,SAAS,CAACC,GAAG,EAAEC,GAAG,CAAC,EAAE,CAAC,CAAC;IAExCA,GAAG,CAACkB,IAAI,CAAC9B,uBAAuB,CAAC+B,WAAW,EAAE,MAAM;MAClD,MAAMA,WAAW,GAAGL,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;MAE3ChB,GAAG,CAACkB,IAAI,CAAC9B,uBAAuB,CAACgC,YAAY,EAAE,MAAM;QACnD,MAAMA,YAAY,GAAGN,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;QAE5CpB,cAAc,CAACyB,OAAO,CAACZ,eAAe,CAACV,GAAG,CAAC,EAAEV,cAAc,CAAC+B,YAAY,GAAGD,WAAW,CAAC,CAAC;MAC1F,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFnB,GAAG,CAACkB,IAAI,CAAC,QAAQ,EAAE,MAAM;MACvB,MAAMI,cAAc,GAAGR,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;MAE9CnB,gBAAgB,CAACwB,OAAO,CAACvB,SAAS,CAACC,GAAG,EAAEC,GAAG,CAAC,EAAEX,cAAc,CAACiC,cAAc,GAAGT,aAAa,CAAC,CAAC;IAC/F,CAAC,CAAC;IAEFD,IAAI,CAAC,CAAC;EACR,CAAC;AACH"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { KnownToken } from "../../../tokens.js";
|
|
2
|
+
import express from 'express';
|
|
3
|
+
import { createProxyMiddleware } from 'http-proxy-middleware';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Провайдер основного express-приложения.
|
|
7
|
+
* @param resolve Функция для получения зависимости по токену.
|
|
8
|
+
* @return Основное express-приложение.
|
|
9
|
+
*/
|
|
10
|
+
export function provideMainExpressApp(resolve) {
|
|
11
|
+
const config = resolve(KnownToken.Config.base);
|
|
12
|
+
const pageRoutes = resolve(KnownToken.Express.pageRoutes);
|
|
13
|
+
const serviceRoutes = resolve(KnownToken.Express.serviceRoutes);
|
|
14
|
+
const middleware = resolve(KnownToken.Express.middleware);
|
|
15
|
+
const endMiddleware = resolve(KnownToken.Express.endMiddleware);
|
|
16
|
+
const proxyConfig = resolve(KnownToken.Http.Serve.Proxy.config);
|
|
17
|
+
const app = express();
|
|
18
|
+
if (config.env === 'development' && proxyConfig) {
|
|
19
|
+
const proxyConfigs = Array.isArray(proxyConfig) ? proxyConfig : [proxyConfig];
|
|
20
|
+
for (const {
|
|
21
|
+
target,
|
|
22
|
+
filter
|
|
23
|
+
} of proxyConfigs) {
|
|
24
|
+
// ВАЖНО: так как не можем предоставить web-интерфейс Request бросаем ошибку
|
|
25
|
+
if (typeof filter === 'function') {
|
|
26
|
+
throw new Error('Currently function is not supported for proxy "filter"');
|
|
27
|
+
}
|
|
28
|
+
const proxyPaths = Array.isArray(filter) ? filter : [filter];
|
|
29
|
+
app.use(createProxyMiddleware({
|
|
30
|
+
target,
|
|
31
|
+
changeOrigin: true,
|
|
32
|
+
pathFilter: inputPath => proxyPaths.some(proxyPath => inputPath.startsWith(proxyPath))
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// маршруты страниц
|
|
38
|
+
for (const [routePath, routeHandler] of pageRoutes) {
|
|
39
|
+
const path = typeof routePath === 'string' ? routePath : routePath.path;
|
|
40
|
+
const method = typeof routePath === 'string' ? 'get' : routePath.method;
|
|
41
|
+
app.use(path, middleware);
|
|
42
|
+
app[method](path, routeHandler);
|
|
43
|
+
app.use(path, endMiddleware);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// служебные маршруты (к ним не применяются промежуточные слои)
|
|
47
|
+
for (const [routePath, routeHandler] of serviceRoutes) {
|
|
48
|
+
const path = typeof routePath === 'string' ? routePath : routePath.path;
|
|
49
|
+
const method = typeof routePath === 'string' ? 'get' : routePath.method;
|
|
50
|
+
app[method](path, routeHandler);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// @todo также добавить apiRoutes?
|
|
54
|
+
return app;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=main-express-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main-express-app.js","names":["KnownToken","express","createProxyMiddleware","provideMainExpressApp","resolve","config","Config","base","pageRoutes","Express","serviceRoutes","middleware","endMiddleware","proxyConfig","Http","Serve","Proxy","app","env","proxyConfigs","Array","isArray","target","filter","Error","proxyPaths","use","changeOrigin","pathFilter","inputPath","some","proxyPath","startsWith","routePath","routeHandler","path","method"],"sources":["../../../../../src/preset/node/providers/main-express-app.ts"],"sourcesContent":["import type { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport express from 'express';\nimport { createProxyMiddleware } from 'http-proxy-middleware';\n\n/**\n * Провайдер основного express-приложения.\n * @param resolve Функция для получения зависимости по токену.\n * @return Основное express-приложение.\n */\nexport function provideMainExpressApp(resolve: Resolve): express.Application {\n const config = resolve(KnownToken.Config.base);\n const pageRoutes = resolve(KnownToken.Express.pageRoutes);\n const serviceRoutes = resolve(KnownToken.Express.serviceRoutes);\n const middleware = resolve(KnownToken.Express.middleware);\n const endMiddleware = resolve(KnownToken.Express.endMiddleware);\n const proxyConfig = resolve(KnownToken.Http.Serve.Proxy.config);\n\n const app = express();\n\n if (config.env === 'development' && proxyConfig) {\n const proxyConfigs = Array.isArray(proxyConfig) ? proxyConfig : [proxyConfig];\n\n for (const { target, filter } of proxyConfigs) {\n // ВАЖНО: так как не можем предоставить web-интерфейс Request бросаем ошибку\n if (typeof filter === 'function') {\n throw new Error('Currently function is not supported for proxy \"filter\"');\n }\n\n const proxyPaths = Array.isArray(filter) ? filter : [filter];\n\n app.use(\n createProxyMiddleware({\n target,\n changeOrigin: true,\n pathFilter: inputPath => proxyPaths.some(proxyPath => inputPath.startsWith(proxyPath)),\n }),\n );\n }\n }\n\n // маршруты страниц\n for (const [routePath, routeHandler] of pageRoutes) {\n const path = typeof routePath === 'string' ? routePath : routePath.path;\n const method = typeof routePath === 'string' ? 'get' : routePath.method;\n\n app.use(path, middleware);\n app[method](path, routeHandler);\n app.use(path, endMiddleware);\n }\n\n // служебные маршруты (к ним не применяются промежуточные слои)\n for (const [routePath, routeHandler] of serviceRoutes) {\n const path = typeof routePath === 'string' ? routePath : routePath.path;\n const method = typeof routePath === 'string' ? 'get' : routePath.method;\n\n app[method](path, routeHandler);\n }\n\n // @todo также добавить apiRoutes?\n return app;\n}\n"],"mappings":"AACA,SAASA,UAAU,QAAQ,oBAAiB;AAC5C,OAAOC,OAAO,MAAM,SAAS;AAC7B,SAASC,qBAAqB,QAAQ,uBAAuB;;AAE7D;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAACC,OAAgB,EAAuB;EAC3E,MAAMC,MAAM,GAAGD,OAAO,CAACJ,UAAU,CAACM,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,UAAU,GAAGJ,OAAO,CAACJ,UAAU,CAACS,OAAO,CAACD,UAAU,CAAC;EACzD,MAAME,aAAa,GAAGN,OAAO,CAACJ,UAAU,CAACS,OAAO,CAACC,aAAa,CAAC;EAC/D,MAAMC,UAAU,GAAGP,OAAO,CAACJ,UAAU,CAACS,OAAO,CAACE,UAAU,CAAC;EACzD,MAAMC,aAAa,GAAGR,OAAO,CAACJ,UAAU,CAACS,OAAO,CAACG,aAAa,CAAC;EAC/D,MAAMC,WAAW,GAAGT,OAAO,CAACJ,UAAU,CAACc,IAAI,CAACC,KAAK,CAACC,KAAK,CAACX,MAAM,CAAC;EAE/D,MAAMY,GAAG,GAAGhB,OAAO,CAAC,CAAC;EAErB,IAAII,MAAM,CAACa,GAAG,KAAK,aAAa,IAAIL,WAAW,EAAE;IAC/C,MAAMM,YAAY,GAAGC,KAAK,CAACC,OAAO,CAACR,WAAW,CAAC,GAAGA,WAAW,GAAG,CAACA,WAAW,CAAC;IAE7E,KAAK,MAAM;MAAES,MAAM;MAAEC;IAAO,CAAC,IAAIJ,YAAY,EAAE;MAC7C;MACA,IAAI,OAAOI,MAAM,KAAK,UAAU,EAAE;QAChC,MAAM,IAAIC,KAAK,CAAC,wDAAwD,CAAC;MAC3E;MAEA,MAAMC,UAAU,GAAGL,KAAK,CAACC,OAAO,CAACE,MAAM,CAAC,GAAGA,MAAM,GAAG,CAACA,MAAM,CAAC;MAE5DN,GAAG,CAACS,GAAG,CACLxB,qBAAqB,CAAC;QACpBoB,MAAM;QACNK,YAAY,EAAE,IAAI;QAClBC,UAAU,EAAEC,SAAS,IAAIJ,UAAU,CAACK,IAAI,CAACC,SAAS,IAAIF,SAAS,CAACG,UAAU,CAACD,SAAS,CAAC;MACvF,CAAC,CACH,CAAC;IACH;EACF;;EAEA;EACA,KAAK,MAAM,CAACE,SAAS,EAAEC,YAAY,CAAC,IAAI1B,UAAU,EAAE;IAClD,MAAM2B,IAAI,GAAG,OAAOF,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,CAACE,IAAI;IACvE,MAAMC,MAAM,GAAG,OAAOH,SAAS,KAAK,QAAQ,GAAG,KAAK,GAAGA,SAAS,CAACG,MAAM;IAEvEnB,GAAG,CAACS,GAAG,CAACS,IAAI,EAAExB,UAAU,CAAC;IACzBM,GAAG,CAACmB,MAAM,CAAC,CAACD,IAAI,EAAED,YAAY,CAAC;IAC/BjB,GAAG,CAACS,GAAG,CAACS,IAAI,EAAEvB,aAAa,CAAC;EAC9B;;EAEA;EACA,KAAK,MAAM,CAACqB,SAAS,EAAEC,YAAY,CAAC,IAAIxB,aAAa,EAAE;IACrD,MAAMyB,IAAI,GAAG,OAAOF,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,CAACE,IAAI;IACvE,MAAMC,MAAM,GAAG,OAAOH,SAAS,KAAK,QAAQ,GAAG,KAAK,GAAGA,SAAS,CAACG,MAAM;IAEvEnB,GAAG,CAACmB,MAAM,CAAC,CAACD,IAAI,EAAED,YAAY,CAAC;EACjC;;EAEA;EACA,OAAOjB,GAAG;AACZ"}
|
|
@@ -5,7 +5,7 @@ import express from 'express';
|
|
|
5
5
|
* Провайдер express-приложения метрик.
|
|
6
6
|
* @return Пул известных http-хостов.
|
|
7
7
|
*/
|
|
8
|
-
export function
|
|
8
|
+
export function provideMetricsExpressApp() {
|
|
9
9
|
PromClient.collectDefaultMetrics();
|
|
10
10
|
const app = express();
|
|
11
11
|
app.get('/', async function (req, res) {
|
|
@@ -15,4 +15,4 @@ export function provideMetricsHttpApp() {
|
|
|
15
15
|
});
|
|
16
16
|
return app;
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=metrics-
|
|
18
|
+
//# sourceMappingURL=metrics-express-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics-express-app.js","names":["PromClient","express","provideMetricsExpressApp","collectDefaultMetrics","app","get","req","res","metrics","register","setHeader","contentType","send"],"sources":["../../../../../src/preset/node/providers/metrics-express-app.ts"],"sourcesContent":["import * as PromClient from 'prom-client';\nimport express from 'express';\n\n/**\n * Провайдер express-приложения метрик.\n * @return Пул известных http-хостов.\n */\nexport function provideMetricsExpressApp(): express.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":"AAAA,OAAO,KAAKA,UAAU,MAAM,aAAa;AACzC,OAAOC,OAAO,MAAM,SAAS;;AAE7B;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAAA,EAAwB;EAC9DF,UAAU,CAACG,qBAAqB,CAAC,CAAC;EAElC,MAAMC,GAAG,GAAGH,OAAO,CAAC,CAAC;EAErBG,GAAG,CAACC,GAAG,CAAC,GAAG,EAAE,gBAAgBC,GAAG,EAAEC,GAAG,EAAE;IACrC,MAAMC,OAAO,GAAG,MAAMR,UAAU,CAACS,QAAQ,CAACD,OAAO,CAAC,CAAC;IAEnDD,GAAG,CAACG,SAAS,CAAC,cAAc,EAAEV,UAAU,CAACS,QAAQ,CAACE,WAAW,CAAC;IAC9DJ,GAAG,CAACK,IAAI,CAACJ,OAAO,CAAC;EACnB,CAAC,CAAC;EAEF,OAAOJ,GAAG;AACZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/preset/node/types.ts"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/preset/node/types.ts"],"sourcesContent":["import type express from 'express';\nimport type { RouteInfo } from '../server/types';\n\n/**\n * Контекст обработчика express.\n */\nexport interface ExpressHandlerContext {\n readonly req: express.Request;\n readonly res: express.Response;\n readonly next: express.NextFunction;\n}\n\nexport type ExpressRouteList = Array<[string | RouteInfo, express.Handler]>;\n"],"mappings":""}
|
|
@@ -10,7 +10,7 @@ import { hideFirstId } from "../../isomorphic/utils/hide-first-id.js";
|
|
|
10
10
|
*/
|
|
11
11
|
export function getFetchTracing(tracer, rootContext) {
|
|
12
12
|
return async (request, next) => {
|
|
13
|
-
const [url, foundId] = hideFirstId(new URL(request.url).pathname);
|
|
13
|
+
const [url, foundId] = hideFirstId(new URL(request.url).pathname); // @todo тут бы помог URLPattern
|
|
14
14
|
const span = tracer.startSpan(`HTTP ${request.method} ${url}`, undefined, rootContext);
|
|
15
15
|
span.setAttributes({
|
|
16
16
|
[SemanticAttributes.HTTP_URL]: url,
|
|
@@ -33,7 +33,7 @@ export function getFetchTracing(tracer, rootContext) {
|
|
|
33
33
|
});
|
|
34
34
|
span.end();
|
|
35
35
|
|
|
36
|
-
// не прячем ошибку
|
|
36
|
+
// ВАЖНО: не прячем ошибку
|
|
37
37
|
throw error;
|
|
38
38
|
}
|
|
39
39
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-fetch-tracing.js","names":["SpanStatusCode","SemanticAttributes","hideFirstId","getFetchTracing","tracer","rootContext","request","next","url","foundId","URL","pathname","span","startSpan","method","undefined","setAttributes","HTTP_URL","HTTP_METHOD","JSON","stringify","searchParams","headers","response","end","error","setStatus","code","ERROR","message"],"sources":["../../../../../src/preset/node/utils/get-fetch-tracing.ts"],"sourcesContent":["import type { Middleware } from '../../../http';\nimport { SpanStatusCode, type Context, type Tracer } from '@opentelemetry/api';\nimport { SemanticAttributes } from '@opentelemetry/semantic-conventions';\nimport { hideFirstId } from '../../isomorphic/utils/hide-first-id';\n\n/**\n * Вернет новый промежуточный слой трассировки для fetch.\n * @param tracer Трассировщик.\n * @param rootContext Контекст.\n * @return Промежуточный слой трассировки.\n */\nexport function getFetchTracing(tracer: Tracer, rootContext: Context): Middleware {\n return async (request, next) => {\n const [url, foundId] = hideFirstId(new URL(request.url).pathname); // @todo тут бы помог URLPattern\n const span = tracer.startSpan(`HTTP ${request.method} ${url}`, undefined, rootContext);\n\n span.setAttributes({\n [SemanticAttributes.HTTP_URL]: url,\n [SemanticAttributes.HTTP_METHOD]: request.method,\n 'request.params': JSON.stringify(new URL(request.url).searchParams),\n 'request.headers': JSON.stringify(request.headers),\n\n // если нашли id - добавляем в теги\n ...(foundId && { 'request.id': foundId }),\n });\n\n try {\n const response = await next(request);\n\n span.end();\n\n return response;\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}\n"],"mappings":"AACA,SAASA,cAAc,QAAmC,oBAAoB;AAC9E,SAASC,kBAAkB,QAAQ,qCAAqC;AACxE,SAASC,WAAW,QAAQ,yCAAsC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,MAAc,EAAEC,WAAoB,EAAc;EAChF,OAAO,OAAOC,OAAO,EAAEC,IAAI,KAAK;IAC9B,MAAM,CAACC,GAAG,EAAEC,OAAO,CAAC,GAAGP,WAAW,CAAC,IAAIQ,GAAG,CAACJ,OAAO,CAACE,GAAG,CAAC,CAACG,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAMC,IAAI,GAAGR,MAAM,CAACS,SAAS,CAAE,QAAOP,OAAO,CAACQ,MAAO,IAAGN,GAAI,EAAC,EAAEO,SAAS,EAAEV,WAAW,CAAC;IAEtFO,IAAI,CAACI,aAAa,CAAC;MACjB,CAACf,kBAAkB,CAACgB,QAAQ,GAAGT,GAAG;MAClC,CAACP,kBAAkB,CAACiB,WAAW,GAAGZ,OAAO,CAACQ,MAAM;MAChD,gBAAgB,EAAEK,IAAI,CAACC,SAAS,CAAC,IAAIV,GAAG,CAACJ,OAAO,CAACE,GAAG,CAAC,CAACa,YAAY,CAAC;MACnE,iBAAiB,EAAEF,IAAI,CAACC,SAAS,CAACd,OAAO,CAACgB,OAAO,CAAC;MAElD;MACA,IAAIb,OAAO,IAAI;QAAE,YAAY,EAAEA;MAAQ,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAI;MACF,MAAMc,QAAQ,GAAG,MAAMhB,IAAI,CAACD,OAAO,CAAC;MAEpCM,IAAI,CAACY,GAAG,CAAC,CAAC;MAEV,OAAOD,QAAQ;IACjB,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdb,IAAI,CAACc,SAAS,CAAC;QACbC,IAAI,EAAE3B,cAAc,CAAC4B,KAAK;QAC1BC,OAAO,EAAE;MACX,CAAC,CAAC;MAEFjB,IAAI,CAACY,GAAG,CAAC,CAAC;;MAEV;MACA,MAAMC,KAAK;IACb;EACF,CAAC;AACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-handler-metrics.js","names":["PromClient","LABEL_NAMES","httpResponse","pageRender","getHandlerMetrics","requestCount","Counter","name","help","labelNames","responseDuration","Histogram","buckets","renderDuration"],"sources":["../../../../../src/preset/node/utils/get-handler-metrics.ts"],"sourcesContent":["import PromClient from 'prom-client';\n\nexport const LABEL_NAMES = {\n httpResponse: ['version', 'route', 'code', 'method'],\n pageRender: ['version', 'route', 'method'],\n} as const;\n\n/**\n * Возвращает метрики обработки входящего http-запроса.\n * @return Метрики.\n */\nexport function getHandlerMetrics() {\n const requestCount = new PromClient.Counter({\n name: 'http_request_count',\n help: 'Incoming HTTP request count',\n labelNames: LABEL_NAMES.httpResponse,\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: LABEL_NAMES.httpResponse,\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: LABEL_NAMES.pageRender,\n buckets: [0.1, 15, 50, 100, 250, 500, 800, 1500],\n });\n\n return {\n requestCount,\n renderDuration,\n responseDuration,\n };\n}\n"],"mappings":"AAAA,OAAOA,UAAU,MAAM,aAAa;AAEpC,OAAO,MAAMC,WAAW,GAAG;EACzBC,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;EACpDC,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ;AAC3C,CAAU;;AAEV;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,YAAY,GAAG,IAAIL,UAAU,CAACM,OAAO,CAAC;IAC1CC,IAAI,EAAE,oBAAoB;IAC1BC,IAAI,EAAE,6BAA6B;IACnCC,UAAU,EAAER,WAAW,CAACC;EAC1B,CAAC,CAAC;EAEF,MAAMQ,gBAAgB,GAAG,IAAIV,UAAU,CAACW,SAAS,CAAC;IAChDJ,IAAI,EAAE,2BAA2B;IACjCC,IAAI,EAAE,0CAA0C;IAChDC,UAAU,EAAER,WAAW,CAACC,YAAY;IACpCU,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;EACtD,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAG,IAAIb,UAAU,CAACW,SAAS,CAAC;IAC9CJ,IAAI,EAAE,oBAAoB;IAC1BC,IAAI,EAAE,oBAAoB;IAC1BC,UAAU,EAAER,WAAW,CAACE,UAAU;IAClCS,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI;EACjD,CAAC,CAAC;EAEF,OAAO;IACLP,YAAY;IACZQ,cAAc;IACdH;EACF,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-page-response-format.js","names":["getPageResponseFormat","req","result","header","toLowerCase","includes"],"sources":["../../../../../src/preset/node/utils/get-page-response-format.tsx"],"sourcesContent":["import type express from 'express';\n\n/**\n * Определит формат ответа.\n * @param req Запрос.\n * @return Формат.\n * @todo Перенести в preset/node (или в preset/server но с именем getPageResponseFormatExpress?).\n */\nexport function getPageResponseFormat(req: express.Request): 'html' | 'json' {\n let result: 'html' | 'json' = 'html';\n\n if ((req.header('accept') || '').toLowerCase().includes('application/json')) {\n result = 'json';\n }\n\n return result;\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,qBAAqBA,CAACC,GAAoB,EAAmB;EAC3E,IAAIC,MAAuB,GAAG,MAAM;EAEpC,IAAI,CAACD,GAAG,CAACE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAEC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;IAC3EH,MAAM,GAAG,MAAM;EACjB;EAEA,OAAOA,MAAM;AACf"}
|
|
1
|
+
{"version":3,"file":"get-page-response-format.js","names":["getPageResponseFormat","req","result","header","toLowerCase","includes"],"sources":["../../../../../src/preset/node/utils/get-page-response-format.tsx"],"sourcesContent":["import type express from 'express';\n\n/**\n * Определит формат ответа.\n * @param req Запрос.\n * @return Формат.\n * @todo Перенести в preset/node (или в preset/server но с именем getPageResponseFormatExpress?).\n * @deprecated Стоит использовать npm:accepts.\n */\nexport function getPageResponseFormat(req: express.Request): 'html' | 'json' {\n let result: 'html' | 'json' = 'html';\n\n if ((req.header('accept') || '').toLowerCase().includes('application/json')) {\n result = 'json';\n }\n\n return result;\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,qBAAqBA,CAACC,GAAoB,EAAmB;EAC3E,IAAIC,MAAuB,GAAG,MAAM;EAEpC,IAAI,CAACD,GAAG,CAACE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAEC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;IAC3EH,MAAM,GAAG,MAAM;EACjB;EAEA,OAAOA,MAAM;AACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-serve-measuring.js","names":["PAGE_HANDLER_EVENT_TYPE","toMilliseconds","getHandlerMetrics","getServeMeasuring","config","requestCount","renderDuration","responseDuration","getResponseLabels","req","res","version","appVersion","route","url","code","status","method","getRenderLabels","request","next","context","responseStart","process","hrtime","bigint","renderStart","events","addEventListener","once","renderFinish","observe","response","responseFinish","inc"],"sources":["../../../../../src/preset/node/utils/get-serve-measuring.ts"],"sourcesContent":["import type { BaseConfig } from '../../../config';\nimport type { ServerMiddleware } from '../../server/types';\nimport { PAGE_HANDLER_EVENT_TYPE } from '../../server/constants';\nimport { toMilliseconds } from '../../../utils';\nimport { LABEL_NAMES, getHandlerMetrics } from './get-handler-metrics';\n\n/**\n * Возвращает новый промежуточный слой метрки входящего http-запроса.\n * @param config Конфигурация.\n * @return Промежуточный слой.\n */\nexport function getServeMeasuring(config: BaseConfig): ServerMiddleware {\n const { requestCount, renderDuration, responseDuration } = getHandlerMetrics();\n\n /** @inheritdoc */\n const getResponseLabels = (req: Request, res: Response) =>\n ({\n version: config.appVersion,\n route: req.url,\n code: res.status,\n method: req.method,\n }) satisfies Record<(typeof LABEL_NAMES.httpResponse)[number], string | number>;\n\n /** @inheritdoc */\n const getRenderLabels = (request: Request) =>\n ({\n version: config.appVersion,\n method: request.method,\n route: request.url,\n }) satisfies Record<(typeof LABEL_NAMES.pageRender)[number], string | number>;\n\n return async (request, next, context) => {\n const responseStart = process.hrtime.bigint();\n let renderStart = 0n;\n\n context.events.addEventListener(\n PAGE_HANDLER_EVENT_TYPE.renderStart,\n () => {\n renderStart = process.hrtime.bigint();\n },\n { once: true },\n );\n\n context.events.addEventListener(\n PAGE_HANDLER_EVENT_TYPE.renderFinish,\n () => {\n const renderFinish = process.hrtime.bigint();\n\n renderDuration.observe(\n getRenderLabels(request),\n toMilliseconds(renderFinish - renderStart),\n );\n },\n { once: true },\n );\n\n const response = await next(request);\n const responseFinish = process.hrtime.bigint();\n\n responseDuration.observe(\n getResponseLabels(request, response),\n toMilliseconds(responseFinish - responseStart),\n );\n\n requestCount.inc(getResponseLabels(request, response), 1);\n\n return response;\n };\n}\n"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ,2BAAwB;AAChE,SAASC,cAAc,QAAQ,2BAAgB;AAC/C,SAAsBC,iBAAiB,QAAQ,0BAAuB;;AAEtE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,MAAkB,EAAoB;EACtE,MAAM;IAAEC,YAAY;IAAEC,cAAc;IAAEC;EAAiB,CAAC,GAAGL,iBAAiB,CAAC,CAAC;;EAE9E;EACA,MAAMM,iBAAiB,GAAGA,CAACC,GAAY,EAAEC,GAAa,MACnD;IACCC,OAAO,EAAEP,MAAM,CAACQ,UAAU;IAC1BC,KAAK,EAAEJ,GAAG,CAACK,GAAG;IACdC,IAAI,EAAEL,GAAG,CAACM,MAAM;IAChBC,MAAM,EAAER,GAAG,CAACQ;EACd,CAAC,CAA8E;;EAEjF;EACA,MAAMC,eAAe,GAAIC,OAAgB,KACtC;IACCR,OAAO,EAAEP,MAAM,CAACQ,UAAU;IAC1BK,MAAM,EAAEE,OAAO,CAACF,MAAM;IACtBJ,KAAK,EAAEM,OAAO,CAACL;EACjB,CAAC,CAA4E;EAE/E,OAAO,OAAOK,OAAO,EAAEC,IAAI,EAAEC,OAAO,KAAK;IACvC,MAAMC,aAAa,GAAGC,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IAC7C,IAAIC,WAAW,GAAG,EAAE;IAEpBL,OAAO,CAACM,MAAM,CAACC,gBAAgB,CAC7B5B,uBAAuB,CAAC0B,WAAW,EACnC,MAAM;MACJA,WAAW,GAAGH,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IACvC,CAAC,EACD;MAAEI,IAAI,EAAE;IAAK,CACf,CAAC;IAEDR,OAAO,CAACM,MAAM,CAACC,gBAAgB,CAC7B5B,uBAAuB,CAAC8B,YAAY,EACpC,MAAM;MACJ,MAAMA,YAAY,GAAGP,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;MAE5CnB,cAAc,CAACyB,OAAO,CACpBb,eAAe,CAACC,OAAO,CAAC,EACxBlB,cAAc,CAAC6B,YAAY,GAAGJ,WAAW,CAC3C,CAAC;IACH,CAAC,EACD;MAAEG,IAAI,EAAE;IAAK,CACf,CAAC;IAED,MAAMG,QAAQ,GAAG,MAAMZ,IAAI,CAACD,OAAO,CAAC;IACpC,MAAMc,cAAc,GAAGV,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IAE9ClB,gBAAgB,CAACwB,OAAO,CACtBvB,iBAAiB,CAACW,OAAO,EAAEa,QAAQ,CAAC,EACpC/B,cAAc,CAACgC,cAAc,GAAGX,aAAa,CAC/C,CAAC;IAEDjB,YAAY,CAAC6B,GAAG,CAAC1B,iBAAiB,CAACW,OAAO,EAAEa,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzD,OAAOA,QAAQ;EACjB,CAAC;AACH"}
|
|
@@ -13,10 +13,10 @@ import { providePageHelmet } from "../server/providers/page-helmet.js";
|
|
|
13
13
|
import { providePageRender } from "../server/providers/page-render.js";
|
|
14
14
|
import { provideFetchMiddleware } from "./providers/fetch-middleware.js";
|
|
15
15
|
import { provideFetchLogHandler } from "../server/providers/fetch-log-handler.js";
|
|
16
|
-
import { provideCookieStore } from "./providers/cookie-store.js";
|
|
17
16
|
import { SpecificExtras } from "../server/utils/specific-extras.js";
|
|
18
17
|
import { provideAcceptType } from "./providers/accepts-type.js";
|
|
19
18
|
import { provideResponseEvents } from "./providers/response-events.js";
|
|
19
|
+
import { provideAxiosFactory } from "../isomorphic/providers/axios-factory.js";
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.
|
|
@@ -31,7 +31,6 @@ export function PresetHandler(customize) {
|
|
|
31
31
|
// fetch
|
|
32
32
|
preset.set(KnownToken.Http.fetch, provideFetch);
|
|
33
33
|
preset.set(KnownToken.Http.Fetch.middleware, provideFetchMiddleware);
|
|
34
|
-
preset.set(KnownToken.Http.Fetch.cookieStore, provideCookieStore);
|
|
35
34
|
preset.set(KnownToken.Http.Fetch.abortController, provideAbortController);
|
|
36
35
|
preset.set(KnownToken.Http.Fetch.Middleware.Log.handler, provideFetchLogHandler);
|
|
37
36
|
|
|
@@ -39,6 +38,7 @@ export function PresetHandler(customize) {
|
|
|
39
38
|
preset.set(KnownToken.Redux.Middleware.saga, provideReduxMiddlewareSaga);
|
|
40
39
|
|
|
41
40
|
// axios
|
|
41
|
+
preset.set(KnownToken.Axios.factory, provideAxiosFactory);
|
|
42
42
|
preset.set(KnownToken.Axios.middleware, provideAxiosMiddleware);
|
|
43
43
|
preset.set(KnownToken.Axios.Middleware.Log.handler, provideAxiosLogHandler);
|
|
44
44
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["createPreset","KnownToken","provideReduxMiddlewareSaga","provideFetch","provideAbortController","provideFormatPageResponse","provideElementToString","provideAxiosMiddleware","provideAxiosLogHandler","provideHandlerMain","provideSpecificParams","providePageHelmet","providePageRender","provideFetchMiddleware","provideFetchLogHandler","
|
|
1
|
+
{"version":3,"file":"index.js","names":["createPreset","KnownToken","provideReduxMiddlewareSaga","provideFetch","provideAbortController","provideFormatPageResponse","provideElementToString","provideAxiosMiddleware","provideAxiosLogHandler","provideHandlerMain","provideSpecificParams","providePageHelmet","providePageRender","provideFetchMiddleware","provideFetchLogHandler","SpecificExtras","provideAcceptType","provideResponseEvents","provideAxiosFactory","PresetHandler","customize","preset","set","Http","fetch","Fetch","middleware","abortController","Middleware","Log","handler","Redux","saga","Axios","factory","ExpressHandler","main","Handler","Request","acceptType","specificParams","Response","specificExtras","events","Page","assets","js","css","helmet","render","elementToString","formatResponse","override","bind"],"sources":["../../../../src/preset/node-handler/index.ts"],"sourcesContent":["import { Preset, createPreset } from '../../di';\nimport { KnownToken } from '../../tokens';\nimport { provideReduxMiddlewareSaga } from '../isomorphic/providers/redux-middleware-saga';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideAbortController } from '../isomorphic/providers/abort-controller';\nimport { PresetTuner } from '../isomorphic/types';\nimport { provideFormatPageResponse } from '../server/providers/format-page-response';\nimport { provideElementToString } from '../server/providers/element-to-string';\nimport { provideAxiosMiddleware } from './providers/axios-middleware';\nimport { provideAxiosLogHandler } from './providers/axios-log-handler';\nimport { provideHandlerMain } from './providers/handler-main';\nimport { provideSpecificParams } from './providers/specific-params';\nimport { providePageHelmet } from '../server/providers/page-helmet';\nimport { providePageRender } from '../server/providers/page-render';\nimport { provideFetchMiddleware } from './providers/fetch-middleware';\nimport { provideFetchLogHandler } from '../server/providers/fetch-log-handler';\nimport { SpecificExtras } from '../server/utils/specific-extras';\nimport { provideAcceptType } from './providers/accepts-type';\nimport { provideResponseEvents } from './providers/response-events';\nimport { provideAxiosFactory } from '../isomorphic/providers/axios-factory';\n\n/**\n * Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @todo Возможно стоит переименовать в PresetPageHandler.\n * @return Preset.\n */\nexport function PresetHandler(customize?: PresetTuner): Preset {\n // ВАЖНО: используем .set() вместо аргумента defaults функции createPreset из-за скорости\n const preset = createPreset();\n\n // fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.middleware, provideFetchMiddleware);\n preset.set(KnownToken.Http.Fetch.abortController, provideAbortController);\n preset.set(KnownToken.Http.Fetch.Middleware.Log.handler, provideFetchLogHandler);\n\n // saga\n preset.set(KnownToken.Redux.Middleware.saga, provideReduxMiddlewareSaga);\n\n // axios\n preset.set(KnownToken.Axios.factory, provideAxiosFactory);\n preset.set(KnownToken.Axios.middleware, provideAxiosMiddleware);\n preset.set(KnownToken.Axios.Middleware.Log.handler, provideAxiosLogHandler);\n\n // express handler\n preset.set(KnownToken.ExpressHandler.main, provideHandlerMain);\n\n // http handler\n preset.set(KnownToken.Http.Handler.Request.acceptType, provideAcceptType);\n preset.set(KnownToken.Http.Handler.Request.specificParams, provideSpecificParams);\n preset.set(KnownToken.Http.Handler.Response.specificExtras, () => new SpecificExtras());\n preset.set(KnownToken.Http.Handler.Response.events, provideResponseEvents);\n preset.set(KnownToken.Http.Handler.Page.assets, () => ({ js: '', css: '' }));\n preset.set(KnownToken.Http.Handler.Page.helmet, providePageHelmet);\n preset.set(KnownToken.Http.Handler.Page.render, providePageRender);\n preset.set(KnownToken.Http.Handler.Page.elementToString, provideElementToString);\n preset.set(KnownToken.Http.Handler.Page.formatResponse, provideFormatPageResponse);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { KnownToken } from "../../../tokens.js";
|
|
2
2
|
import { HttpStatus } from "../../isomorphic/utils/http-status.js";
|
|
3
3
|
import { axiosTracingMiddleware } from "../../node/utils/axios-tracing-middleware.js";
|
|
4
|
-
import {
|
|
4
|
+
import { logMiddleware } from "./../../../utils/axios/index.js";
|
|
5
5
|
import { getForwardedHeaders } from "../../node/utils/get-forwarded-headers.js";
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -14,7 +14,6 @@ export function provideAxiosMiddleware(resolve) {
|
|
|
14
14
|
const tracer = resolve(KnownToken.Tracing.tracer);
|
|
15
15
|
const context = resolve(KnownToken.ExpressHandler.context);
|
|
16
16
|
const logHandler = resolve(KnownToken.Axios.Middleware.Log.handler);
|
|
17
|
-
const cookieStore = resolve(KnownToken.Http.Fetch.cookieStore);
|
|
18
17
|
const abortController = resolve(KnownToken.Http.Fetch.abortController);
|
|
19
18
|
return [
|
|
20
19
|
// пробрасываемые заголовки по соглашению
|
|
@@ -45,6 +44,6 @@ export function provideAxiosMiddleware(resolve) {
|
|
|
45
44
|
...config,
|
|
46
45
|
signal: innerController.signal
|
|
47
46
|
});
|
|
48
|
-
}, HttpStatus.axiosMiddleware(), axiosTracingMiddleware(tracer, context.res.locals.tracing.rootContext), logMiddleware(logHandler)
|
|
47
|
+
}, HttpStatus.axiosMiddleware(), axiosTracingMiddleware(tracer, context.res.locals.tracing.rootContext), logMiddleware(logHandler)];
|
|
49
48
|
}
|
|
50
49
|
//# sourceMappingURL=axios-middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios-middleware.js","names":["KnownToken","HttpStatus","axiosTracingMiddleware","
|
|
1
|
+
{"version":3,"file":"axios-middleware.js","names":["KnownToken","HttpStatus","axiosTracingMiddleware","logMiddleware","getForwardedHeaders","provideAxiosMiddleware","resolve","appConfig","Config","base","tracer","Tracing","context","ExpressHandler","logHandler","Axios","Middleware","Log","handler","abortController","Http","Fetch","config","next","headers","req","innerController","AbortController","signal","addEventListener","abort","once","axiosMiddleware","res","locals","tracing","rootContext"],"sources":["../../../../../src/preset/node-handler/providers/axios-middleware.ts"],"sourcesContent":["import { Middleware } from 'middleware-axios';\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { HttpStatus } from '../../isomorphic/utils/http-status';\nimport { axiosTracingMiddleware } from '../../node/utils/axios-tracing-middleware';\nimport { logMiddleware } from '../../../utils/axios';\nimport { getForwardedHeaders } from '../../node/utils/get-forwarded-headers';\n\n/**\n * Провайдер фабрики http-клиентов.\n * @param resolve Функция для получения зависимости по токену.\n * @return Фабрика.\n */\nexport function provideAxiosMiddleware(resolve: Resolve): Middleware<any>[] {\n const appConfig = resolve(KnownToken.Config.base);\n const tracer = resolve(KnownToken.Tracing.tracer);\n const context = resolve(KnownToken.ExpressHandler.context);\n const logHandler = resolve(KnownToken.Axios.Middleware.Log.handler);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n\n return [\n // пробрасываемые заголовки по соглашению\n async (config, next) => {\n await next({\n ...config,\n headers: {\n ...getForwardedHeaders(appConfig, context.req),\n\n // ВАЖНО: заголовки из конфига важнее, поэтому идут в конце\n ...config.headers,\n },\n });\n },\n\n // обрывание по сигналу из обработчика входящего запроса и по сигналу из конфига исходящего запроса\n async (config, next) => {\n const innerController = new AbortController();\n\n abortController.signal.addEventListener(\n 'abort',\n () => {\n innerController.abort();\n },\n { once: true },\n );\n\n config.signal?.addEventListener?.(\n 'abort',\n () => {\n innerController.abort();\n },\n { once: true },\n );\n\n await next({ ...config, signal: innerController.signal });\n },\n\n HttpStatus.axiosMiddleware(),\n axiosTracingMiddleware(tracer, context.res.locals.tracing.rootContext),\n logMiddleware(logHandler),\n ];\n}\n"],"mappings":"AAEA,SAASA,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,UAAU,QAAQ,uCAAoC;AAC/D,SAASC,sBAAsB,QAAQ,8CAA2C;AAClF,SAASC,aAAa,QAAQ,iCAAsB;AACpD,SAASC,mBAAmB,QAAQ,2CAAwC;;AAE5E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAACC,OAAgB,EAAqB;EAC1E,MAAMC,SAAS,GAAGD,OAAO,CAACN,UAAU,CAACQ,MAAM,CAACC,IAAI,CAAC;EACjD,MAAMC,MAAM,GAAGJ,OAAO,CAACN,UAAU,CAACW,OAAO,CAACD,MAAM,CAAC;EACjD,MAAME,OAAO,GAAGN,OAAO,CAACN,UAAU,CAACa,cAAc,CAACD,OAAO,CAAC;EAC1D,MAAME,UAAU,GAAGR,OAAO,CAACN,UAAU,CAACe,KAAK,CAACC,UAAU,CAACC,GAAG,CAACC,OAAO,CAAC;EACnE,MAAMC,eAAe,GAAGb,OAAO,CAACN,UAAU,CAACoB,IAAI,CAACC,KAAK,CAACF,eAAe,CAAC;EAEtE,OAAO;EACL;EACA,OAAOG,MAAM,EAAEC,IAAI,KAAK;IACtB,MAAMA,IAAI,CAAC;MACT,GAAGD,MAAM;MACTE,OAAO,EAAE;QACP,GAAGpB,mBAAmB,CAACG,SAAS,EAAEK,OAAO,CAACa,GAAG,CAAC;QAE9C;QACA,GAAGH,MAAM,CAACE;MACZ;IACF,CAAC,CAAC;EACJ,CAAC;EAED;EACA,OAAOF,MAAM,EAAEC,IAAI,KAAK;IACtB,MAAMG,eAAe,GAAG,IAAIC,eAAe,CAAC,CAAC;IAE7CR,eAAe,CAACS,MAAM,CAACC,gBAAgB,CACrC,OAAO,EACP,MAAM;MACJH,eAAe,CAACI,KAAK,CAAC,CAAC;IACzB,CAAC,EACD;MAAEC,IAAI,EAAE;IAAK,CACf,CAAC;IAEDT,MAAM,CAACM,MAAM,EAAEC,gBAAgB,GAC7B,OAAO,EACP,MAAM;MACJH,eAAe,CAACI,KAAK,CAAC,CAAC;IACzB,CAAC,EACD;MAAEC,IAAI,EAAE;IAAK,CACf,CAAC;IAED,MAAMR,IAAI,CAAC;MAAE,GAAGD,MAAM;MAAEM,MAAM,EAAEF,eAAe,CAACE;IAAO,CAAC,CAAC;EAC3D,CAAC,EAED3B,UAAU,CAAC+B,eAAe,CAAC,CAAC,EAC5B9B,sBAAsB,CAACQ,MAAM,EAAEE,OAAO,CAACqB,GAAG,CAACC,MAAM,CAACC,OAAO,CAACC,WAAW,CAAC,EACtEjC,aAAa,CAACW,UAAU,CAAC,CAC1B;AACH"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defaultHeaders } from "./../../../http/index.js";
|
|
2
2
|
import { KnownToken } from "../../../tokens.js";
|
|
3
3
|
import { getFetchErrorLogging } from "../../isomorphic/utils/get-fetch-error-logging.js";
|
|
4
4
|
import { getFetchExtraAborting } from "../../isomorphic/utils/get-fetch-extra-aborting.js";
|
|
5
5
|
import { getFetchLogging } from "../../isomorphic/utils/get-fetch-logging.js";
|
|
6
|
-
import { getFetchTracing } from "../../
|
|
6
|
+
import { getFetchTracing } from "../../node/utils/get-fetch-tracing.js";
|
|
7
7
|
import { getForwardedHeaders } from "../../node/utils/get-forwarded-headers.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -16,7 +16,6 @@ export function provideFetchMiddleware(resolve) {
|
|
|
16
16
|
const tracer = resolve(KnownToken.Tracing.tracer);
|
|
17
17
|
const context = resolve(KnownToken.ExpressHandler.context);
|
|
18
18
|
const logHandler = resolve(KnownToken.Http.Fetch.Middleware.Log.handler);
|
|
19
|
-
const cookieStore = resolve(KnownToken.Http.Fetch.cookieStore);
|
|
20
19
|
const abortController = resolve(KnownToken.Http.Fetch.abortController);
|
|
21
20
|
return [
|
|
22
21
|
// ВАЖНО: слой логирования ошибки ПЕРЕД остальными слоями чтобы не упустить ошибки выше
|
|
@@ -24,7 +23,7 @@ export function provideFetchMiddleware(resolve) {
|
|
|
24
23
|
// пробрасываемые заголовки по соглашению
|
|
25
24
|
defaultHeaders(getForwardedHeaders(config, context.req)),
|
|
26
25
|
// обрывание по сигналу из обработчика входящего запроса и по сигналу из конфига исходящего запроса
|
|
27
|
-
getFetchExtraAborting(abortController),
|
|
26
|
+
getFetchExtraAborting(abortController), getFetchTracing(tracer, context.res.locals.tracing.rootContext),
|
|
28
27
|
// ВАЖНО: слой логирования запроса и ответа ПОСЛЕ остальных слоев чтобы использовать актуальные данные
|
|
29
28
|
getFetchLogging(logHandler)];
|
|
30
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-middleware.js","names":["
|
|
1
|
+
{"version":3,"file":"fetch-middleware.js","names":["defaultHeaders","KnownToken","getFetchErrorLogging","getFetchExtraAborting","getFetchLogging","getFetchTracing","getForwardedHeaders","provideFetchMiddleware","resolve","config","Config","base","tracer","Tracing","context","ExpressHandler","logHandler","Http","Fetch","Middleware","Log","handler","abortController","req","res","locals","tracing","rootContext"],"sources":["../../../../../src/preset/node-handler/providers/fetch-middleware.ts"],"sourcesContent":["import { Resolve } from '../../../di';\nimport { Middleware, defaultHeaders } from '../../../http';\nimport { KnownToken } from '../../../tokens';\nimport { getFetchErrorLogging } from '../../isomorphic/utils/get-fetch-error-logging';\nimport { getFetchExtraAborting } from '../../isomorphic/utils/get-fetch-extra-aborting';\nimport { getFetchLogging } from '../../isomorphic/utils/get-fetch-logging';\nimport { getFetchTracing } from '../../node/utils/get-fetch-tracing';\nimport { getForwardedHeaders } from '../../node/utils/get-forwarded-headers';\n\n/**\n * Провайдер промежуточных слоев для fetch.\n * @param resolve Функция для получения зависимости по токену.\n * @return Массив промежуточных слоев.\n */\nexport function provideFetchMiddleware(resolve: Resolve): Middleware[] {\n const config = resolve(KnownToken.Config.base);\n const tracer = resolve(KnownToken.Tracing.tracer);\n const context = resolve(KnownToken.ExpressHandler.context);\n const logHandler = resolve(KnownToken.Http.Fetch.Middleware.Log.handler);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n\n return [\n // ВАЖНО: слой логирования ошибки ПЕРЕД остальными слоями чтобы не упустить ошибки выше\n getFetchErrorLogging(logHandler),\n\n // пробрасываемые заголовки по соглашению\n defaultHeaders(getForwardedHeaders(config, context.req)),\n\n // обрывание по сигналу из обработчика входящего запроса и по сигналу из конфига исходящего запроса\n getFetchExtraAborting(abortController),\n\n getFetchTracing(tracer, context.res.locals.tracing.rootContext),\n\n // ВАЖНО: слой логирования запроса и ответа ПОСЛЕ остальных слоев чтобы использовать актуальные данные\n getFetchLogging(logHandler),\n ];\n}\n"],"mappings":"AACA,SAAqBA,cAAc,QAAQ,0BAAe;AAC1D,SAASC,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,oBAAoB,QAAQ,mDAAgD;AACrF,SAASC,qBAAqB,QAAQ,oDAAiD;AACvF,SAASC,eAAe,QAAQ,6CAA0C;AAC1E,SAASC,eAAe,QAAQ,uCAAoC;AACpE,SAASC,mBAAmB,QAAQ,2CAAwC;;AAE5E;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAACC,OAAgB,EAAgB;EACrE,MAAMC,MAAM,GAAGD,OAAO,CAACP,UAAU,CAACS,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,MAAM,GAAGJ,OAAO,CAACP,UAAU,CAACY,OAAO,CAACD,MAAM,CAAC;EACjD,MAAME,OAAO,GAAGN,OAAO,CAACP,UAAU,CAACc,cAAc,CAACD,OAAO,CAAC;EAC1D,MAAME,UAAU,GAAGR,OAAO,CAACP,UAAU,CAACgB,IAAI,CAACC,KAAK,CAACC,UAAU,CAACC,GAAG,CAACC,OAAO,CAAC;EACxE,MAAMC,eAAe,GAAGd,OAAO,CAACP,UAAU,CAACgB,IAAI,CAACC,KAAK,CAACI,eAAe,CAAC;EAEtE,OAAO;EACL;EACApB,oBAAoB,CAACc,UAAU,CAAC;EAEhC;EACAhB,cAAc,CAACM,mBAAmB,CAACG,MAAM,EAAEK,OAAO,CAACS,GAAG,CAAC,CAAC;EAExD;EACApB,qBAAqB,CAACmB,eAAe,CAAC,EAEtCjB,eAAe,CAACO,MAAM,EAAEE,OAAO,CAACU,GAAG,CAACC,MAAM,CAACC,OAAO,CAACC,WAAW,CAAC;EAE/D;EACAvB,eAAe,CAACY,UAAU,CAAC,CAC5B;AACH"}
|
|
@@ -14,26 +14,13 @@ export function provideHandlerMain(resolve) {
|
|
|
14
14
|
const context = resolve(KnownToken.ExpressHandler.context);
|
|
15
15
|
const render = resolve(KnownToken.Http.Handler.Page.render);
|
|
16
16
|
const assetsInit = resolve(KnownToken.Http.Handler.Page.assets);
|
|
17
|
-
const extras = resolve(KnownToken.Http.Handler.Response.specificExtras);
|
|
18
17
|
const Helmet = resolve(KnownToken.Http.Handler.Page.helmet);
|
|
19
18
|
const abortController = resolve(KnownToken.Http.Fetch.abortController);
|
|
20
19
|
const formatResponse = resolve(KnownToken.Http.Handler.Page.formatResponse);
|
|
21
20
|
const getAssets = typeof assetsInit === 'function' ? assetsInit : () => assetsInit;
|
|
22
|
-
|
|
23
|
-
// @todo https://github.com/sima-land/isomorph/issues/69
|
|
24
|
-
// const cookieStore = resolve(KnownToken.Http.Fetch.cookieStore);
|
|
25
|
-
// cookieStore.subscribe(setCookieList => {
|
|
26
|
-
// for (const setCookie of setCookieList) {
|
|
27
|
-
// const parsed = parseSetCookieHeader(setCookie);
|
|
28
|
-
|
|
29
|
-
// parsed && res.cookie(parsed.name, parsed.value, parsed.attrs);
|
|
30
|
-
// }
|
|
31
|
-
// });
|
|
32
|
-
|
|
33
21
|
return async () => {
|
|
34
22
|
try {
|
|
35
23
|
const assets = await getAssets();
|
|
36
|
-
const meta = extras.getMeta();
|
|
37
24
|
const jsx = /*#__PURE__*/React.createElement(HelmetContext.Provider, {
|
|
38
25
|
value: {
|
|
39
26
|
title: config.appName,
|
|
@@ -43,7 +30,7 @@ export function provideHandlerMain(resolve) {
|
|
|
43
30
|
const {
|
|
44
31
|
body,
|
|
45
32
|
headers
|
|
46
|
-
} = await formatResponse(jsx, assets
|
|
33
|
+
} = await formatResponse(jsx, assets);
|
|
47
34
|
headers.forEach((hValue, hName) => context.res.setHeader(hName, hValue));
|
|
48
35
|
context.res.send(body);
|
|
49
36
|
} catch (error) {
|