UNPKG

nest-commander

Version:

A module for making CLI applications with NestJS. Decorators for running commands and separating out config parsers included. This package works on top of commander.

371 lines (219 loc) 9.56 kB
# nest-commander ## 3.17.0 ### Minor Changes - 97ef074: Two new options exist, `allowUnknownOptions` and `allowExcessArgs`. Both are optional booleans that will tell the underlying commander command to allow for extra options and arguments, as is already supported by commander. ## 3.16.1 ### Patch Changes - f2d6228: Support dynamic modules in `CommandFactory.run()` ## 3.16.0 ### Minor Changes - ce3d4f4: Support NestJS v11 ## 3.15.0 ### Minor Changes - 886be2d: feat: allow async `serviceErrorHandler` method ## 3.14.0 ### Minor Changes - 1cdac14: feat: Add option for Help Configuration using the .configureHelp() function in commander js ## 3.13.0 ### Minor Changes - c29737c: Enhance filesystem autocomplete support for Bash and Zsh by introducing an opt-in option based on an environment variable. ## 3.12.5 ### Patch Changes - 72b2a00: Move the fig completion package to an optional import to get around jest throwing an error about esm packages ## 3.12.4 ### Patch Changes - 0a47417: Update commnader version to satisfy fig-completion ## 3.12.3 ### Patch Changes - e66901a: update package @fig/complete-commander to v3.0.0 to support commander v11 ## 3.12.2 ### Patch Changes - 15297ce: Use attributeName to handle dashed options ## 3.12.1 ### Patch Changes - a3b683d: Remap the options to the name passed in the `@Options()` decorator, if provided ## 3.12.0 ### Minor Changes - b2c6a13: feat: support completion factory for bash and zsh shells ## 3.11.1 ### Patch Changes - 8cc3109: The CommandRunnerService now re-throws the error regardless of the contents, it just adds a new log above the error as well ## 3.11.0 ### Minor Changes - a97ab68: Add The possibility to set the global version option ## 3.10.0 ### Minor Changes - 519018e: Add ability to set outputConfiguration. Now CommandFactory.run(), CommandFactory.runWithoutClosing() and CommandFactory.createWithoutRunning() accept the option `outputConfiguration`. ## 3.9.0 ### Minor Changes - 1fa92a0: Support NestJS v10 ## 3.8.0 ### Minor Changes - 6cc1112: Add ability to pass NestApplicationContextOptions to CommandFactoryRunOptions. Now CommandFactory.createWithoutRunning() can accept more options, for example, bufferLogs to pre-save Nest startup logs. ## 3.7.1 ### Patch Changes - 1ceab9d: Log error and stack wtih custom error message instead of just custom error message ## 3.7.0 ### Minor Changes - 9a5f555: Add a new method to create an application but nott run it in case of needing to modify the logger or similar situations. Now the `CommandFactory.createWithoutRunning()` method can be used to create a Nest commander application without running the `commandRunner.run()`. To run the newly created application, `CommandFactory.runApplicaiton(app)` can be called. I may change this to be a simple `app.run()` in the future. ## 3.6.3 ### Patch Changes - 84b5067: Adds support for positional options and passthrough options ## 3.6.2 ### Patch Changes - 6fb3d91: Fix the Inquirer type to work above `@types/inquirer@8.2.1` ## 3.6.1 ### Patch Changes - c35e8cc: Fixed issue with parsing serviceErrorHandler option to properly override default behaviour ## 3.6.0 ### Minor Changes - 7f54ff8: Add serviceErrorHandler option This option allows for catching and handling errors at the Nest service execution level so that lifecycle hooks still properly work. By default it is set to `(err: Error) => process.stderr.write(err.toString())`. - 09b6134: Add the ability to have a Root command With the `@RootCommand()` the `-h` flag can now output the options of the default command _along with_ the names of the other commands. ## 3.5.0 ### Minor Changes - d2e5fc8: Allow for use of request scoped providers through a new module decorator By making use of the `@RequestModule()` decorator for modules, as mock request object can be set as a singleton to help the use of `REQUEST` scoped providers in a singleton context. There's now also an error that is logged in the case of a property of `undefined` being called, as this is usually indicative of a `REQUEST` scoped provider being called from a `SINGLETON` context. ## 3.4.0 ### Minor Changes - fadb70d: Allow for a sub command to be set as the default sub command. - 74c88f5: Add new api registerWithSubCommand to CommandRunner Class - abff78d: Allow for options to be parsed positionally via an option passed to CommandFactory ## 3.3.0 ### Minor Changes - 8c639d3: fix: update module resolution to node16 so dynamic imports are not transpiled out during TS build ## 3.2.1 ### Patch Changes - 5c089a6: Fixed an issue preventing use of ESM packages as plugins in the command factory ## 3.2.0 ### Minor Changes - 84e6b95: Add `env` option to `@Option()` decorator ## 3.1.0 ### Minor Changes - 15da048: InquirerService now exposes inquirer publicly ## 3.0.0 ### Major Changes - d6ebe0e: Migrate `CommandRunner` from interface to abstract class and add `.command` This change was made so that devs could access `this.command` inside the `CommandRunner` instance and have access to the base command object from commander. This allows for access to the `help` commands in a programatic fashion. To update to this version, any `implements CommandRunner` should be changed to `extends CommandRunner`. If there is a `constructor` to the `CommandRunner` then it should also use `super()`. ### Minor Changes - 3d2aa9e: Update NestJS package to version 9 - a8d109f: Upgrade commander to v9.4.0 ### Patch Changes - c30a4de: Ensure the parser for choices is always called ## 2.5.0 ### Minor Changes - 2d8a143: Added support for aliased subcommands - 6e39331: Allow for command options to have defined choices Option choices are now supported either as a static string array or via the `@OptionChoicesFor()` decorator on a class method. This decorator method approach allows for using a class's injected providers to give the chocies, which means they could come from a database or a config file somewhere if the CLI is set up to handle such a case ## 2.4.0 ### Minor Changes - eaa63fb: Adds a new CliUtilityService and @InjectCommander() decorator There is a new `CliUtilityService` and `@InjectCommander()` decorator that allows for direct access to the commander instance. The utility service has methods like `parseBoolean`, `parseInt`, and `parseFloat`. The number parsing methods are just simple wrappers around `Number.parse*()`, but the boolean parsing method handles true being `yes`, `y`, `1`, `true`, and `t` and false being `no`, `n`, `false`, `f`, and `0`. ## 2.3.5 ### Patch Changes - 55eb46d: Update peerDependencies for nest-commander to include @types/inquirer ## 2.3.4 ### Patch Changes - 3ad2c3a: Add cosmiconfig to the dependencies for proper publishing ## 2.3.3 ### Patch Changes - 8285a98: missing config file warning doesn't show ## 2.3.2 ### Patch Changes - 3c43005: fix: move plugin error code to onModuleInit ## 2.3.1 ### Patch Changes - 478c0d9: Make commands built with `usePlugins: true` not exit on non-found config file, just log extra data when an error happens ## 2.3.0 ### Minor Changes - 6c9eaa3: Commands can now be built with the expectation of reading in plugins to dynamically modify the CLI By using the `usePlugins` option for the `CommandFactory`, the built CLI can expect to find a configuration file at `nest-commander.json` (or several others, check the docs) to allow for users to plug commands in after the CLI is built. - 13723bd: Subcommands can now be created There's a new decorator, `@SubCommand()` for creating nested commands like `docker compose up`. There's also a new option on `@Command()` (`subCommands`) for setting up this sub command relationship. ## 2.2.0 ### Minor Changes - 3831e52: Adds a new `@Help()` decorator for custom commander help output `nest-commander-testing` now also uses a `hex` instead of `utf-8` encoding when creating a random js file name during the `CommandTestFactory` command. This is to help create more predictable output names. ## 2.1.0 ### Minor Changes - 6df8964: Adds in a new metadata option for the @Option() decorator to make the option required, just like a required argument ## 2.0.0 ### Major Changes - ee001cc: Upgrade all Nest dependencies to version 8 WHAT: Upgrade `@nestjs/` dependencies to v8 and RxJS to v7 WHY: To support the latest version of Nest HOW: upgrading to Nest v8 should be all that's necessary (along with rxjs to v7) ## 1.3.0 ### Minor Changes - f3f687b: Allow for commands to be run indefinitely There is a new `runWithoutClosing` method in the `CommandFactory` class. This command allows for not having the created Nest Application get closed immediately, which should allow for the use of indefinitely runnable commands. ## 1.2.0 ### Minor Changes - 7cce284: Add ability to use error handler for commander errors Within the `CommandFactory.run()` now as a second parameter you can either keep passing just the logger, or you can pass in an object with the logger and an `errorHandler`. Ths `errorHandler` is a method that takes in an `Error` and returns `void`. The errorHandler will be passed to commander's `exitOverride` method, if it exists. This is useful for better handling errors and giving the dev more control over what is seen. There is also no longer an `unhandledPromiseRejection` on empty commands.