@mudah-cli/console 0.8.0 → 0.9.2
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/LICENSE +21 -0
- package/README.md +42 -0
- package/dist/command.d.ts +23 -4
- package/dist/command.js +21 -2
- package/dist/command.js.map +1 -1
- package/dist/fuzzy-match.d.ts +23 -0
- package/dist/fuzzy-match.js +66 -0
- package/dist/fuzzy-match.js.map +1 -0
- package/dist/help.js +33 -3
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/kernel.d.ts +49 -2
- package/dist/kernel.js +207 -25
- package/dist/kernel.js.map +1 -1
- package/dist/prompts.js +10 -3
- package/dist/prompts.js.map +1 -1
- package/dist/signature.d.ts +17 -2
- package/dist/signature.js +87 -19
- package/dist/signature.js.map +1 -1
- package/package.json +21 -5
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mudah Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# @mudah-cli/console
|
|
2
|
+
|
|
3
|
+
Command system: string signatures, typed dispatch, interactive prompts, and help rendering.
|
|
4
|
+
|
|
5
|
+
Part of [Mudah](https://github.com/thesimonharms/mudah) — an ergonomic, animation-rich CLI
|
|
6
|
+
framework.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
npm install @mudah-cli/console
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { Command } from '@mudah-cli/console';
|
|
18
|
+
|
|
19
|
+
export default class DeployCommand extends Command {
|
|
20
|
+
signature = 'deploy {branch?} {ref=main} [--force] [--env=production]';
|
|
21
|
+
description = 'Deploy the application';
|
|
22
|
+
|
|
23
|
+
async handle(): Promise<number> {
|
|
24
|
+
this.output.success(`Deploying ${this.arg('branch') ?? 'main'}`);
|
|
25
|
+
if (!this.option('force')) {
|
|
26
|
+
const ok = await this.confirm('Continue?');
|
|
27
|
+
if (!ok) return 1;
|
|
28
|
+
}
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Signatures are string-based: `{required}`, `{optional?}`, `{name=default}`, `{paths...}`, `[--flag]`,
|
|
35
|
+
`[--opt=value]`. A colon in the name (`db:status`) puts the command in a group. The kernel parses,
|
|
36
|
+
validates, and injects `input` for you; unknown options and missing args become usage errors
|
|
37
|
+
(exit 2). `parseSignature` / `parseInput` are exported for building your own runner.
|
|
38
|
+
|
|
39
|
+
## Links
|
|
40
|
+
|
|
41
|
+
- [Full documentation](https://github.com/thesimonharms/mudah#readme)
|
|
42
|
+
- [License: MIT](LICENSE)
|
package/dist/command.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type Application, UsageError } from '@mudah-cli/core';
|
|
2
2
|
import type { Output } from '@mudah-cli/ui';
|
|
3
3
|
import { Prompts } from './prompts.js';
|
|
4
4
|
import { type ParsedInput, type ParsedSignature } from './signature.js';
|
|
@@ -24,12 +24,30 @@ export declare abstract class Command {
|
|
|
24
24
|
signature: string;
|
|
25
25
|
/** One-line description for help output. */
|
|
26
26
|
description: string;
|
|
27
|
+
/**
|
|
28
|
+
* Catalog key for the help description. When the key resolves in the active
|
|
29
|
+
* locale it wins over the literal `description` (see `setLocale`).
|
|
30
|
+
*/
|
|
31
|
+
descriptionKey: string;
|
|
27
32
|
/**
|
|
28
33
|
* Blurb for the group this command belongs to. Only meaningful on grouped
|
|
29
34
|
* signatures (`db:migrate`); the first command to set it labels the group
|
|
30
35
|
* in the command list.
|
|
31
36
|
*/
|
|
32
37
|
groupDescription: string;
|
|
38
|
+
/** Additional names that also resolve to this command. */
|
|
39
|
+
aliases?: string[];
|
|
40
|
+
/** When set, the command is deprecated; a string is the deprecation reason. */
|
|
41
|
+
deprecated?: boolean | string;
|
|
42
|
+
/**
|
|
43
|
+
* Documented non-zero exit codes. Keys are numeric codes, values are
|
|
44
|
+
* short descriptions. Rendered in `--help` output for each command.
|
|
45
|
+
*
|
|
46
|
+
* ```ts
|
|
47
|
+
* static exitCodes = { 1: 'validation failed', 2: 'network error' };
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
static exitCodes?: Record<number, string>;
|
|
33
51
|
/** The application (container, config, events). */
|
|
34
52
|
app: Application;
|
|
35
53
|
/** Styled output for the user. */
|
|
@@ -43,14 +61,14 @@ export declare abstract class Command {
|
|
|
43
61
|
/** Abstract entry point. Return an exit code, or void for 0. */
|
|
44
62
|
abstract handle(): Promise<number | void> | number | void;
|
|
45
63
|
/** A positional argument value (or its signature default). */
|
|
46
|
-
arg(name: string):
|
|
64
|
+
arg<T extends string | number = string>(name: string): T | undefined;
|
|
47
65
|
/**
|
|
48
66
|
* Values collected by a variadic argument (`{paths...}`) — empty when the
|
|
49
67
|
* argument doesn't exist or collected nothing.
|
|
50
68
|
*/
|
|
51
69
|
list(name: string): string[];
|
|
52
70
|
/** An option value: boolean for flags, string for `--opt=value`. */
|
|
53
|
-
option<T extends string | boolean>(name: string): T | undefined;
|
|
71
|
+
option<T extends string | number | boolean = string | boolean>(name: string): T | undefined;
|
|
54
72
|
protected promptsInstance(): Prompts;
|
|
55
73
|
protected ask(question: string, defaultValue?: string): Promise<string>;
|
|
56
74
|
protected confirm(question: string, defaultValue?: boolean): Promise<boolean>;
|
|
@@ -65,4 +83,5 @@ export declare abstract class Command {
|
|
|
65
83
|
*/
|
|
66
84
|
protected usageError(message: string, hint?: string): UsageError;
|
|
67
85
|
}
|
|
68
|
-
export {
|
|
86
|
+
export { editDistance, fuzzyRank, suggestCommand } from './fuzzy-match.js';
|
|
87
|
+
export { ArgumentParseError, type CoercionType, coerceValue, type ParsedInput, type ParsedSignature, parseInput, parseSignature, } from './signature.js';
|
package/dist/command.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { UsageError } from '@mudah-cli/core';
|
|
2
2
|
import { Prompts } from './prompts.js';
|
|
3
|
-
import {
|
|
3
|
+
import { parseSignature } from './signature.js';
|
|
4
4
|
/**
|
|
5
5
|
* Base class for all Mudah commands.
|
|
6
6
|
*
|
|
@@ -23,12 +23,30 @@ export class Command {
|
|
|
23
23
|
signature = '';
|
|
24
24
|
/** One-line description for help output. */
|
|
25
25
|
description = '';
|
|
26
|
+
/**
|
|
27
|
+
* Catalog key for the help description. When the key resolves in the active
|
|
28
|
+
* locale it wins over the literal `description` (see `setLocale`).
|
|
29
|
+
*/
|
|
30
|
+
descriptionKey = '';
|
|
26
31
|
/**
|
|
27
32
|
* Blurb for the group this command belongs to. Only meaningful on grouped
|
|
28
33
|
* signatures (`db:migrate`); the first command to set it labels the group
|
|
29
34
|
* in the command list.
|
|
30
35
|
*/
|
|
31
36
|
groupDescription = '';
|
|
37
|
+
/** Additional names that also resolve to this command. */
|
|
38
|
+
aliases;
|
|
39
|
+
/** When set, the command is deprecated; a string is the deprecation reason. */
|
|
40
|
+
deprecated;
|
|
41
|
+
/**
|
|
42
|
+
* Documented non-zero exit codes. Keys are numeric codes, values are
|
|
43
|
+
* short descriptions. Rendered in `--help` output for each command.
|
|
44
|
+
*
|
|
45
|
+
* ```ts
|
|
46
|
+
* static exitCodes = { 1: 'validation failed', 2: 'network error' };
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
static exitCodes;
|
|
32
50
|
/** The application (container, config, events). */
|
|
33
51
|
app;
|
|
34
52
|
/** Styled output for the user. */
|
|
@@ -93,5 +111,6 @@ export class Command {
|
|
|
93
111
|
});
|
|
94
112
|
}
|
|
95
113
|
}
|
|
96
|
-
export {
|
|
114
|
+
export { editDistance, fuzzyRank, suggestCommand } from './fuzzy-match.js';
|
|
115
|
+
export { ArgumentParseError, coerceValue, parseInput, parseSignature, } from './signature.js';
|
|
97
116
|
//# sourceMappingURL=command.js.map
|
package/dist/command.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded Levenshtein edit distance. O(n*m) time and O(min(n,m)) space
|
|
3
|
+
* via a rolling row — fine for short command names against a small pool.
|
|
4
|
+
*/
|
|
5
|
+
export declare function editDistance(a: string, b: string): number;
|
|
6
|
+
/**
|
|
7
|
+
* Rank a list of candidate names by closeness to `query`. Each score is the
|
|
8
|
+
* edit distance; candidates with a common prefix get a small bonus so
|
|
9
|
+
* `stagi` outranks `prod` against `staging`/`deploy`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function fuzzyRank(query: string, candidates: string[]): Array<{
|
|
12
|
+
name: string;
|
|
13
|
+
score: number;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Suggest a close match for a typo'd command. Returns the top candidate when
|
|
17
|
+
* it is within `maxDistance` edits and obviously closer than the runner-up.
|
|
18
|
+
*
|
|
19
|
+
* The default of 2 favors one- and two-character typos over random matches;
|
|
20
|
+
* a 4-edit distance to a 4-letter name is half the word wrong, so a generic
|
|
21
|
+
* hint is the more useful message.
|
|
22
|
+
*/
|
|
23
|
+
export declare function suggestCommand(typo: string, candidates: string[], maxDistance?: number): string | undefined;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded Levenshtein edit distance. O(n*m) time and O(min(n,m)) space
|
|
3
|
+
* via a rolling row — fine for short command names against a small pool.
|
|
4
|
+
*/
|
|
5
|
+
export function editDistance(a, b) {
|
|
6
|
+
if (a === b)
|
|
7
|
+
return 0;
|
|
8
|
+
if (a.length === 0)
|
|
9
|
+
return b.length;
|
|
10
|
+
if (b.length === 0)
|
|
11
|
+
return a.length;
|
|
12
|
+
// Ensure b is the shorter of the two so the inner loop is small.
|
|
13
|
+
const [s, t] = a.length >= b.length ? [a, b] : [b, a];
|
|
14
|
+
let prev = new Array(t.length + 1);
|
|
15
|
+
let curr = new Array(t.length + 1);
|
|
16
|
+
for (let j = 0; j <= t.length; j++)
|
|
17
|
+
prev[j] = j;
|
|
18
|
+
for (let i = 1; i <= s.length; i++) {
|
|
19
|
+
curr[0] = i;
|
|
20
|
+
for (let j = 1; j <= t.length; j++) {
|
|
21
|
+
const cost = s[i - 1] === t[j - 1] ? 0 : 1;
|
|
22
|
+
curr[j] = Math.min((prev[j] ?? 0) + 1, // delete
|
|
23
|
+
(curr[j - 1] ?? 0) + 1, // insert
|
|
24
|
+
(prev[j - 1] ?? 0) + cost);
|
|
25
|
+
}
|
|
26
|
+
[prev, curr] = [curr, prev];
|
|
27
|
+
}
|
|
28
|
+
return prev[t.length] ?? 0;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Rank a list of candidate names by closeness to `query`. Each score is the
|
|
32
|
+
* edit distance; candidates with a common prefix get a small bonus so
|
|
33
|
+
* `stagi` outranks `prod` against `staging`/`deploy`.
|
|
34
|
+
*/
|
|
35
|
+
export function fuzzyRank(query, candidates) {
|
|
36
|
+
const q = query.toLowerCase();
|
|
37
|
+
return candidates
|
|
38
|
+
.map((name) => {
|
|
39
|
+
const lower = name.toLowerCase();
|
|
40
|
+
const distance = editDistance(q, lower);
|
|
41
|
+
const prefixBonus = lower.startsWith(q) ? -1 : 0;
|
|
42
|
+
return { name, score: distance + prefixBonus };
|
|
43
|
+
})
|
|
44
|
+
.sort((a, b) => a.score - b.score);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Suggest a close match for a typo'd command. Returns the top candidate when
|
|
48
|
+
* it is within `maxDistance` edits and obviously closer than the runner-up.
|
|
49
|
+
*
|
|
50
|
+
* The default of 2 favors one- and two-character typos over random matches;
|
|
51
|
+
* a 4-edit distance to a 4-letter name is half the word wrong, so a generic
|
|
52
|
+
* hint is the more useful message.
|
|
53
|
+
*/
|
|
54
|
+
export function suggestCommand(typo, candidates, maxDistance = 2) {
|
|
55
|
+
if (candidates.length === 0 || typo.length === 0)
|
|
56
|
+
return undefined;
|
|
57
|
+
const ranked = fuzzyRank(typo, candidates);
|
|
58
|
+
const best = ranked[0];
|
|
59
|
+
const second = ranked[1];
|
|
60
|
+
if (!best || best.score > maxDistance)
|
|
61
|
+
return undefined;
|
|
62
|
+
if (second !== undefined && second.score === best.score)
|
|
63
|
+
return undefined;
|
|
64
|
+
return best.name;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=fuzzy-match.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzy-match.js","sourceRoot":"","sources":["../src/fuzzy-match.ts"],"names":[],"mappings":"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"}
|
package/dist/help.js
CHANGED
|
@@ -15,9 +15,7 @@ export function formatUsage(entry) {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
if (entry.signature.options.length > 0) {
|
|
18
|
-
parts.push(entry.signature.options
|
|
19
|
-
.map((o) => (o.takesValue ? `--${o.name}=` : `--${o.name}`))
|
|
20
|
-
.join(' '));
|
|
18
|
+
parts.push(entry.signature.options.map((o) => (o.takesValue ? `--${o.name}=` : `--${o.name}`)).join(' '));
|
|
21
19
|
}
|
|
22
20
|
return parts.join(' ');
|
|
23
21
|
}
|
|
@@ -29,6 +27,10 @@ export function formatCommandRow(entry, width) {
|
|
|
29
27
|
/** Render the full command list, with grouped commands under headers. */
|
|
30
28
|
export function renderCommandList(appName, version, entries, lines) {
|
|
31
29
|
lines.push(`${appName} v${version}`, '');
|
|
30
|
+
lines.push('NAME');
|
|
31
|
+
lines.push(` ${appName} — command-line interface`, '');
|
|
32
|
+
lines.push('SYNOPSIS');
|
|
33
|
+
lines.push(` ${appName} <command> [options]`, '');
|
|
32
34
|
if (entries.length === 0) {
|
|
33
35
|
lines.push('No commands registered.');
|
|
34
36
|
return;
|
|
@@ -71,11 +73,34 @@ function groupEntries(entries) {
|
|
|
71
73
|
}
|
|
72
74
|
/** Render single-command help. */
|
|
73
75
|
export function renderCommandHelp(appName, entry, lines) {
|
|
76
|
+
lines.push('NAME');
|
|
77
|
+
lines.push(` ${entry.name}${entry.description ? ` — ${entry.description}` : ''}`, '');
|
|
78
|
+
lines.push('SYNOPSIS');
|
|
79
|
+
lines.push(` ${appName} ${formatUsage(entry)}`, '');
|
|
74
80
|
lines.push(`Usage: ${appName} ${formatUsage(entry)}`, '');
|
|
75
81
|
if (entry.description) {
|
|
82
|
+
lines.push('DESCRIPTION');
|
|
76
83
|
lines.push('Description');
|
|
77
84
|
lines.push(` ${entry.description}`, '');
|
|
78
85
|
}
|
|
86
|
+
if (entry.deprecated) {
|
|
87
|
+
const reason = typeof entry.deprecated === 'string' && entry.deprecated.length > 0
|
|
88
|
+
? entry.deprecated
|
|
89
|
+
: 'This command is deprecated.';
|
|
90
|
+
lines.push('Deprecated:');
|
|
91
|
+
lines.push(` ${reason}`, '');
|
|
92
|
+
}
|
|
93
|
+
if (entry.aliases && entry.aliases.length > 0) {
|
|
94
|
+
lines.push('Aliases:');
|
|
95
|
+
lines.push(` ${entry.aliases.join(', ')}`, '');
|
|
96
|
+
}
|
|
97
|
+
if (entry.exitCodes && Object.keys(entry.exitCodes).length > 0) {
|
|
98
|
+
lines.push('Exit codes:');
|
|
99
|
+
for (const [code, desc] of Object.entries(entry.exitCodes)) {
|
|
100
|
+
lines.push(` ${code} ${desc}`);
|
|
101
|
+
}
|
|
102
|
+
lines.push('');
|
|
103
|
+
}
|
|
79
104
|
if (entry.signature.args.length > 0) {
|
|
80
105
|
lines.push('Arguments:');
|
|
81
106
|
const width = Math.max(...entry.signature.args.map((a) => a.name.length)) + 2;
|
|
@@ -104,5 +129,10 @@ export function renderCommandHelp(appName, entry, lines) {
|
|
|
104
129
|
}
|
|
105
130
|
lines.push(' --help Show this help');
|
|
106
131
|
}
|
|
132
|
+
const seeAlso = [...(entry.aliases ?? [])];
|
|
133
|
+
if (seeAlso.length > 0) {
|
|
134
|
+
lines.push('', 'SEE ALSO');
|
|
135
|
+
lines.push(` ${seeAlso.join(', ')}`);
|
|
136
|
+
}
|
|
107
137
|
}
|
|
108
138
|
//# sourceMappingURL=help.js.map
|
package/dist/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,yEAAyE;AACzE,MAAM,UAAU,WAAW,CAAC,KAAmB;IAC7C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;QACtG,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Command } from './command.js';
|
|
2
2
|
export { renderError } from './errors.js';
|
|
3
|
+
export { editDistance, fuzzyRank, suggestCommand } from './fuzzy-match.js';
|
|
3
4
|
export { formatCommandRow, formatUsage, renderCommandHelp, renderCommandList } from './help.js';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export { ArgumentParseError,
|
|
5
|
+
export { type CommandEntry, type CommandGroup, type CommandModule, ConsoleKernel, type ConsoleKernelOptions, splitCommandName, } from './kernel.js';
|
|
6
|
+
export { type PromptOptions, Prompts } from './prompts.js';
|
|
7
|
+
export { ArgumentParseError, type CoercionType, coerceValue, type ParsedArg, type ParsedInput, type ParsedOption, type ParsedSignature, parseInput, parseSignature, } from './signature.js';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { Command } from './command.js';
|
|
2
2
|
export { renderError } from './errors.js';
|
|
3
|
+
export { editDistance, fuzzyRank, suggestCommand } from './fuzzy-match.js';
|
|
3
4
|
export { formatCommandRow, formatUsage, renderCommandHelp, renderCommandList } from './help.js';
|
|
4
5
|
export { ConsoleKernel, splitCommandName, } from './kernel.js';
|
|
5
6
|
export { Prompts } from './prompts.js';
|
|
6
|
-
export { ArgumentParseError, parseInput, parseSignature, } from './signature.js';
|
|
7
|
+
export { ArgumentParseError, coerceValue, parseInput, parseSignature, } from './signature.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAChG,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAChG,OAAO,EAIL,aAAa,EAEb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAsB,OAAO,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAElB,WAAW,EAKX,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC"}
|
package/dist/kernel.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Application, type CommandModule } from '@mudah-cli/core';
|
|
2
2
|
import type { Output } from '@mudah-cli/ui';
|
|
3
|
-
import { Command, type ParsedSignature } from './command.js';
|
|
3
|
+
import { type Command, type ParsedSignature } from './command.js';
|
|
4
4
|
export type { CommandModule } from '@mudah-cli/core';
|
|
5
5
|
export interface CommandEntry {
|
|
6
6
|
name: string;
|
|
@@ -14,6 +14,12 @@ export interface CommandEntry {
|
|
|
14
14
|
group?: string;
|
|
15
15
|
/** Short blurb for the group, from the first command that declared one. */
|
|
16
16
|
groupDescription?: string;
|
|
17
|
+
/** Alternate names that resolve to this command. */
|
|
18
|
+
aliases?: string[];
|
|
19
|
+
/** When set, the command is deprecated; a string is the deprecation reason. */
|
|
20
|
+
deprecated?: boolean | string;
|
|
21
|
+
/** Documented non-zero exit codes (code → description). */
|
|
22
|
+
exitCodes?: Record<number, string>;
|
|
17
23
|
}
|
|
18
24
|
/** A group of commands sharing a namespace. */
|
|
19
25
|
export interface CommandGroup {
|
|
@@ -36,20 +42,59 @@ export declare function splitCommandName(name: string): {
|
|
|
36
42
|
* 4. Inject app/output/input and call `handle()`.
|
|
37
43
|
* 5. Emit `command.after` with the exit code and duration.
|
|
38
44
|
*
|
|
45
|
+
* Aliases resolve to the canonical command; lifecycle events and lazy-provider
|
|
46
|
+
* booting always reference the canonical name.
|
|
47
|
+
*
|
|
39
48
|
* Errors propagate to the caller (the `@mudah-cli/mudah` umbrella renders them and
|
|
40
49
|
* maps them to exit codes).
|
|
41
50
|
*/
|
|
51
|
+
export interface ConsoleKernelOptions {
|
|
52
|
+
/** File used to persist command history across runs. */
|
|
53
|
+
historyFile?: string;
|
|
54
|
+
/** Max stored history lines. Default 1000. */
|
|
55
|
+
historyLimit?: number;
|
|
56
|
+
}
|
|
42
57
|
export declare class ConsoleKernel {
|
|
43
58
|
private readonly app;
|
|
44
59
|
private readonly output;
|
|
45
60
|
private readonly commands;
|
|
46
|
-
|
|
61
|
+
/** Alias name -> canonical command name. Kept separate from `commands` so the
|
|
62
|
+
* command list never shows alias duplicates. */
|
|
63
|
+
private readonly aliases;
|
|
64
|
+
private readonly _history;
|
|
65
|
+
private readonly historyFile?;
|
|
66
|
+
private readonly historyLimit;
|
|
67
|
+
/** Dispatched argv (most recent last). */
|
|
68
|
+
get history(): readonly string[];
|
|
69
|
+
/** Clear the command history. */
|
|
70
|
+
clearHistory(): void;
|
|
71
|
+
constructor(app: Application, output: Output, options?: ConsoleKernelOptions);
|
|
47
72
|
/** Register a command module (default export is the command class). */
|
|
48
73
|
register(module: CommandModule): this;
|
|
49
74
|
/** All registered commands, sorted by name. */
|
|
50
75
|
list(): CommandEntry[];
|
|
51
76
|
has(name: string): boolean;
|
|
52
77
|
get(name: string): CommandEntry | undefined;
|
|
78
|
+
/**
|
|
79
|
+
* Tab-completion candidates for a partial argv.
|
|
80
|
+
*
|
|
81
|
+
* - `[]` → all command names (including aliases).
|
|
82
|
+
* - `['g']` → commands starting with "g".
|
|
83
|
+
* - `['greet']` → `[]` (command is fully typed).
|
|
84
|
+
* - `['greet', '']` → the command's remaining options plus positional values.
|
|
85
|
+
* - `['greet', '--']` → `['--verbose']` etc. (option flags; `=` appended when the option takes a value).
|
|
86
|
+
* - `['deploy', '--env=pr']` → `['--env=production']` (enum option values).
|
|
87
|
+
* - `['deploy', 'sta']` → `['staging']` (enum positional values).
|
|
88
|
+
* - path/glob arguments complete against the filesystem.
|
|
89
|
+
*/
|
|
90
|
+
complete(argv: string[]): string[];
|
|
91
|
+
/** Command names plus aliases, filtered by prefix. */
|
|
92
|
+
private commandCandidates;
|
|
93
|
+
/**
|
|
94
|
+
* Candidates for the token being typed after the command name. Options
|
|
95
|
+
* already present are dropped; `--opt=value` completes the value.
|
|
96
|
+
*/
|
|
97
|
+
private completeForCommand;
|
|
53
98
|
/**
|
|
54
99
|
* Names of every registered group, sorted. Groups come from `group:name`
|
|
55
100
|
* command signatures — registering `db:migrate` creates the `db` group.
|
|
@@ -61,4 +106,6 @@ export declare class ConsoleKernel {
|
|
|
61
106
|
hasGroup(name: string): boolean;
|
|
62
107
|
/** Dispatch argv (command name + arguments). Returns the exit code. */
|
|
63
108
|
dispatch(argv: string[]): Promise<number>;
|
|
109
|
+
private loadHistory;
|
|
110
|
+
private persistHistory;
|
|
64
111
|
}
|
package/dist/kernel.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { hasMessage, t, UsageError } from '@mudah-cli/core';
|
|
4
|
+
import { ArgumentParseError, parseInput, parseSignature, suggestCommand, } from './command.js';
|
|
3
5
|
/** Split `db:migrate` into its group and short name. */
|
|
4
6
|
export function splitCommandName(name) {
|
|
5
7
|
const separator = name.indexOf(':');
|
|
@@ -13,25 +15,98 @@ function groupDescriptionOf(instance) {
|
|
|
13
15
|
return typeof value === 'string' ? value : undefined;
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* Flow for `dispatch(argv)`:
|
|
19
|
-
* 1. Resolve the command by name (UsageError when unknown/missing).
|
|
20
|
-
* 2. Emit `command.before`, boot lazy providers for this command.
|
|
21
|
-
* 3. Parse argv against the command's signature.
|
|
22
|
-
* 4. Inject app/output/input and call `handle()`.
|
|
23
|
-
* 5. Emit `command.after` with the exit code and duration.
|
|
24
|
-
*
|
|
25
|
-
* Errors propagate to the caller (the `@mudah-cli/mudah` umbrella renders them and
|
|
26
|
-
* maps them to exit codes).
|
|
18
|
+
* Help text for a command: the locale-resolved `descriptionKey` when it
|
|
19
|
+
* exists, otherwise the literal `description`.
|
|
27
20
|
*/
|
|
21
|
+
function resolveDescription(instance) {
|
|
22
|
+
if (instance.descriptionKey.length > 0 && hasMessage(instance.descriptionKey)) {
|
|
23
|
+
return t(instance.descriptionKey);
|
|
24
|
+
}
|
|
25
|
+
return instance.description ?? '';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Completion values for a positional arg or option: declared enum values, or
|
|
29
|
+
* filesystem entries for `path` / `glob` types.
|
|
30
|
+
*/
|
|
31
|
+
function completionValues(spec, partial) {
|
|
32
|
+
if (spec === undefined)
|
|
33
|
+
return [];
|
|
34
|
+
if (spec.type === 'enum' && spec.enumValues !== undefined) {
|
|
35
|
+
return spec.enumValues.filter((value) => value.startsWith(partial));
|
|
36
|
+
}
|
|
37
|
+
if (spec.type === 'path' || spec.type === 'glob')
|
|
38
|
+
return pathCandidates(partial);
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
/** Directory entries matching the last path segment; directories get a trailing slash. */
|
|
42
|
+
function pathCandidates(partial) {
|
|
43
|
+
const slash = partial.lastIndexOf('/');
|
|
44
|
+
const dir = slash === -1 ? '.' : partial.slice(0, slash) || '/';
|
|
45
|
+
const base = slash === -1 ? partial : partial.slice(slash + 1);
|
|
46
|
+
const prefix = slash === -1 ? '' : `${partial.slice(0, slash)}/`;
|
|
47
|
+
try {
|
|
48
|
+
return readdirSync(dir, { withFileTypes: true })
|
|
49
|
+
.filter((entry) => entry.name.startsWith(base) && !entry.name.startsWith('.'))
|
|
50
|
+
.map((entry) => `${prefix}${entry.name}${entry.isDirectory() ? '/' : ''}`)
|
|
51
|
+
.sort();
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// An unreadable directory simply has no candidates.
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** The positional argument the next token would fill, respecting variadics. */
|
|
59
|
+
function positionalArgAt(entry, prior) {
|
|
60
|
+
const args = entry.signature.args;
|
|
61
|
+
if (args.length === 0)
|
|
62
|
+
return undefined;
|
|
63
|
+
const filled = prior.filter((token) => !token.startsWith('-')).length;
|
|
64
|
+
const last = args.at(-1);
|
|
65
|
+
if (last.variadic)
|
|
66
|
+
return filled >= args.length - 1 ? last : args[filled];
|
|
67
|
+
return args[filled];
|
|
68
|
+
}
|
|
69
|
+
/** Filter and dedupe aliases, excluding the canonical name. */
|
|
70
|
+
function normalizeAliases(aliases, canonical) {
|
|
71
|
+
if (!aliases)
|
|
72
|
+
return [];
|
|
73
|
+
const seen = new Set();
|
|
74
|
+
const out = [];
|
|
75
|
+
for (const alias of aliases) {
|
|
76
|
+
if (!alias || alias === canonical)
|
|
77
|
+
continue;
|
|
78
|
+
if (seen.has(alias))
|
|
79
|
+
continue;
|
|
80
|
+
seen.add(alias);
|
|
81
|
+
out.push(alias);
|
|
82
|
+
}
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
28
85
|
export class ConsoleKernel {
|
|
29
86
|
app;
|
|
30
87
|
output;
|
|
31
88
|
commands = new Map();
|
|
32
|
-
|
|
89
|
+
/** Alias name -> canonical command name. Kept separate from `commands` so the
|
|
90
|
+
* command list never shows alias duplicates. */
|
|
91
|
+
aliases = new Map();
|
|
92
|
+
_history = [];
|
|
93
|
+
historyFile;
|
|
94
|
+
historyLimit;
|
|
95
|
+
/** Dispatched argv (most recent last). */
|
|
96
|
+
get history() {
|
|
97
|
+
return this._history;
|
|
98
|
+
}
|
|
99
|
+
/** Clear the command history. */
|
|
100
|
+
clearHistory() {
|
|
101
|
+
this._history.length = 0;
|
|
102
|
+
this.persistHistory();
|
|
103
|
+
}
|
|
104
|
+
constructor(app, output, options = {}) {
|
|
33
105
|
this.app = app;
|
|
34
106
|
this.output = output;
|
|
107
|
+
this.historyFile = options.historyFile;
|
|
108
|
+
this.historyLimit = options.historyLimit ?? 1000;
|
|
109
|
+
this.loadHistory();
|
|
35
110
|
}
|
|
36
111
|
/** Register a command module (default export is the command class). */
|
|
37
112
|
register(module) {
|
|
@@ -52,7 +127,7 @@ export class ConsoleKernel {
|
|
|
52
127
|
const entry = {
|
|
53
128
|
name: signature.name,
|
|
54
129
|
signature,
|
|
55
|
-
description: instance
|
|
130
|
+
description: resolveDescription(instance),
|
|
56
131
|
factory: () => new Ctor(),
|
|
57
132
|
};
|
|
58
133
|
const group = splitCommandName(signature.name).group;
|
|
@@ -62,6 +137,18 @@ export class ConsoleKernel {
|
|
|
62
137
|
if (declared !== undefined)
|
|
63
138
|
entry.groupDescription = declared;
|
|
64
139
|
}
|
|
140
|
+
const aliasList = normalizeAliases(instance.aliases, signature.name);
|
|
141
|
+
for (const alias of aliasList) {
|
|
142
|
+
// First-wins: an alias that already names a command is left untouched.
|
|
143
|
+
if (this.commands.has(alias) || this.aliases.has(alias))
|
|
144
|
+
continue;
|
|
145
|
+
this.aliases.set(alias, signature.name);
|
|
146
|
+
}
|
|
147
|
+
entry.aliases = aliasList;
|
|
148
|
+
entry.deprecated = instance.deprecated;
|
|
149
|
+
const exitCodesStatic = Ctor.exitCodes;
|
|
150
|
+
if (exitCodesStatic)
|
|
151
|
+
entry.exitCodes = exitCodesStatic;
|
|
65
152
|
this.commands.set(signature.name, entry);
|
|
66
153
|
return this;
|
|
67
154
|
}
|
|
@@ -70,10 +157,67 @@ export class ConsoleKernel {
|
|
|
70
157
|
return [...this.commands.values()].sort((a, b) => a.name.localeCompare(b.name));
|
|
71
158
|
}
|
|
72
159
|
has(name) {
|
|
73
|
-
return this.commands.has(name);
|
|
160
|
+
return this.commands.has(name) || this.aliases.has(name);
|
|
74
161
|
}
|
|
75
162
|
get(name) {
|
|
76
|
-
|
|
163
|
+
const canonical = this.aliases.get(name);
|
|
164
|
+
return this.commands.get(canonical ?? name);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Tab-completion candidates for a partial argv.
|
|
168
|
+
*
|
|
169
|
+
* - `[]` → all command names (including aliases).
|
|
170
|
+
* - `['g']` → commands starting with "g".
|
|
171
|
+
* - `['greet']` → `[]` (command is fully typed).
|
|
172
|
+
* - `['greet', '']` → the command's remaining options plus positional values.
|
|
173
|
+
* - `['greet', '--']` → `['--verbose']` etc. (option flags; `=` appended when the option takes a value).
|
|
174
|
+
* - `['deploy', '--env=pr']` → `['--env=production']` (enum option values).
|
|
175
|
+
* - `['deploy', 'sta']` → `['staging']` (enum positional values).
|
|
176
|
+
* - path/glob arguments complete against the filesystem.
|
|
177
|
+
*/
|
|
178
|
+
complete(argv) {
|
|
179
|
+
if (argv.length === 0)
|
|
180
|
+
return this.commandCandidates('');
|
|
181
|
+
if (argv.length === 1)
|
|
182
|
+
return this.commandCandidates(argv[0]);
|
|
183
|
+
const entry = this.get(argv[0]);
|
|
184
|
+
if (entry === undefined)
|
|
185
|
+
return [];
|
|
186
|
+
return this.completeForCommand(entry, argv.slice(1));
|
|
187
|
+
}
|
|
188
|
+
/** Command names plus aliases, filtered by prefix. */
|
|
189
|
+
commandCandidates(partial) {
|
|
190
|
+
const names = new Set(this.commands.keys());
|
|
191
|
+
for (const alias of this.aliases.keys())
|
|
192
|
+
names.add(alias);
|
|
193
|
+
return [...names].filter((name) => name.startsWith(partial)).sort();
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Candidates for the token being typed after the command name. Options
|
|
197
|
+
* already present are dropped; `--opt=value` completes the value.
|
|
198
|
+
*/
|
|
199
|
+
completeForCommand(entry, rest) {
|
|
200
|
+
const partial = rest.at(-1) ?? '';
|
|
201
|
+
const prior = rest.slice(0, -1);
|
|
202
|
+
// `--env=pr` → complete the value of a value-taking option.
|
|
203
|
+
if (partial.startsWith('--')) {
|
|
204
|
+
const eq = partial.indexOf('=');
|
|
205
|
+
if (eq !== -1) {
|
|
206
|
+
const optionName = partial.slice(2, eq);
|
|
207
|
+
const typed = partial.slice(eq + 1);
|
|
208
|
+
const option = entry.signature.options.find((o) => o.name === optionName);
|
|
209
|
+
return completionValues(option, typed).map((value) => `--${optionName}=${value}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const used = new Set(prior.filter((token) => token.startsWith('--')).map((token) => (token.split('=')[0] ?? token).slice(2)));
|
|
213
|
+
const candidates = [];
|
|
214
|
+
for (const option of entry.signature.options) {
|
|
215
|
+
if (used.has(option.name))
|
|
216
|
+
continue;
|
|
217
|
+
candidates.push(option.takesValue ? `--${option.name}=` : `--${option.name}`);
|
|
218
|
+
}
|
|
219
|
+
candidates.push(...completionValues(positionalArgAt(entry, prior), partial));
|
|
220
|
+
return candidates.filter((candidate) => candidate.startsWith(partial));
|
|
77
221
|
}
|
|
78
222
|
/**
|
|
79
223
|
* Names of every registered group, sorted. Groups come from `group:name`
|
|
@@ -118,14 +262,21 @@ export class ConsoleKernel {
|
|
|
118
262
|
hint: 'Run with --help to see available commands.',
|
|
119
263
|
});
|
|
120
264
|
}
|
|
121
|
-
const entry = this.
|
|
265
|
+
const entry = this.get(name);
|
|
122
266
|
if (!entry) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
267
|
+
const suggestion = suggestCommand(name, [...this.commands.keys(), ...this.aliases.keys()]);
|
|
268
|
+
const hint = suggestion
|
|
269
|
+
? `Did you mean "${suggestion}"?`
|
|
270
|
+
: 'Run with --help to see available commands.';
|
|
271
|
+
throw new UsageError(`Unknown command "${name}".`, { hint });
|
|
272
|
+
}
|
|
273
|
+
if (entry.deprecated) {
|
|
274
|
+
const reason = typeof entry.deprecated === 'string' && entry.deprecated.length > 0 ? entry.deprecated : '';
|
|
275
|
+
this.output.warn(`${entry.name} is deprecated${reason ? `: ${reason}` : ''}.`);
|
|
126
276
|
}
|
|
127
|
-
|
|
128
|
-
await this.app.
|
|
277
|
+
const canonical = entry.name;
|
|
278
|
+
await this.app.events().emit('command.before', { command: canonical, argv });
|
|
279
|
+
await this.app.bootLazyForCommand(canonical);
|
|
129
280
|
let input;
|
|
130
281
|
try {
|
|
131
282
|
input = parseInput(entry.signature, argv.slice(1));
|
|
@@ -144,12 +295,43 @@ export class ConsoleKernel {
|
|
|
144
295
|
exitCode = (await command.handle()) ?? 0;
|
|
145
296
|
}
|
|
146
297
|
catch (error) {
|
|
147
|
-
await this.app.events().emit('command.error', { command:
|
|
298
|
+
await this.app.events().emit('command.error', { command: canonical, error });
|
|
148
299
|
throw error;
|
|
149
300
|
}
|
|
150
301
|
const durationMs = Math.round(performance.now() - startedAt);
|
|
151
|
-
await this.app.events().emit('command.after', { command:
|
|
302
|
+
await this.app.events().emit('command.after', { command: canonical, exitCode, durationMs });
|
|
303
|
+
this._history.push(argv.join(' '));
|
|
304
|
+
this.persistHistory();
|
|
152
305
|
return exitCode;
|
|
153
306
|
}
|
|
307
|
+
loadHistory() {
|
|
308
|
+
if (this.historyFile === undefined)
|
|
309
|
+
return;
|
|
310
|
+
try {
|
|
311
|
+
const text = readFileSync(this.historyFile, 'utf8');
|
|
312
|
+
for (const line of text.split('\n')) {
|
|
313
|
+
if (line.length > 0)
|
|
314
|
+
this._history.push(line);
|
|
315
|
+
}
|
|
316
|
+
if (this._history.length > this.historyLimit) {
|
|
317
|
+
this._history.splice(0, this._history.length - this.historyLimit);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
// Missing file is a first run.
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
persistHistory() {
|
|
325
|
+
if (this.historyFile === undefined)
|
|
326
|
+
return;
|
|
327
|
+
try {
|
|
328
|
+
mkdirSync(dirname(this.historyFile), { recursive: true });
|
|
329
|
+
const lines = this._history.slice(-this.historyLimit);
|
|
330
|
+
writeFileSync(this.historyFile, `${lines.join('\n')}${lines.length > 0 ? '\n' : ''}`, 'utf8');
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// A read-only filesystem just means history stays in memory.
|
|
334
|
+
}
|
|
335
|
+
}
|
|
154
336
|
}
|
|
155
337
|
//# sourceMappingURL=kernel.js.map
|
package/dist/kernel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAwC,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElG,OAAO,EACL,kBAAkB,EAIlB,UAAU,EACV,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AAgCtB,wDAAwD;AACxD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACtD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,0EAA0E;AAC1E,SAAS,kBAAkB,CAAC,QAAiB;IAC3C,MAAM,KAAK,GAAI,QAA2C,CAAC,gBAAgB,CAAC;IAC5E,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,QAAiB;IAC3C,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9E,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CACvB,IAAgE,EAChE,OAAe;IAEf,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;IACjF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,0FAA0F;AAC1F,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;IAChE,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;IACjE,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC7C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAC7E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aACzE,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;QACpD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,eAAe,CAAC,KAAmB,EAAE,KAAwB;IACpE,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;IAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;IAC1B,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1E,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,+DAA+D;AAC/D,SAAS,gBAAgB,CAAC,OAA6B,EAAE,SAAiB;IACxE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAyBD,MAAM,OAAO,aAAa;IAqBL,GAAG;IACH,MAAM;IArBR,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC5D;oDACgD;IAC/B,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,QAAQ,GAAa,EAAE,CAAC;IACxB,WAAW,CAAU;IACrB,YAAY,CAAS;IAEtC,0CAA0C;IAC1C,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,iCAAiC;IACjC,YAAY;QACV,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,YACmB,GAAgB,EAChB,MAAc,EAC/B,OAAO,GAAyB,EAAE;mBAFjB,GAAG;sBACH,MAAM;QAGvB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,uEAAuE;IACvE,QAAQ,CAAC,MAAqB;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;QAC5B,mEAAmE;QACnE,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAa,CAAC;QACvC,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,IAAI,oBAAoB,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,IAAI,0BAA0B,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,qCAAqC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,KAAK,GAAiB;YAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,SAAS;YACT,WAAW,EAAE,kBAAkB,CAAC,QAAQ,CAAC;YACzC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAa;SACrC,CAAC;QACF,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QAChE,CAAC;QACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,uEAAuE;YACvE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAClE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACvC,MAAM,eAAe,GAAI,IAA+C,CAAC,SAAS,CAAC;QACnF,IAAI,eAAe;YAAE,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IAC/C,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,GAAG,CAAC,IAAY;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,IAAc;QACrB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,sDAAsD;IAC9C,iBAAiB,CAAC,OAAe;QACvC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,KAAmB,EAAE,IAAc;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhC,4DAA4D;QAC5D,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBACd,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;gBAC1E,OAAO,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACxG,CAAC;QAEF,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,SAAS;YACpC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAE7E,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;QACjD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,SAAS;YACxC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;;gBACtD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;aACzB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI;YACJ,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,KAAK,SAAS,CAAC,EAAE,gBAAgB,IAAI,EAAE;YAC3F,QAAQ;SACT,CAAC,CAAC,CAAC;IACR,CAAC;IAED,8BAA8B;IAC9B,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAClE,CAAC;IAED,4EAA4E;IAC5E,QAAQ,CAAC,IAAY;QACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,QAAQ,CAAC,IAAc;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,UAAU,CAAC,uBAAuB,EAAE;gBAC5C,IAAI,EAAE,4CAA4C;aACnD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3F,MAAM,IAAI,GAAG,UAAU;gBACrB,CAAC,CAAC,iBAAiB,UAAU,IAAI;gBACjC,CAAC,CAAC,4CAA4C,CAAC;YACjD,MAAM,IAAI,UAAU,CAAC,oBAAoB,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,MAAM,GACV,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,iBAAiB,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAE7C,IAAI,KAAkB,CAAC;QACvB,IAAI,CAAC;YACH,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;gBACxC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7E,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QAE7D,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACpD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO;QAC3C,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtD,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAChG,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;QAC/D,CAAC;IACH,CAAC;CACF"}
|
package/dist/prompts.js
CHANGED
|
@@ -40,7 +40,10 @@ export class Prompts {
|
|
|
40
40
|
return value === 'y' || value === 'yes' || value === 'true' || value === '1';
|
|
41
41
|
}
|
|
42
42
|
const def = options.defaultValue ?? false;
|
|
43
|
-
const answer = await this.ask(`${question} [${def ? 'Y/n' : 'y/N'}]`, {
|
|
43
|
+
const answer = await this.ask(`${question} [${def ? 'Y/n' : 'y/N'}]`, {
|
|
44
|
+
...options,
|
|
45
|
+
defaultValue: undefined,
|
|
46
|
+
});
|
|
44
47
|
if (answer === '')
|
|
45
48
|
return def;
|
|
46
49
|
return answer.toLowerCase().startsWith('y');
|
|
@@ -69,7 +72,9 @@ export class Prompts {
|
|
|
69
72
|
const interactive = (options.input ?? process.stdin).isTTY === true;
|
|
70
73
|
if (!interactive) {
|
|
71
74
|
writeOut(options.output, `\n${question}\n`);
|
|
72
|
-
choices.forEach((choice, i) =>
|
|
75
|
+
choices.forEach((choice, i) => {
|
|
76
|
+
writeOut(options.output, ` ${i + 1}. ${choice}\n`);
|
|
77
|
+
});
|
|
73
78
|
const answer = await this.ask('Choose', options);
|
|
74
79
|
const index = Number(answer) - 1;
|
|
75
80
|
const choice = choices[index];
|
|
@@ -98,7 +103,9 @@ export class Prompts {
|
|
|
98
103
|
const interactive = (options.input ?? process.stdin).isTTY === true;
|
|
99
104
|
if (!interactive) {
|
|
100
105
|
writeOut(options.output, `\n${question}\n`);
|
|
101
|
-
choices.forEach((choice, i) =>
|
|
106
|
+
choices.forEach((choice, i) => {
|
|
107
|
+
writeOut(options.output, ` ${i + 1}. ${choice}\n`);
|
|
108
|
+
});
|
|
102
109
|
const answer = await this.ask('Choose (comma-separated numbers)', options);
|
|
103
110
|
return parseNumberList(answer, choices.length);
|
|
104
111
|
}
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAoBhD;;;;;;;;GAQG;AACH,MAAM,OAAO,OAAO;IACV,EAAE,GAA8B,IAAI,CAAC;IAErC,UAAU,CAAC,KAAyB,EAAE,MAA8B;QAC1E,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;gBACjC,KAAK,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK;gBAC7B,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM;gBAChC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI;aACvC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,GAAG,CAAC,QAAgB,EAAE,OAAO,GAA8C,EAAE;QACjF,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,WAAW,CAAC;QAClE,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/signature.d.ts
CHANGED
|
@@ -4,12 +4,20 @@ export interface ParsedArg {
|
|
|
4
4
|
defaultValue?: string;
|
|
5
5
|
/** Variadic: collects all remaining positionals (`{paths...}`). */
|
|
6
6
|
variadic?: boolean;
|
|
7
|
+
/** Optional declared type, e.g. `{count:int}` or `{mode:enum[a,b]}`. */
|
|
8
|
+
type?: CoercionType;
|
|
9
|
+
/** Allowed values for an `enum` argument. */
|
|
10
|
+
enumValues?: string[];
|
|
7
11
|
}
|
|
8
12
|
export interface ParsedOption {
|
|
9
13
|
name: string;
|
|
10
14
|
/** Takes a value (`--env=production`). */
|
|
11
15
|
takesValue: boolean;
|
|
12
16
|
defaultValue?: string;
|
|
17
|
+
/** Optional declared type, e.g. `[port:int]` or `[mode:enum[a,b]]`. */
|
|
18
|
+
type?: CoercionType;
|
|
19
|
+
/** Allowed values for an `enum` option. */
|
|
20
|
+
enumValues?: string[];
|
|
13
21
|
}
|
|
14
22
|
export interface ParsedSignature {
|
|
15
23
|
name: string;
|
|
@@ -17,10 +25,10 @@ export interface ParsedSignature {
|
|
|
17
25
|
options: ParsedOption[];
|
|
18
26
|
}
|
|
19
27
|
export interface ParsedInput {
|
|
20
|
-
args: Record<string, string>;
|
|
28
|
+
args: Record<string, string | number>;
|
|
21
29
|
/** Variadic arg values, keyed by arg name (only for `{name...}`). */
|
|
22
30
|
lists: Record<string, string[]>;
|
|
23
|
-
options: Record<string, string | boolean>;
|
|
31
|
+
options: Record<string, string | number | boolean>;
|
|
24
32
|
}
|
|
25
33
|
/**
|
|
26
34
|
* Parse a command signature string:
|
|
@@ -41,3 +49,10 @@ export declare function parseInput(signature: ParsedSignature, argv: string[]):
|
|
|
41
49
|
export declare class ArgumentParseError extends Error {
|
|
42
50
|
constructor(message: string);
|
|
43
51
|
}
|
|
52
|
+
export type CoercionType = 'int' | 'float' | 'path' | 'glob' | 'enum';
|
|
53
|
+
/**
|
|
54
|
+
* Turn a raw argv string into its typed value for a declared `:type`.
|
|
55
|
+
* Throws `ArgumentParseError` on invalid input so failures surface at parse
|
|
56
|
+
* time with a uniform error.
|
|
57
|
+
*/
|
|
58
|
+
export declare function coerceValue(value: string, type: CoercionType | undefined, enumValues?: string[]): string | number;
|
package/dist/signature.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolve as resolvePath } from 'node:path';
|
|
1
2
|
/**
|
|
2
3
|
* Parse a command signature string:
|
|
3
4
|
*
|
|
@@ -21,15 +22,22 @@ export function parseSignature(signature) {
|
|
|
21
22
|
const inner = match[1];
|
|
22
23
|
// Non-greedy name so trailing "..." is captured by the variadic group,
|
|
23
24
|
// not eaten by the name character class.
|
|
24
|
-
const parsed = /^([a-zA-Z][\w
|
|
25
|
+
const parsed = /^([a-zA-Z][\w.-]*?)(?::(int|float|path|glob|enum(?:\[[^\]]*\])?))?(\?)?(\.\.\.)?(?:=(.*))?$/.exec(inner);
|
|
25
26
|
if (!parsed) {
|
|
26
27
|
throw new Error(`[console] Invalid argument syntax "{${inner}}" in signature "${signature}".`);
|
|
27
28
|
}
|
|
28
|
-
const
|
|
29
|
-
|
|
29
|
+
const rawType = parsed[2] ?? '';
|
|
30
|
+
const isEnum = rawType.startsWith('enum');
|
|
31
|
+
const type = isEnum ? 'enum' : rawType;
|
|
32
|
+
const enumValues = isEnum ? extractEnumValues(rawType) : undefined;
|
|
33
|
+
const isVariadic = parsed[4] !== undefined;
|
|
34
|
+
if (isVariadic && type) {
|
|
35
|
+
throw new Error(`[console] Variadic argument "{${inner}}" cannot declare a type; coerce list elements in the command.`);
|
|
36
|
+
}
|
|
37
|
+
if (isVariadic && parsed[5] !== undefined) {
|
|
30
38
|
throw new Error(`[console] Variadic argument "{${inner}}" cannot take a default value.`);
|
|
31
39
|
}
|
|
32
|
-
if (isVariadic && parsed[
|
|
40
|
+
if (isVariadic && parsed[3] === '?') {
|
|
33
41
|
throw new Error(`[console] Variadic argument "{${inner}}" cannot also be optional.`);
|
|
34
42
|
}
|
|
35
43
|
if (isVariadic) {
|
|
@@ -40,22 +48,31 @@ export function parseSignature(signature) {
|
|
|
40
48
|
}
|
|
41
49
|
result.args.push({
|
|
42
50
|
name: parsed[1],
|
|
43
|
-
optional: parsed[
|
|
51
|
+
optional: parsed[3] === '?',
|
|
44
52
|
...(isVariadic ? { variadic: true } : {}),
|
|
45
|
-
defaultValue: parsed[
|
|
53
|
+
defaultValue: parsed[5],
|
|
54
|
+
...(type ? { type: type, enumValues } : {}),
|
|
46
55
|
});
|
|
47
56
|
}
|
|
48
57
|
if (variadicIndex !== -1 && variadicIndex !== result.args.length - 1) {
|
|
49
58
|
throw new Error(`[console] Variadic argument must be the final argument in signature "${signature}".`);
|
|
50
59
|
}
|
|
51
|
-
for (const match of trimmed.matchAll(/\[-{2}([a-zA-Z][\w-]*)(?:=([^}\]]*))?\]/g)) {
|
|
60
|
+
for (const match of trimmed.matchAll(/\[-{2}([a-zA-Z][\w-]*)(?::(int|float|path|glob|enum(?:\[[^\]]*\])?))?(?:=([^}\]]*))?\]/g)) {
|
|
52
61
|
const name = match[1];
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
62
|
+
const rawType = match[2] ?? '';
|
|
63
|
+
const isEnum = rawType.startsWith('enum');
|
|
64
|
+
const type = isEnum ? 'enum' : rawType;
|
|
65
|
+
const enumValues = isEnum ? extractEnumValues(rawType) : undefined;
|
|
66
|
+
const defaultValue = match[3];
|
|
67
|
+
const takesValue = defaultValue !== undefined || type !== '';
|
|
68
|
+
const option = { name, takesValue };
|
|
69
|
+
if (defaultValue !== undefined)
|
|
70
|
+
option.defaultValue = defaultValue;
|
|
71
|
+
if (type) {
|
|
72
|
+
option.type = type;
|
|
73
|
+
option.enumValues = enumValues;
|
|
74
|
+
}
|
|
75
|
+
result.options.push(option);
|
|
59
76
|
}
|
|
60
77
|
return result;
|
|
61
78
|
}
|
|
@@ -76,11 +93,14 @@ export function parseInput(signature, argv) {
|
|
|
76
93
|
}
|
|
77
94
|
if (token.startsWith('--')) {
|
|
78
95
|
const eq = token.indexOf('=');
|
|
96
|
+
const name = eq === -1 ? token.slice(2) : token.slice(2, eq);
|
|
97
|
+
const option = signature.options.find((o) => o.name === name);
|
|
79
98
|
if (eq === -1) {
|
|
80
|
-
input.options[
|
|
99
|
+
input.options[name] = true;
|
|
81
100
|
}
|
|
82
101
|
else {
|
|
83
|
-
|
|
102
|
+
const raw = token.slice(eq + 1);
|
|
103
|
+
input.options[name] = option ? coerceValue(raw, option.type, option.enumValues) : raw;
|
|
84
104
|
}
|
|
85
105
|
continue;
|
|
86
106
|
}
|
|
@@ -93,7 +113,7 @@ export function parseInput(signature, argv) {
|
|
|
93
113
|
throw new ArgumentParseError(`Unknown option "--${name}" for command "${signature.name}".`);
|
|
94
114
|
}
|
|
95
115
|
}
|
|
96
|
-
const variadic = signature.args.length > 0 &&
|
|
116
|
+
const variadic = signature.args.length > 0 && signature.args.at(-1)?.variadic === true;
|
|
97
117
|
const fixedArgs = variadic ? signature.args.slice(0, -1) : signature.args;
|
|
98
118
|
if (!variadic && positionals.length > signature.args.length) {
|
|
99
119
|
throw new ArgumentParseError(`Too many arguments for "${signature.name}": expected at most ${signature.args.length}.`);
|
|
@@ -102,10 +122,10 @@ export function parseInput(signature, argv) {
|
|
|
102
122
|
fixedArgs.forEach((arg, index) => {
|
|
103
123
|
const value = positionals[index];
|
|
104
124
|
if (value !== undefined) {
|
|
105
|
-
input.args[arg.name] = value;
|
|
125
|
+
input.args[arg.name] = coerceValue(value, arg.type, arg.enumValues);
|
|
106
126
|
}
|
|
107
127
|
else if (arg.defaultValue !== undefined) {
|
|
108
|
-
input.args[arg.name] = arg.defaultValue;
|
|
128
|
+
input.args[arg.name] = coerceValue(arg.defaultValue, arg.type, arg.enumValues);
|
|
109
129
|
}
|
|
110
130
|
else if (!arg.optional) {
|
|
111
131
|
throw new ArgumentParseError(`Missing required argument "${arg.name}" for command "${signature.name}".`);
|
|
@@ -123,7 +143,15 @@ export function parseInput(signature, argv) {
|
|
|
123
143
|
// Fill options with defaults.
|
|
124
144
|
for (const option of signature.options) {
|
|
125
145
|
if (input.options[option.name] === undefined) {
|
|
126
|
-
|
|
146
|
+
if (!option.takesValue) {
|
|
147
|
+
input.options[option.name] = false;
|
|
148
|
+
}
|
|
149
|
+
else if (option.defaultValue !== undefined) {
|
|
150
|
+
input.options[option.name] = coerceValue(option.defaultValue, option.type, option.enumValues);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
input.options[option.name] = '';
|
|
154
|
+
}
|
|
127
155
|
}
|
|
128
156
|
}
|
|
129
157
|
return input;
|
|
@@ -134,4 +162,44 @@ export class ArgumentParseError extends Error {
|
|
|
134
162
|
this.name = 'ArgumentParseError';
|
|
135
163
|
}
|
|
136
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Turn a raw argv string into its typed value for a declared `:type`.
|
|
167
|
+
* Throws `ArgumentParseError` on invalid input so failures surface at parse
|
|
168
|
+
* time with a uniform error.
|
|
169
|
+
*/
|
|
170
|
+
export function coerceValue(value, type, enumValues) {
|
|
171
|
+
switch (type) {
|
|
172
|
+
case 'int': {
|
|
173
|
+
const n = Number(value);
|
|
174
|
+
if (!Number.isInteger(n)) {
|
|
175
|
+
throw new ArgumentParseError(`"${value}" is not an integer.`);
|
|
176
|
+
}
|
|
177
|
+
return n;
|
|
178
|
+
}
|
|
179
|
+
case 'float': {
|
|
180
|
+
const n = Number(value);
|
|
181
|
+
if (!Number.isFinite(n)) {
|
|
182
|
+
throw new ArgumentParseError(`"${value}" is not a number.`);
|
|
183
|
+
}
|
|
184
|
+
return n;
|
|
185
|
+
}
|
|
186
|
+
case 'enum': {
|
|
187
|
+
if (enumValues !== undefined && !enumValues.includes(value)) {
|
|
188
|
+
throw new ArgumentParseError(`"${value}" is not one of: ${enumValues.join(', ')}.`);
|
|
189
|
+
}
|
|
190
|
+
return value;
|
|
191
|
+
}
|
|
192
|
+
case 'path':
|
|
193
|
+
return resolvePath(value);
|
|
194
|
+
case 'glob':
|
|
195
|
+
return value;
|
|
196
|
+
default:
|
|
197
|
+
return value;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/** Pull allowed values out of an `enum[a,b,c]` type token. */
|
|
201
|
+
function extractEnumValues(type) {
|
|
202
|
+
const match = /^enum\[(.*)\]$/.exec(type);
|
|
203
|
+
return match ? match[1].split(',').map((v) => v.trim()) : undefined;
|
|
204
|
+
}
|
|
137
205
|
//# sourceMappingURL=signature.js.map
|
package/dist/signature.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mudah-cli/console",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "Command system: string signatures, typed dispatch, interactive prompts, and help rendering.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
|
+
"author": "Mudah Contributors",
|
|
8
|
+
"homepage": "https://github.com/thesimonharms/mudah#readme",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/thesimonharms/mudah.git",
|
|
12
|
+
"directory": "packages/console"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"cli",
|
|
16
|
+
"command",
|
|
17
|
+
"prompt",
|
|
18
|
+
"help",
|
|
19
|
+
"signature",
|
|
20
|
+
"terminal",
|
|
21
|
+
"typescript"
|
|
22
|
+
],
|
|
7
23
|
"engines": {
|
|
8
24
|
"node": ">=26"
|
|
9
25
|
},
|
|
@@ -18,10 +34,10 @@
|
|
|
18
34
|
],
|
|
19
35
|
"sideEffects": false,
|
|
20
36
|
"dependencies": {
|
|
21
|
-
"@mudah-cli/animation": "^0.
|
|
22
|
-
"@mudah-cli/core": "^0.
|
|
23
|
-
"@mudah-cli/terminal": "^0.
|
|
24
|
-
"@mudah-cli/ui": "^0.
|
|
37
|
+
"@mudah-cli/animation": "^0.9.2",
|
|
38
|
+
"@mudah-cli/core": "^0.9.2",
|
|
39
|
+
"@mudah-cli/terminal": "^0.9.2",
|
|
40
|
+
"@mudah-cli/ui": "^0.9.2"
|
|
25
41
|
},
|
|
26
42
|
"publishConfig": {
|
|
27
43
|
"access": "public"
|