bob-core 3.0.0-alpha.3 → 3.0.0-alpha.5
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/dist/cjs/package-DOYmkuEV.cjs +1 -0
- package/dist/cjs/src/Command.d.ts +6 -5
- package/dist/cjs/src/CommandParser.d.ts +10 -10
- package/dist/cjs/src/CommandRegistry.d.ts +3 -3
- package/dist/cjs/src/CommandWithSignature.d.ts +6 -4
- package/dist/cjs/src/errors/ValidationError.d.ts +3 -0
- package/dist/cjs/src/errors/index.d.ts +1 -0
- package/dist/cjs/src/flags/boolean.d.ts +2 -0
- package/dist/cjs/src/flags/custom.d.ts +2 -0
- package/dist/cjs/src/flags/directory.d.ts +2 -0
- package/dist/cjs/src/flags/enum.d.ts +4 -0
- package/dist/cjs/src/flags/file.d.ts +2 -0
- package/dist/cjs/src/flags/helpers.d.ts +25 -0
- package/dist/cjs/src/flags/index.d.ts +28 -0
- package/dist/cjs/src/flags/number.d.ts +2 -0
- package/dist/cjs/src/flags/string.d.ts +2 -0
- package/dist/cjs/src/flags/url.d.ts +2 -0
- package/dist/cjs/src/index.d.ts +6 -6
- package/dist/cjs/src/index.js +48 -5
- package/dist/cjs/src/lib/helpers.d.ts +0 -1
- package/dist/cjs/src/lib/types.d.ts +8 -3
- package/dist/cjs/src/ux/askForCheckbox.d.ts +20 -0
- package/dist/cjs/src/ux/askForConfirmation.d.ts +5 -0
- package/dist/cjs/src/ux/askForEditor.d.ts +7 -0
- package/dist/cjs/src/ux/askForExpand.d.ts +9 -0
- package/dist/cjs/src/ux/askForFileSelector.d.ts +12 -0
- package/dist/cjs/src/ux/askForInput.d.ts +9 -0
- package/dist/cjs/src/ux/askForList.d.ts +6 -0
- package/dist/cjs/src/ux/askForNumber.d.ts +9 -0
- package/dist/cjs/src/ux/askForPassword.d.ts +5 -0
- package/dist/cjs/src/ux/askForRawList.d.ts +8 -0
- package/dist/cjs/src/ux/askForSearch.d.ts +9 -0
- package/dist/cjs/src/ux/askForSelect.d.ts +7 -0
- package/dist/cjs/src/ux/askForToggle.d.ts +6 -0
- package/dist/cjs/src/ux/helpers.d.ts +1 -0
- package/dist/cjs/src/ux/index.d.ts +86 -0
- package/dist/cjs/src/ux/keyValue.d.ts +2 -0
- package/dist/cjs/src/ux/loader.d.ts +6 -0
- package/dist/cjs/src/ux/progressBar.d.ts +8 -0
- package/dist/cjs/src/ux/table.d.ts +2 -0
- package/dist/cjs/src/ux/types.d.ts +24 -0
- package/dist/esm/{package-DEXUmuu7.js → package-C8P0aq1p.js} +4 -4
- package/dist/esm/src/Command.d.ts +6 -5
- package/dist/esm/src/CommandParser.d.ts +10 -10
- package/dist/esm/src/CommandRegistry.d.ts +3 -3
- package/dist/esm/src/CommandWithSignature.d.ts +6 -4
- package/dist/esm/src/errors/ValidationError.d.ts +3 -0
- package/dist/esm/src/errors/index.d.ts +1 -0
- package/dist/esm/src/flags/boolean.d.ts +2 -0
- package/dist/esm/src/flags/custom.d.ts +2 -0
- package/dist/esm/src/flags/directory.d.ts +2 -0
- package/dist/esm/src/flags/enum.d.ts +4 -0
- package/dist/esm/src/flags/file.d.ts +2 -0
- package/dist/esm/src/flags/helpers.d.ts +25 -0
- package/dist/esm/src/flags/index.d.ts +28 -0
- package/dist/esm/src/flags/number.d.ts +2 -0
- package/dist/esm/src/flags/string.d.ts +2 -0
- package/dist/esm/src/flags/url.d.ts +2 -0
- package/dist/esm/src/index.d.ts +6 -6
- package/dist/esm/src/index.js +12504 -536
- package/dist/esm/src/lib/helpers.d.ts +0 -1
- package/dist/esm/src/lib/types.d.ts +8 -3
- package/dist/esm/src/ux/askForCheckbox.d.ts +20 -0
- package/dist/esm/src/ux/askForConfirmation.d.ts +5 -0
- package/dist/esm/src/ux/askForEditor.d.ts +7 -0
- package/dist/esm/src/ux/askForExpand.d.ts +9 -0
- package/dist/esm/src/ux/askForFileSelector.d.ts +12 -0
- package/dist/esm/src/ux/askForInput.d.ts +9 -0
- package/dist/esm/src/ux/askForList.d.ts +6 -0
- package/dist/esm/src/ux/askForNumber.d.ts +9 -0
- package/dist/esm/src/ux/askForPassword.d.ts +5 -0
- package/dist/esm/src/ux/askForRawList.d.ts +8 -0
- package/dist/esm/src/ux/askForSearch.d.ts +9 -0
- package/dist/esm/src/ux/askForSelect.d.ts +7 -0
- package/dist/esm/src/ux/askForToggle.d.ts +6 -0
- package/dist/esm/src/ux/helpers.d.ts +1 -0
- package/dist/esm/src/ux/index.d.ts +86 -0
- package/dist/esm/src/ux/keyValue.d.ts +2 -0
- package/dist/esm/src/ux/loader.d.ts +6 -0
- package/dist/esm/src/ux/progressBar.d.ts +8 -0
- package/dist/esm/src/ux/table.d.ts +2 -0
- package/dist/esm/src/ux/types.d.ts +24 -0
- package/package.json +7 -5
- package/dist/cjs/package-D6-YkvLr.cjs +0 -1
- package/dist/cjs/src/CommandIO.d.ts +0 -58
- package/dist/cjs/src/Flags.d.ts +0 -25
- package/dist/esm/src/CommandIO.d.ts +0 -58
- package/dist/esm/src/Flags.d.ts +0 -25
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`./src/index.js`);var e={name:`bob-core`,version:`3.0.0-alpha.5`,description:`BOB Core`,type:`module`,main:`./dist/cjs/src/index.js`,module:`./dist/esm/src/index.js`,types:`./dist/esm/src/index.d.ts`,files:[`dist`],exports:{".":{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`}}},scripts:{start:`node -r @swc-node/register debug/main.ts`,build:`rm -rf ./dist && vite build`,typecheck:`tsc --noEmit`,prepack:`npm run build`,test:`vitest run`,lint:`eslint .`,"lint:fix":`eslint . --fix`},author:`Léo Hubert`,license:`ISC`,devDependencies:{"@eslint/js":`^9.39.4`,"@faker-js/faker":`^10.3.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/string-similarity":`^4.0.2`,"@vitest/coverage-v8":`^4.1.0`,eslint:`^9.39.4`,"eslint-config-prettier":`^10.1.8`,"eslint-plugin-prettier":`^5.5.5`,prettier:`^3.6.2`,tsx:`^4.21.0`,typescript:`^5.9.3`,"typescript-eslint":`^8.57.0`,vite:`^8.0.0`,"vite-plugin-dts":`^4.5.4`,vitest:`^4.1.0`},dependencies:{"@inquirer/prompts":`^8.3.0`,chalk:`^4.1.2`,"inquirer-file-selector":`^1.0.1`,minimist:`^1.2.8`}};exports.default=e;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CommandIO, CommandIOOptions } from './CommandIO.js';
|
|
2
1
|
import { CommandParser } from './CommandParser.js';
|
|
3
2
|
import { Logger } from './Logger.js';
|
|
3
|
+
import { UX } from './ux/index.js';
|
|
4
4
|
import { ArgumentsSchema, ContextDefinition, FlagsSchema, Parsed } from './lib/types.js';
|
|
5
5
|
export type CommandRunExample = {
|
|
6
6
|
description: string;
|
|
@@ -16,7 +16,7 @@ export type CommandRunOption<C = ContextDefinition> = {
|
|
|
16
16
|
flags: Record<string, any>;
|
|
17
17
|
});
|
|
18
18
|
export declare abstract class Command<C extends ContextDefinition = ContextDefinition> {
|
|
19
|
-
$type: "BobCommand";
|
|
19
|
+
static $type: "BobCommand";
|
|
20
20
|
static command: string;
|
|
21
21
|
static description: string;
|
|
22
22
|
static group?: string;
|
|
@@ -29,7 +29,8 @@ export declare abstract class Command<C extends ContextDefinition = ContextDefin
|
|
|
29
29
|
static allowUnknownFlags: boolean;
|
|
30
30
|
static strictMode: boolean;
|
|
31
31
|
protected ctx: C;
|
|
32
|
-
protected
|
|
32
|
+
protected logger: Logger;
|
|
33
|
+
protected ux: UX;
|
|
33
34
|
protected parser: CommandParser<FlagsSchema, FlagsSchema>;
|
|
34
35
|
protected preHandle?(): Promise<void | number>;
|
|
35
36
|
protected abstract handle(ctx: C, parsed: Parsed<any>): Promise<number | void> | number | void;
|
|
@@ -38,8 +39,8 @@ export declare abstract class Command<C extends ContextDefinition = ContextDefin
|
|
|
38
39
|
flags: FlagsSchema;
|
|
39
40
|
args: ArgumentsSchema;
|
|
40
41
|
ctx: ContextDefinition;
|
|
41
|
-
|
|
42
|
+
ux: UX;
|
|
42
43
|
}): CommandParser<FlagsSchema, FlagsSchema>;
|
|
43
|
-
protected
|
|
44
|
+
protected newUX(): UX;
|
|
44
45
|
run(runOpts: CommandRunOption<C>): Promise<number | void>;
|
|
45
46
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UX } from './ux/index.js';
|
|
2
2
|
import { ArgumentsSchema, ContextDefinition, FlagDefinition, FlagReturnType, FlagsObject, FlagsSchema } from './lib/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Parses command-line arguments into typed flags and arguments
|
|
@@ -9,13 +9,13 @@ export declare class CommandParser<Flags extends FlagsSchema, Arguments extends
|
|
|
9
9
|
flags: Flags;
|
|
10
10
|
args: Arguments;
|
|
11
11
|
ctx?: ContextDefinition;
|
|
12
|
-
|
|
12
|
+
ux: UX;
|
|
13
13
|
};
|
|
14
14
|
protected flags: FlagsSchema;
|
|
15
15
|
protected parsedFlags: FlagsObject<Flags> | null;
|
|
16
16
|
protected args: ArgumentsSchema;
|
|
17
17
|
protected parsedArguments: FlagsObject<Arguments> | null;
|
|
18
|
-
protected
|
|
18
|
+
protected ux: UX;
|
|
19
19
|
protected shouldPromptForMissingFlags: boolean;
|
|
20
20
|
protected shouldValidateUnknownFlags: boolean;
|
|
21
21
|
protected shouldRejectExtraArguments: boolean;
|
|
@@ -23,7 +23,7 @@ export declare class CommandParser<Flags extends FlagsSchema, Arguments extends
|
|
|
23
23
|
flags: Flags;
|
|
24
24
|
args: Arguments;
|
|
25
25
|
ctx?: ContextDefinition;
|
|
26
|
-
|
|
26
|
+
ux: UX;
|
|
27
27
|
});
|
|
28
28
|
/**
|
|
29
29
|
* Parses raw command-line arguments into structured flags and arguments
|
|
@@ -96,11 +96,11 @@ export declare class CommandParser<Flags extends FlagsSchema, Arguments extends
|
|
|
96
96
|
allowUnknownFlags(): this;
|
|
97
97
|
strictMode(): this;
|
|
98
98
|
/**
|
|
99
|
-
* Prompts the user to provide a missing argument value via
|
|
100
|
-
* Used by validate() when
|
|
101
|
-
* @param
|
|
102
|
-
* @param definition - The
|
|
103
|
-
* @returns The user-provided value, or null if
|
|
99
|
+
* Prompts the user to provide a missing flag/argument value via its `ask` method
|
|
100
|
+
* Used by validate() when shouldPromptForMissingFlags is enabled
|
|
101
|
+
* @param name - The name of the missing flag/argument
|
|
102
|
+
* @param definition - The flag's definition (must have an `ask` method)
|
|
103
|
+
* @returns The user-provided value, or null if `ask` is not defined
|
|
104
104
|
*/
|
|
105
|
-
protected promptForArgument(
|
|
105
|
+
protected promptForArgument(name: string, definition: FlagDefinition): Promise<string | number | string[] | boolean | null>;
|
|
106
106
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { Command } from './Command.js';
|
|
2
|
-
import { CommandIO, CommandIOOptions } from './CommandIO.js';
|
|
3
2
|
import { Logger } from './Logger.js';
|
|
4
3
|
import { StringSimilarity } from './StringSimilarity.js';
|
|
4
|
+
import { UX } from './ux/index.js';
|
|
5
5
|
import { ContextDefinition } from './lib/types.js';
|
|
6
6
|
export type CommandResolver = (path: string) => Promise<typeof Command | null>;
|
|
7
7
|
export type FileImporter = (filePath: string) => Promise<unknown>;
|
|
8
8
|
export type CommandRegistryOptions = {
|
|
9
9
|
logger?: Logger;
|
|
10
|
+
ux?: UX;
|
|
10
11
|
stringSimilarity?: StringSimilarity;
|
|
11
12
|
};
|
|
12
13
|
export declare class CommandRegistry {
|
|
13
14
|
private readonly commands;
|
|
14
|
-
protected readonly
|
|
15
|
+
protected readonly ux: UX;
|
|
15
16
|
protected readonly logger: Logger;
|
|
16
17
|
private readonly stringSimilarity;
|
|
17
|
-
protected newCommandIO(opts: CommandIOOptions): CommandIO;
|
|
18
18
|
constructor(opts?: CommandRegistryOptions);
|
|
19
19
|
getAvailableCommands(): string[];
|
|
20
20
|
getCommands(): Array<typeof Command>;
|
|
@@ -11,12 +11,14 @@ export declare abstract class CommandWithSignature<C extends ContextDefinition =
|
|
|
11
11
|
static helperDefinitions: Record<string, string>;
|
|
12
12
|
static get command(): string;
|
|
13
13
|
run(runOpts: CommandRunOption<C>): Promise<number | void>;
|
|
14
|
+
/**
|
|
15
|
+
* Convenience accessor for a parsed option value.
|
|
16
|
+
*/
|
|
14
17
|
protected option<T = string>(key: string): T | null;
|
|
15
18
|
protected option<T = string>(key: string, defaultValue: T): NoInfer<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Convenience accessor for a parsed argument value.
|
|
21
|
+
*/
|
|
16
22
|
protected argument<T = string>(key: string): T | null;
|
|
17
23
|
protected argument<T = string>(key: string, defaultValue: T): NoInfer<T>;
|
|
18
|
-
askForConfirmation(...opts: Parameters<typeof this.io.askForConfirmation>): ReturnType<typeof this.io.askForConfirmation>;
|
|
19
|
-
askForInput(...opts: Parameters<typeof this.io.askForInput>): ReturnType<typeof this.io.askForInput>;
|
|
20
|
-
askForSelect(...opts: Parameters<typeof this.io.askForSelect>): ReturnType<typeof this.io.askForSelect>;
|
|
21
|
-
newLoader(...opts: Parameters<typeof this.io.newLoader>): ReturnType<typeof this.io.newLoader>;
|
|
22
24
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FlagAskContext, FlagDefinition } from '../lib/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a standard prompt message for a missing required flag/argument
|
|
4
|
+
*/
|
|
5
|
+
export declare function formatPromptMessage(name: string, definition: FlagDefinition): string;
|
|
6
|
+
/**
|
|
7
|
+
* Wraps a flag definition's parse function into a UX-compatible validator.
|
|
8
|
+
* Catches ValidationError for clean messages, other errors get a generic message.
|
|
9
|
+
*/
|
|
10
|
+
export declare function buildInputValidator(definition: FlagDefinition): (value: string) => string | true;
|
|
11
|
+
/**
|
|
12
|
+
* Wraps a flag definition's parse function into a UX-compatible validator
|
|
13
|
+
* for multiple comma-separated values. Calls parse per-item, catches ValidationError.
|
|
14
|
+
*/
|
|
15
|
+
export declare function buildMultipleValuesValidator(def: FlagDefinition): (value: string) => string | true;
|
|
16
|
+
/**
|
|
17
|
+
* Shared ask logic for multiple-value flags (string[], number[]).
|
|
18
|
+
* Replaces the duplicated ~15-line branch in string and number ask methods.
|
|
19
|
+
*/
|
|
20
|
+
export declare function askForMultipleValues(ctx: FlagAskContext): Promise<string[] | null>;
|
|
21
|
+
/**
|
|
22
|
+
* Shared ask logic for simple single-input flags (file, directory, url).
|
|
23
|
+
* Replaces the identical 3-line ask implementations.
|
|
24
|
+
*/
|
|
25
|
+
export declare function askForSingleInput(ctx: FlagAskContext): Promise<string | null>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { booleanFlag } from './boolean.js';
|
|
2
|
+
import { customFlag } from './custom.js';
|
|
3
|
+
import { directoryFlag } from './directory.js';
|
|
4
|
+
import { enumFlag } from './enum.js';
|
|
5
|
+
import { fileFlag } from './file.js';
|
|
6
|
+
import { numberFlag } from './number.js';
|
|
7
|
+
import { stringFlag } from './string.js';
|
|
8
|
+
import { urlFlag } from './url.js';
|
|
9
|
+
export declare const Flags: {
|
|
10
|
+
string: typeof stringFlag;
|
|
11
|
+
number: typeof numberFlag;
|
|
12
|
+
boolean: typeof booleanFlag;
|
|
13
|
+
enum: typeof enumFlag;
|
|
14
|
+
file: typeof fileFlag;
|
|
15
|
+
directory: typeof directoryFlag;
|
|
16
|
+
url: typeof urlFlag;
|
|
17
|
+
custom: typeof customFlag;
|
|
18
|
+
};
|
|
19
|
+
export declare const Args: {
|
|
20
|
+
string: typeof stringFlag;
|
|
21
|
+
number: typeof numberFlag;
|
|
22
|
+
boolean: typeof booleanFlag;
|
|
23
|
+
enum: typeof enumFlag;
|
|
24
|
+
file: typeof fileFlag;
|
|
25
|
+
directory: typeof directoryFlag;
|
|
26
|
+
url: typeof urlFlag;
|
|
27
|
+
custom: typeof customFlag;
|
|
28
|
+
};
|
package/dist/cjs/src/index.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
+
export * from './Cli.js';
|
|
1
2
|
export * from './Command.js';
|
|
2
|
-
export * from './CommandIO.js';
|
|
3
3
|
export * from './CommandParser.js';
|
|
4
4
|
export * from './CommandRegistry.js';
|
|
5
5
|
export * from './CommandSignatureParser.js';
|
|
6
6
|
export * from './CommandWithSignature.js';
|
|
7
|
-
export * from './Cli.js';
|
|
8
|
-
export * from './Logger.js';
|
|
9
7
|
export * from './ExceptionHandler.js';
|
|
8
|
+
export * from './Logger.js';
|
|
10
9
|
export * from './StringSimilarity.js';
|
|
11
|
-
export * from './
|
|
12
|
-
export * from './Flags.js';
|
|
10
|
+
export * from './contracts/index.js';
|
|
13
11
|
export * from './errors/index.js';
|
|
12
|
+
export * from './flags/index.js';
|
|
13
|
+
export * from './lib/types.js';
|
|
14
14
|
export * from './options/index.js';
|
|
15
|
-
export * from './
|
|
15
|
+
export * from './ux/index.js';
|