From 886be2de8b8566ac5c4a9d790ef77b9dca78e6c2 Mon Sep 17 00:00:00 2001 From: Oleg Coroliov Date: Wed, 14 Aug 2024 02:11:09 +0300 Subject: [PATCH] feat: allow async `serviceErrorHandler` method --- .changeset/late-snakes-join.md | 5 +++++ packages/nest-commander/src/command-factory.interface.ts | 3 ++- packages/nest-commander/src/command-runner.service.ts | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .changeset/late-snakes-join.md diff --git a/.changeset/late-snakes-join.md b/.changeset/late-snakes-join.md new file mode 100644 index 00000000..9c41e417 --- /dev/null +++ b/.changeset/late-snakes-join.md @@ -0,0 +1,5 @@ +--- +'nest-commander': minor +--- + +feat: allow async `serviceErrorHandler` method diff --git a/packages/nest-commander/src/command-factory.interface.ts b/packages/nest-commander/src/command-factory.interface.ts index 63181be0..4f85cb55 100644 --- a/packages/nest-commander/src/command-factory.interface.ts +++ b/packages/nest-commander/src/command-factory.interface.ts @@ -4,6 +4,7 @@ import { Help, OutputConfiguration } from 'commander'; import type { CompletionFactoryOptions } from './completion.factory.interface'; export type ErrorHandler = (err: Error) => void; +export type ServiceErrorHandler = (err: Error) => PromiseLike | void; export type NestLogger = LoggerService | LogLevel[] | false; export interface DefinedCommandFactoryRunOptions @@ -18,7 +19,7 @@ export interface CommandFactoryRunOptions errorHandler?: ErrorHandler; usePlugins?: boolean; cliName?: string; - serviceErrorHandler?: ErrorHandler; + serviceErrorHandler?: ServiceErrorHandler; enablePositionalOptions?: boolean; enablePassThroughOptions?: boolean; outputConfiguration?: OutputConfiguration; diff --git a/packages/nest-commander/src/command-runner.service.ts b/packages/nest-commander/src/command-runner.service.ts index ea53b9bf..1a1995a6 100644 --- a/packages/nest-commander/src/command-runner.service.ts +++ b/packages/nest-commander/src/command-runner.service.ts @@ -61,8 +61,9 @@ ${cliPluginError( this.commander.exitOverride(this.options.errorHandler); } if (!this.options.serviceErrorHandler) { - this.options.serviceErrorHandler = (err: Error) => + this.options.serviceErrorHandler = (err: Error) => { process.stderr.write(err.toString()); + }; } if (this.options.outputConfiguration) { this.commander.configureOutput(this.options.outputConfiguration);