@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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.provideMetricsExpressApp = provideMetricsExpressApp;
|
|
7
7
|
var PromClient = _interopRequireWildcard(require("prom-client"));
|
|
8
8
|
var _express = _interopRequireDefault(require("express"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -13,7 +13,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
13
13
|
* Провайдер express-приложения метрик.
|
|
14
14
|
* @return Пул известных http-хостов.
|
|
15
15
|
*/
|
|
16
|
-
function
|
|
16
|
+
function provideMetricsExpressApp() {
|
|
17
17
|
PromClient.collectDefaultMetrics();
|
|
18
18
|
const app = (0, _express.default)();
|
|
19
19
|
app.get('/', async function (req, res) {
|
|
@@ -23,4 +23,4 @@ function provideMetricsHttpApp() {
|
|
|
23
23
|
});
|
|
24
24
|
return app;
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=metrics-
|
|
26
|
+
//# sourceMappingURL=metrics-express-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics-express-app.js","names":["PromClient","_interopRequireWildcard","require","_express","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","provideMetricsExpressApp","collectDefaultMetrics","app","express","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,IAAAA,UAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA8B,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAR,wBAAAI,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAE9B;AACA;AACA;AACA;AACO,SAASW,wBAAwBA,CAAA,EAAwB;EAC9D3B,UAAU,CAAC4B,qBAAqB,CAAC,CAAC;EAElC,MAAMC,GAAG,GAAG,IAAAC,gBAAO,EAAC,CAAC;EAErBD,GAAG,CAACd,GAAG,CAAC,GAAG,EAAE,gBAAgBgB,GAAG,EAAEC,GAAG,EAAE;IACrC,MAAMC,OAAO,GAAG,MAAMjC,UAAU,CAACkC,QAAQ,CAACD,OAAO,CAAC,CAAC;IAEnDD,GAAG,CAACG,SAAS,CAAC,cAAc,EAAEnC,UAAU,CAACkC,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":""}
|
|
@@ -15,7 +15,7 @@ var _hideFirstId = require("../../isomorphic/utils/hide-first-id");
|
|
|
15
15
|
*/
|
|
16
16
|
function getFetchTracing(tracer, rootContext) {
|
|
17
17
|
return async (request, next) => {
|
|
18
|
-
const [url, foundId] = (0, _hideFirstId.hideFirstId)(new URL(request.url).pathname);
|
|
18
|
+
const [url, foundId] = (0, _hideFirstId.hideFirstId)(new URL(request.url).pathname); // @todo тут бы помог URLPattern
|
|
19
19
|
const span = tracer.startSpan(`HTTP ${request.method} ${url}`, undefined, rootContext);
|
|
20
20
|
span.setAttributes({
|
|
21
21
|
[_semanticConventions.SemanticAttributes.HTTP_URL]: url,
|
|
@@ -38,7 +38,7 @@ function getFetchTracing(tracer, rootContext) {
|
|
|
38
38
|
});
|
|
39
39
|
span.end();
|
|
40
40
|
|
|
41
|
-
// не прячем ошибку
|
|
41
|
+
// ВАЖНО: не прячем ошибку
|
|
42
42
|
throw error;
|
|
43
43
|
}
|
|
44
44
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-fetch-tracing.js","names":["_api","require","_semanticConventions","_hideFirstId","getFetchTracing","tracer","rootContext","request","next","url","foundId","hideFirstId","URL","pathname","span","startSpan","method","undefined","setAttributes","SemanticAttributes","HTTP_URL","HTTP_METHOD","JSON","stringify","searchParams","headers","response","end","error","setStatus","code","SpanStatusCode","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,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,eAAeA,CAACC,MAAc,EAAEC,WAAoB,EAAc;EAChF,OAAO,OAAOC,OAAO,EAAEC,IAAI,KAAK;IAC9B,MAAM,CAACC,GAAG,EAAEC,OAAO,CAAC,GAAG,IAAAC,wBAAW,EAAC,IAAIC,GAAG,CAACL,OAAO,CAACE,GAAG,CAAC,CAACI,QAAQ,CAAC,CAAC,CAAC;IACnE,MAAMC,IAAI,GAAGT,MAAM,CAACU,SAAS,CAAE,QAAOR,OAAO,CAACS,MAAO,IAAGP,GAAI,EAAC,EAAEQ,SAAS,EAAEX,WAAW,CAAC;IAEtFQ,IAAI,CAACI,aAAa,CAAC;MACjB,CAACC,uCAAkB,CAACC,QAAQ,GAAGX,GAAG;MAClC,CAACU,uCAAkB,CAACE,WAAW,GAAGd,OAAO,CAACS,MAAM;MAChD,gBAAgB,EAAEM,IAAI,CAACC,SAAS,CAAC,IAAIX,GAAG,CAACL,OAAO,CAACE,GAAG,CAAC,CAACe,YAAY,CAAC;MACnE,iBAAiB,EAAEF,IAAI,CAACC,SAAS,CAAChB,OAAO,CAACkB,OAAO,CAAC;MAElD;MACA,IAAIf,OAAO,IAAI;QAAE,YAAY,EAAEA;MAAQ,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAI;MACF,MAAMgB,QAAQ,GAAG,MAAMlB,IAAI,CAACD,OAAO,CAAC;MAEpCO,IAAI,CAACa,GAAG,CAAC,CAAC;MAEV,OAAOD,QAAQ;IACjB,CAAC,CAAC,OAAOE,KAAK,EAAE;MACdd,IAAI,CAACe,SAAS,CAAC;QACbC,IAAI,EAAEC,mBAAc,CAACC,KAAK;QAC1BC,OAAO,EAAE;MACX,CAAC,CAAC;MAEFnB,IAAI,CAACa,GAAG,CAAC,CAAC;;MAEV;MACA,MAAMC,KAAK;IACb;EACF,CAAC;AACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-handler-metrics.js","names":["_promClient","_interopRequireDefault","require","obj","__esModule","default","LABEL_NAMES","exports","httpResponse","pageRender","getHandlerMetrics","requestCount","PromClient","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,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9B,MAAMG,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACzBE,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;AACO,SAASC,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,YAAY,GAAG,IAAIC,mBAAU,CAACC,OAAO,CAAC;IAC1CC,IAAI,EAAE,oBAAoB;IAC1BC,IAAI,EAAE,6BAA6B;IACnCC,UAAU,EAAEV,WAAW,CAACE;EAC1B,CAAC,CAAC;EAEF,MAAMS,gBAAgB,GAAG,IAAIL,mBAAU,CAACM,SAAS,CAAC;IAChDJ,IAAI,EAAE,2BAA2B;IACjCC,IAAI,EAAE,0CAA0C;IAChDC,UAAU,EAAEV,WAAW,CAACE,YAAY;IACpCW,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,IAAIR,mBAAU,CAACM,SAAS,CAAC;IAC9CJ,IAAI,EAAE,oBAAoB;IAC1BC,IAAI,EAAE,oBAAoB;IAC1BC,UAAU,EAAEV,WAAW,CAACG,UAAU;IAClCU,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI;EACjD,CAAC,CAAC;EAEF,OAAO;IACLR,YAAY;IACZS,cAAc;IACdH;EACF,CAAC;AACH"}
|
|
@@ -9,6 +9,7 @@ exports.getPageResponseFormat = getPageResponseFormat;
|
|
|
9
9
|
* @param req Запрос.
|
|
10
10
|
* @return Формат.
|
|
11
11
|
* @todo Перенести в preset/node (или в preset/server но с именем getPageResponseFormatExpress?).
|
|
12
|
+
* @deprecated Стоит использовать npm:accepts.
|
|
12
13
|
*/
|
|
13
14
|
function getPageResponseFormat(req) {
|
|
14
15
|
let result = 'html';
|
|
@@ -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;AACO,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;AACO,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"}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.getServeMeasuring = getServeMeasuring;
|
|
7
|
-
var _constants = require("
|
|
7
|
+
var _constants = require("../../server/constants");
|
|
8
8
|
var _utils = require("../../../utils");
|
|
9
9
|
var _getHandlerMetrics = require("./get-handler-metrics");
|
|
10
10
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-serve-measuring.js","names":["_constants","require","_utils","_getHandlerMetrics","getServeMeasuring","config","requestCount","renderDuration","responseDuration","getHandlerMetrics","getResponseLabels","req","res","version","appVersion","route","url","code","status","method","getRenderLabels","request","next","context","responseStart","process","hrtime","bigint","renderStart","events","addEventListener","PAGE_HANDLER_EVENT_TYPE","once","renderFinish","observe","toMilliseconds","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,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASG,iBAAiBA,CAACC,MAAkB,EAAoB;EACtE,MAAM;IAAEC,YAAY;IAAEC,cAAc;IAAEC;EAAiB,CAAC,GAAG,IAAAC,oCAAiB,EAAC,CAAC;;EAE9E;EACA,MAAMC,iBAAiB,GAAGA,CAACC,GAAY,EAAEC,GAAa,MACnD;IACCC,OAAO,EAAER,MAAM,CAACS,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,EAAER,MAAM,CAACS,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,CAC7BC,kCAAuB,CAACH,WAAW,EACnC,MAAM;MACJA,WAAW,GAAGH,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IACvC,CAAC,EACD;MAAEK,IAAI,EAAE;IAAK,CACf,CAAC;IAEDT,OAAO,CAACM,MAAM,CAACC,gBAAgB,CAC7BC,kCAAuB,CAACE,YAAY,EACpC,MAAM;MACJ,MAAMA,YAAY,GAAGR,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;MAE5CpB,cAAc,CAAC2B,OAAO,CACpBd,eAAe,CAACC,OAAO,CAAC,EACxB,IAAAc,qBAAc,EAACF,YAAY,GAAGL,WAAW,CAC3C,CAAC;IACH,CAAC,EACD;MAAEI,IAAI,EAAE;IAAK,CACf,CAAC;IAED,MAAMI,QAAQ,GAAG,MAAMd,IAAI,CAACD,OAAO,CAAC;IACpC,MAAMgB,cAAc,GAAGZ,OAAO,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC;IAE9CnB,gBAAgB,CAAC0B,OAAO,CACtBxB,iBAAiB,CAACW,OAAO,EAAEe,QAAQ,CAAC,EACpC,IAAAD,qBAAc,EAACE,cAAc,GAAGb,aAAa,CAC/C,CAAC;IAEDlB,YAAY,CAACgC,GAAG,CAAC5B,iBAAiB,CAACW,OAAO,EAAEe,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEzD,OAAOA,QAAQ;EACjB,CAAC;AACH"}
|
|
@@ -19,10 +19,10 @@ var _pageHelmet = require("../server/providers/page-helmet");
|
|
|
19
19
|
var _pageRender = require("../server/providers/page-render");
|
|
20
20
|
var _fetchMiddleware = require("./providers/fetch-middleware");
|
|
21
21
|
var _fetchLogHandler = require("../server/providers/fetch-log-handler");
|
|
22
|
-
var _cookieStore = require("./providers/cookie-store");
|
|
23
22
|
var _specificExtras = require("../server/utils/specific-extras");
|
|
24
23
|
var _acceptsType = require("./providers/accepts-type");
|
|
25
24
|
var _responseEvents = require("./providers/response-events");
|
|
25
|
+
var _axiosFactory = require("../isomorphic/providers/axios-factory");
|
|
26
26
|
/**
|
|
27
27
|
* Возвращает preset с зависимостями по умолчанию для работы в рамках ответа на http-запрос.
|
|
28
28
|
* @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.
|
|
@@ -36,7 +36,6 @@ function PresetHandler(customize) {
|
|
|
36
36
|
// fetch
|
|
37
37
|
preset.set(_tokens.KnownToken.Http.fetch, _fetch.provideFetch);
|
|
38
38
|
preset.set(_tokens.KnownToken.Http.Fetch.middleware, _fetchMiddleware.provideFetchMiddleware);
|
|
39
|
-
preset.set(_tokens.KnownToken.Http.Fetch.cookieStore, _cookieStore.provideCookieStore);
|
|
40
39
|
preset.set(_tokens.KnownToken.Http.Fetch.abortController, _abortController.provideAbortController);
|
|
41
40
|
preset.set(_tokens.KnownToken.Http.Fetch.Middleware.Log.handler, _fetchLogHandler.provideFetchLogHandler);
|
|
42
41
|
|
|
@@ -44,6 +43,7 @@ function PresetHandler(customize) {
|
|
|
44
43
|
preset.set(_tokens.KnownToken.Redux.Middleware.saga, _reduxMiddlewareSaga.provideReduxMiddlewareSaga);
|
|
45
44
|
|
|
46
45
|
// axios
|
|
46
|
+
preset.set(_tokens.KnownToken.Axios.factory, _axiosFactory.provideAxiosFactory);
|
|
47
47
|
preset.set(_tokens.KnownToken.Axios.middleware, _axiosMiddleware.provideAxiosMiddleware);
|
|
48
48
|
preset.set(_tokens.KnownToken.Axios.Middleware.Log.handler, _axiosLogHandler.provideAxiosLogHandler);
|
|
49
49
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_di","require","_tokens","_reduxMiddlewareSaga","_fetch","_abortController","_formatPageResponse","_elementToString","_axiosMiddleware","_axiosLogHandler","_handlerMain","_specificParams","_pageHelmet","_pageRender","_fetchMiddleware","_fetchLogHandler","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_di","require","_tokens","_reduxMiddlewareSaga","_fetch","_abortController","_formatPageResponse","_elementToString","_axiosMiddleware","_axiosLogHandler","_handlerMain","_specificParams","_pageHelmet","_pageRender","_fetchMiddleware","_fetchLogHandler","_specificExtras","_acceptsType","_responseEvents","_axiosFactory","PresetHandler","customize","preset","createPreset","set","KnownToken","Http","fetch","provideFetch","Fetch","middleware","provideFetchMiddleware","abortController","provideAbortController","Middleware","Log","handler","provideFetchLogHandler","Redux","saga","provideReduxMiddlewareSaga","Axios","factory","provideAxiosFactory","provideAxiosMiddleware","provideAxiosLogHandler","ExpressHandler","main","provideHandlerMain","Handler","Request","acceptType","provideAcceptType","specificParams","provideSpecificParams","Response","specificExtras","SpecificExtras","events","provideResponseEvents","Page","assets","js","css","helmet","providePageHelmet","render","providePageRender","elementToString","provideElementToString","formatResponse","provideFormatPageResponse","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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"}
|
|
@@ -19,7 +19,6 @@ function provideAxiosMiddleware(resolve) {
|
|
|
19
19
|
const tracer = resolve(_tokens.KnownToken.Tracing.tracer);
|
|
20
20
|
const context = resolve(_tokens.KnownToken.ExpressHandler.context);
|
|
21
21
|
const logHandler = resolve(_tokens.KnownToken.Axios.Middleware.Log.handler);
|
|
22
|
-
const cookieStore = resolve(_tokens.KnownToken.Http.Fetch.cookieStore);
|
|
23
22
|
const abortController = resolve(_tokens.KnownToken.Http.Fetch.abortController);
|
|
24
23
|
return [
|
|
25
24
|
// пробрасываемые заголовки по соглашению
|
|
@@ -50,6 +49,6 @@ function provideAxiosMiddleware(resolve) {
|
|
|
50
49
|
...config,
|
|
51
50
|
signal: innerController.signal
|
|
52
51
|
});
|
|
53
|
-
}, _httpStatus.HttpStatus.axiosMiddleware(), (0, _axiosTracingMiddleware.axiosTracingMiddleware)(tracer, context.res.locals.tracing.rootContext), (0, _axios.logMiddleware)(logHandler)
|
|
52
|
+
}, _httpStatus.HttpStatus.axiosMiddleware(), (0, _axiosTracingMiddleware.axiosTracingMiddleware)(tracer, context.res.locals.tracing.rootContext), (0, _axios.logMiddleware)(logHandler)];
|
|
54
53
|
}
|
|
55
54
|
//# sourceMappingURL=axios-middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios-middleware.js","names":["_tokens","require","_httpStatus","_axiosTracingMiddleware","_axios","_getForwardedHeaders","provideAxiosMiddleware","resolve","appConfig","KnownToken","Config","base","tracer","Tracing","context","ExpressHandler","logHandler","Axios","Middleware","Log","handler","
|
|
1
|
+
{"version":3,"file":"axios-middleware.js","names":["_tokens","require","_httpStatus","_axiosTracingMiddleware","_axios","_getForwardedHeaders","provideAxiosMiddleware","resolve","appConfig","KnownToken","Config","base","tracer","Tracing","context","ExpressHandler","logHandler","Axios","Middleware","Log","handler","abortController","Http","Fetch","config","next","headers","getForwardedHeaders","req","innerController","AbortController","signal","addEventListener","abort","once","HttpStatus","axiosMiddleware","axiosTracingMiddleware","res","locals","tracing","rootContext","logMiddleware"],"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,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,oBAAA,GAAAJ,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASK,sBAAsBA,CAACC,OAAgB,EAAqB;EAC1E,MAAMC,SAAS,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACC,IAAI,CAAC;EACjD,MAAMC,MAAM,GAAGL,OAAO,CAACE,kBAAU,CAACI,OAAO,CAACD,MAAM,CAAC;EACjD,MAAME,OAAO,GAAGP,OAAO,CAACE,kBAAU,CAACM,cAAc,CAACD,OAAO,CAAC;EAC1D,MAAME,UAAU,GAAGT,OAAO,CAACE,kBAAU,CAACQ,KAAK,CAACC,UAAU,CAACC,GAAG,CAACC,OAAO,CAAC;EACnE,MAAMC,eAAe,GAAGd,OAAO,CAACE,kBAAU,CAACa,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,GAAG,IAAAC,wCAAmB,EAACnB,SAAS,EAAEM,OAAO,CAACc,GAAG,CAAC;QAE9C;QACA,GAAGJ,MAAM,CAACE;MACZ;IACF,CAAC,CAAC;EACJ,CAAC;EAED;EACA,OAAOF,MAAM,EAAEC,IAAI,KAAK;IACtB,MAAMI,eAAe,GAAG,IAAIC,eAAe,CAAC,CAAC;IAE7CT,eAAe,CAACU,MAAM,CAACC,gBAAgB,CACrC,OAAO,EACP,MAAM;MACJH,eAAe,CAACI,KAAK,CAAC,CAAC;IACzB,CAAC,EACD;MAAEC,IAAI,EAAE;IAAK,CACf,CAAC;IAEDV,MAAM,CAACO,MAAM,EAAEC,gBAAgB,GAC7B,OAAO,EACP,MAAM;MACJH,eAAe,CAACI,KAAK,CAAC,CAAC;IACzB,CAAC,EACD;MAAEC,IAAI,EAAE;IAAK,CACf,CAAC;IAED,MAAMT,IAAI,CAAC;MAAE,GAAGD,MAAM;MAAEO,MAAM,EAAEF,eAAe,CAACE;IAAO,CAAC,CAAC;EAC3D,CAAC,EAEDI,sBAAU,CAACC,eAAe,CAAC,CAAC,EAC5B,IAAAC,8CAAsB,EAACzB,MAAM,EAAEE,OAAO,CAACwB,GAAG,CAACC,MAAM,CAACC,OAAO,CAACC,WAAW,CAAC,EACtE,IAAAC,oBAAa,EAAC1B,UAAU,CAAC,CAC1B;AACH"}
|
|
@@ -9,7 +9,7 @@ var _tokens = require("../../../tokens");
|
|
|
9
9
|
var _getFetchErrorLogging = require("../../isomorphic/utils/get-fetch-error-logging");
|
|
10
10
|
var _getFetchExtraAborting = require("../../isomorphic/utils/get-fetch-extra-aborting");
|
|
11
11
|
var _getFetchLogging = require("../../isomorphic/utils/get-fetch-logging");
|
|
12
|
-
var _getFetchTracing = require("../../
|
|
12
|
+
var _getFetchTracing = require("../../node/utils/get-fetch-tracing");
|
|
13
13
|
var _getForwardedHeaders = require("../../node/utils/get-forwarded-headers");
|
|
14
14
|
/**
|
|
15
15
|
* Провайдер промежуточных слоев для fetch.
|
|
@@ -21,7 +21,6 @@ function provideFetchMiddleware(resolve) {
|
|
|
21
21
|
const tracer = resolve(_tokens.KnownToken.Tracing.tracer);
|
|
22
22
|
const context = resolve(_tokens.KnownToken.ExpressHandler.context);
|
|
23
23
|
const logHandler = resolve(_tokens.KnownToken.Http.Fetch.Middleware.Log.handler);
|
|
24
|
-
const cookieStore = resolve(_tokens.KnownToken.Http.Fetch.cookieStore);
|
|
25
24
|
const abortController = resolve(_tokens.KnownToken.Http.Fetch.abortController);
|
|
26
25
|
return [
|
|
27
26
|
// ВАЖНО: слой логирования ошибки ПЕРЕД остальными слоями чтобы не упустить ошибки выше
|
|
@@ -29,7 +28,7 @@ function provideFetchMiddleware(resolve) {
|
|
|
29
28
|
// пробрасываемые заголовки по соглашению
|
|
30
29
|
(0, _http.defaultHeaders)((0, _getForwardedHeaders.getForwardedHeaders)(config, context.req)),
|
|
31
30
|
// обрывание по сигналу из обработчика входящего запроса и по сигналу из конфига исходящего запроса
|
|
32
|
-
(0, _getFetchExtraAborting.getFetchExtraAborting)(abortController), (0,
|
|
31
|
+
(0, _getFetchExtraAborting.getFetchExtraAborting)(abortController), (0, _getFetchTracing.getFetchTracing)(tracer, context.res.locals.tracing.rootContext),
|
|
33
32
|
// ВАЖНО: слой логирования запроса и ответа ПОСЛЕ остальных слоев чтобы использовать актуальные данные
|
|
34
33
|
(0, _getFetchLogging.getFetchLogging)(logHandler)];
|
|
35
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-middleware.js","names":["_http","require","_tokens","_getFetchErrorLogging","_getFetchExtraAborting","_getFetchLogging","_getFetchTracing","_getForwardedHeaders","provideFetchMiddleware","resolve","config","KnownToken","Config","base","tracer","Tracing","context","ExpressHandler","logHandler","Http","Fetch","Middleware","Log","handler","
|
|
1
|
+
{"version":3,"file":"fetch-middleware.js","names":["_http","require","_tokens","_getFetchErrorLogging","_getFetchExtraAborting","_getFetchLogging","_getFetchTracing","_getForwardedHeaders","provideFetchMiddleware","resolve","config","KnownToken","Config","base","tracer","Tracing","context","ExpressHandler","logHandler","Http","Fetch","Middleware","Log","handler","abortController","getFetchErrorLogging","defaultHeaders","getForwardedHeaders","req","getFetchExtraAborting","getFetchTracing","res","locals","tracing","rootContext","getFetchLogging"],"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,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,oBAAA,GAAAN,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,SAASO,sBAAsBA,CAACC,OAAgB,EAAgB;EACrE,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,MAAM,GAAGL,OAAO,CAACE,kBAAU,CAACI,OAAO,CAACD,MAAM,CAAC;EACjD,MAAME,OAAO,GAAGP,OAAO,CAACE,kBAAU,CAACM,cAAc,CAACD,OAAO,CAAC;EAC1D,MAAME,UAAU,GAAGT,OAAO,CAACE,kBAAU,CAACQ,IAAI,CAACC,KAAK,CAACC,UAAU,CAACC,GAAG,CAACC,OAAO,CAAC;EACxE,MAAMC,eAAe,GAAGf,OAAO,CAACE,kBAAU,CAACQ,IAAI,CAACC,KAAK,CAACI,eAAe,CAAC;EAEtE,OAAO;EACL;EACA,IAAAC,0CAAoB,EAACP,UAAU,CAAC;EAEhC;EACA,IAAAQ,oBAAc,EAAC,IAAAC,wCAAmB,EAACjB,MAAM,EAAEM,OAAO,CAACY,GAAG,CAAC,CAAC;EAExD;EACA,IAAAC,4CAAqB,EAACL,eAAe,CAAC,EAEtC,IAAAM,gCAAe,EAAChB,MAAM,EAAEE,OAAO,CAACe,GAAG,CAACC,MAAM,CAACC,OAAO,CAACC,WAAW,CAAC;EAE/D;EACA,IAAAC,gCAAe,EAACjB,UAAU,CAAC,CAC5B;AACH"}
|
|
@@ -19,26 +19,13 @@ function provideHandlerMain(resolve) {
|
|
|
19
19
|
const context = resolve(_tokens.KnownToken.ExpressHandler.context);
|
|
20
20
|
const render = resolve(_tokens.KnownToken.Http.Handler.Page.render);
|
|
21
21
|
const assetsInit = resolve(_tokens.KnownToken.Http.Handler.Page.assets);
|
|
22
|
-
const extras = resolve(_tokens.KnownToken.Http.Handler.Response.specificExtras);
|
|
23
22
|
const Helmet = resolve(_tokens.KnownToken.Http.Handler.Page.helmet);
|
|
24
23
|
const abortController = resolve(_tokens.KnownToken.Http.Fetch.abortController);
|
|
25
24
|
const formatResponse = resolve(_tokens.KnownToken.Http.Handler.Page.formatResponse);
|
|
26
25
|
const getAssets = typeof assetsInit === 'function' ? assetsInit : () => assetsInit;
|
|
27
|
-
|
|
28
|
-
// @todo https://github.com/sima-land/isomorph/issues/69
|
|
29
|
-
// const cookieStore = resolve(KnownToken.Http.Fetch.cookieStore);
|
|
30
|
-
// cookieStore.subscribe(setCookieList => {
|
|
31
|
-
// for (const setCookie of setCookieList) {
|
|
32
|
-
// const parsed = parseSetCookieHeader(setCookie);
|
|
33
|
-
|
|
34
|
-
// parsed && res.cookie(parsed.name, parsed.value, parsed.attrs);
|
|
35
|
-
// }
|
|
36
|
-
// });
|
|
37
|
-
|
|
38
26
|
return async () => {
|
|
39
27
|
try {
|
|
40
28
|
const assets = await getAssets();
|
|
41
|
-
const meta = extras.getMeta();
|
|
42
29
|
const jsx = /*#__PURE__*/(0, _jsxRuntime.jsx)(_regularHelmet.HelmetContext.Provider, {
|
|
43
30
|
value: {
|
|
44
31
|
title: config.appName,
|
|
@@ -51,7 +38,7 @@ function provideHandlerMain(resolve) {
|
|
|
51
38
|
const {
|
|
52
39
|
body,
|
|
53
40
|
headers
|
|
54
|
-
} = await formatResponse(jsx, assets
|
|
41
|
+
} = await formatResponse(jsx, assets);
|
|
55
42
|
headers.forEach((hValue, hName) => context.res.setHeader(hName, hValue));
|
|
56
43
|
context.res.send(body);
|
|
57
44
|
} catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler-main.js","names":["_tokens","require","_regularHelmet","_formatHandlerError","_jsxRuntime","provideHandlerMain","resolve","config","KnownToken","Config","base","logger","context","ExpressHandler","render","Http","Handler","Page","assetsInit","assets","
|
|
1
|
+
{"version":3,"file":"handler-main.js","names":["_tokens","require","_regularHelmet","_formatHandlerError","_jsxRuntime","provideHandlerMain","resolve","config","KnownToken","Config","base","logger","context","ExpressHandler","render","Http","Handler","Page","assetsInit","assets","Helmet","helmet","abortController","Fetch","formatResponse","getAssets","jsx","HelmetContext","Provider","value","title","appName","children","body","headers","forEach","hValue","hName","res","setHeader","send","error","response","log","formatHandlerError","status","redirectLocation","redirect","level","abort"],"sources":["../../../../../src/preset/node-handler/providers/handler-main.tsx"],"sourcesContent":["import type { Resolve } from '../../../di';\nimport type express from 'express';\nimport { KnownToken } from '../../../tokens';\nimport { HelmetContext } from '../../server/utils/regular-helmet';\nimport { formatHandlerError } from '../../server/utils/format-handler-error';\n\n/**\n * Провайдер главной функции обработчика входящего http-запроса.\n * @param resolve Функция для получения зависимости по токену.\n * @return Главная функция.\n */\nexport function provideHandlerMain(resolve: Resolve): express.Handler {\n const config = resolve(KnownToken.Config.base);\n const logger = resolve(KnownToken.logger);\n const context = resolve(KnownToken.ExpressHandler.context);\n const render = resolve(KnownToken.Http.Handler.Page.render);\n const assetsInit = resolve(KnownToken.Http.Handler.Page.assets);\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 return async () => {\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 headers.forEach((hValue, hName) => context.res.setHeader(hName, hValue));\n context.res.send(body);\n } catch (error) {\n const { response, log } = formatHandlerError(error);\n\n if (response.status > 299 && response.status < 400 && response.redirectLocation) {\n context.res.redirect(response.status, response.redirectLocation);\n } else {\n context.res.status(response.status).send(response.body);\n }\n\n if (log.level && logger[log.level]) {\n logger[log.level](error);\n }\n }\n\n // ВАЖНО: прерываем исходящие в рамках обработчика http-запросы\n abortController.abort();\n };\n}\n\n// @todo а что если привести все зависимости к виду:\n// const getAppConfig = resolve.lazy(KnownToken.Config.base);\n"],"mappings":"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"}
|
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "HelmetContext", {
|
|
|
15
15
|
return _regularHelmet.HelmetContext;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "PAGE_FORMAT_PRIORITY", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _constants.PAGE_FORMAT_PRIORITY;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "PAGE_HANDLER_EVENT_TYPE", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_constants","require","_applyServerMiddleware","_getClientIp","_getForwardedHeaders","_getHealthCheck","_getPageResponseFormat","_getServeErrorLogging","_getServeLogging","_handlerProvider","_regularHelmet","_specificExtras"],"sources":["../../../../src/preset/server/index.ts"],"sourcesContent":["export type {
|
|
1
|
+
{"version":3,"file":"index.js","names":["_constants","require","_applyServerMiddleware","_getClientIp","_getForwardedHeaders","_getHealthCheck","_getPageResponseFormat","_getServeErrorLogging","_getServeLogging","_handlerProvider","_regularHelmet","_specificExtras"],"sources":["../../../../src/preset/server/index.ts"],"sourcesContent":["export type {\n ServerHandler,\n ServerMiddleware,\n ServerHandlerContext,\n PageResponseFormatter,\n PageResponseFormatResult,\n RouteInfo,\n RouteList,\n} from './types';\nexport { PAGE_HANDLER_EVENT_TYPE, PAGE_FORMAT_PRIORITY } from './constants';\n\n// доступные утилиты\nexport { applyServerMiddleware } from './utils/apply-server-middleware';\nexport { getClientIp } from './utils/get-client-ip';\nexport { getForwardedHeaders } from './utils/get-forwarded-headers';\nexport { getHealthCheck } from './utils/get-health-check';\nexport { getPageResponseFormat } from './utils/get-page-response-format';\nexport { getServeErrorLogging } from './utils/get-serve-error-logging';\nexport { getServeLogging } from './utils/get-serve-logging';\nexport { HandlerProvider } from './utils/handler-provider';\nexport { RegularHelmet, HelmetContext } from './utils/regular-helmet';\nexport { SpecificExtras } from './utils/specific-extras';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAAA,UAAA,GAAAC,OAAA;AAGA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,oBAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,sBAAA,GAAAL,OAAA;AACA,IAAAM,qBAAA,GAAAN,OAAA;AACA,IAAAO,gBAAA,GAAAP,OAAA;AACA,IAAAQ,gBAAA,GAAAR,OAAA;AACA,IAAAS,cAAA,GAAAT,OAAA;AACA,IAAAU,eAAA,GAAAV,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-middleware.js","names":["provideFetchMiddleware"],"sources":["../../../../../src/preset/server/providers/fetch-middleware.ts"],"sourcesContent":["/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */\nimport { Middleware } from '../../../http';\n\nexport function provideFetchMiddleware(): Middleware[] {\n // @todo добавить логирование ошибок?\n return [];\n}\n"],"mappings":";;;;;;AAAA;;AAGO,SAASA,sBAAsBA,CAAA,EAAiB;EACrD;EACA,OAAO,EAAE;AACX"}
|
|
@@ -16,7 +16,9 @@ function provideFormatPageResponse(resolve) {
|
|
|
16
16
|
const config = resolve(_tokens.KnownToken.Config.base);
|
|
17
17
|
const acceptType = resolve(_tokens.KnownToken.Http.Handler.Request.acceptType);
|
|
18
18
|
const elementToString = resolve(_tokens.KnownToken.Http.Handler.Page.elementToString);
|
|
19
|
-
|
|
19
|
+
const extras = resolve(_tokens.KnownToken.Http.Handler.Response.specificExtras);
|
|
20
|
+
return async (jsx, assets) => {
|
|
21
|
+
const meta = extras.getMeta();
|
|
20
22
|
const headers = new Headers();
|
|
21
23
|
let body;
|
|
22
24
|
switch (acceptType(_constants.PAGE_FORMAT_PRIORITY)) {
|
|
@@ -51,6 +53,7 @@ function provideFormatPageResponse(resolve) {
|
|
|
51
53
|
|
|
52
54
|
// ВАЖНО: DOCTYPE обязательно нужен так как влияет на то как браузер будет парсить html/css
|
|
53
55
|
// ВАЖНО: DOCTYPE нужен только когда отдаем полноценную страницу
|
|
56
|
+
// @todo переделать на проверку параметра ?html-doctype=false
|
|
54
57
|
if (config.env === 'development') {
|
|
55
58
|
body = `<!DOCTYPE html>${await elementToString(jsx)}`;
|
|
56
59
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-page-response.js","names":["_tokens","require","_constants","provideFormatPageResponse","resolve","config","KnownToken","Config","base","acceptType","Http","Handler","Request","elementToString","Page","jsx","assets","meta","headers","Headers","body","PAGE_FORMAT_PRIORITY","set","JSON","stringify","markup","bundle_js","js","bundle_css","css","critical_js","criticalJs","critical_css","criticalCss","env"],"sources":["../../../../../src/preset/server/providers/format-page-response.ts"],"sourcesContent":["import type { Resolve } from '../../../di';\nimport type { ConventionalJson } from '../../isomorphic';\nimport type { PageResponseFormatter } from '../types';\nimport { KnownToken } from '../../../tokens';\nimport { PAGE_FORMAT_PRIORITY } from '../constants';\n\n/**\n * Провайдер функции форматирования ответа.\n * Функция форматирования вернёт данные ответа на запрос страницы в нужном формате в зависимости от заголовка Accept.\n * @param resolve Резолвер.\n * @return Функция форматирования.\n */\nexport function provideFormatPageResponse(resolve: Resolve): PageResponseFormatter {\n const config = resolve(KnownToken.Config.base);\n const acceptType = resolve(KnownToken.Http.Handler.Request.acceptType);\n const elementToString = resolve(KnownToken.Http.Handler.Page.elementToString);\n\n return async (jsx, assets
|
|
1
|
+
{"version":3,"file":"format-page-response.js","names":["_tokens","require","_constants","provideFormatPageResponse","resolve","config","KnownToken","Config","base","acceptType","Http","Handler","Request","elementToString","Page","extras","Response","specificExtras","jsx","assets","meta","getMeta","headers","Headers","body","PAGE_FORMAT_PRIORITY","set","JSON","stringify","markup","bundle_js","js","bundle_css","css","critical_js","criticalJs","critical_css","criticalCss","env"],"sources":["../../../../../src/preset/server/providers/format-page-response.ts"],"sourcesContent":["import type { Resolve } from '../../../di';\nimport type { ConventionalJson } from '../../isomorphic';\nimport type { PageResponseFormatter } from '../types';\nimport { KnownToken } from '../../../tokens';\nimport { PAGE_FORMAT_PRIORITY } from '../constants';\n\n/**\n * Провайдер функции форматирования ответа.\n * Функция форматирования вернёт данные ответа на запрос страницы в нужном формате в зависимости от заголовка Accept.\n * @param resolve Резолвер.\n * @return Функция форматирования.\n */\nexport function provideFormatPageResponse(resolve: Resolve): PageResponseFormatter {\n const config = resolve(KnownToken.Config.base);\n const acceptType = resolve(KnownToken.Http.Handler.Request.acceptType);\n const elementToString = resolve(KnownToken.Http.Handler.Page.elementToString);\n const extras = resolve(KnownToken.Http.Handler.Response.specificExtras);\n\n return async (jsx, assets) => {\n const meta = extras.getMeta();\n const headers = new Headers();\n\n let body: string;\n\n switch (acceptType(PAGE_FORMAT_PRIORITY)) {\n case 'json': {\n headers.set('content-type', 'application/json');\n\n body = JSON.stringify({\n markup: await elementToString(jsx),\n bundle_js: assets.js,\n bundle_css: assets.css,\n critical_js: assets.criticalJs,\n critical_css: assets.criticalCss,\n meta,\n } satisfies ConventionalJson);\n\n break;\n }\n\n case 'html':\n default: {\n headers.set('content-type', 'text/html');\n headers.set('simaland-bundle-js', assets.js);\n headers.set('simaland-bundle-css', assets.css);\n\n if (assets.criticalJs) {\n headers.set('simaland-critical-js', assets.criticalJs);\n }\n\n if (assets.criticalCss) {\n headers.set('simaland-critical-css', assets.criticalCss);\n }\n\n if (meta) {\n headers.set('simaland-meta', JSON.stringify(meta));\n }\n\n // ВАЖНО: DOCTYPE обязательно нужен так как влияет на то как браузер будет парсить html/css\n // ВАЖНО: DOCTYPE нужен только когда отдаем полноценную страницу\n // @todo переделать на проверку параметра ?html-doctype=false\n if (config.env === 'development') {\n body = `<!DOCTYPE html>${await elementToString(jsx)}`;\n } else {\n body = await elementToString(jsx);\n }\n\n break;\n }\n }\n\n return { body, headers };\n };\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,yBAAyBA,CAACC,OAAgB,EAAyB;EACjF,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,UAAU,GAAGL,OAAO,CAACE,kBAAU,CAACI,IAAI,CAACC,OAAO,CAACC,OAAO,CAACH,UAAU,CAAC;EACtE,MAAMI,eAAe,GAAGT,OAAO,CAACE,kBAAU,CAACI,IAAI,CAACC,OAAO,CAACG,IAAI,CAACD,eAAe,CAAC;EAC7E,MAAME,MAAM,GAAGX,OAAO,CAACE,kBAAU,CAACI,IAAI,CAACC,OAAO,CAACK,QAAQ,CAACC,cAAc,CAAC;EAEvE,OAAO,OAAOC,GAAG,EAAEC,MAAM,KAAK;IAC5B,MAAMC,IAAI,GAAGL,MAAM,CAACM,OAAO,CAAC,CAAC;IAC7B,MAAMC,OAAO,GAAG,IAAIC,OAAO,CAAC,CAAC;IAE7B,IAAIC,IAAY;IAEhB,QAAQf,UAAU,CAACgB,+BAAoB,CAAC;MACtC,KAAK,MAAM;QAAE;UACXH,OAAO,CAACI,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;UAE/CF,IAAI,GAAGG,IAAI,CAACC,SAAS,CAAC;YACpBC,MAAM,EAAE,MAAMhB,eAAe,CAACK,GAAG,CAAC;YAClCY,SAAS,EAAEX,MAAM,CAACY,EAAE;YACpBC,UAAU,EAAEb,MAAM,CAACc,GAAG;YACtBC,WAAW,EAAEf,MAAM,CAACgB,UAAU;YAC9BC,YAAY,EAAEjB,MAAM,CAACkB,WAAW;YAChCjB;UACF,CAA4B,CAAC;UAE7B;QACF;MAEA,KAAK,MAAM;MACX;QAAS;UACPE,OAAO,CAACI,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC;UACxCJ,OAAO,CAACI,GAAG,CAAC,oBAAoB,EAAEP,MAAM,CAACY,EAAE,CAAC;UAC5CT,OAAO,CAACI,GAAG,CAAC,qBAAqB,EAAEP,MAAM,CAACc,GAAG,CAAC;UAE9C,IAAId,MAAM,CAACgB,UAAU,EAAE;YACrBb,OAAO,CAACI,GAAG,CAAC,sBAAsB,EAAEP,MAAM,CAACgB,UAAU,CAAC;UACxD;UAEA,IAAIhB,MAAM,CAACkB,WAAW,EAAE;YACtBf,OAAO,CAACI,GAAG,CAAC,uBAAuB,EAAEP,MAAM,CAACkB,WAAW,CAAC;UAC1D;UAEA,IAAIjB,IAAI,EAAE;YACRE,OAAO,CAACI,GAAG,CAAC,eAAe,EAAEC,IAAI,CAACC,SAAS,CAACR,IAAI,CAAC,CAAC;UACpD;;UAEA;UACA;UACA;UACA,IAAIf,MAAM,CAACiC,GAAG,KAAK,aAAa,EAAE;YAChCd,IAAI,GAAI,kBAAiB,MAAMX,eAAe,CAACK,GAAG,CAAE,EAAC;UACvD,CAAC,MAAM;YACLM,IAAI,GAAG,MAAMX,eAAe,CAACK,GAAG,CAAC;UACnC;UAEA;QACF;IACF;IAEA,OAAO;MAAEM,IAAI;MAAEF;IAAQ,CAAC;EAC1B,CAAC;AACH"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.provideServe = provideServe;
|
|
7
|
+
var _tokens = require("../../../tokens");
|
|
8
|
+
var _http = require("../../../http");
|
|
9
|
+
var _fetchTools = require("@krutoo/fetch-tools");
|
|
10
|
+
var _applyServerMiddleware = require("../utils/apply-server-middleware");
|
|
11
|
+
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */
|
|
12
|
+
|
|
13
|
+
function provideServe(resolve) {
|
|
14
|
+
const config = resolve(_tokens.KnownToken.Config.base);
|
|
15
|
+
const pageRoutes = resolve(_tokens.KnownToken.Http.Serve.pageRoutes);
|
|
16
|
+
const serviceRoutes = resolve(_tokens.KnownToken.Http.Serve.serviceRoutes);
|
|
17
|
+
const middleware = resolve(_tokens.KnownToken.Http.Serve.middleware);
|
|
18
|
+
const proxyConfig = resolve(_tokens.KnownToken.Http.Serve.Proxy.config);
|
|
19
|
+
const enhance = config.env === 'development' && proxyConfig ? (0, _fetchTools.applyMiddleware)(...(Array.isArray(proxyConfig) ? proxyConfig.map(_http.proxy) : [(0, _http.proxy)(proxyConfig)])) : identity;
|
|
20
|
+
const builder = _fetchTools.router.builder();
|
|
21
|
+
|
|
22
|
+
// маршруты с промежуточными слоями
|
|
23
|
+
for (const [pattern, handler] of pageRoutes) {
|
|
24
|
+
const path = typeof pattern === 'string' ? pattern : pattern.path;
|
|
25
|
+
const method = typeof pattern === 'string' ? 'get' : pattern.method;
|
|
26
|
+
const pageHandler = (0, _applyServerMiddleware.applyServerMiddleware)(...middleware)(handler);
|
|
27
|
+
builder[method](path, request => pageHandler(request, {
|
|
28
|
+
events: new EventTarget()
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// служебные маршруты (к ним не применяются промежуточные слои)
|
|
33
|
+
for (const [pattern, handler] of serviceRoutes) {
|
|
34
|
+
const path = typeof pattern === 'string' ? pattern : pattern.path;
|
|
35
|
+
const method = typeof pattern === 'string' ? 'get' : pattern.method;
|
|
36
|
+
builder[method](path, request => handler(request, {
|
|
37
|
+
events: new EventTarget()
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// @todo также добавить apiRoutes?
|
|
42
|
+
return enhance(builder.build());
|
|
43
|
+
}
|
|
44
|
+
function identity(value) {
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=serve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.js","names":["_tokens","require","_http","_fetchTools","_applyServerMiddleware","provideServe","resolve","config","KnownToken","Config","base","pageRoutes","Http","Serve","serviceRoutes","middleware","proxyConfig","Proxy","enhance","env","applyMiddleware","Array","isArray","map","proxy","identity","builder","router","pattern","handler","path","method","pageHandler","applyServerMiddleware","request","events","EventTarget","build","value"],"sources":["../../../../../src/preset/server/providers/serve.ts"],"sourcesContent":["/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { Handler, proxy } from '../../../http';\nimport { router, applyMiddleware } from '@krutoo/fetch-tools';\nimport { applyServerMiddleware } from '../utils/apply-server-middleware';\n\nexport function provideServe(resolve: Resolve): Handler {\n const config = resolve(KnownToken.Config.base);\n const pageRoutes = resolve(KnownToken.Http.Serve.pageRoutes);\n const serviceRoutes = resolve(KnownToken.Http.Serve.serviceRoutes);\n const middleware = resolve(KnownToken.Http.Serve.middleware);\n const proxyConfig = resolve(KnownToken.Http.Serve.Proxy.config);\n\n const enhance =\n config.env === 'development' && proxyConfig\n ? applyMiddleware(\n ...(Array.isArray(proxyConfig) ? proxyConfig.map(proxy) : [proxy(proxyConfig)]),\n )\n : identity;\n\n const builder = router.builder();\n\n // маршруты с промежуточными слоями\n for (const [pattern, handler] of pageRoutes) {\n const path = typeof pattern === 'string' ? pattern : pattern.path;\n const method = typeof pattern === 'string' ? 'get' : pattern.method;\n const pageHandler = applyServerMiddleware(...middleware)(handler);\n\n builder[method](path, request => pageHandler(request, { events: new EventTarget() }));\n }\n\n // служебные маршруты (к ним не применяются промежуточные слои)\n for (const [pattern, handler] of serviceRoutes) {\n const path = typeof pattern === 'string' ? pattern : pattern.path;\n const method = typeof pattern === 'string' ? 'get' : pattern.method;\n\n builder[method](path, request => handler(request, { events: new EventTarget() }));\n }\n\n // @todo также добавить apiRoutes?\n return enhance(builder.build());\n}\n\nfunction identity<T>(value: T): T {\n return value;\n}\n"],"mappings":";;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAH,OAAA;AALA;;AAOO,SAASI,YAAYA,CAACC,OAAgB,EAAW;EACtD,MAAMC,MAAM,GAAGD,OAAO,CAACE,kBAAU,CAACC,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,UAAU,GAAGL,OAAO,CAACE,kBAAU,CAACI,IAAI,CAACC,KAAK,CAACF,UAAU,CAAC;EAC5D,MAAMG,aAAa,GAAGR,OAAO,CAACE,kBAAU,CAACI,IAAI,CAACC,KAAK,CAACC,aAAa,CAAC;EAClE,MAAMC,UAAU,GAAGT,OAAO,CAACE,kBAAU,CAACI,IAAI,CAACC,KAAK,CAACE,UAAU,CAAC;EAC5D,MAAMC,WAAW,GAAGV,OAAO,CAACE,kBAAU,CAACI,IAAI,CAACC,KAAK,CAACI,KAAK,CAACV,MAAM,CAAC;EAE/D,MAAMW,OAAO,GACXX,MAAM,CAACY,GAAG,KAAK,aAAa,IAAIH,WAAW,GACvC,IAAAI,2BAAe,EACb,IAAIC,KAAK,CAACC,OAAO,CAACN,WAAW,CAAC,GAAGA,WAAW,CAACO,GAAG,CAACC,WAAK,CAAC,GAAG,CAAC,IAAAA,WAAK,EAACR,WAAW,CAAC,CAAC,CAChF,CAAC,GACDS,QAAQ;EAEd,MAAMC,OAAO,GAAGC,kBAAM,CAACD,OAAO,CAAC,CAAC;;EAEhC;EACA,KAAK,MAAM,CAACE,OAAO,EAAEC,OAAO,CAAC,IAAIlB,UAAU,EAAE;IAC3C,MAAMmB,IAAI,GAAG,OAAOF,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAGA,OAAO,CAACE,IAAI;IACjE,MAAMC,MAAM,GAAG,OAAOH,OAAO,KAAK,QAAQ,GAAG,KAAK,GAAGA,OAAO,CAACG,MAAM;IACnE,MAAMC,WAAW,GAAG,IAAAC,4CAAqB,EAAC,GAAGlB,UAAU,CAAC,CAACc,OAAO,CAAC;IAEjEH,OAAO,CAACK,MAAM,CAAC,CAACD,IAAI,EAAEI,OAAO,IAAIF,WAAW,CAACE,OAAO,EAAE;MAAEC,MAAM,EAAE,IAAIC,WAAW,CAAC;IAAE,CAAC,CAAC,CAAC;EACvF;;EAEA;EACA,KAAK,MAAM,CAACR,OAAO,EAAEC,OAAO,CAAC,IAAIf,aAAa,EAAE;IAC9C,MAAMgB,IAAI,GAAG,OAAOF,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAGA,OAAO,CAACE,IAAI;IACjE,MAAMC,MAAM,GAAG,OAAOH,OAAO,KAAK,QAAQ,GAAG,KAAK,GAAGA,OAAO,CAACG,MAAM;IAEnEL,OAAO,CAACK,MAAM,CAAC,CAACD,IAAI,EAAEI,OAAO,IAAIL,OAAO,CAACK,OAAO,EAAE;MAAEC,MAAM,EAAE,IAAIC,WAAW,CAAC;IAAE,CAAC,CAAC,CAAC;EACnF;;EAEA;EACA,OAAOlB,OAAO,CAACQ,OAAO,CAACW,KAAK,CAAC,CAAC,CAAC;AACjC;AAEA,SAASZ,QAAQA,CAAIa,KAAQ,EAAK;EAChC,OAAOA,KAAK;AACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/preset/server/types.ts"],"sourcesContent":["import type { PageAssets } from '../isomorphic';\n\n/**\n * На сервере между промежуточными слоями надо обмениваться данными поэтому появился такой интерфейс.\n * Возможно в будущем он перейдет в `@krutoo/fetch-tools`.\n */\nexport interface ServerHandlerContext {\n events: EventTarget;\n}\n\nexport interface ServerHandler {\n (request: Request, context: ServerHandlerContext): Response | Promise<Response>;\n}\n\nexport interface ServerEnhancer {\n (request: ServerHandler): ServerHandler;\n}\n\nexport interface ServerMiddleware {\n (\n request: Request,\n next: (req: Request, ctx?: ServerHandlerContext) => Response | Promise<Response>,\n context: ServerHandlerContext,\n ): Response | Promise<Response>;\n}\n\nexport interface PageResponseFormatResult {\n body: string;\n headers: Headers;\n}\n\nexport interface PageResponseFormatter {\n (\n jsx: JSX.Element,\n assets: PageAssets,\n
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/preset/server/types.ts"],"sourcesContent":["import type { PageAssets } from '../isomorphic';\n\n/**\n * На сервере между промежуточными слоями надо обмениваться данными поэтому появился такой интерфейс.\n * Возможно в будущем он перейдет в `@krutoo/fetch-tools`.\n */\nexport interface ServerHandlerContext {\n events: EventTarget;\n}\n\nexport interface ServerHandler {\n (request: Request, context: ServerHandlerContext): Response | Promise<Response>;\n}\n\nexport interface ServerEnhancer {\n (request: ServerHandler): ServerHandler;\n}\n\nexport interface ServerMiddleware {\n (\n request: Request,\n next: (req: Request, ctx?: ServerHandlerContext) => Response | Promise<Response>,\n context: ServerHandlerContext,\n ): Response | Promise<Response>;\n}\n\nexport interface PageResponseFormatResult {\n body: string;\n headers: Headers;\n}\n\nexport interface PageResponseFormatter {\n (\n jsx: JSX.Element,\n assets: PageAssets,\n ): PageResponseFormatResult | Promise<PageResponseFormatResult>;\n}\n\nexport interface RenderToString {\n (jsx: JSX.Element): string | Promise<string>;\n}\n\nexport interface RouteInfo {\n method: 'all' | 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head';\n path: string;\n}\n\nexport type RouteList = Array<[string | RouteInfo, ServerHandler]>;\n"],"mappings":""}
|
|
@@ -23,6 +23,12 @@ function getForwardedHeaders(config, request) {
|
|
|
23
23
|
result.set('X-Client-Ip', clientIp);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
// cookie
|
|
27
|
+
const cookie = request.headers.get('cookie');
|
|
28
|
+
if (cookie) {
|
|
29
|
+
result.set('cookie', cookie);
|
|
30
|
+
}
|
|
31
|
+
|
|
26
32
|
// service headers
|
|
27
33
|
request.headers.forEach((headerValue, headerName) => {
|
|
28
34
|
if (headerName.toLowerCase().startsWith('simaland-') && headerName.toLowerCase() !== 'simaland-params') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-forwarded-headers.js","names":["_getClientIp","require","getForwardedHeaders","config","request","result","Headers","set","appName","appVersion","clientIp","getClientIp","headers","forEach","headerValue","headerName","toLowerCase","startsWith"],"sources":["../../../../../src/preset/server/utils/get-forwarded-headers.ts"],"sourcesContent":["import type { BaseConfig } from '../../../config';\nimport { getClientIp } from './get-client-ip';\n\n/**\n * Вернет заголовки, которые должны содержаться в исходящих http-запросах при обработке входящего http-запроса.\n * @param config Конфигурация.\n * @param request Входящий запрос.\n * @return Заголовки.\n */\nexport function getForwardedHeaders(config: BaseConfig, request: Request): Headers {\n const result = new Headers();\n\n // user agent\n result.set('User-Agent', `simaland-${config.appName}/${config.appVersion}`);\n\n // client ip\n const clientIp = getClientIp(request);\n
|
|
1
|
+
{"version":3,"file":"get-forwarded-headers.js","names":["_getClientIp","require","getForwardedHeaders","config","request","result","Headers","set","appName","appVersion","clientIp","getClientIp","cookie","headers","get","forEach","headerValue","headerName","toLowerCase","startsWith"],"sources":["../../../../../src/preset/server/utils/get-forwarded-headers.ts"],"sourcesContent":["import type { BaseConfig } from '../../../config';\nimport { getClientIp } from './get-client-ip';\n\n/**\n * Вернет заголовки, которые должны содержаться в исходящих http-запросах при обработке входящего http-запроса.\n * @param config Конфигурация.\n * @param request Входящий запрос.\n * @return Заголовки.\n */\nexport function getForwardedHeaders(config: BaseConfig, request: Request): Headers {\n const result = new Headers();\n\n // user agent\n result.set('User-Agent', `simaland-${config.appName}/${config.appVersion}`);\n\n // client ip\n const clientIp = getClientIp(request);\n if (clientIp) {\n result.set('X-Client-Ip', clientIp);\n }\n\n // cookie\n const cookie = request.headers.get('cookie');\n if (cookie) {\n result.set('cookie', cookie);\n }\n\n // service headers\n request.headers.forEach((headerValue, headerName) => {\n if (\n headerName.toLowerCase().startsWith('simaland-') &&\n headerName.toLowerCase() !== 'simaland-params'\n ) {\n result.set(headerName, headerValue);\n }\n });\n\n return result;\n}\n"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmBA,CAACC,MAAkB,EAAEC,OAAgB,EAAW;EACjF,MAAMC,MAAM,GAAG,IAAIC,OAAO,CAAC,CAAC;;EAE5B;EACAD,MAAM,CAACE,GAAG,CAAC,YAAY,EAAG,YAAWJ,MAAM,CAACK,OAAQ,IAAGL,MAAM,CAACM,UAAW,EAAC,CAAC;;EAE3E;EACA,MAAMC,QAAQ,GAAG,IAAAC,wBAAW,EAACP,OAAO,CAAC;EACrC,IAAIM,QAAQ,EAAE;IACZL,MAAM,CAACE,GAAG,CAAC,aAAa,EAAEG,QAAQ,CAAC;EACrC;;EAEA;EACA,MAAME,MAAM,GAAGR,OAAO,CAACS,OAAO,CAACC,GAAG,CAAC,QAAQ,CAAC;EAC5C,IAAIF,MAAM,EAAE;IACVP,MAAM,CAACE,GAAG,CAAC,QAAQ,EAAEK,MAAM,CAAC;EAC9B;;EAEA;EACAR,OAAO,CAACS,OAAO,CAACE,OAAO,CAAC,CAACC,WAAW,EAAEC,UAAU,KAAK;IACnD,IACEA,UAAU,CAACC,WAAW,CAAC,CAAC,CAACC,UAAU,CAAC,WAAW,CAAC,IAChDF,UAAU,CAACC,WAAW,CAAC,CAAC,KAAK,iBAAiB,EAC9C;MACAb,MAAM,CAACE,GAAG,CAACU,UAAU,EAAED,WAAW,CAAC;IACrC;EACF,CAAC,CAAC;EAEF,OAAOX,MAAM;AACf"}
|
|
@@ -10,6 +10,7 @@ exports.getPageResponseFormat = getPageResponseFormat;
|
|
|
10
10
|
* Вернет "html" во всех остальных случаях.
|
|
11
11
|
* @param request Запрос.
|
|
12
12
|
* @return Формат.
|
|
13
|
+
* @deprecated Стоит использовать npm:accepts.
|
|
13
14
|
*/
|
|
14
15
|
function getPageResponseFormat(request) {
|
|
15
16
|
let result = 'html';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-page-response-format.js","names":["getPageResponseFormat","request","result","headers","get","toLowerCase","includes"],"sources":["../../../../../src/preset/server/utils/get-page-response-format.ts"],"sourcesContent":["/**\n * Определяет формат ответа для страницы (html-верстки).\n * Вернет \"json\" - если заголовок запроса \"accept\" содержит \"application/json\".\n * Вернет \"html\" во всех остальных случаях.\n * @param request Запрос.\n * @return Формат.\n */\nexport function getPageResponseFormat(request: Request): 'html' | 'json' {\n let result: 'html' | 'json' = 'html';\n\n if ((request.headers.get('accept') || '').toLowerCase().includes('application/json')) {\n result = 'json';\n }\n\n return result;\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,qBAAqBA,CAACC,OAAgB,EAAmB;EACvE,IAAIC,MAAuB,GAAG,MAAM;EAEpC,IAAI,CAACD,OAAO,CAACE,OAAO,CAACC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAEC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;IACpFJ,MAAM,GAAG,MAAM;EACjB;EAEA,OAAOA,MAAM;AACf"}
|
|
1
|
+
{"version":3,"file":"get-page-response-format.js","names":["getPageResponseFormat","request","result","headers","get","toLowerCase","includes"],"sources":["../../../../../src/preset/server/utils/get-page-response-format.ts"],"sourcesContent":["/**\n * Определяет формат ответа для страницы (html-верстки).\n * Вернет \"json\" - если заголовок запроса \"accept\" содержит \"application/json\".\n * Вернет \"html\" во всех остальных случаях.\n * @param request Запрос.\n * @return Формат.\n * @deprecated Стоит использовать npm:accepts.\n */\nexport function getPageResponseFormat(request: Request): 'html' | 'json' {\n let result: 'html' | 'json' = 'html';\n\n if ((request.headers.get('accept') || '').toLowerCase().includes('application/json')) {\n result = 'json';\n }\n\n return result;\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,qBAAqBA,CAACC,OAAgB,EAAmB;EACvE,IAAIC,MAAuB,GAAG,MAAM;EAEpC,IAAI,CAACD,OAAO,CAACE,OAAO,CAACC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAEC,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;IACpFJ,MAAM,GAAG,MAAM;EACjB;EAEA,OAAOA,MAAM;AACf"}
|
|
@@ -19,7 +19,7 @@ function getServeErrorLogging(logger) {
|
|
|
19
19
|
}) => {
|
|
20
20
|
logger.error(new _log.DetailedError(String(error), {
|
|
21
21
|
level: 'error',
|
|
22
|
-
context:
|
|
22
|
+
context: {
|
|
23
23
|
key: 'Incoming request details',
|
|
24
24
|
data: {
|
|
25
25
|
url: _http.FetchUtil.withoutParams(request.url),
|
|
@@ -28,7 +28,7 @@ function getServeErrorLogging(logger) {
|
|
|
28
28
|
params: Object.fromEntries(new URL(request.url).searchParams.entries())
|
|
29
29
|
// @todo data
|
|
30
30
|
}
|
|
31
|
-
}
|
|
31
|
+
}
|
|
32
32
|
}));
|
|
33
33
|
}
|
|
34
34
|
});
|