bob-core 2.0.0-beta.9 → 2.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.
Files changed (56) hide show
  1. package/README.md +57 -33
  2. package/dist/cjs/package-Blqq-jZJ.cjs +1 -0
  3. package/dist/cjs/src/Cli.d.ts +10 -11
  4. package/dist/cjs/src/Command.d.ts +11 -18
  5. package/dist/cjs/src/CommandIO.d.ts +5 -2
  6. package/dist/cjs/src/CommandParser.d.ts +13 -5
  7. package/dist/cjs/src/CommandRegistry.d.ts +13 -6
  8. package/dist/cjs/src/CommandSignatureParser.d.ts +5 -4
  9. package/dist/cjs/src/CommandWithSignature.d.ts +3 -3
  10. package/dist/cjs/src/ExceptionHandler.d.ts +1 -1
  11. package/dist/cjs/src/Logger.d.ts +1 -1
  12. package/dist/cjs/src/StringSimilarity.d.ts +26 -0
  13. package/dist/cjs/src/commands/HelpCommand.d.ts +1 -1
  14. package/dist/cjs/src/contracts/CommandOption.d.ts +3 -3
  15. package/dist/cjs/src/errors/BadCommandOption.d.ts +2 -1
  16. package/dist/cjs/src/errors/BadCommandParameter.d.ts +2 -1
  17. package/dist/cjs/src/errors/CommandNotFoundError.d.ts +2 -1
  18. package/dist/cjs/src/errors/InvalidOption.d.ts +2 -1
  19. package/dist/cjs/src/errors/MissingRequiredArgumentValue.d.ts +2 -1
  20. package/dist/cjs/src/errors/MissingRequiredOptionValue.d.ts +2 -1
  21. package/dist/cjs/src/index.d.ts +1 -0
  22. package/dist/cjs/src/index.js +17 -0
  23. package/dist/cjs/src/lib/types.d.ts +4 -2
  24. package/dist/cjs/src/options/HelpOption.d.ts +1 -1
  25. package/dist/esm/package-DbMvpGfM.js +33 -0
  26. package/dist/esm/src/Cli.d.ts +10 -11
  27. package/dist/esm/src/Command.d.ts +11 -18
  28. package/dist/esm/src/CommandIO.d.ts +5 -2
  29. package/dist/esm/src/CommandParser.d.ts +13 -5
  30. package/dist/esm/src/CommandRegistry.d.ts +13 -6
  31. package/dist/esm/src/CommandSignatureParser.d.ts +5 -4
  32. package/dist/esm/src/CommandWithSignature.d.ts +3 -3
  33. package/dist/esm/src/ExceptionHandler.d.ts +1 -1
  34. package/dist/esm/src/Logger.d.ts +1 -1
  35. package/dist/esm/src/StringSimilarity.d.ts +26 -0
  36. package/dist/esm/src/commands/HelpCommand.d.ts +1 -1
  37. package/dist/esm/src/contracts/CommandOption.d.ts +3 -3
  38. package/dist/esm/src/errors/BadCommandOption.d.ts +2 -1
  39. package/dist/esm/src/errors/BadCommandParameter.d.ts +2 -1
  40. package/dist/esm/src/errors/CommandNotFoundError.d.ts +2 -1
  41. package/dist/esm/src/errors/InvalidOption.d.ts +2 -1
  42. package/dist/esm/src/errors/MissingRequiredArgumentValue.d.ts +2 -1
  43. package/dist/esm/src/errors/MissingRequiredOptionValue.d.ts +2 -1
  44. package/dist/esm/src/index.d.ts +1 -0
  45. package/dist/esm/src/index.js +1029 -0
  46. package/dist/esm/src/lib/types.d.ts +4 -2
  47. package/dist/esm/src/options/HelpOption.d.ts +1 -1
  48. package/package.json +28 -21
  49. package/dist/cjs/index.d.ts +0 -2
  50. package/dist/cjs/index.js +0 -21
  51. package/dist/cjs/package-BpbpSdBI.cjs +0 -1
  52. package/dist/cjs/src/testFixtures.d.ts +0 -11
  53. package/dist/esm/index.d.ts +0 -2
  54. package/dist/esm/index.js +0 -1247
  55. package/dist/esm/package-CjHUTRfV.js +0 -31
  56. package/dist/esm/src/testFixtures.d.ts +0 -11
@@ -0,0 +1,33 @@
1
+ const t = "bob-core", s = "2.0.0", e = "BOB Core", i = "module", n = "./dist/cjs/src/index.js", r = "./dist/esm/src/index.js", c = "./dist/esm/src/index.d.ts", o = ["dist"], d = { ".": { import: { types: "./dist/esm/src/index.d.ts", default: "./dist/esm/src/index.js" }, require: { types: "./dist/cjs/src/index.d.ts", default: "./dist/cjs/src/index.js" } } }, p = { start: "node -r @swc-node/register debug/main.ts", build: "rimraf ./dist && vite build", typecheck: "tsc --noEmit", prepack: "npm run build", test: "vitest run", lint: "eslint .", "lint:fix": "eslint . --fix" }, l = "Léo Hubert", m = "ISC", a = { "@eslint/js": "^9.37.0", "@faker-js/faker": "^10.0.0", "@swc-node/register": "^1.11.1", "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/minimist": "^1.2.5", "@types/node": "^20.14.5", "@types/prompts": "^2.4.9", "@types/string-similarity": "^4.0.2", "@vitest/coverage-v8": "^3.2.4", eslint: "^9.37.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.4", prettier: "^3.6.2", rimraf: "^6.0.1", tsx: "^4.20.6", typescript: "^5.9.3", "typescript-eslint": "^8.46.0", vite: "^7.2.7", "vite-plugin-dts": "^4.5.4", vitest: "^3.2.4" }, u = { chalk: "^4.1.2", minimist: "^1.2.8", prompts: "^2.4.2" }, x = {
2
+ name: t,
3
+ version: s,
4
+ description: e,
5
+ type: i,
6
+ main: n,
7
+ module: r,
8
+ types: c,
9
+ files: o,
10
+ exports: d,
11
+ scripts: p,
12
+ author: l,
13
+ license: m,
14
+ devDependencies: a,
15
+ dependencies: u
16
+ };
17
+ export {
18
+ l as author,
19
+ x as default,
20
+ u as dependencies,
21
+ e as description,
22
+ a as devDependencies,
23
+ d as exports,
24
+ o as files,
25
+ m as license,
26
+ n as main,
27
+ r as module,
28
+ t as name,
29
+ p as scripts,
30
+ i as type,
31
+ c as types,
32
+ s as version
33
+ };
@@ -1,23 +1,22 @@
1
- import { CommandRegistry, CommandResolver, FileImporter } from './CommandRegistry.js';
2
- import { default as HelpCommand, HelpCommandOptions } from './commands/HelpCommand.js';
3
- import { ExceptionHandler } from './ExceptionHandler.js';
4
1
  import { Command } from './Command.js';
2
+ import { CommandRegistry, CommandRegistryOptions, CommandResolver, FileImporter } from './CommandRegistry.js';
3
+ import { ExceptionHandler } from './ExceptionHandler.js';
5
4
  import { Logger } from './Logger.js';
6
- export type CliOptions<C = any> = {
5
+ import { default as HelpCommand, HelpCommandOptions } from './commands/HelpCommand.js';
6
+ import { ContextDefinition, OptionsSchema } from './lib/types.js';
7
+ export type CliOptions<C extends ContextDefinition = ContextDefinition> = {
7
8
  ctx?: C;
8
9
  name?: string;
9
10
  version?: string;
10
11
  logger?: Logger;
11
12
  };
12
- export declare class Cli<C = any> {
13
+ export declare class Cli<C extends ContextDefinition = ContextDefinition> {
13
14
  private readonly ctx?;
14
15
  private readonly logger;
15
16
  readonly commandRegistry: CommandRegistry;
16
17
  private readonly exceptionHandler;
17
18
  private readonly helpCommand;
18
- protected newCommandRegistry(opts: {
19
- logger: Logger;
20
- }): CommandRegistry;
19
+ protected newCommandRegistry(opts: CommandRegistryOptions): CommandRegistry;
21
20
  protected newHelpCommand(opts: HelpCommandOptions): HelpCommand;
22
21
  protected newExceptionHandler(opts: {
23
22
  logger: Logger;
@@ -25,10 +24,10 @@ export declare class Cli<C = any> {
25
24
  constructor(opts?: CliOptions<C>);
26
25
  withCommandResolver(resolver: CommandResolver): this;
27
26
  withFileImporter(importer: FileImporter): this;
28
- withCommands(...commands: Array<Command<C, any, any> | {
27
+ withCommands(...commands: Array<Command<C, OptionsSchema, OptionsSchema> | {
29
28
  new (): Command<C>;
30
29
  } | string>): Promise<void>;
31
- runCommand(command: string | Command | undefined, ...args: any[]): Promise<number>;
30
+ runCommand(command: string | Command | undefined, ...args: string[]): Promise<number>;
32
31
  runHelpCommand(): Promise<number>;
33
- protected registerCommand(command: Command<C>): void;
32
+ protected registerCommand(command: Command<C, OptionsSchema, OptionsSchema>): void;
34
33
  }
@@ -1,30 +1,27 @@
1
- import { OptionsSchema, OptionsObject, ArgumentsSchema, ArgumentsObject } from './lib/types.js';
1
+ import { CommandIO, CommandIOOptions } from './CommandIO.js';
2
2
  import { CommandParser } from './CommandParser.js';
3
- import { CommandOption } from './contracts/index.js';
4
- import { CommandIO } from './CommandIO.js';
5
3
  import { Logger } from './Logger.js';
4
+ import { CommandOption } from './contracts/index.js';
5
+ import { ArgumentsObject, ArgumentsSchema, ContextDefinition, OptionsObject, OptionsSchema } from './lib/types.js';
6
6
  export type CommandHandlerOptions<Options extends OptionsSchema, Arguments extends ArgumentsSchema> = {
7
7
  options: OptionsObject<Options>;
8
8
  arguments: ArgumentsObject<Arguments>;
9
9
  };
10
- export type CommandHandler<C, Options extends OptionsSchema, Arguments extends ArgumentsSchema> = (ctx: C, opts: CommandHandlerOptions<Options, Arguments>) => Promise<number | void> | number | void;
11
- type BaseCommandRunOption<C> = {
10
+ export type CommandHandler<C extends ContextDefinition, Options extends OptionsSchema, Arguments extends ArgumentsSchema> = (ctx: C, opts: CommandHandlerOptions<Options, Arguments>) => Promise<number | void> | number | void;
11
+ export type CommandRunOption<C, Options extends OptionsSchema, Arguments extends ArgumentsSchema> = {
12
12
  logger: Logger;
13
13
  ctx: C;
14
- };
15
- export type CommandRunArgsOption<C> = {
14
+ } & ({
16
15
  args: string[];
17
- } & BaseCommandRunOption<C>;
18
- export type CommandRunParsedOption<C, Options extends OptionsSchema, Arguments extends ArgumentsSchema> = {
16
+ } | {
19
17
  options: OptionsObject<Options>;
20
18
  arguments: ArgumentsObject<Arguments>;
21
- } & BaseCommandRunOption<C>;
22
- export type CommandRunOption<C, Options extends OptionsSchema, Arguments extends ArgumentsSchema> = CommandRunArgsOption<C> | CommandRunParsedOption<C, Options, Arguments>;
19
+ });
23
20
  export type CommandExample = {
24
21
  description: string;
25
22
  command: string;
26
23
  };
27
- export declare class Command<C = any, Options extends OptionsSchema = {}, Arguments extends ArgumentsSchema = {}> {
24
+ export declare class Command<C extends ContextDefinition = ContextDefinition, Options extends OptionsSchema = OptionsSchema, Arguments extends ArgumentsSchema = ArgumentsSchema> {
28
25
  readonly _command: string;
29
26
  readonly description: string;
30
27
  readonly group?: string;
@@ -32,7 +29,6 @@ export declare class Command<C = any, Options extends OptionsSchema = {}, Argume
32
29
  get command(): string;
33
30
  protected ctx: C;
34
31
  protected io: CommandIO;
35
- protected logger: Logger;
36
32
  protected parser: CommandParser<Options, Arguments>;
37
33
  protected disablePromptingFlag: boolean;
38
34
  protected preHandle?(): Promise<void | number>;
@@ -40,15 +36,13 @@ export declare class Command<C = any, Options extends OptionsSchema = {}, Argume
40
36
  protected handle?(ctx: C, opts: CommandHandlerOptions<Options, Arguments>): Promise<number | void> | number | void;
41
37
  protected _handler?: CommandHandler<C, Options, Arguments>;
42
38
  private tmp?;
43
- protected defaultOptions(): CommandOption<Command<any, any, any>>[];
39
+ protected defaultOptions(): CommandOption<Command>[];
44
40
  protected newCommandParser(opts: {
45
41
  io: CommandIO;
46
42
  options: Options;
47
43
  arguments: Arguments;
48
44
  }): CommandParser<Options, Arguments>;
49
- protected newCommandIO(opts: {
50
- logger: Logger;
51
- }): CommandIO;
45
+ protected newCommandIO(opts: CommandIOOptions): CommandIO;
52
46
  constructor(command: string, opts?: {
53
47
  description?: string;
54
48
  group?: string;
@@ -62,4 +56,3 @@ export declare class Command<C = any, Options extends OptionsSchema = {}, Argume
62
56
  arguments<Args extends ArgumentsSchema>(args: Args): Command<C, Options, Arguments & Args>;
63
57
  run(opts: CommandRunOption<C, Options, Arguments>): Promise<number | void>;
64
58
  }
65
- export {};
@@ -6,9 +6,12 @@ export type SelectOption = {
6
6
  selected?: boolean | undefined;
7
7
  description?: string | undefined;
8
8
  };
9
+ export type CommandIOOptions = {
10
+ logger: Logger;
11
+ };
9
12
  export declare class CommandIO {
10
13
  private logger;
11
- constructor(logger: Logger);
14
+ constructor(opts: CommandIOOptions);
12
15
  /**
13
16
  * Logger methods
14
17
  */
@@ -32,7 +35,7 @@ export declare class CommandIO {
32
35
  mask?: string;
33
36
  }): Promise<Date | null>;
34
37
  askForList(message: string, defaultValue?: string | number, opts?: {
35
- validate?: (value: string[]) => boolean | string;
38
+ validate?: (value: string) => boolean | string;
36
39
  format?: (value: string) => string;
37
40
  separator?: string;
38
41
  }): Promise<string[] | null>;
@@ -1,6 +1,6 @@
1
- import { OptionsSchema, OptionReturnType, OptionsObject, OptionDefinition } from './lib/types.js';
2
- import { OptionDetails } from './lib/optionHelpers.js';
3
1
  import { CommandIO } from './CommandIO.js';
2
+ import { OptionDetails } from './lib/optionHelpers.js';
3
+ import { OptionDefinition, OptionReturnType, OptionsObject, OptionsSchema } from './lib/types.js';
4
4
  /**
5
5
  * Parses command-line arguments into typed options and arguments
6
6
  * Handles validation, type conversion, and default values
@@ -21,7 +21,7 @@ export declare class CommandParser<Options extends OptionsSchema, Arguments exte
21
21
  * Parses raw command-line arguments into structured options and arguments
22
22
  * @param args - Raw command line arguments (typically from process.argv.slice(2))
23
23
  * @returns Object containing parsed options and arguments
24
- * @throws {InvalidOption} If an unknown option is provided
24
+ * @throws {InvalidOption} If an naan option is provided
25
25
  * @throws {BadCommandOption} If a value cannot be converted to the expected type
26
26
  */
27
27
  init(args: string[]): {
@@ -36,19 +36,27 @@ export declare class CommandParser<Options extends OptionsSchema, Arguments exte
36
36
  /**
37
37
  * Retrieves a parsed option value by name
38
38
  * @param name - The option name
39
+ * @param defaultValue - Optional default value if option is not set
39
40
  * @returns The typed option value
40
41
  * @throws {Error} If init() has not been called yet
41
42
  */
42
- option<OptsName extends keyof Options>(name: OptsName): OptionReturnType<Options[OptsName]>;
43
+ option<OptsName extends keyof Options>(name: OptsName, defaultValue?: OptionReturnType<Options[OptsName]>): OptionReturnType<Options[OptsName]>;
43
44
  setOption<OptsName extends keyof Options>(name: OptsName, value: OptionReturnType<Options[OptsName]>): void;
44
45
  /**
45
46
  * Retrieves a parsed argument value by name
46
47
  * @param name - The argument name
48
+ * @param defaultValue - Optional default value if argument is not set
47
49
  * @returns The typed argument value
48
50
  * @throws {Error} If init() has not been called yet
49
51
  */
50
- argument<ArgName extends keyof Arguments>(name: ArgName): OptionReturnType<Arguments[ArgName]>;
52
+ argument<ArgName extends keyof Arguments>(name: ArgName, defaultValue?: OptionReturnType<Arguments[ArgName]>): OptionReturnType<Arguments[ArgName]>;
51
53
  setArgument<ArgName extends keyof Arguments>(name: ArgName, value: OptionReturnType<Arguments[ArgName]>): void;
54
+ /**
55
+ * Checks if a value should be considered "empty" for default value purposes
56
+ * @param value - The value to check
57
+ * @returns true if the value is null, undefined, or an empty array
58
+ */
59
+ private isEmptyValue;
52
60
  /**
53
61
  * Validates that all provided options are recognized
54
62
  * @throws {InvalidOption} If an unknown option is found
@@ -1,23 +1,30 @@
1
- import { CommandIO } from './CommandIO.js';
2
1
  import { Command } from './Command.js';
2
+ import { CommandIO, CommandIOOptions } from './CommandIO.js';
3
3
  import { Logger } from './Logger.js';
4
+ import { StringSimilarity } from './StringSimilarity.js';
5
+ import { ArgumentsSchema, ContextDefinition, OptionsSchema } from './lib/types.js';
4
6
  export type CommandResolver = (path: string) => Promise<Command | null>;
5
- export type FileImporter = (filePath: string) => Promise<any>;
7
+ export type FileImporter = (filePath: string) => Promise<unknown>;
8
+ export type CommandRegistryOptions = {
9
+ logger?: Logger;
10
+ stringSimilarity?: StringSimilarity;
11
+ };
6
12
  export declare class CommandRegistry {
7
13
  private readonly commands;
8
14
  protected readonly io: CommandIO;
9
15
  protected readonly logger: Logger;
10
- protected get CommandIOClass(): typeof CommandIO;
11
- constructor(logger?: Logger);
16
+ private readonly stringSimilarity;
17
+ protected newCommandIO(opts: CommandIOOptions): CommandIO;
18
+ constructor(opts?: CommandRegistryOptions);
12
19
  getAvailableCommands(): string[];
13
20
  getCommands(): Array<Command>;
14
21
  private importFile;
15
22
  private commandResolver;
16
23
  withCommandResolver(resolver: CommandResolver): this;
17
24
  withFileImporter(importer: FileImporter): this;
18
- registerCommand(command: Command<any, any, any>, force?: boolean): void;
25
+ registerCommand<C extends ContextDefinition = ContextDefinition, Opts extends OptionsSchema = OptionsSchema, Args extends ArgumentsSchema = ArgumentsSchema>(command: Command<C, Opts, Args>, force?: boolean): void;
19
26
  loadCommandsPath(commandsPath: string): Promise<void>;
20
- runCommand(ctx: any, command: string | Command, ...args: any[]): Promise<number>;
27
+ runCommand(ctx: ContextDefinition, command: string | Command, ...args: string[]): Promise<number>;
21
28
  private suggestCommand;
22
29
  private askRunSimilarCommand;
23
30
  private listCommandsFiles;
@@ -1,12 +1,13 @@
1
- import { CommandOption } from './contracts/index.js';
1
+ import { Command } from './Command.js';
2
2
  import { CommandIO } from './CommandIO.js';
3
- import { OptionsSchema } from './lib/types.js';
4
3
  import { CommandParser } from './CommandParser.js';
4
+ import { CommandOption } from './contracts/index.js';
5
+ import { OptionsSchema } from './lib/types.js';
5
6
  /**
6
7
  * Extends CommandParser to parse command signatures like "command {arg} {--option}"
7
8
  * Handles interactive prompting for missing required arguments via CommandIO
8
9
  */
9
- export declare class CommandSignatureParser<Opts extends OptionsSchema = any, Args extends OptionsSchema = any> extends CommandParser<Opts, Args> {
10
+ export declare class CommandSignatureParser<Opts extends OptionsSchema = OptionsSchema, Args extends OptionsSchema = OptionsSchema> extends CommandParser<Opts, Args> {
10
11
  readonly command: string;
11
12
  constructor(opts: {
12
13
  io: CommandIO;
@@ -14,7 +15,7 @@ export declare class CommandSignatureParser<Opts extends OptionsSchema = any, Ar
14
15
  helperDefinitions: {
15
16
  [key: string]: string;
16
17
  };
17
- defaultOptions: CommandOption<any>[];
18
+ defaultOptions: CommandOption<Command>[];
18
19
  });
19
20
  /**
20
21
  * Parses command signature string into command name and parameter schemas
@@ -1,15 +1,15 @@
1
1
  import { Command, CommandHandlerOptions } from './Command.js';
2
2
  import { CommandIO } from './CommandIO.js';
3
3
  import { CommandSignatureParser } from './CommandSignatureParser.js';
4
- import { OptionsSchema } from './lib/types.js';
5
- export declare abstract class CommandWithSignature<C = any, Opts extends OptionsSchema = {}, Args extends OptionsSchema = {}> extends Command<C, Opts, Args> {
4
+ import { ContextDefinition, OptionsSchema } from './lib/types.js';
5
+ export declare abstract class CommandWithSignature<C extends ContextDefinition = ContextDefinition, Opts extends OptionsSchema = OptionsSchema, Args extends OptionsSchema = OptionsSchema> extends Command<C, Opts, Args> {
6
6
  abstract signature: string;
7
7
  abstract description: string;
8
8
  protected helperDefinitions: {
9
9
  [key: string]: string;
10
10
  };
11
+ protected parser: CommandSignatureParser<Opts, Args>;
11
12
  get command(): string;
12
- parser: CommandSignatureParser<Opts, Args>;
13
13
  protected newCommandParser(opts: {
14
14
  io: CommandIO;
15
15
  options: Opts;
@@ -1,5 +1,5 @@
1
- import { BobError } from './errors/index.js';
2
1
  import { Logger } from './Logger.js';
2
+ import { BobError } from './errors/index.js';
3
3
  export declare class ExceptionHandler {
4
4
  private readonly logger;
5
5
  constructor(logger: Logger);
@@ -1,4 +1,4 @@
1
- import { LoggerContract, LogLevel } from './contracts/index.js';
1
+ import { LogLevel, LoggerContract } from './contracts/index.js';
2
2
  export type LoggerOptions = {
3
3
  level?: LogLevel;
4
4
  };
@@ -0,0 +1,26 @@
1
+ export interface SimilarityResult {
2
+ rating: number;
3
+ target: string;
4
+ }
5
+ export interface BestMatchResult {
6
+ bestMatch: SimilarityResult;
7
+ bestMatchIndex: number;
8
+ ratings: SimilarityResult[];
9
+ }
10
+ /**
11
+ * String similarity calculator using Dice's Coefficient algorithm
12
+ */
13
+ export declare class StringSimilarity {
14
+ /**
15
+ * Generate bigrams (character pairs) from a string
16
+ */
17
+ private getBigrams;
18
+ /**
19
+ * Calculate Dice's Coefficient similarity between two strings (0-1 scale)
20
+ */
21
+ calculateSimilarity(str1: string, str2: string): number;
22
+ /**
23
+ * Find best matching string and ratings for all candidates
24
+ */
25
+ findBestMatch(target: string, candidates: string[]): BestMatchResult;
26
+ }
@@ -1,5 +1,5 @@
1
- import { CommandRegistry } from '../CommandRegistry.js';
2
1
  import { Command } from '../Command.js';
2
+ import { CommandRegistry } from '../CommandRegistry.js';
3
3
  export type HelpCommandOptions = {
4
4
  commandRegistry: CommandRegistry;
5
5
  cliName?: string;
@@ -1,6 +1,6 @@
1
- import { OptionDefinition } from '../lib/types.js';
2
1
  import { Command } from '../Command.js';
3
- export interface CommandOption<C extends Command> extends OptionDefinition {
2
+ import { OptionDefinition } from '../lib/types.js';
3
+ export interface CommandOption<Cmd extends Command> extends OptionDefinition {
4
4
  option: string;
5
- handler(this: C): Promise<number | void>;
5
+ handler(this: Cmd): Promise<number | void>;
6
6
  }
@@ -1,3 +1,4 @@
1
+ import { Logger } from '../Logger.js';
1
2
  import { BobError } from './BobError.js';
2
3
  export type OptionProps = {
3
4
  option: string;
@@ -7,5 +8,5 @@ export type OptionProps = {
7
8
  export declare class BadCommandOption extends BobError {
8
9
  readonly param: OptionProps;
9
10
  constructor(param: OptionProps);
10
- pretty(io: any): void;
11
+ pretty(logger: Logger): void;
11
12
  }
@@ -1,3 +1,4 @@
1
+ import { Logger } from '../Logger.js';
1
2
  import { BobError } from './BobError.js';
2
3
  export type ParameterProps = {
3
4
  param: string;
@@ -7,5 +8,5 @@ export type ParameterProps = {
7
8
  export declare class BadCommandParameter extends BobError {
8
9
  readonly param: ParameterProps;
9
10
  constructor(param: ParameterProps);
10
- pretty(io: any): void;
11
+ pretty(logger: Logger): void;
11
12
  }
@@ -1,6 +1,7 @@
1
+ import { Logger } from '../Logger.js';
1
2
  import { BobError } from './BobError.js';
2
3
  export declare class CommandNotFoundError extends BobError {
3
4
  readonly command: string;
4
5
  constructor(command: string);
5
- pretty(io: any): void;
6
+ pretty(logger: Logger): void;
6
7
  }
@@ -1,8 +1,9 @@
1
+ import { Logger } from '../Logger.js';
1
2
  import { BobError } from './BobError.js';
2
3
  import { OptionsSchema } from '../lib/types.js';
3
4
  export declare class InvalidOption extends BobError {
4
5
  private option;
5
6
  private optionsSchema;
6
7
  constructor(option: string, optionsSchema?: OptionsSchema);
7
- pretty(io: any): void;
8
+ pretty(logger: Logger): void;
8
9
  }
@@ -1,6 +1,7 @@
1
+ import { Logger } from '../Logger.js';
1
2
  import { BobError } from './BobError.js';
2
3
  export declare class MissingRequiredArgumentValue extends BobError {
3
4
  readonly argument: string;
4
5
  constructor(argument: string);
5
- pretty(io: any): void;
6
+ pretty(logger: Logger): void;
6
7
  }
@@ -1,6 +1,7 @@
1
+ import { Logger } from '../Logger.js';
1
2
  import { BobError } from './BobError.js';
2
3
  export declare class MissingRequiredOptionValue extends BobError {
3
4
  readonly option: string;
4
5
  constructor(option: string);
5
- pretty(io: any): void;
6
+ pretty(logger: Logger): void;
6
7
  }
@@ -7,6 +7,7 @@ export * from './CommandRegistry.js';
7
7
  export * from './Cli.js';
8
8
  export * from './Logger.js';
9
9
  export * from './ExceptionHandler.js';
10
+ export * from './StringSimilarity.js';
10
11
  export * from './lib/types.js';
11
12
  export * from './errors/index.js';
12
13
  export * from './options/index.js';