@haskou/ddd-kernel 0.1.1 → 1.0.0
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 +5 -10
- package/dist/DomainEventConsumer-Bg-bOwmh.d.cts +11 -0
- package/dist/DomainEventConsumer-BroJmVty.d.ts +11 -0
- package/dist/DomainMessageBus-3jYk7TPw.d.ts +13 -0
- package/dist/DomainMessageBus-OyliPu3Z.d.cts +13 -0
- package/dist/MessageBus-BtUXnd0Y.d.cts +10 -0
- package/dist/MessageBus-oQ9BnW84.d.ts +10 -0
- package/dist/{NoFailedMessagesError-0YJKRWPF.d.ts → NoFailedMessagesError-BLpGI-G4.d.ts} +6 -1
- package/dist/{NoFailedMessagesError-Kz7CYWpT.d.cts → NoFailedMessagesError-BjxYoKTR.d.cts} +6 -1
- package/dist/PublisherHookErrorPolicy-CjouTcSR.d.cts +8 -0
- package/dist/PublisherHookErrorPolicy-DSsCNE6O.d.ts +8 -0
- package/dist/RetryPredicate-U7dYnQ4N.d.ts +15 -0
- package/dist/RetryPredicate-yT_z9zk1.d.cts +15 -0
- package/dist/{Scheduler-oigqNOUJ.d.ts → Scheduler-BW-U5Ccg.d.cts} +1 -1
- package/dist/{Scheduler-oigqNOUJ.d.cts → Scheduler-BW-U5Ccg.d.ts} +1 -1
- package/dist/ServiceClass-BkEHcXDi.d.cts +72 -0
- package/dist/ServiceClass-Bq_fBC5R.d.ts +72 -0
- package/dist/{Kernel-BWUOUWWI.d.cts → ShutdownHook-BjbnCKzr.d.cts} +49 -7
- package/dist/{Kernel-CUaqHa1s.d.ts → ShutdownHook-CMWLsfu-.d.ts} +49 -7
- package/dist/Subscription-4vuAAxax.d.cts +23 -0
- package/dist/Subscription-vtF0lEHP.d.ts +23 -0
- package/dist/adapters/index.cjs +665 -37
- package/dist/adapters/index.cjs.map +1 -1
- package/dist/adapters/index.d.cts +15 -13
- package/dist/adapters/index.d.ts +15 -13
- package/dist/adapters/index.js +659 -37
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/pubsub/amqp/index.cjs +241 -16
- package/dist/adapters/pubsub/amqp/index.cjs.map +1 -1
- package/dist/adapters/pubsub/amqp/index.d.cts +16 -8
- package/dist/adapters/pubsub/amqp/index.d.ts +16 -8
- package/dist/adapters/pubsub/amqp/index.js +241 -16
- package/dist/adapters/pubsub/amqp/index.js.map +1 -1
- package/dist/adapters/pubsub/in-memory/index.cjs +96 -8
- package/dist/adapters/pubsub/in-memory/index.cjs.map +1 -1
- package/dist/adapters/pubsub/in-memory/index.d.cts +9 -3
- package/dist/adapters/pubsub/in-memory/index.d.ts +9 -3
- package/dist/adapters/pubsub/in-memory/index.js +96 -8
- package/dist/adapters/pubsub/in-memory/index.js.map +1 -1
- package/dist/adapters/pubsub/index.cjs +397 -27
- package/dist/adapters/pubsub/index.cjs.map +1 -1
- package/dist/adapters/pubsub/index.d.cts +89 -7
- package/dist/adapters/pubsub/index.d.ts +89 -7
- package/dist/adapters/pubsub/index.js +389 -26
- package/dist/adapters/pubsub/index.js.map +1 -1
- package/dist/adapters/ui/express/index.cjs +279 -11
- package/dist/adapters/ui/express/index.cjs.map +1 -1
- package/dist/adapters/ui/express/index.d.cts +127 -12
- package/dist/adapters/ui/express/index.d.ts +127 -12
- package/dist/adapters/ui/express/index.js +270 -11
- package/dist/adapters/ui/express/index.js.map +1 -1
- package/dist/adapters/ui/index.cjs +412 -27
- package/dist/adapters/ui/index.cjs.map +1 -1
- package/dist/adapters/ui/index.d.cts +7 -8
- package/dist/adapters/ui/index.d.ts +7 -8
- package/dist/adapters/ui/index.js +413 -27
- package/dist/adapters/ui/index.js.map +1 -1
- package/dist/adapters/ui/routes/index.cjs +136 -9
- package/dist/adapters/ui/routes/index.cjs.map +1 -1
- package/dist/adapters/ui/routes/index.js +136 -9
- package/dist/adapters/ui/routes/index.js.map +1 -1
- package/dist/contracts/index.cjs +16 -17
- package/dist/contracts/index.cjs.map +1 -1
- package/dist/contracts/index.d.cts +10 -2
- package/dist/contracts/index.d.ts +10 -2
- package/dist/contracts/index.js +16 -17
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/kernel/index.cjs.map +1 -1
- package/dist/contracts/kernel/index.d.cts +7 -1
- package/dist/contracts/kernel/index.d.ts +7 -1
- package/dist/contracts/pubsub/index.cjs.map +1 -1
- package/dist/contracts/pubsub/index.d.cts +5 -1
- package/dist/contracts/pubsub/index.d.ts +5 -1
- package/dist/contracts/ui/index.cjs +16 -17
- package/dist/contracts/ui/index.cjs.map +1 -1
- package/dist/contracts/ui/index.d.cts +16 -16
- package/dist/contracts/ui/index.d.ts +16 -16
- package/dist/contracts/ui/index.js +16 -17
- package/dist/contracts/ui/index.js.map +1 -1
- package/dist/domain/index.cjs.map +1 -1
- package/dist/domain/index.d.cts +6 -2
- package/dist/domain/index.d.ts +6 -2
- package/dist/domain/index.js.map +1 -1
- package/dist/index.cjs +152 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -7
- package/dist/index.d.ts +8 -7
- package/dist/index.js +152 -26
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/dependency-injection/index.cjs +119 -3
- package/dist/infrastructure/dependency-injection/index.cjs.map +1 -1
- package/dist/infrastructure/dependency-injection/index.d.cts +4 -1
- package/dist/infrastructure/dependency-injection/index.d.ts +4 -1
- package/dist/infrastructure/dependency-injection/index.js +119 -3
- package/dist/infrastructure/dependency-injection/index.js.map +1 -1
- package/dist/infrastructure/express/index.cjs +279 -11
- package/dist/infrastructure/express/index.cjs.map +1 -1
- package/dist/infrastructure/express/index.d.cts +7 -8
- package/dist/infrastructure/express/index.d.ts +7 -8
- package/dist/infrastructure/express/index.js +270 -11
- package/dist/infrastructure/express/index.js.map +1 -1
- package/dist/infrastructure/scheduler/index.cjs +136 -9
- package/dist/infrastructure/scheduler/index.cjs.map +1 -1
- package/dist/infrastructure/scheduler/index.d.cts +2 -2
- package/dist/infrastructure/scheduler/index.d.ts +2 -2
- package/dist/infrastructure/scheduler/index.js +136 -9
- package/dist/infrastructure/scheduler/index.js.map +1 -1
- package/package.json +89 -10
- package/dist/Consumer-CC8ZRCsd.d.cts +0 -17
- package/dist/Consumer-CeT0Wbxb.d.ts +0 -17
- package/dist/DomainEventConsumer-3WBMSSr2.d.cts +0 -7
- package/dist/DomainEventConsumer-B4hkIUmP.d.ts +0 -7
- package/dist/DomainEventPublisher-8G0lvmdy.d.cts +0 -7
- package/dist/DomainEventPublisher-DhGgM3f2.d.ts +0 -7
- package/dist/ServiceClass-BmNw8fJj.d.cts +0 -37
- package/dist/ServiceClass-C7NCKdSS.d.ts +0 -37
- package/dist/ShutdownHook-BGskq2-q.d.ts +0 -9
- package/dist/ShutdownHook-Dib5uNKB.d.cts +0 -9
- package/dist/Subscription-Bwkb_did.d.ts +0 -9
- package/dist/Subscription-P9WROD_6.d.cts +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/ui/express/index.ts","../../../../src/adapters/ui/express/ExpressKernelServer.ts","../../../../src/adapters/ui/express/RoutePrefix.ts"],"sourcesContent":["export * from './ExpressKernelServer.js';\nexport * from './ExpressKernelServerOptions.js';\nexport * from './HttpApp.js';\nexport * from './HttpServer.js';\nexport * from './RoutePrefix.js';\n","import type { ErrorRequestHandler } from 'express';\n\nimport { createExpressServer } from 'routing-controllers';\n\nimport type { ExpressKernelServerOptions } from './ExpressKernelServerOptions.js';\nimport type { HttpApp } from './HttpApp.js';\nimport type { HttpServer } from './HttpServer.js';\n\nexport class ExpressKernelServer {\n private appInstance: HttpApp | undefined;\n private serverInstance: HttpServer | undefined;\n\n constructor(private readonly options: ExpressKernelServerOptions) {}\n\n private registerErrorHandlers(app: HttpApp): void {\n const handlers = this.options.errorHandlers ?? [this.defaultErrorHandler()];\n\n for (const handler of handlers) {\n app.use(handler);\n }\n }\n\n private defaultErrorHandler(): ErrorRequestHandler {\n return (error, request, response) => {\n void request;\n\n response.status(500).json({\n error: error instanceof Error ? error.message : String(error),\n });\n };\n }\n\n public get app(): HttpApp {\n if (!this.appInstance) {\n throw new Error('HTTP server is not running.');\n }\n\n return this.appInstance;\n }\n\n public get server(): HttpServer {\n if (!this.serverInstance) {\n throw new Error('HTTP server is not running.');\n }\n\n return this.serverInstance;\n }\n\n public close(): Promise<void> {\n if (!this.serverInstance) {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n this.serverInstance?.close((error?: Error) => {\n if (error) {\n reject(error);\n\n return;\n }\n\n this.serverInstance = undefined;\n this.appInstance = undefined;\n resolve();\n });\n });\n }\n\n public run(): Promise<void> {\n const app = createExpressServer({\n controllers: this.options.kernel.getRoutes(),\n routePrefix: this.options.routePrefix,\n }) as HttpApp;\n\n for (const middleware of this.options.middlewares ?? []) {\n app.use(middleware);\n }\n\n this.registerErrorHandlers(app);\n this.appInstance = app;\n\n return new Promise((resolve) => {\n this.serverInstance = app.listen(this.options.port ?? 3000, () => {\n resolve();\n });\n });\n }\n}\n","export class RoutePrefix {\n private readonly value: string;\n\n public static fromEnvironment(value: string | undefined): RoutePrefix {\n return new RoutePrefix(value);\n }\n\n constructor(value: string | undefined) {\n if (!value || value === '/') {\n this.value = '';\n\n return;\n }\n\n const normalizedPrefix = value\n .trim()\n .replace(/^\\/+/, '')\n .replace(/\\/+$/, '');\n\n this.value = normalizedPrefix ? `/${normalizedPrefix}` : '';\n }\n\n public includes(requestPath: string): boolean {\n return (\n this.value.length > 0 &&\n (requestPath === this.value || requestPath.startsWith(`${this.value}/`))\n );\n }\n\n public isEmpty(): boolean {\n return this.value.length === 0;\n }\n\n public toString(): string {\n return this.value;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACEA,iCAAoC;AAM7B,IAAM,sBAAN,MAA0B;AAAA,EAI/B,YAA6B,SAAqC;AAArC;AAAA,EAAsC;AAAA,EAAtC;AAAA,EAHrB;AAAA,EACA;AAAA,EAIA,sBAAsB,KAAoB;AAChD,UAAM,WAAW,KAAK,QAAQ,iBAAiB,CAAC,KAAK,oBAAoB,CAAC;AAE1E,eAAW,WAAW,UAAU;AAC9B,UAAI,IAAI,OAAO;AAAA,IACjB;AAAA,EACF;AAAA,EAEQ,sBAA2C;AACjD,WAAO,CAAC,OAAO,SAAS,aAAa;AACnC,WAAK;AAEL,eAAS,OAAO,GAAG,EAAE,KAAK;AAAA,QACxB,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC9D,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,IAAW,MAAe;AACxB,QAAI,CAAC,KAAK,aAAa;AACrB,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAW,SAAqB;AAC9B,QAAI,CAAC,KAAK,gBAAgB;AACxB,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,QAAuB;AAC5B,QAAI,CAAC,KAAK,gBAAgB;AACxB,aAAO,QAAQ,QAAQ;AAAA,IACzB;AAEA,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,gBAAgB,MAAM,CAAC,UAAkB;AAC5C,YAAI,OAAO;AACT,iBAAO,KAAK;AAEZ;AAAA,QACF;AAEA,aAAK,iBAAiB;AACtB,aAAK,cAAc;AACnB,gBAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEO,MAAqB;AAC1B,UAAM,UAAM,gDAAoB;AAAA,MAC9B,aAAa,KAAK,QAAQ,OAAO,UAAU;AAAA,MAC3C,aAAa,KAAK,QAAQ;AAAA,IAC5B,CAAC;AAED,eAAW,cAAc,KAAK,QAAQ,eAAe,CAAC,GAAG;AACvD,UAAI,IAAI,UAAU;AAAA,IACpB;AAEA,SAAK,sBAAsB,GAAG;AAC9B,SAAK,cAAc;AAEnB,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,WAAK,iBAAiB,IAAI,OAAO,KAAK,QAAQ,QAAQ,KAAM,MAAM;AAChE,gBAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;ACvFO,IAAM,cAAN,MAAM,aAAY;AAAA,EACN;AAAA,EAEjB,OAAc,gBAAgB,OAAwC;AACpE,WAAO,IAAI,aAAY,KAAK;AAAA,EAC9B;AAAA,EAEA,YAAY,OAA2B;AACrC,QAAI,CAAC,SAAS,UAAU,KAAK;AAC3B,WAAK,QAAQ;AAEb;AAAA,IACF;AAEA,UAAM,mBAAmB,MACtB,KAAK,EACL,QAAQ,QAAQ,EAAE,EAClB,QAAQ,QAAQ,EAAE;AAErB,SAAK,QAAQ,mBAAmB,IAAI,gBAAgB,KAAK;AAAA,EAC3D;AAAA,EAEO,SAAS,aAA8B;AAC5C,WACE,KAAK,MAAM,SAAS,MACnB,gBAAgB,KAAK,SAAS,YAAY,WAAW,GAAG,KAAK,KAAK,GAAG;AAAA,EAE1E;AAAA,EAEO,UAAmB;AACxB,WAAO,KAAK,MAAM,WAAW;AAAA,EAC/B;AAAA,EAEO,WAAmB;AACxB,WAAO,KAAK;AAAA,EACd;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/ui/express/index.ts","../../../../src/adapters/ui/express/ExpressKernelServer.ts","../../../../src/adapters/ui/express/HttpErrorHandler.ts","../../../../src/contracts/ui/HttpRouteStatusEnum.ts","../../../../src/adapters/ui/express/RoutePrefix.ts"],"sourcesContent":["export * from './ErrorExplanation.js';\nexport * from './ErrorResponseHandler.js';\nexport * from './ExpressAppHook.js';\nexport * from './ExpressController.js';\nexport * from './ExpressHookPhase.js';\nexport * from './ExpressKernelServer.js';\nexport * from './ExpressKernelServerOptions.js';\nexport * from './ExpressPhaseHook.js';\nexport * from './FormattedValidationError.js';\nexport * from './HttpApp.js';\nexport * from './HttpErrorHandler.js';\nexport * from './HttpErrorHandlerOptions.js';\nexport * from './HttpErrorLike.js';\nexport * from './HttpErrorResponse.js';\nexport * from './HttpServer.js';\nexport * from './PayloadTooLargeError.js';\nexport * from './RoutePrefix.js';\nexport * from './ValidationError.js';\n","import type { ErrorRequestHandler, RequestHandler } from 'express';\n\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\n\nimport type { ExpressAppHook } from './ExpressAppHook.js';\nimport type { ExpressController } from './ExpressController.js';\nimport type { ExpressKernelServerOptions } from './ExpressKernelServerOptions.js';\nimport type { ExpressPhaseHook } from './ExpressPhaseHook.js';\nimport type { HttpApp } from './HttpApp.js';\nimport type { HttpServer } from './HttpServer.js';\n\nexport class ExpressKernelServer {\n private readonly applicationRequire = createRequire(\n path.resolve(process.cwd(), 'package.json'),\n );\n\n private readonly afterControllersHooks: ExpressAppHook[];\n\n private appInstance: HttpApp | undefined;\n\n private readonly beforeControllersHooks: ExpressAppHook[];\n\n private readonly controllers: ExpressController[];\n\n private readonly errorHandlers: ErrorRequestHandler[];\n\n private readonly hooks: ExpressPhaseHook[];\n\n private readonly middlewares: RequestHandler[];\n\n private readonly postControllerMiddlewares: RequestHandler[];\n\n private readonly preControllerMiddlewares: RequestHandler[];\n\n private serverInstance: HttpServer | undefined;\n\n private readonly staticHooks: ExpressAppHook[];\n\n private readonly swaggerHooks: ExpressAppHook[];\n\n constructor(private readonly options: ExpressKernelServerOptions) {\n this.afterControllersHooks = this.copy(options.afterControllersHooks);\n this.beforeControllersHooks = this.copy(options.beforeControllersHooks);\n this.controllers = this.copy(options.controllers);\n this.errorHandlers = this.copy(options.errorHandlers);\n this.hooks = this.copy(options.hooks);\n this.middlewares = this.copy(options.middlewares);\n this.postControllerMiddlewares = this.copy(\n options.postControllerMiddlewares,\n );\n this.preControllerMiddlewares = this.copy(options.preControllerMiddlewares);\n this.staticHooks = this.copy(options.staticHooks);\n this.swaggerHooks = this.copy(options.swaggerHooks);\n }\n\n private copy<Type>(items: Type[] | undefined): Type[] {\n return [...(items ?? [])];\n }\n\n private configureControllerContainer(): void {\n const { useContainer } = this.getRoutingControllers();\n\n useContainer(\n {\n /* c8 ignore next */\n get: (ClassDefinition: ExpressController) =>\n this.options.kernel.di.getService(ClassDefinition),\n },\n {\n fallback: true,\n fallbackOnErrors: true,\n },\n );\n }\n\n private getExpress(): typeof import('express') {\n return this.applicationRequire('express') as typeof import('express');\n }\n\n private getRoutingControllers(): Pick<\n typeof import('routing-controllers'),\n 'useContainer' | 'useExpressServer'\n > {\n return this.applicationRequire('routing-controllers') as Pick<\n typeof import('routing-controllers'),\n 'useContainer' | 'useExpressServer'\n >;\n }\n\n private applyErrorHandlers(app: HttpApp): void {\n const handlers =\n this.errorHandlers.length > 0\n ? this.errorHandlers\n : [this.defaultErrorHandler()];\n\n for (const handler of handlers) {\n app.use(handler);\n }\n }\n\n private defaultErrorHandler(): ErrorRequestHandler {\n return (error, request, response, next) => {\n void next;\n void request;\n\n response.status(500).json({\n error: error instanceof Error ? error.message : String(error),\n });\n };\n }\n\n private async runHooks(\n hooks: readonly ((app: HttpApp) => Promise<void> | void)[],\n app: HttpApp,\n ): Promise<void> {\n for (const hook of hooks) {\n await hook(app);\n }\n }\n\n private async runPhaseHooks(\n phase: 'afterControllers' | 'beforeControllers' | 'beforeErrors',\n app: HttpApp,\n ): Promise<void> {\n for (const hook of this.hooks) {\n if (hook.phase === phase) {\n await hook.handle(app);\n }\n }\n }\n\n private applyMiddlewares(\n app: HttpApp,\n middlewares: readonly RequestHandler[],\n ): void {\n for (const middleware of middlewares) {\n app.use(middleware);\n }\n }\n\n public get app(): HttpApp {\n if (!this.appInstance) {\n throw new Error('HTTP server is not running.');\n }\n\n return this.appInstance;\n }\n\n public get server(): HttpServer {\n if (!this.serverInstance) {\n throw new Error('HTTP server is not running.');\n }\n\n return this.serverInstance;\n }\n\n private assertServerIsNotRunning(): void {\n if (this.serverInstance) {\n throw new Error('HTTP server is already running.');\n }\n }\n\n public close(): Promise<void> {\n if (!this.serverInstance) {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n this.serverInstance?.close((error?: Error) => {\n if (error) {\n reject(error);\n\n return;\n }\n\n this.serverInstance = undefined;\n this.appInstance = undefined;\n resolve();\n });\n });\n }\n\n public registerAfterControllersHooks(\n ...hooks: NonNullable<ExpressKernelServerOptions['afterControllersHooks']>\n ): this {\n this.assertServerIsNotRunning();\n this.afterControllersHooks?.push(...hooks);\n\n return this;\n }\n\n public registerBeforeControllersHooks(\n ...hooks: NonNullable<ExpressKernelServerOptions['beforeControllersHooks']>\n ): this {\n this.assertServerIsNotRunning();\n this.beforeControllersHooks?.push(...hooks);\n\n return this;\n }\n\n public registerControllers(...controllers: ExpressController[]): this {\n this.assertServerIsNotRunning();\n this.controllers.push(...controllers);\n\n return this;\n }\n\n public registerErrorHandlers(...handlers: ErrorRequestHandler[]): this {\n this.assertServerIsNotRunning();\n this.errorHandlers.push(...handlers);\n\n return this;\n }\n\n public registerHooks(...hooks: ExpressPhaseHook[]): this {\n this.assertServerIsNotRunning();\n this.hooks.push(...hooks);\n\n return this;\n }\n\n public registerMiddlewares(...middlewares: RequestHandler[]): this {\n this.assertServerIsNotRunning();\n this.middlewares.push(...middlewares);\n\n return this;\n }\n\n public registerPostControllerMiddlewares(\n ...middlewares: RequestHandler[]\n ): this {\n this.assertServerIsNotRunning();\n this.postControllerMiddlewares.push(...middlewares);\n\n return this;\n }\n\n public registerPreControllerMiddlewares(\n ...middlewares: RequestHandler[]\n ): this {\n this.assertServerIsNotRunning();\n this.preControllerMiddlewares.push(...middlewares);\n\n return this;\n }\n\n public async run(): Promise<void> {\n if (this.serverInstance) {\n throw new Error('HTTP server is already running.');\n }\n\n const controllers = [\n ...this.options.kernel.getRoutes(),\n ...this.controllers,\n ];\n const express = this.getExpress();\n const { useExpressServer } = this.getRoutingControllers();\n const app = express() as HttpApp;\n\n this.applyMiddlewares(app, this.middlewares);\n this.applyMiddlewares(app, this.preControllerMiddlewares);\n await this.runHooks(this.beforeControllersHooks, app);\n await this.runPhaseHooks('beforeControllers', app);\n this.configureControllerContainer();\n useExpressServer(app, {\n ...this.options.routingControllersOptions,\n controllers,\n routePrefix: this.options.routePrefix,\n });\n this.applyMiddlewares(app, this.postControllerMiddlewares);\n await this.runHooks(this.afterControllersHooks, app);\n await this.runPhaseHooks('afterControllers', app);\n await this.runHooks(this.swaggerHooks, app);\n await this.runHooks(this.staticHooks, app);\n await this.runPhaseHooks('beforeErrors', app);\n\n this.applyErrorHandlers(app);\n this.appInstance = app;\n\n return new Promise((resolve) => {\n this.serverInstance = app.listen(this.options.port ?? 3000, () => {\n resolve();\n });\n });\n }\n}\n","import type { NextFunction, Request, Response } from 'express';\n\nimport {\n type ExpressErrorMiddlewareInterface,\n HttpError,\n} from 'routing-controllers';\n\nimport type { ErrorExplanation } from './ErrorExplanation.js';\nimport type { ErrorResponseHandler } from './ErrorResponseHandler.js';\nimport type { FormattedValidationError } from './FormattedValidationError.js';\nimport type { HttpErrorHandlerOptions } from './HttpErrorHandlerOptions.js';\nimport type { HttpErrorLike } from './HttpErrorLike.js';\nimport type { PayloadTooLargeError } from './PayloadTooLargeError.js';\nimport type { ValidationError } from './ValidationError.js';\n\nimport { HttpRouteStatusEnum } from '../../../contracts/ui/index.js';\n\nexport class HttpErrorHandler implements ExpressErrorMiddlewareInterface {\n private readonly handlers: readonly ErrorResponseHandler[];\n\n private readonly exposeUnhandledErrorsIn: readonly string[];\n\n constructor(private readonly options: HttpErrorHandlerOptions = {}) {\n this.handlers = options.handlers ?? [];\n this.exposeUnhandledErrorsIn = options.exposeUnhandledErrorsIn ?? [\n 'local',\n 'test',\n ];\n }\n\n private formatValidationErrors(\n errors: readonly ValidationError[],\n ): FormattedValidationError[] {\n return errors.flatMap((error) => {\n if (error.children && error.children.length > 0) {\n return this.formatValidationErrors(error.children);\n }\n\n return [\n {\n details: error.constraints,\n property: error.property,\n value: error.value,\n },\n ];\n });\n }\n\n private getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n }\n\n private getHttpStatus(error: HttpErrorLike): number | undefined {\n return error.httpCode ?? error.statusCode ?? error.status;\n }\n\n private isPayloadTooLargeError(error: PayloadTooLargeError): boolean {\n return (\n error.type === 'entity.too.large' ||\n this.getHttpStatus(error) === HttpRouteStatusEnum.PAYLOAD_TOO_LARGE\n );\n }\n\n private logUnhandledError(error: Error): void {\n this.options.logger?.error(`Unhandled error: ${error.message}`);\n this.options.logger?.debug(error.stack ?? 'No stack trace available');\n }\n\n private handleSyntaxError(error: Error, response: Response): boolean {\n if (!(error instanceof SyntaxError)) {\n return false;\n }\n\n response.status(HttpRouteStatusEnum.BAD_REQUEST).json({\n code: 'SyntaxError',\n message: 'Malformed JSON',\n });\n\n return true;\n }\n\n private handlePayloadTooLargeError(\n error: Error,\n response: Response,\n ): boolean {\n if (!this.isPayloadTooLargeError(error)) {\n return false;\n }\n\n response.status(HttpRouteStatusEnum.PAYLOAD_TOO_LARGE).json({\n code: 'PayloadTooLargeError',\n httpStatus: HttpRouteStatusEnum.PAYLOAD_TOO_LARGE,\n message: 'Request entity too large.',\n });\n\n return true;\n }\n\n private handleHttpError(error: Error, response: Response): boolean {\n const httpError = error as HttpErrorLike;\n const httpStatus = this.getHttpStatus(httpError);\n\n if (!httpStatus && !(error instanceof HttpError)) {\n return false;\n }\n\n response\n .status(httpStatus ?? HttpRouteStatusEnum.INTERNAL_SERVER_ERROR)\n .json({\n code: error.name,\n errors: this.formatValidationErrors(\n (error as ErrorExplanation).errors ?? [],\n ),\n httpStatus: httpStatus ?? HttpRouteStatusEnum.INTERNAL_SERVER_ERROR,\n message: error.message,\n });\n\n return true;\n }\n\n private handleUnhandledError(error: Error, response: Response): void {\n if (this.exposeUnhandledErrorsIn.includes(process.env.NODE_ENV ?? '')) {\n this.logUnhandledError(error);\n }\n\n response.status(HttpRouteStatusEnum.INTERNAL_SERVER_ERROR).json({\n code:\n error.constructor.name ||\n String(HttpRouteStatusEnum.INTERNAL_SERVER_ERROR),\n message: error.message || 'Unknown error',\n });\n }\n\n public error(\n error: Error,\n request: Request,\n response: Response,\n next: NextFunction,\n ): void {\n void request;\n\n const handlers: ErrorResponseHandler[] = [\n this.handleSyntaxError.bind(this),\n this.handlePayloadTooLargeError.bind(this),\n ...this.handlers,\n this.handleHttpError.bind(this),\n ];\n\n if (handlers.some((handler) => handler(error, response))) {\n return;\n }\n\n void next;\n\n this.handleUnhandledError(error, response);\n }\n\n public handle = (\n error: Error,\n request: Request,\n response: Response,\n next: NextFunction,\n ): void => {\n this.error(error, request, response, next);\n };\n}\n\nexport default HttpErrorHandler;\n","export const HttpRouteStatusEnum = {\n BAD_REQUEST: 400,\n CONFLICT: 409,\n CREATED: 201,\n DEPRECATED: 299,\n FORBIDDEN: 403,\n INTERNAL_SERVER_ERROR: 500,\n NO_CONTENT: 204,\n NOT_FOUND: 404,\n OK: 200,\n PAYLOAD_TOO_LARGE: 413,\n SERVICE_UNAVAILABLE: 503,\n TOO_MANY_REQUESTS: 429,\n UNAUTHORIZED: 401,\n UNPROCESSABLE_ENTITY: 422,\n} as const;\n\nexport default HttpRouteStatusEnum;\n","export class RoutePrefix {\n private readonly value: string;\n\n public static fromEnvironment(value: string | undefined): RoutePrefix {\n return new RoutePrefix(value);\n }\n\n constructor(value: string | undefined) {\n if (!value || value === '/') {\n this.value = '';\n\n return;\n }\n\n const normalizedPrefix = value\n .trim()\n .replace(/^\\/+/, '')\n .replace(/\\/+$/, '');\n\n this.value = normalizedPrefix ? `/${normalizedPrefix}` : '';\n }\n\n public includes(requestPath: string): boolean {\n return (\n this.value.length > 0 &&\n (requestPath === this.value || requestPath.startsWith(`${this.value}/`))\n );\n }\n\n public isEmpty(): boolean {\n return this.value.length === 0;\n }\n\n public toString(): string {\n return this.value;\n }\n}\n"],"mappings":"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","names":["path"]}
|
|
@@ -1,42 +1,157 @@
|
|
|
1
1
|
import '../routes/index.cjs';
|
|
2
|
-
import { ErrorRequestHandler, RequestHandler,
|
|
3
|
-
import {
|
|
2
|
+
import { Response, Application, ErrorRequestHandler, RequestHandler, Request, NextFunction } from 'express';
|
|
3
|
+
import { RoutingControllersOptions, ExpressErrorMiddlewareInterface } from 'routing-controllers';
|
|
4
|
+
import { K as Kernel } from '../../../ShutdownHook-BjbnCKzr.cjs';
|
|
4
5
|
import { Server } from 'node:http';
|
|
5
|
-
import '../../../
|
|
6
|
-
import '../../../DomainEventConsumer-3WBMSSr2.cjs';
|
|
6
|
+
import { K as KernelLogger } from '../../../KernelLogger-BESOFrpW.cjs';
|
|
7
7
|
import '../../../DomainEvent-mXWEtr_J.cjs';
|
|
8
|
-
import '../../../
|
|
9
|
-
import '../../../
|
|
10
|
-
import '../../../ServiceClass-BmNw8fJj.cjs';
|
|
8
|
+
import '../../../DomainEventConsumer-Bg-bOwmh.cjs';
|
|
9
|
+
import '../../../ServiceClass-BkEHcXDi.cjs';
|
|
11
10
|
import '../../../ServiceResolver-D2Jz-l_Z.cjs';
|
|
12
11
|
import '../../../infrastructure/lifecycle/index.cjs';
|
|
13
|
-
import '../../../Scheduler-
|
|
12
|
+
import '../../../Scheduler-BW-U5Ccg.cjs';
|
|
13
|
+
|
|
14
|
+
interface ValidationError {
|
|
15
|
+
readonly children?: ValidationError[];
|
|
16
|
+
readonly constraints?: Record<string, string>;
|
|
17
|
+
readonly property: string;
|
|
18
|
+
readonly value?: unknown;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface ErrorExplanation {
|
|
22
|
+
readonly errors?: ValidationError[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
type ErrorResponseHandler = (error: Error, response: Response) => boolean;
|
|
26
|
+
|
|
27
|
+
type HttpApp = Application;
|
|
28
|
+
|
|
29
|
+
type ExpressAppHook = (app: HttpApp) => Promise<void> | void;
|
|
30
|
+
|
|
31
|
+
type ExpressController = abstract new (...args: unknown[]) => unknown;
|
|
32
|
+
|
|
33
|
+
type ExpressHookPhase = 'afterControllers' | 'beforeControllers' | 'beforeErrors';
|
|
34
|
+
|
|
35
|
+
interface ExpressPhaseHook {
|
|
36
|
+
readonly handle: ExpressAppHook;
|
|
37
|
+
readonly phase: ExpressHookPhase;
|
|
38
|
+
}
|
|
14
39
|
|
|
15
40
|
interface ExpressKernelServerOptions {
|
|
41
|
+
readonly afterControllersHooks?: ExpressAppHook[];
|
|
42
|
+
readonly beforeControllersHooks?: ExpressAppHook[];
|
|
43
|
+
readonly controllers?: ExpressController[];
|
|
16
44
|
readonly errorHandlers?: ErrorRequestHandler[];
|
|
45
|
+
readonly hooks?: ExpressPhaseHook[];
|
|
17
46
|
readonly kernel: Kernel;
|
|
18
47
|
readonly middlewares?: RequestHandler[];
|
|
48
|
+
readonly postControllerMiddlewares?: RequestHandler[];
|
|
49
|
+
readonly preControllerMiddlewares?: RequestHandler[];
|
|
19
50
|
readonly port?: number;
|
|
20
51
|
readonly routePrefix?: string;
|
|
52
|
+
readonly routingControllersOptions?: Omit<RoutingControllersOptions, 'controllers' | 'routePrefix'>;
|
|
53
|
+
/**
|
|
54
|
+
* @deprecated Prefer `hooks` with `phase: 'beforeErrors'`.
|
|
55
|
+
*/
|
|
56
|
+
readonly staticHooks?: ExpressAppHook[];
|
|
57
|
+
/**
|
|
58
|
+
* @deprecated Prefer `hooks` with `phase: 'beforeErrors'`.
|
|
59
|
+
*/
|
|
60
|
+
readonly swaggerHooks?: ExpressAppHook[];
|
|
21
61
|
}
|
|
22
62
|
|
|
23
|
-
type HttpApp = Application;
|
|
24
|
-
|
|
25
63
|
type HttpServer = Server;
|
|
26
64
|
|
|
27
65
|
declare class ExpressKernelServer {
|
|
28
66
|
private readonly options;
|
|
67
|
+
private readonly applicationRequire;
|
|
68
|
+
private readonly afterControllersHooks;
|
|
29
69
|
private appInstance;
|
|
70
|
+
private readonly beforeControllersHooks;
|
|
71
|
+
private readonly controllers;
|
|
72
|
+
private readonly errorHandlers;
|
|
73
|
+
private readonly hooks;
|
|
74
|
+
private readonly middlewares;
|
|
75
|
+
private readonly postControllerMiddlewares;
|
|
76
|
+
private readonly preControllerMiddlewares;
|
|
30
77
|
private serverInstance;
|
|
78
|
+
private readonly staticHooks;
|
|
79
|
+
private readonly swaggerHooks;
|
|
31
80
|
constructor(options: ExpressKernelServerOptions);
|
|
32
|
-
private
|
|
81
|
+
private copy;
|
|
82
|
+
private configureControllerContainer;
|
|
83
|
+
private getExpress;
|
|
84
|
+
private getRoutingControllers;
|
|
85
|
+
private applyErrorHandlers;
|
|
33
86
|
private defaultErrorHandler;
|
|
87
|
+
private runHooks;
|
|
88
|
+
private runPhaseHooks;
|
|
89
|
+
private applyMiddlewares;
|
|
34
90
|
get app(): HttpApp;
|
|
35
91
|
get server(): HttpServer;
|
|
92
|
+
private assertServerIsNotRunning;
|
|
36
93
|
close(): Promise<void>;
|
|
94
|
+
registerAfterControllersHooks(...hooks: NonNullable<ExpressKernelServerOptions['afterControllersHooks']>): this;
|
|
95
|
+
registerBeforeControllersHooks(...hooks: NonNullable<ExpressKernelServerOptions['beforeControllersHooks']>): this;
|
|
96
|
+
registerControllers(...controllers: ExpressController[]): this;
|
|
97
|
+
registerErrorHandlers(...handlers: ErrorRequestHandler[]): this;
|
|
98
|
+
registerHooks(...hooks: ExpressPhaseHook[]): this;
|
|
99
|
+
registerMiddlewares(...middlewares: RequestHandler[]): this;
|
|
100
|
+
registerPostControllerMiddlewares(...middlewares: RequestHandler[]): this;
|
|
101
|
+
registerPreControllerMiddlewares(...middlewares: RequestHandler[]): this;
|
|
37
102
|
run(): Promise<void>;
|
|
38
103
|
}
|
|
39
104
|
|
|
105
|
+
interface FormattedValidationError {
|
|
106
|
+
readonly details?: Record<string, string>;
|
|
107
|
+
readonly property: string;
|
|
108
|
+
readonly value: unknown;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
interface HttpErrorHandlerOptions {
|
|
112
|
+
readonly exposeUnhandledErrorsIn?: readonly string[];
|
|
113
|
+
readonly handlers?: readonly ErrorResponseHandler[];
|
|
114
|
+
readonly logger?: KernelLogger;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
declare class HttpErrorHandler implements ExpressErrorMiddlewareInterface {
|
|
118
|
+
private readonly options;
|
|
119
|
+
private readonly handlers;
|
|
120
|
+
private readonly exposeUnhandledErrorsIn;
|
|
121
|
+
constructor(options?: HttpErrorHandlerOptions);
|
|
122
|
+
private formatValidationErrors;
|
|
123
|
+
private getErrorMessage;
|
|
124
|
+
private getHttpStatus;
|
|
125
|
+
private isPayloadTooLargeError;
|
|
126
|
+
private logUnhandledError;
|
|
127
|
+
private handleSyntaxError;
|
|
128
|
+
private handlePayloadTooLargeError;
|
|
129
|
+
private handleHttpError;
|
|
130
|
+
private handleUnhandledError;
|
|
131
|
+
error(error: Error, request: Request, response: Response, next: NextFunction): void;
|
|
132
|
+
handle: (error: Error, request: Request, response: Response, next: NextFunction) => void;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
interface HttpErrorLike {
|
|
136
|
+
readonly code?: string;
|
|
137
|
+
readonly httpCode?: number;
|
|
138
|
+
readonly message?: string;
|
|
139
|
+
readonly name?: string;
|
|
140
|
+
readonly status?: number;
|
|
141
|
+
readonly statusCode?: number;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
interface HttpErrorResponse {
|
|
145
|
+
readonly code: string;
|
|
146
|
+
readonly errors?: FormattedValidationError[];
|
|
147
|
+
readonly httpStatus?: number;
|
|
148
|
+
readonly message: string;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
interface PayloadTooLargeError extends HttpErrorLike {
|
|
152
|
+
readonly type?: string;
|
|
153
|
+
}
|
|
154
|
+
|
|
40
155
|
declare class RoutePrefix {
|
|
41
156
|
private readonly value;
|
|
42
157
|
static fromEnvironment(value: string | undefined): RoutePrefix;
|
|
@@ -46,4 +161,4 @@ declare class RoutePrefix {
|
|
|
46
161
|
toString(): string;
|
|
47
162
|
}
|
|
48
163
|
|
|
49
|
-
export { ExpressKernelServer, type ExpressKernelServerOptions, type HttpApp, type HttpServer, RoutePrefix };
|
|
164
|
+
export { type ErrorExplanation, type ErrorResponseHandler, type ExpressAppHook, type ExpressController, type ExpressHookPhase, ExpressKernelServer, type ExpressKernelServerOptions, type ExpressPhaseHook, type FormattedValidationError, type HttpApp, HttpErrorHandler, type HttpErrorHandlerOptions, type HttpErrorLike, type HttpErrorResponse, type HttpServer, type PayloadTooLargeError, RoutePrefix, type ValidationError };
|
|
@@ -1,42 +1,157 @@
|
|
|
1
1
|
import '../routes/index.js';
|
|
2
|
-
import { ErrorRequestHandler, RequestHandler,
|
|
3
|
-
import {
|
|
2
|
+
import { Response, Application, ErrorRequestHandler, RequestHandler, Request, NextFunction } from 'express';
|
|
3
|
+
import { RoutingControllersOptions, ExpressErrorMiddlewareInterface } from 'routing-controllers';
|
|
4
|
+
import { K as Kernel } from '../../../ShutdownHook-CMWLsfu-.js';
|
|
4
5
|
import { Server } from 'node:http';
|
|
5
|
-
import '../../../
|
|
6
|
-
import '../../../DomainEventConsumer-B4hkIUmP.js';
|
|
6
|
+
import { K as KernelLogger } from '../../../KernelLogger-BESOFrpW.js';
|
|
7
7
|
import '../../../DomainEvent-mXWEtr_J.js';
|
|
8
|
-
import '../../../
|
|
9
|
-
import '../../../
|
|
10
|
-
import '../../../ServiceClass-C7NCKdSS.js';
|
|
8
|
+
import '../../../DomainEventConsumer-BroJmVty.js';
|
|
9
|
+
import '../../../ServiceClass-Bq_fBC5R.js';
|
|
11
10
|
import '../../../ServiceResolver-D2Jz-l_Z.js';
|
|
12
11
|
import '../../../infrastructure/lifecycle/index.js';
|
|
13
|
-
import '../../../Scheduler-
|
|
12
|
+
import '../../../Scheduler-BW-U5Ccg.js';
|
|
13
|
+
|
|
14
|
+
interface ValidationError {
|
|
15
|
+
readonly children?: ValidationError[];
|
|
16
|
+
readonly constraints?: Record<string, string>;
|
|
17
|
+
readonly property: string;
|
|
18
|
+
readonly value?: unknown;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface ErrorExplanation {
|
|
22
|
+
readonly errors?: ValidationError[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
type ErrorResponseHandler = (error: Error, response: Response) => boolean;
|
|
26
|
+
|
|
27
|
+
type HttpApp = Application;
|
|
28
|
+
|
|
29
|
+
type ExpressAppHook = (app: HttpApp) => Promise<void> | void;
|
|
30
|
+
|
|
31
|
+
type ExpressController = abstract new (...args: unknown[]) => unknown;
|
|
32
|
+
|
|
33
|
+
type ExpressHookPhase = 'afterControllers' | 'beforeControllers' | 'beforeErrors';
|
|
34
|
+
|
|
35
|
+
interface ExpressPhaseHook {
|
|
36
|
+
readonly handle: ExpressAppHook;
|
|
37
|
+
readonly phase: ExpressHookPhase;
|
|
38
|
+
}
|
|
14
39
|
|
|
15
40
|
interface ExpressKernelServerOptions {
|
|
41
|
+
readonly afterControllersHooks?: ExpressAppHook[];
|
|
42
|
+
readonly beforeControllersHooks?: ExpressAppHook[];
|
|
43
|
+
readonly controllers?: ExpressController[];
|
|
16
44
|
readonly errorHandlers?: ErrorRequestHandler[];
|
|
45
|
+
readonly hooks?: ExpressPhaseHook[];
|
|
17
46
|
readonly kernel: Kernel;
|
|
18
47
|
readonly middlewares?: RequestHandler[];
|
|
48
|
+
readonly postControllerMiddlewares?: RequestHandler[];
|
|
49
|
+
readonly preControllerMiddlewares?: RequestHandler[];
|
|
19
50
|
readonly port?: number;
|
|
20
51
|
readonly routePrefix?: string;
|
|
52
|
+
readonly routingControllersOptions?: Omit<RoutingControllersOptions, 'controllers' | 'routePrefix'>;
|
|
53
|
+
/**
|
|
54
|
+
* @deprecated Prefer `hooks` with `phase: 'beforeErrors'`.
|
|
55
|
+
*/
|
|
56
|
+
readonly staticHooks?: ExpressAppHook[];
|
|
57
|
+
/**
|
|
58
|
+
* @deprecated Prefer `hooks` with `phase: 'beforeErrors'`.
|
|
59
|
+
*/
|
|
60
|
+
readonly swaggerHooks?: ExpressAppHook[];
|
|
21
61
|
}
|
|
22
62
|
|
|
23
|
-
type HttpApp = Application;
|
|
24
|
-
|
|
25
63
|
type HttpServer = Server;
|
|
26
64
|
|
|
27
65
|
declare class ExpressKernelServer {
|
|
28
66
|
private readonly options;
|
|
67
|
+
private readonly applicationRequire;
|
|
68
|
+
private readonly afterControllersHooks;
|
|
29
69
|
private appInstance;
|
|
70
|
+
private readonly beforeControllersHooks;
|
|
71
|
+
private readonly controllers;
|
|
72
|
+
private readonly errorHandlers;
|
|
73
|
+
private readonly hooks;
|
|
74
|
+
private readonly middlewares;
|
|
75
|
+
private readonly postControllerMiddlewares;
|
|
76
|
+
private readonly preControllerMiddlewares;
|
|
30
77
|
private serverInstance;
|
|
78
|
+
private readonly staticHooks;
|
|
79
|
+
private readonly swaggerHooks;
|
|
31
80
|
constructor(options: ExpressKernelServerOptions);
|
|
32
|
-
private
|
|
81
|
+
private copy;
|
|
82
|
+
private configureControllerContainer;
|
|
83
|
+
private getExpress;
|
|
84
|
+
private getRoutingControllers;
|
|
85
|
+
private applyErrorHandlers;
|
|
33
86
|
private defaultErrorHandler;
|
|
87
|
+
private runHooks;
|
|
88
|
+
private runPhaseHooks;
|
|
89
|
+
private applyMiddlewares;
|
|
34
90
|
get app(): HttpApp;
|
|
35
91
|
get server(): HttpServer;
|
|
92
|
+
private assertServerIsNotRunning;
|
|
36
93
|
close(): Promise<void>;
|
|
94
|
+
registerAfterControllersHooks(...hooks: NonNullable<ExpressKernelServerOptions['afterControllersHooks']>): this;
|
|
95
|
+
registerBeforeControllersHooks(...hooks: NonNullable<ExpressKernelServerOptions['beforeControllersHooks']>): this;
|
|
96
|
+
registerControllers(...controllers: ExpressController[]): this;
|
|
97
|
+
registerErrorHandlers(...handlers: ErrorRequestHandler[]): this;
|
|
98
|
+
registerHooks(...hooks: ExpressPhaseHook[]): this;
|
|
99
|
+
registerMiddlewares(...middlewares: RequestHandler[]): this;
|
|
100
|
+
registerPostControllerMiddlewares(...middlewares: RequestHandler[]): this;
|
|
101
|
+
registerPreControllerMiddlewares(...middlewares: RequestHandler[]): this;
|
|
37
102
|
run(): Promise<void>;
|
|
38
103
|
}
|
|
39
104
|
|
|
105
|
+
interface FormattedValidationError {
|
|
106
|
+
readonly details?: Record<string, string>;
|
|
107
|
+
readonly property: string;
|
|
108
|
+
readonly value: unknown;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
interface HttpErrorHandlerOptions {
|
|
112
|
+
readonly exposeUnhandledErrorsIn?: readonly string[];
|
|
113
|
+
readonly handlers?: readonly ErrorResponseHandler[];
|
|
114
|
+
readonly logger?: KernelLogger;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
declare class HttpErrorHandler implements ExpressErrorMiddlewareInterface {
|
|
118
|
+
private readonly options;
|
|
119
|
+
private readonly handlers;
|
|
120
|
+
private readonly exposeUnhandledErrorsIn;
|
|
121
|
+
constructor(options?: HttpErrorHandlerOptions);
|
|
122
|
+
private formatValidationErrors;
|
|
123
|
+
private getErrorMessage;
|
|
124
|
+
private getHttpStatus;
|
|
125
|
+
private isPayloadTooLargeError;
|
|
126
|
+
private logUnhandledError;
|
|
127
|
+
private handleSyntaxError;
|
|
128
|
+
private handlePayloadTooLargeError;
|
|
129
|
+
private handleHttpError;
|
|
130
|
+
private handleUnhandledError;
|
|
131
|
+
error(error: Error, request: Request, response: Response, next: NextFunction): void;
|
|
132
|
+
handle: (error: Error, request: Request, response: Response, next: NextFunction) => void;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
interface HttpErrorLike {
|
|
136
|
+
readonly code?: string;
|
|
137
|
+
readonly httpCode?: number;
|
|
138
|
+
readonly message?: string;
|
|
139
|
+
readonly name?: string;
|
|
140
|
+
readonly status?: number;
|
|
141
|
+
readonly statusCode?: number;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
interface HttpErrorResponse {
|
|
145
|
+
readonly code: string;
|
|
146
|
+
readonly errors?: FormattedValidationError[];
|
|
147
|
+
readonly httpStatus?: number;
|
|
148
|
+
readonly message: string;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
interface PayloadTooLargeError extends HttpErrorLike {
|
|
152
|
+
readonly type?: string;
|
|
153
|
+
}
|
|
154
|
+
|
|
40
155
|
declare class RoutePrefix {
|
|
41
156
|
private readonly value;
|
|
42
157
|
static fromEnvironment(value: string | undefined): RoutePrefix;
|
|
@@ -46,4 +161,4 @@ declare class RoutePrefix {
|
|
|
46
161
|
toString(): string;
|
|
47
162
|
}
|
|
48
163
|
|
|
49
|
-
export { ExpressKernelServer, type ExpressKernelServerOptions, type HttpApp, type HttpServer, RoutePrefix };
|
|
164
|
+
export { type ErrorExplanation, type ErrorResponseHandler, type ExpressAppHook, type ExpressController, type ExpressHookPhase, ExpressKernelServer, type ExpressKernelServerOptions, type ExpressPhaseHook, type FormattedValidationError, type HttpApp, HttpErrorHandler, type HttpErrorHandlerOptions, type HttpErrorLike, type HttpErrorResponse, type HttpServer, type PayloadTooLargeError, RoutePrefix, type ValidationError };
|