-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- preset/bun: модуль провайдеров разбит на отдельные модули по провайдерам (patch) - preset/node: переименования части провайдеров (patch)
- Loading branch information
Showing
13 changed files
with
160 additions
and
145 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */ | ||
import { ConfigSource, createConfigSource } from '../../../config'; | ||
|
||
export function provideConfigSource(): ConfigSource { | ||
return createConfigSource(Bun.env); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */ | ||
import { Middleware } from '../../../http'; | ||
|
||
export function provideFetchMiddleware(): Middleware[] { | ||
// @todo добавить логирование ошибок? | ||
return []; | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */ | ||
import { Resolve } from '../../../di'; | ||
import { KnownToken } from '../../../tokens'; | ||
import { getCurrentHub, init } from '@sentry/bun'; | ||
import { createSentryHandler } from '../../../log/handler/sentry'; | ||
|
||
export function provideLogHandlerSentry(resolve: Resolve) { | ||
const source = resolve(KnownToken.Config.source); | ||
|
||
init({ | ||
dsn: source.require('SENTRY_DSN'), | ||
release: source.require('SENTRY_RELEASE'), | ||
environment: source.require('SENTRY_ENVIRONMENT'), | ||
}); | ||
|
||
// ВАЖНО: передаем функцию чтобы брать текущий hub в момент вызова метода logger'а | ||
// это нужно чтобы хлебные крошки в ошибках Sentry группировались по запросам | ||
return createSentryHandler(getCurrentHub); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */ | ||
import { Resolve } from '../../../di'; | ||
import { Logger, createLogger } from '../../../log'; | ||
import { provideLogHandlerPino } from '../../node/providers/log-handler-pino'; | ||
import { provideLogHandlerSentry } from './log-handler-sentry'; | ||
|
||
export function provideLogger(resolve: Resolve): Logger { | ||
const logger = createLogger(); | ||
|
||
logger.subscribe(provideLogHandlerPino(resolve)); | ||
logger.subscribe(provideLogHandlerSentry(resolve)); | ||
|
||
return logger; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */ | ||
import { Handler } from '../../../http'; | ||
import { route, router } from '@krutoo/fetch-tools'; | ||
import PromClient from 'prom-client'; | ||
|
||
export function provideServeMetrics(): Handler { | ||
// @todo задействовать когда Bun реализует pref_hooks.monitorEventLoopDelay (https://github.com/siimon/prom-client/issues/570) | ||
// PromClient.collectDefaultMetrics(); | ||
|
||
return router( | ||
route.get('/', async () => { | ||
const metrics = await PromClient.register.metrics(); | ||
const headers = new Headers(); | ||
|
||
headers.set('Content-Type', PromClient.register.contentType); | ||
|
||
return new Response(metrics, { headers }); | ||
}), | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */ | ||
import { Resolve } from '../../../di'; | ||
import { KnownToken } from '../../../tokens'; | ||
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'; | ||
|
||
export function provideServeMiddleware(resolve: Resolve): ServerMiddleware[] { | ||
const config = resolve(KnownToken.Config.base); | ||
const logger = resolve(KnownToken.logger); | ||
|
||
return [ | ||
// ВАЖНО: изолируем хлебные крошки чтобы они группировались по входящим запросам | ||
(request, next) => runWithAsyncContext(async () => next(request)), | ||
|
||
// ВАЖНО: слой логирования ошибки ПЕРЕД остальными слоями чтобы не упустить ошибки выше | ||
getServeErrorLogging(logger), | ||
|
||
// @todo tracing | ||
|
||
// метрики | ||
getServeMeasuring(config), | ||
|
||
// ВАЖНО: слой логирования запроса и ответа ПОСЛЕ остальных слоев чтобы использовать актуальные данные | ||
getServeLogging(logger), | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */ | ||
import { Resolve } from '../../../di'; | ||
import { KnownToken } from '../../../tokens'; | ||
import { Handler } from '../../../http'; | ||
import { route, router } from '@krutoo/fetch-tools'; | ||
import { applyServerMiddleware } from '../../server/utils/apply-server-middleware'; | ||
|
||
export function provideServe(resolve: Resolve): Handler { | ||
const middleware = resolve(KnownToken.Http.Serve.middleware); | ||
const routes = resolve(KnownToken.Http.Serve.routes); | ||
const serviceRoutes = resolve(KnownToken.Http.Serve.serviceRoutes); | ||
|
||
const enhance = applyServerMiddleware(...middleware); | ||
|
||
return router( | ||
// маршруты с промежуточными слоями | ||
...routes.map(([pattern, handler]) => { | ||
const enhancedHandler = enhance(handler); | ||
|
||
return route.get(pattern, request => enhancedHandler(request, { events: new EventTarget() })); | ||
}), | ||
|
||
// @todo вместо routes обрабатывать pageRoutes с помощью route.get() из новой версии fetch-tools (для явности) | ||
// @todo также добавить apiRoutes и обрабатывать их с помощью с помощью route()? | ||
|
||
// служебные маршруты (без промежуточных слоев) | ||
...serviceRoutes.map(([pattern, handler]) => | ||
route(pattern, request => handler(request, { events: new EventTarget() })), | ||
), | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */ | ||
import { ServerHandler } from '../../server/types'; | ||
import { getStatsHandler } from '../utils/get-stats-handler'; | ||
import { getHealthCheck } from '../../server/utils/get-health-check'; | ||
|
||
export function provideServiceRoutes(): Array<[string, ServerHandler]> { | ||
return [ | ||
// служебные маршруты (без промежуточных слоев) | ||
['/healthcheck', getHealthCheck()], | ||
['/stats', getStatsHandler()], | ||
]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters