bob-core 1.3.13 → 2.0.0-beta.1

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 (66) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/index.js +4 -4
  3. package/dist/cjs/package-BKSqoABj.cjs +1 -0
  4. package/dist/cjs/src/Cli.d.ts +17 -10
  5. package/dist/cjs/src/Command.d.ts +47 -34
  6. package/dist/cjs/src/CommandIO.d.ts +12 -0
  7. package/dist/cjs/src/CommandParser.d.ts +76 -44
  8. package/dist/cjs/src/CommandRegistry.d.ts +7 -6
  9. package/dist/cjs/src/CommandSignatureParser.d.ts +85 -0
  10. package/dist/cjs/src/CommandWithSignature.d.ts +37 -0
  11. package/dist/cjs/src/ExceptionHandler.d.ts +3 -0
  12. package/dist/cjs/src/Logger.d.ts +17 -0
  13. package/dist/cjs/src/commands/HelpCommand.d.ts +2 -4
  14. package/dist/cjs/src/contracts/CommandOption.d.ts +3 -4
  15. package/dist/cjs/src/contracts/LoggerContract.d.ts +14 -0
  16. package/dist/cjs/src/contracts/index.d.ts +1 -0
  17. package/dist/cjs/src/errors/BadCommandOption.d.ts +1 -1
  18. package/dist/cjs/src/errors/BadCommandParameter.d.ts +1 -1
  19. package/dist/cjs/src/errors/BobError.d.ts +2 -1
  20. package/dist/cjs/src/errors/CommandNotFoundError.d.ts +1 -1
  21. package/dist/cjs/src/errors/InvalidOption.d.ts +4 -4
  22. package/dist/cjs/src/errors/MissingRequiredArgumentValue.d.ts +3 -4
  23. package/dist/cjs/src/errors/MissingRequiredOptionValue.d.ts +6 -0
  24. package/dist/cjs/src/errors/MissingSignatureArgument.d.ts +4 -4
  25. package/dist/cjs/src/errors/MissingSignatureOption.d.ts +4 -4
  26. package/dist/cjs/src/errors/index.d.ts +6 -0
  27. package/dist/cjs/src/index.d.ts +7 -1
  28. package/dist/cjs/src/lib/optionHelpers.d.ts +5 -0
  29. package/dist/cjs/src/lib/types.d.ts +29 -0
  30. package/dist/cjs/src/lib/valueConverter.d.ts +10 -0
  31. package/dist/cjs/src/options/HelpOption.d.ts +4 -2
  32. package/dist/cjs/src/testFixtures.d.ts +11 -0
  33. package/dist/esm/index.js +817 -371
  34. package/dist/esm/package-Pf7NCMvE.js +31 -0
  35. package/dist/esm/src/Cli.d.ts +17 -10
  36. package/dist/esm/src/Command.d.ts +47 -34
  37. package/dist/esm/src/CommandIO.d.ts +12 -0
  38. package/dist/esm/src/CommandParser.d.ts +76 -44
  39. package/dist/esm/src/CommandRegistry.d.ts +7 -6
  40. package/dist/esm/src/CommandSignatureParser.d.ts +85 -0
  41. package/dist/esm/src/CommandWithSignature.d.ts +37 -0
  42. package/dist/esm/src/ExceptionHandler.d.ts +3 -0
  43. package/dist/esm/src/Logger.d.ts +17 -0
  44. package/dist/esm/src/commands/HelpCommand.d.ts +2 -4
  45. package/dist/esm/src/contracts/CommandOption.d.ts +3 -4
  46. package/dist/esm/src/contracts/LoggerContract.d.ts +14 -0
  47. package/dist/esm/src/contracts/index.d.ts +1 -0
  48. package/dist/esm/src/errors/BadCommandOption.d.ts +1 -1
  49. package/dist/esm/src/errors/BadCommandParameter.d.ts +1 -1
  50. package/dist/esm/src/errors/BobError.d.ts +2 -1
  51. package/dist/esm/src/errors/CommandNotFoundError.d.ts +1 -1
  52. package/dist/esm/src/errors/InvalidOption.d.ts +4 -4
  53. package/dist/esm/src/errors/MissingRequiredArgumentValue.d.ts +3 -4
  54. package/dist/esm/src/errors/MissingRequiredOptionValue.d.ts +6 -0
  55. package/dist/esm/src/errors/MissingSignatureArgument.d.ts +4 -4
  56. package/dist/esm/src/errors/MissingSignatureOption.d.ts +4 -4
  57. package/dist/esm/src/errors/index.d.ts +6 -0
  58. package/dist/esm/src/index.d.ts +7 -1
  59. package/dist/esm/src/lib/optionHelpers.d.ts +5 -0
  60. package/dist/esm/src/lib/types.d.ts +29 -0
  61. package/dist/esm/src/lib/valueConverter.d.ts +10 -0
  62. package/dist/esm/src/options/HelpOption.d.ts +4 -2
  63. package/dist/esm/src/testFixtures.d.ts +11 -0
  64. package/package.json +5 -1
  65. package/dist/cjs/package-CTfVL-rk.cjs +0 -1
  66. package/dist/esm/package-DFkXEfYf.js +0 -31
@@ -0,0 +1,17 @@
1
+ export type LogLevel = 'debug' | 'verbose' | 'info' | 'warn' | 'error' | 'silent';
2
+ export type LoggerOptions = {
3
+ level?: LogLevel;
4
+ };
5
+ export declare class Logger {
6
+ private level;
7
+ constructor(opts?: LoggerOptions);
8
+ private shouldLog;
9
+ setLevel(level: LogLevel): void;
10
+ getLevel(): LogLevel;
11
+ log(...args: any[]): void;
12
+ info(...args: any[]): void;
13
+ warn(...args: any[]): void;
14
+ error(...args: any[]): void;
15
+ debug(...args: any[]): void;
16
+ verbose(...args: any[]): void;
17
+ }
@@ -1,5 +1,5 @@
1
- import { Command } from '../Command.js';
2
1
  import { CommandRegistry } from '../CommandRegistry.js';
2
+ import { Command } from '../Command.js';
3
3
  export type HelpCommandOptions = {
4
4
  commandRegistry: CommandRegistry;
5
5
  cliName?: string;
@@ -7,8 +7,6 @@ export type HelpCommandOptions = {
7
7
  };
8
8
  export default class HelpCommand extends Command {
9
9
  private opts;
10
- signature: string;
11
- description: string;
12
10
  constructor(opts: HelpCommandOptions);
13
- protected handle(): Promise<void>;
11
+ handle(): Promise<void>;
14
12
  }
@@ -1,7 +1,6 @@
1
- export interface CommandOption<C> {
1
+ import { OptionDefinition } from '../lib/types.js';
2
+ import { Command } from '../Command.js';
3
+ export interface CommandOption<C extends Command> extends OptionDefinition {
2
4
  option: string;
3
- alias?: string[];
4
- defaultValue: string | boolean | Array<string> | null;
5
- description?: string;
6
5
  handler(this: C): Promise<number | void>;
7
6
  }
@@ -0,0 +1,14 @@
1
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'verbose';
2
+ /**
3
+ * Logger interface defining standard logging methods and level management
4
+ */
5
+ export interface LoggerContract {
6
+ log(message: string, ...args: any[]): void;
7
+ info(message: string, ...args: any[]): void;
8
+ warn(message: string, ...args: any[]): void;
9
+ error(message: string, ...args: any[]): void;
10
+ debug(message: string, ...args: any[]): void;
11
+ verbose(message: string, ...args: any[]): void;
12
+ setLevel(level: LogLevel): void;
13
+ getLevel(): LogLevel;
14
+ }
@@ -1 +1,2 @@
1
1
  export * from './CommandOption.js';
2
+ export * from './LoggerContract.js';
@@ -7,5 +7,5 @@ export type OptionProps = {
7
7
  export declare class BadCommandOption extends BobError {
8
8
  readonly param: OptionProps;
9
9
  constructor(param: OptionProps);
10
- pretty(): void;
10
+ pretty(io: any): void;
11
11
  }
@@ -7,5 +7,5 @@ export type ParameterProps = {
7
7
  export declare class BadCommandParameter extends BobError {
8
8
  readonly param: ParameterProps;
9
9
  constructor(param: ParameterProps);
10
- pretty(): void;
10
+ pretty(io: any): void;
11
11
  }
@@ -1,3 +1,4 @@
1
+ import { Logger } from '../Logger.js';
1
2
  export declare abstract class BobError extends Error {
2
- abstract pretty(): void;
3
+ abstract pretty(logger: Logger): void;
3
4
  }
@@ -2,5 +2,5 @@ import { BobError } from './BobError.js';
2
2
  export declare class CommandNotFoundError extends BobError {
3
3
  readonly command: string;
4
4
  constructor(command: string);
5
- pretty(): void;
5
+ pretty(io: any): void;
6
6
  }
@@ -1,8 +1,8 @@
1
1
  import { BobError } from './BobError.js';
2
- import { ArgSignature } from '../CommandParser.js';
2
+ import { OptionsSchema } from '../lib/types.js';
3
3
  export declare class InvalidOption extends BobError {
4
4
  private option;
5
- private optionsSignature;
6
- constructor(option: string, optionsSignature: ArgSignature[]);
7
- pretty(): void;
5
+ private optionsSchema;
6
+ constructor(option: string, optionsSchema?: OptionsSchema);
7
+ pretty(io: any): void;
8
8
  }
@@ -1,7 +1,6 @@
1
1
  import { BobError } from './BobError.js';
2
- import { ArgSignature } from '../CommandParser.js';
3
2
  export declare class MissingRequiredArgumentValue extends BobError {
4
- readonly paramSignature: ArgSignature;
5
- constructor(paramSignature: ArgSignature);
6
- pretty(): void;
3
+ readonly argument: string;
4
+ constructor(argument: string);
5
+ pretty(io: any): void;
7
6
  }
@@ -0,0 +1,6 @@
1
+ import { BobError } from './BobError.js';
2
+ export declare class MissingRequiredOptionValue extends BobError {
3
+ readonly option: string;
4
+ constructor(option: string);
5
+ pretty(io: any): void;
6
+ }
@@ -1,8 +1,8 @@
1
1
  import { BobError } from './BobError.js';
2
- import { ArgSignature } from '../CommandParser.js';
2
+ import { OptionsSchema } from '../lib/types.js';
3
3
  export declare class MissingSignatureArgument extends BobError {
4
4
  private argument;
5
- private argumentSignatures;
6
- constructor(argument: string, argumentSignatures: ArgSignature[]);
7
- pretty(): void;
5
+ private argumentsSchema;
6
+ constructor(argument: string, argumentsSchema: OptionsSchema);
7
+ pretty(io: any): void;
8
8
  }
@@ -1,8 +1,8 @@
1
1
  import { BobError } from './BobError.js';
2
- import { ArgSignature } from '../CommandParser.js';
2
+ import { OptionsSchema } from '../lib/types.js';
3
3
  export declare class MissingSignatureOption extends BobError {
4
4
  private option;
5
- private optionsSignature;
6
- constructor(option: string, optionsSignature: ArgSignature[]);
7
- pretty(): void;
5
+ private optionsSchema;
6
+ constructor(option: string, optionsSchema: OptionsSchema);
7
+ pretty(io: any): void;
8
8
  }
@@ -1,3 +1,9 @@
1
1
  export * from './BobError.js';
2
2
  export * from './BadCommandParameter.js';
3
3
  export * from './BadCommandOption.js';
4
+ export * from './InvalidOption.js';
5
+ export * from './CommandNotFoundError.js';
6
+ export * from './MissingSignatureArgument.js';
7
+ export * from './MissingSignatureOption.js';
8
+ export * from './MissingRequiredArgumentValue.js';
9
+ export * from './MissingRequiredOptionValue.js';
@@ -1,6 +1,12 @@
1
1
  export * from './Command.js';
2
+ export * from './CommandWithSignature.js';
2
3
  export * from './CommandIO.js';
4
+ export * from './CommandParser.js';
5
+ export * from './CommandSignatureParser.js';
6
+ export * from './CommandRegistry.js';
3
7
  export * from './Cli.js';
8
+ export * from './Logger.js';
9
+ export * from './ExceptionHandler.js';
10
+ export * from './lib/types.js';
4
11
  export * from './errors/index.js';
5
- export * from './contracts/index.js';
6
12
  export * from './options/index.js';
@@ -0,0 +1,5 @@
1
+ import { Option, OptionDefinition, OptionReturnType } from './types.js';
2
+ export declare function getOptionPrimitiveDefaultValue<Opts extends Option>(type: Opts): OptionReturnType<Opts>;
3
+ export declare function getOptionDefaultValue<Opts extends Option>(option: Opts): OptionReturnType<Opts>;
4
+ export type OptionDetails = Required<OptionDefinition>;
5
+ export declare function getOptionDetails(option: Option): OptionDetails;
@@ -0,0 +1,29 @@
1
+ export type OptionPrimitive = 'string' | 'number' | 'boolean' | ['string'] | ['number'];
2
+ export type OptionDefinition = {
3
+ type: OptionPrimitive;
4
+ description?: string;
5
+ alias?: string | Array<string>;
6
+ required?: boolean;
7
+ default?: any;
8
+ variadic?: boolean;
9
+ };
10
+ export type Option = OptionPrimitive | OptionDefinition;
11
+ export type OptionType<O extends Option> = O extends 'string' ? string : O extends 'number' ? number : O extends 'boolean' ? boolean : O extends Array<'string'> ? Array<string> : O extends Array<'number'> ? Array<number> : O extends {
12
+ type: infer T extends Option;
13
+ } ? OptionType<T> : never;
14
+ export type IsRequired<O extends Option> = O extends {
15
+ required: true;
16
+ } ? true : false;
17
+ export type OptionReturnType<O extends Option> = IsRequired<O> extends true ? OptionType<O> : OptionType<O> | null;
18
+ export type OptionsSchema = {
19
+ [key: string]: Option;
20
+ };
21
+ export type OptionsObject<Options extends OptionsSchema> = {
22
+ [Key in keyof Options]: OptionReturnType<Options[Key]>;
23
+ };
24
+ export type ArgumentsSchema = {
25
+ [key: string]: Option;
26
+ };
27
+ export type ArgumentsObject<Arguments extends ArgumentsSchema> = {
28
+ [Key in keyof Arguments]: OptionReturnType<Arguments[Key]>;
29
+ };
@@ -0,0 +1,10 @@
1
+ import { OptionPrimitive } from './types.js';
2
+ /**
3
+ * Converts a value to the specified type with validation
4
+ * @param value - The value to convert
5
+ * @param type - The target type
6
+ * @param name - The parameter name (for error messages)
7
+ * @param defaultValue - Optional default value if value is null/undefined
8
+ * @returns The converted value
9
+ */
10
+ export declare function convertValue(value: any, type: OptionPrimitive, name: string, defaultValue?: any): any;
@@ -1,9 +1,11 @@
1
- import { Command } from '../Command.js';
2
1
  import { CommandOption } from '../contracts/index.js';
2
+ import { Command } from '../Command.js';
3
+ import { OptionPrimitive } from '../lib/types.js';
3
4
  export declare class HelpOption implements CommandOption<Command> {
5
+ type: OptionPrimitive;
4
6
  option: string;
5
7
  alias: string[];
6
- defaultValue: boolean;
8
+ default: boolean;
7
9
  description: string;
8
10
  handler(this: Command): Promise<number | void>;
9
11
  }
@@ -0,0 +1,11 @@
1
+ import { Mocked } from 'vitest';
2
+ import { Logger } from './Logger.js';
3
+ export type TestLogger = Mocked<Logger>;
4
+ export declare function newTestLogger(): TestLogger;
5
+ /**
6
+ * Creates test fixtures with a mocked logger
7
+ * @returns Object containing mocked logger instance
8
+ */
9
+ export declare function newFixtures(): {
10
+ logger: TestLogger;
11
+ };