From f753b2a2c9cf823a5a59b62439ba9a66a644370f Mon Sep 17 00:00:00 2001 From: krutoo Date: Mon, 8 Apr 2024 15:20:49 +0500 Subject: [PATCH] #38 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - preset/bun: некоторые провайдеры перемещены в preset/server из-за отсутствия привязки к Bun (patch) - preset/server: некоторые провайдеры/утилиты перенесены в preset/node из-за привязки к Node.js (patch) --- src/preset/bun/index.ts | 4 ++-- src/preset/bun/providers/serve-middleware.ts | 2 +- src/preset/node-handler/providers/fetch-middleware.ts | 2 +- src/preset/node/providers/express-metrics-middleware.ts | 2 +- .../utils/__test__/get-fetch-tracing.test.ts | 0 .../utils/__test__/get-serve-measuring.test.ts | 2 +- src/preset/{server => node}/utils/get-fetch-tracing.ts | 4 ++-- src/preset/{server => node}/utils/get-handler-metrics.ts | 0 src/preset/node/utils/get-page-response-format.tsx | 1 + src/preset/{server => node}/utils/get-serve-measuring.ts | 4 ++-- src/preset/{bun => server}/providers/fetch-middleware.ts | 0 src/preset/{bun => server}/providers/serve.ts | 2 +- src/preset/server/utils/get-page-response-format.ts | 1 + src/preset/web/providers/axios-middleware.ts | 5 +++-- src/utils/express/handler/health-check.ts | 4 ++-- src/utils/express/utils/index.ts | 4 ++-- tsconfig.json | 2 +- 17 files changed, 21 insertions(+), 18 deletions(-) rename src/preset/{server => node}/utils/__test__/get-fetch-tracing.test.ts (100%) rename src/preset/{server => node}/utils/__test__/get-serve-measuring.test.ts (92%) rename src/preset/{server => node}/utils/get-fetch-tracing.ts (93%) rename src/preset/{server => node}/utils/get-handler-metrics.ts (100%) rename src/preset/{server => node}/utils/get-serve-measuring.ts (94%) rename src/preset/{bun => server}/providers/fetch-middleware.ts (100%) rename src/preset/{bun => server}/providers/serve.ts (95%) diff --git a/src/preset/bun/index.ts b/src/preset/bun/index.ts index b4203051..cfbcf8a2 100644 --- a/src/preset/bun/index.ts +++ b/src/preset/bun/index.ts @@ -7,9 +7,9 @@ import { provideKnownHttpApiHosts } from '../server/providers/known-http-api-hos import { provideSsrBridgeServerSide } from '../server/providers/ssr-bridge-server-side'; import { provideConfigSource } from './providers/config-source'; import { provideLogger } from './providers/logger'; -import { provideServe } from './providers/serve'; +import { provideServe } from '../server/providers/serve'; import { provideServeMetrics } from './providers/serve-metrics'; -import { provideFetchMiddleware } from './providers/fetch-middleware'; +import { provideFetchMiddleware } from '../server/providers/fetch-middleware'; import { provideServiceRoutes } from './providers/service-routes'; import { provideServeMiddleware } from './providers/serve-middleware'; diff --git a/src/preset/bun/providers/serve-middleware.ts b/src/preset/bun/providers/serve-middleware.ts index 397ddc47..577deb51 100644 --- a/src/preset/bun/providers/serve-middleware.ts +++ b/src/preset/bun/providers/serve-middleware.ts @@ -5,7 +5,7 @@ import { runWithAsyncContext } from '@sentry/bun'; import { ServerMiddleware } from '../../server/types'; import { getServeLogging } from '../../server/utils/get-serve-logging'; import { getServeErrorLogging } from '../../server/utils/get-serve-error-logging'; -import { getServeMeasuring } from '../../server/utils/get-serve-measuring'; +import { getServeMeasuring } from '../../node/utils/get-serve-measuring'; export function provideServeMiddleware(resolve: Resolve): ServerMiddleware[] { const config = resolve(KnownToken.Config.base); diff --git a/src/preset/node-handler/providers/fetch-middleware.ts b/src/preset/node-handler/providers/fetch-middleware.ts index 9f5ff0f2..6acf6fc2 100644 --- a/src/preset/node-handler/providers/fetch-middleware.ts +++ b/src/preset/node-handler/providers/fetch-middleware.ts @@ -4,7 +4,7 @@ import { KnownToken } from '../../../tokens'; import { getFetchErrorLogging } from '../../isomorphic/utils/get-fetch-error-logging'; import { getFetchExtraAborting } from '../../isomorphic/utils/get-fetch-extra-aborting'; import { getFetchLogging } from '../../isomorphic/utils/get-fetch-logging'; -import { getFetchTracing } from '../../server/utils/get-fetch-tracing'; +import { getFetchTracing } from '../../node/utils/get-fetch-tracing'; import { getForwardedHeaders } from '../../node/utils/get-forwarded-headers'; /** diff --git a/src/preset/node/providers/express-metrics-middleware.ts b/src/preset/node/providers/express-metrics-middleware.ts index 626ba7ca..c382e792 100644 --- a/src/preset/node/providers/express-metrics-middleware.ts +++ b/src/preset/node/providers/express-metrics-middleware.ts @@ -1,6 +1,6 @@ import type express from 'express'; import type { Resolve } from '../../../di'; -import { LABEL_NAMES, getHandlerMetrics } from '../../server/utils/get-handler-metrics'; +import { LABEL_NAMES, getHandlerMetrics } from '../utils/get-handler-metrics'; import { KnownToken } from '../../../tokens'; import { PAGE_HANDLER_EVENT_TYPE } from '../../server'; import { toMilliseconds } from '../../../utils'; diff --git a/src/preset/server/utils/__test__/get-fetch-tracing.test.ts b/src/preset/node/utils/__test__/get-fetch-tracing.test.ts similarity index 100% rename from src/preset/server/utils/__test__/get-fetch-tracing.test.ts rename to src/preset/node/utils/__test__/get-fetch-tracing.test.ts diff --git a/src/preset/server/utils/__test__/get-serve-measuring.test.ts b/src/preset/node/utils/__test__/get-serve-measuring.test.ts similarity index 92% rename from src/preset/server/utils/__test__/get-serve-measuring.test.ts rename to src/preset/node/utils/__test__/get-serve-measuring.test.ts index 82864af3..cdd0c6ce 100644 --- a/src/preset/server/utils/__test__/get-serve-measuring.test.ts +++ b/src/preset/node/utils/__test__/get-serve-measuring.test.ts @@ -1,5 +1,5 @@ import { BaseConfig } from '../../../../config'; -import { PAGE_HANDLER_EVENT_TYPE } from '../../constants'; +import { PAGE_HANDLER_EVENT_TYPE } from '../../../server/constants'; import { getServeMeasuring } from '../get-serve-measuring'; describe('getServeMeasuring', () => { diff --git a/src/preset/server/utils/get-fetch-tracing.ts b/src/preset/node/utils/get-fetch-tracing.ts similarity index 93% rename from src/preset/server/utils/get-fetch-tracing.ts rename to src/preset/node/utils/get-fetch-tracing.ts index d6c0fc58..7672a800 100644 --- a/src/preset/server/utils/get-fetch-tracing.ts +++ b/src/preset/node/utils/get-fetch-tracing.ts @@ -11,7 +11,7 @@ import { hideFirstId } from '../../isomorphic/utils/hide-first-id'; */ export function getFetchTracing(tracer: Tracer, rootContext: Context): Middleware { return async (request, next) => { - const [url, foundId] = hideFirstId(new URL(request.url).pathname); + const [url, foundId] = hideFirstId(new URL(request.url).pathname); // @todo тут бы помог URLPattern const span = tracer.startSpan(`HTTP ${request.method} ${url}`, undefined, rootContext); span.setAttributes({ @@ -38,7 +38,7 @@ export function getFetchTracing(tracer: Tracer, rootContext: Context): Middlewar span.end(); - // не прячем ошибку + // ВАЖНО: не прячем ошибку throw error; } }; diff --git a/src/preset/server/utils/get-handler-metrics.ts b/src/preset/node/utils/get-handler-metrics.ts similarity index 100% rename from src/preset/server/utils/get-handler-metrics.ts rename to src/preset/node/utils/get-handler-metrics.ts diff --git a/src/preset/node/utils/get-page-response-format.tsx b/src/preset/node/utils/get-page-response-format.tsx index b6beb21b..7e179ba7 100644 --- a/src/preset/node/utils/get-page-response-format.tsx +++ b/src/preset/node/utils/get-page-response-format.tsx @@ -5,6 +5,7 @@ import type express from 'express'; * @param req Запрос. * @return Формат. * @todo Перенести в preset/node (или в preset/server но с именем getPageResponseFormatExpress?). + * @deprecated Стоит использовать npm:accepts. */ export function getPageResponseFormat(req: express.Request): 'html' | 'json' { let result: 'html' | 'json' = 'html'; diff --git a/src/preset/server/utils/get-serve-measuring.ts b/src/preset/node/utils/get-serve-measuring.ts similarity index 94% rename from src/preset/server/utils/get-serve-measuring.ts rename to src/preset/node/utils/get-serve-measuring.ts index 8c1d7621..e04f119f 100644 --- a/src/preset/server/utils/get-serve-measuring.ts +++ b/src/preset/node/utils/get-serve-measuring.ts @@ -1,6 +1,6 @@ import type { BaseConfig } from '../../../config'; -import type { ServerMiddleware } from '../types'; -import { PAGE_HANDLER_EVENT_TYPE } from '../constants'; +import type { ServerMiddleware } from '../../server/types'; +import { PAGE_HANDLER_EVENT_TYPE } from '../../server/constants'; import { toMilliseconds } from '../../../utils'; import { LABEL_NAMES, getHandlerMetrics } from './get-handler-metrics'; diff --git a/src/preset/bun/providers/fetch-middleware.ts b/src/preset/server/providers/fetch-middleware.ts similarity index 100% rename from src/preset/bun/providers/fetch-middleware.ts rename to src/preset/server/providers/fetch-middleware.ts diff --git a/src/preset/bun/providers/serve.ts b/src/preset/server/providers/serve.ts similarity index 95% rename from src/preset/bun/providers/serve.ts rename to src/preset/server/providers/serve.ts index 0457e472..f2b12b2a 100644 --- a/src/preset/bun/providers/serve.ts +++ b/src/preset/server/providers/serve.ts @@ -3,7 +3,7 @@ import { Resolve } from '../../../di'; import { KnownToken } from '../../../tokens'; import { Handler, proxy } from '../../../http'; import { router, applyMiddleware } from '@krutoo/fetch-tools'; -import { applyServerMiddleware } from '../../server/utils/apply-server-middleware'; +import { applyServerMiddleware } from '../utils/apply-server-middleware'; export function provideServe(resolve: Resolve): Handler { const config = resolve(KnownToken.Config.base); diff --git a/src/preset/server/utils/get-page-response-format.ts b/src/preset/server/utils/get-page-response-format.ts index 732e1cf8..ea84548f 100644 --- a/src/preset/server/utils/get-page-response-format.ts +++ b/src/preset/server/utils/get-page-response-format.ts @@ -4,6 +4,7 @@ * Вернет "html" во всех остальных случаях. * @param request Запрос. * @return Формат. + * @deprecated Стоит использовать npm:accepts. */ export function getPageResponseFormat(request: Request): 'html' | 'json' { let result: 'html' | 'json' = 'html'; diff --git a/src/preset/web/providers/axios-middleware.ts b/src/preset/web/providers/axios-middleware.ts index 0aa21283..5e80a5eb 100644 --- a/src/preset/web/providers/axios-middleware.ts +++ b/src/preset/web/providers/axios-middleware.ts @@ -1,4 +1,5 @@ -import { Resolve } from '../../../di'; +import type { Middleware } from 'middleware-axios'; +import type { Resolve } from '../../../di'; import { KnownToken } from '../../../tokens'; import { HttpStatus } from '../../isomorphic/utils/http-status'; import { logMiddleware } from '../../../utils/axios'; @@ -8,7 +9,7 @@ import { logMiddleware } from '../../../utils/axios'; * @param resolve Функция для получения зависимости по токену. * @return Фабрика. */ -export function provideAxiosMiddleware(resolve: Resolve) { +export function provideAxiosMiddleware(resolve: Resolve): Middleware[] { const logHandler = resolve(KnownToken.Axios.Middleware.Log.handler); return [HttpStatus.axiosMiddleware(), logMiddleware(logHandler)]; diff --git a/src/utils/express/handler/health-check.ts b/src/utils/express/handler/health-check.ts index 5fe985de..635a1d05 100644 --- a/src/utils/express/handler/health-check.ts +++ b/src/utils/express/handler/health-check.ts @@ -1,10 +1,10 @@ -import type { Handler } from 'express'; +import type express from 'express'; /** * Возвращает обработчик, отвечающий данными о времени работы приложения. * @return Обработчик http-запроса. */ -export function healthCheck(): Handler { +export function healthCheck(): express.Handler { const startTime = Date.now(); return (req, res) => { diff --git a/src/utils/express/utils/index.ts b/src/utils/express/utils/index.ts index c59df8ca..4d53e5cc 100644 --- a/src/utils/express/utils/index.ts +++ b/src/utils/express/utils/index.ts @@ -1,11 +1,11 @@ -import type { Handler } from 'express'; +import type express from 'express'; /** * Объединяет промежуточные слои в один. * @param list Промежуточные слои. * @return Промежуточный слой. */ -export function composeMiddleware(list: Handler[]): Handler { +export function composeMiddleware(list: express.Handler[]): express.Handler { return list.reduce((a, b) => (req, res, next) => { a(req, res, err => { if (err) { diff --git a/tsconfig.json b/tsconfig.json index 4d196779..75a3c0ea 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,5 +10,5 @@ "module": "NodeNext" }, "include": ["./src"], - "exclude": ["node_modules", "./src/preset/bun/**/*"] + "exclude": ["node_modules", "./src/preset/bun/**/*", "./src/preset/bun-handler/**/*"] }