From 9802d17684ecbd4294fd169a74218a19873cc097 Mon Sep 17 00:00:00 2001 From: krutoo Date: Wed, 10 Apr 2024 11:20:46 +0500 Subject: [PATCH] #38 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - http: тип ProxyOptions перенесен в types (patch) - log: правки импорта типов (patch) - preset/server: удалено использование process (patch) - preset/bun-handler: добавлен сброс abortController в случае ошибки обработчика (patch) --- src/http/index.ts | 9 ++------- src/http/types.ts | 1 + src/log/errors.ts | 2 +- .../bun-handler/providers/handler-main.tsx | 10 +++++----- .../server/utils/get-serve-error-logging.ts | 20 +++++++++---------- src/preset/server/utils/get-serve-logging.ts | 7 +++---- 6 files changed, 21 insertions(+), 28 deletions(-) diff --git a/src/http/index.ts b/src/http/index.ts index e88ee63c..28373353 100644 --- a/src/http/index.ts +++ b/src/http/index.ts @@ -1,4 +1,5 @@ export type { + ProxyOptions, Handler, Enhancer, Middleware, @@ -13,12 +14,6 @@ export type { ResponseErrorInit, } from './types'; export { configureFetch, applyMiddleware } from '@krutoo/fetch-tools'; -export { - type ProxyOptions, - log, - proxy, - defaultHeaders, - validateStatus, -} from '@krutoo/fetch-tools/middleware'; +export { log, proxy, defaultHeaders, validateStatus } from '@krutoo/fetch-tools/middleware'; export { StatusError, ResponseError } from './errors'; export { FetchUtil } from './utils'; diff --git a/src/http/types.ts b/src/http/types.ts index a31c3500..a85c7708 100644 --- a/src/http/types.ts +++ b/src/http/types.ts @@ -8,6 +8,7 @@ export type { FailLogData, LogHandler, LogHandlerFactory, + ProxyOptions, } from '@krutoo/fetch-tools/middleware'; export type URLSearchParamsInit = Record; diff --git a/src/log/errors.ts b/src/log/errors.ts index f370574c..4c0cdd81 100644 --- a/src/log/errors.ts +++ b/src/log/errors.ts @@ -1,4 +1,4 @@ -import { ErrorDetails, BreadcrumbDetails } from './types'; +import type { ErrorDetails, BreadcrumbDetails } from './types'; /** * Ошибка с данными. diff --git a/src/preset/bun-handler/providers/handler-main.tsx b/src/preset/bun-handler/providers/handler-main.tsx index 568d59f2..a6204fd3 100644 --- a/src/preset/bun-handler/providers/handler-main.tsx +++ b/src/preset/bun-handler/providers/handler-main.tsx @@ -54,11 +54,11 @@ export function provideHandlerMain(resolve: Resolve) { const enhancer = applyMiddleware( // ВАЖНО: прерываем исходящие в рамках обработчика http-запросы async (request, next) => { - const response = await next(request); - - abortController.abort(); - - return response; + try { + return await next(request); + } finally { + abortController.abort(); + } }, ); diff --git a/src/preset/server/utils/get-serve-error-logging.ts b/src/preset/server/utils/get-serve-error-logging.ts index ffa53a59..7826ca6d 100644 --- a/src/preset/server/utils/get-serve-error-logging.ts +++ b/src/preset/server/utils/get-serve-error-logging.ts @@ -12,18 +12,16 @@ export function getServeErrorLogging(logger: Logger): Middleware { logger.error( new DetailedError(String(error), { level: 'error', - context: [ - { - key: 'Incoming request details', - data: { - url: FetchUtil.withoutParams(request.url), - method: request.method, - headers: Object.fromEntries(request.headers.entries()), - params: Object.fromEntries(new URL(request.url).searchParams.entries()), - // @todo data - }, + context: { + key: 'Incoming request details', + data: { + url: FetchUtil.withoutParams(request.url), + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + params: Object.fromEntries(new URL(request.url).searchParams.entries()), + // @todo data }, - ], + }, }), ); }, diff --git a/src/preset/server/utils/get-serve-logging.ts b/src/preset/server/utils/get-serve-logging.ts index 8c973678..95e82d5e 100644 --- a/src/preset/server/utils/get-serve-logging.ts +++ b/src/preset/server/utils/get-serve-logging.ts @@ -1,6 +1,5 @@ import type { Middleware } from '../../../http'; import type { Logger } from '../../../log'; -import { toMilliseconds } from '../../../utils'; import { getClientIp } from './get-client-ip'; /** @@ -10,7 +9,7 @@ import { getClientIp } from './get-client-ip'; */ export function getServeLogging(logger: Logger): Middleware { return async (request, next) => { - const start = process.hrtime.bigint(); + const start = performance.now(); const clientIp = getClientIp(request); logger.info({ @@ -22,7 +21,7 @@ export function getServeLogging(logger: Logger): Middleware { const response = await next(request); - const finish = process.hrtime.bigint(); + const finish = performance.now(); logger.info({ type: 'http.response[outgoing]', @@ -30,7 +29,7 @@ export function getServeLogging(logger: Logger): Middleware { method: request.method, status: response.status, remote_ip: clientIp, - latency: toMilliseconds(finish - start), + latency: finish - start, }); return response;