@runa-cmd/core 0.2.0-beta.0 → 0.2.0-beta.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/README.md +137 -23
- package/dist/cli.d.ts +20 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +370 -123
- package/dist/cli.js.map +1 -1
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +1 -0
- package/dist/command.js.map +1 -1
- package/dist/errors.d.ts +25 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +72 -6
- package/dist/errors.js.map +1 -1
- package/dist/flag-name.d.ts +12 -0
- package/dist/flag-name.d.ts.map +1 -0
- package/dist/flag-name.js +19 -0
- package/dist/flag-name.js.map +1 -0
- package/dist/help.d.ts +21 -0
- package/dist/help.d.ts.map +1 -0
- package/dist/help.js +152 -0
- package/dist/help.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +10 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +9 -0
- package/dist/internal.js.map +1 -0
- package/dist/introspect.d.ts.map +1 -1
- package/dist/introspect.js +12 -3
- package/dist/introspect.js.map +1 -1
- package/dist/lifecycle.js +1 -1
- package/dist/lifecycle.js.map +1 -1
- package/dist/parse/adapters/zod-v4.d.ts.map +1 -1
- package/dist/parse/adapters/zod-v4.js +6 -3
- package/dist/parse/adapters/zod-v4.js.map +1 -1
- package/dist/parse/deprecated.d.ts +12 -0
- package/dist/parse/deprecated.d.ts.map +1 -0
- package/dist/parse/deprecated.js +21 -0
- package/dist/parse/deprecated.js.map +1 -0
- package/dist/parse/parseargs-bridge.d.ts.map +1 -1
- package/dist/parse/parseargs-bridge.js +14 -10
- package/dist/parse/parseargs-bridge.js.map +1 -1
- package/dist/parse/resolve.d.ts +34 -4
- package/dist/parse/resolve.d.ts.map +1 -1
- package/dist/parse/resolve.js +134 -54
- package/dist/parse/resolve.js.map +1 -1
- package/dist/parse/schema-adapter.d.ts +5 -3
- package/dist/parse/schema-adapter.d.ts.map +1 -1
- package/dist/parse/schema-adapter.js.map +1 -1
- package/dist/parse/schema-walker.d.ts.map +1 -1
- package/dist/parse/schema-walker.js +1 -0
- package/dist/parse/schema-walker.js.map +1 -1
- package/dist/parse/strict.d.ts +36 -2
- package/dist/parse/strict.d.ts.map +1 -1
- package/dist/parse/strict.js +53 -15
- package/dist/parse/strict.js.map +1 -1
- package/dist/plugin.d.ts +12 -3
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +60 -9
- package/dist/plugin.js.map +1 -1
- package/dist/stop.d.ts +25 -0
- package/dist/stop.d.ts.map +1 -0
- package/dist/stop.js +110 -0
- package/dist/stop.js.map +1 -0
- package/dist/suggest.d.ts +3 -2
- package/dist/suggest.d.ts.map +1 -1
- package/dist/suggest.js +5 -4
- package/dist/suggest.js.map +1 -1
- package/dist/tool-channel.d.ts +48 -0
- package/dist/tool-channel.d.ts.map +1 -0
- package/dist/tool-channel.js +46 -0
- package/dist/tool-channel.js.map +1 -0
- package/dist/types.d.ts +51 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +5 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @runa-cmd/core — SchemaAdapter seam
|
|
3
3
|
*
|
|
4
|
-
* Introspection-only abstraction over schema-library internals (
|
|
4
|
+
* Introspection-only abstraction over schema-library internals (ADR-0010).
|
|
5
5
|
* The adapter answers structural questions (kind, optionality, default,
|
|
6
6
|
* enum values, description) — it does NOT validate; `resolve.ts` keeps
|
|
7
7
|
* calling Zod's `.parse()` directly.
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* The `SchemaAdapter`/`SchemaDescription` types are public (exported from
|
|
10
10
|
* the package barrel) to enable external experimentation, but adapter
|
|
11
11
|
* SELECTION stays internal: no `schemaAdapter` config option ships until
|
|
12
|
-
* a second implementation exists
|
|
12
|
+
* a second implementation exists.
|
|
13
13
|
*/
|
|
14
14
|
import type { ZodType } from 'zod';
|
|
15
15
|
import type { ParamType } from '../types.js';
|
|
@@ -30,8 +30,10 @@ export interface SchemaDescription {
|
|
|
30
30
|
hasDefault: boolean;
|
|
31
31
|
/** The default value; undefined when hasDefault is false */
|
|
32
32
|
defaultValue: unknown;
|
|
33
|
-
/** Enum member values,
|
|
33
|
+
/** Enum member values, of the kind itself or of its items */
|
|
34
34
|
enumValues?: string[];
|
|
35
|
+
/** Kind of each element, present only when kind is 'array' */
|
|
36
|
+
itemKind?: ParamType;
|
|
35
37
|
/** Schema description, preferring the outermost layer that has one */
|
|
36
38
|
description?: string;
|
|
37
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-adapter.d.ts","sourceRoot":"","sources":["../../src/parse/schema-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,WAAW,aAAa;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IACnC,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IACjC,6FAA6F;IAC7F,IAAI,EAAE,SAAS,CAAC;IAChB,sFAAsF;IACtF,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAC;IACtB,
|
|
1
|
+
{"version":3,"file":"schema-adapter.d.ts","sourceRoot":"","sources":["../../src/parse/schema-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,WAAW,aAAa;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;IACnC,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IACjC,6FAA6F;IAC7F,IAAI,EAAE,SAAS,CAAC;IAChB,sFAAsF;IACtF,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAC;IACtB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,2FAA2F;AAC3F,eAAO,MAAM,cAAc,EAAE,aAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-adapter.js","sourceRoot":"","sources":["../../src/parse/schema-adapter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-adapter.js","sourceRoot":"","sources":["../../src/parse/schema-adapter.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA4BpD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,cAAc,GAAkB,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-walker.d.ts","sourceRoot":"","sources":["../../src/parse/schema-walker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-walker.d.ts","sourceRoot":"","sources":["../../src/parse/schema-walker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAoBjD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,EAAE,CAE5E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,aAAa,CAE7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-walker.js","sourceRoot":"","sources":["../../src/parse/schema-walker.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,SAAS,eAAe,CAAC,IAAY,EAAE,MAAe;IACrD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE7C,OAAO;QACN,IAAI;QACJ,OAAO,EAAE,IAAI,CAAC,IAAI;QAClB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;QAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC7B,CAAC;AACH,CAAC;AAED,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgC;IAC1D,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAe;IAC7D,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema-walker.js","sourceRoot":"","sources":["../../src/parse/schema-walker.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,SAAS,eAAe,CAAC,IAAY,EAAE,MAAe;IACrD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE7C,OAAO;QACN,IAAI;QACJ,OAAO,EAAE,IAAI,CAAC,IAAI;QAClB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO;QAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;KAC7B,CAAC;AACH,CAAC;AAED,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgC;IAC1D,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAe;IAC7D,OAAO,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC"}
|
package/dist/parse/strict.d.ts
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @runa-cmd/core — Strict unknown-option checking
|
|
3
|
+
*
|
|
4
|
+
* Post-parse validation: util.parseArgs runs with `strict: false` (required
|
|
5
|
+
* for the alias/negation handling and the two-pass global/command parse), so
|
|
6
|
+
* unknown flags surface here as unexpected keys in the parse result. This is
|
|
7
|
+
* the SINGLE place the check lives — disabling it is one call-site guard
|
|
8
|
+
* (`CLIConfig.strictOptions: false`).
|
|
9
|
+
*/
|
|
10
|
+
import type { ParseArgsConfig } from 'node:util';
|
|
11
|
+
import type { OptionMeta } from '../types.js';
|
|
1
12
|
export interface AssertKnownOptionsInput {
|
|
2
13
|
/** Object.keys() of the util.parseArgs result `.values` */
|
|
3
14
|
producedKeys: string[];
|
|
@@ -11,11 +22,34 @@ export interface AssertKnownOptionsInput {
|
|
|
11
22
|
booleanKeys: Set<string>;
|
|
12
23
|
/** Candidate names for did-you-mean: command + global canonical names and long aliases */
|
|
13
24
|
suggestionCandidates: string[];
|
|
25
|
+
/** What was typed: parseArgs reports `--no-x` under the key `x` */
|
|
26
|
+
tokens?: OptionToken[];
|
|
27
|
+
}
|
|
28
|
+
/** The option tokens of a `parseArgs({ tokens: true })` result. */
|
|
29
|
+
export interface OptionToken {
|
|
30
|
+
kind: string;
|
|
31
|
+
name?: string;
|
|
32
|
+
rawName?: string;
|
|
33
|
+
value?: string;
|
|
34
|
+
inlineValue?: boolean;
|
|
14
35
|
}
|
|
36
|
+
export interface AssertOptionValuesInput {
|
|
37
|
+
tokens: OptionToken[] | undefined;
|
|
38
|
+
/** Options registered in the parseArgs config */
|
|
39
|
+
options: NonNullable<ParseArgsConfig['options']>;
|
|
40
|
+
longAliasMap: Record<string, string>;
|
|
41
|
+
optionMeta?: Record<string, OptionMeta>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Throw a ValidationError (exit 2) on the first option that takes a value but
|
|
45
|
+
* got none. Tokens tell the cases apart: with `--tag --force`, parseArgs takes
|
|
46
|
+
* `--force` as the value and silently drops the flag, while `--tag=--force`
|
|
47
|
+
* and `--tag -text` are values the user meant.
|
|
48
|
+
*/
|
|
49
|
+
export declare function assertOptionValues(input: AssertOptionValuesInput): void;
|
|
15
50
|
/**
|
|
16
51
|
* Throw a ValidationError (exit 2) on the first parseArgs-produced key that
|
|
17
|
-
* is not registered, with a did-you-mean suggestion when a candidate is
|
|
18
|
-
* within Levenshtein distance ≤ 3.
|
|
52
|
+
* is not registered, with a did-you-mean suggestion when a candidate is close.
|
|
19
53
|
*/
|
|
20
54
|
export declare function assertKnownOptions(input: AssertKnownOptionsInput): void;
|
|
21
55
|
//# sourceMappingURL=strict.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict.d.ts","sourceRoot":"","sources":["../../src/parse/strict.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"strict.d.ts","sourceRoot":"","sources":["../../src/parse/strict.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAIjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,MAAM,WAAW,uBAAuB;IACvC,2DAA2D;IAC3D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;;;OAIG;IACH,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,gFAAgF;IAChF,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,0FAA0F;IAC1F,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,mEAAmE;IACnE,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;AAuBD,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACvC,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IAClC,iDAAiD;IACjD,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACxC;AAaD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAoBvE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAoBvE"}
|
package/dist/parse/strict.js
CHANGED
|
@@ -1,27 +1,65 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @runa-cmd/core — Strict unknown-option checking
|
|
3
|
-
*
|
|
4
|
-
* Post-parse validation: util.parseArgs runs with `strict: false` (required
|
|
5
|
-
* for the alias/negation handling and the two-pass global/command parse), so
|
|
6
|
-
* unknown flags surface here as unexpected keys in the parse result. This is
|
|
7
|
-
* the SINGLE place the check lives — disabling it is one call-site guard
|
|
8
|
-
* (`CLIConfig.strictOptions: false`).
|
|
9
|
-
*/
|
|
10
1
|
import { ValidationError } from '../errors.js';
|
|
2
|
+
import { flagName, longFlag } from '../flag-name.js';
|
|
11
3
|
import { findSuggestion } from '../suggest.js';
|
|
12
4
|
// ─── Helpers ────────────────────────────────────────────────
|
|
13
5
|
/** Render a parseArgs value key as the flag the user typed: `-x` or `--xyz`. */
|
|
14
6
|
function renderFlag(key) {
|
|
15
7
|
return key.length === 1 ? `-${key}` : `--${key}`;
|
|
16
8
|
}
|
|
17
|
-
|
|
9
|
+
function suggestFlag(key, candidates) {
|
|
10
|
+
// `--darkColor` isn't a typo: it's the right name in the wrong form.
|
|
11
|
+
if (candidates.includes(flagName(key)))
|
|
12
|
+
return flagName(key);
|
|
13
|
+
// One letter says too little for a distance, but `-V` has an obvious owner.
|
|
14
|
+
if (key.length === 1) {
|
|
15
|
+
const owners = candidates.filter((name) => name.startsWith(key.toLowerCase()));
|
|
16
|
+
return owners.length === 1 ? owners[0] : undefined;
|
|
17
|
+
}
|
|
18
|
+
return findSuggestion(key, candidates);
|
|
19
|
+
}
|
|
20
|
+
/** Every token that would be read as one of these options. */
|
|
21
|
+
function registeredFlags(options) {
|
|
22
|
+
const flags = new Set();
|
|
23
|
+
for (const [name, option] of Object.entries(options)) {
|
|
24
|
+
flags.add(`--${name}`);
|
|
25
|
+
if (option.type === 'boolean')
|
|
26
|
+
flags.add(`--no-${name}`);
|
|
27
|
+
if (option.short)
|
|
28
|
+
flags.add(`-${option.short}`);
|
|
29
|
+
}
|
|
30
|
+
return flags;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Throw a ValidationError (exit 2) on the first option that takes a value but
|
|
34
|
+
* got none. Tokens tell the cases apart: with `--tag --force`, parseArgs takes
|
|
35
|
+
* `--force` as the value and silently drops the flag, while `--tag=--force`
|
|
36
|
+
* and `--tag -text` are values the user meant.
|
|
37
|
+
*/
|
|
38
|
+
export function assertOptionValues(input) {
|
|
39
|
+
const { tokens = [], options, longAliasMap, optionMeta } = input;
|
|
40
|
+
const flags = registeredFlags(options);
|
|
41
|
+
for (const { kind, name: key = '', rawName, value, inlineValue } of tokens) {
|
|
42
|
+
if (kind !== 'option' || options[key]?.type !== 'string')
|
|
43
|
+
continue;
|
|
44
|
+
const name = longAliasMap[key] ?? key;
|
|
45
|
+
if (rawName === `--no-${key}`) {
|
|
46
|
+
const message = `Option ${longFlag(name)} can't be negated: it takes a value`;
|
|
47
|
+
throw new ValidationError([{ code: 'custom', message, path: [] }]);
|
|
48
|
+
}
|
|
49
|
+
if (value !== undefined && (inlineValue || !flags.has(value)))
|
|
50
|
+
continue;
|
|
51
|
+
const names = [...(optionMeta?.[name]?.alias ?? []), longFlag(name)].join(', ');
|
|
52
|
+
throw new ValidationError([
|
|
53
|
+
{ code: 'custom', message: `Option ${names} requires a value`, path: [] },
|
|
54
|
+
]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
18
57
|
/**
|
|
19
58
|
* Throw a ValidationError (exit 2) on the first parseArgs-produced key that
|
|
20
|
-
* is not registered, with a did-you-mean suggestion when a candidate is
|
|
21
|
-
* within Levenshtein distance ≤ 3.
|
|
59
|
+
* is not registered, with a did-you-mean suggestion when a candidate is close.
|
|
22
60
|
*/
|
|
23
61
|
export function assertKnownOptions(input) {
|
|
24
|
-
const { producedKeys, knownKeys, booleanKeys, suggestionCandidates } = input;
|
|
62
|
+
const { producedKeys, knownKeys, booleanKeys, suggestionCandidates, tokens = [] } = input;
|
|
25
63
|
for (const key of producedKeys) {
|
|
26
64
|
if (knownKeys.has(key))
|
|
27
65
|
continue;
|
|
@@ -31,8 +69,8 @@ export function assertKnownOptions(input) {
|
|
|
31
69
|
// surfacing the negation token un-folded.
|
|
32
70
|
if (key.startsWith('no-') && booleanKeys.has(key.slice(3)))
|
|
33
71
|
continue;
|
|
34
|
-
const flag = renderFlag(key);
|
|
35
|
-
const suggestion =
|
|
72
|
+
const flag = tokens.find(({ name }) => name === key)?.rawName ?? renderFlag(key);
|
|
73
|
+
const suggestion = suggestFlag(key, suggestionCandidates);
|
|
36
74
|
const message = suggestion
|
|
37
75
|
? `Unknown option: ${flag}. Did you mean '${renderFlag(suggestion)}'?`
|
|
38
76
|
: `Unknown option: ${flag}`;
|
package/dist/parse/strict.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strict.js","sourceRoot":"","sources":["../../src/parse/strict.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"strict.js","sourceRoot":"","sources":["../../src/parse/strict.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Capability validation via PluginAPI proxy
|
|
7
7
|
*/
|
|
8
8
|
import type { ZodType } from 'zod';
|
|
9
|
-
import type { CLISchema, CommandTree, HookHandler, HookName, Middleware, OptionMeta, PluginAPI, PluginCapabilities, PluginConfig } from './types.js';
|
|
9
|
+
import type { CLISchema, CommandTree, HelpHandler, HookHandler, HookName, Middleware, OptionMeta, PluginAPI, PluginCapabilities, PluginConfig } from './types.js';
|
|
10
10
|
/**
|
|
11
11
|
* Validate and return a PluginConfig.
|
|
12
12
|
* Passthrough with shape validation — ensures required fields exist.
|
|
@@ -25,6 +25,10 @@ export declare function resolvePlugins(plugins: PluginInput[]): Promise<PluginCo
|
|
|
25
25
|
* Detects circular dependencies and missing dependencies.
|
|
26
26
|
*/
|
|
27
27
|
export declare function topologicalSort(plugins: PluginConfig[]): PluginConfig[];
|
|
28
|
+
export interface HelpSlot {
|
|
29
|
+
owner?: string;
|
|
30
|
+
show?: HelpHandler;
|
|
31
|
+
}
|
|
28
32
|
export interface PluginHostRefs {
|
|
29
33
|
commands: CommandTree;
|
|
30
34
|
globalOptions: Record<string, ZodType>;
|
|
@@ -34,9 +38,12 @@ export interface PluginHostRefs {
|
|
|
34
38
|
middleware: Middleware[];
|
|
35
39
|
hookRegister: (name: HookName, handler: HookHandler) => void;
|
|
36
40
|
getSchema: () => CLISchema;
|
|
41
|
+
getConfigValues?: () => Promise<Record<string, unknown> | undefined>;
|
|
42
|
+
/** Who replaced the built-in help, and how it's shown now */
|
|
43
|
+
help: HelpSlot;
|
|
37
44
|
/**
|
|
38
45
|
* Registrant(s) per global option name, for collision attribution
|
|
39
|
-
* (
|
|
46
|
+
* (ADR-0014). Statically-declared `config.globalOptions` are
|
|
40
47
|
* seeded with STATIC_GLOBAL_OPTION_SOURCE; `addGlobalOption` appends the
|
|
41
48
|
* registering plugin's name. More than one registrant = a collision that
|
|
42
49
|
* `validateOptionCollisions()` reports.
|
|
@@ -56,8 +63,10 @@ export declare function runPluginSetup(plugins: PluginConfig[], refs: PluginHost
|
|
|
56
63
|
* `config.globalOptions` (as opposed to plugin-registered ones).
|
|
57
64
|
*/
|
|
58
65
|
export declare const STATIC_GLOBAL_OPTION_SOURCE = "<cli-config>";
|
|
66
|
+
/** Keys that can't become a usable flag fail at startup, not on the first use. */
|
|
67
|
+
export declare function validateOptionNames(commands: CommandTree, globalOptions: Record<string, ZodType>): void;
|
|
59
68
|
/**
|
|
60
|
-
* Single validation pass over the full option surface (
|
|
69
|
+
* Single validation pass over the full option surface (ADR-0014).
|
|
61
70
|
* Called once per `cli.run()`, immediately after plugin setup — the earliest
|
|
62
71
|
* point where plugin-registered globals AND plugin-added commands both exist.
|
|
63
72
|
*
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAInC,OAAO,KAAK,EACX,SAAS,EAET,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,MAAM,YAAY,CAAC;AAIpB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAc/D;AAID,KAAK,WAAW,GAAG,YAAY,GAAG,CAAC,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAAC;AAE7E;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BpF;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAmEvE;AAID,MAAM,WAAW,QAAQ;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KAAE,CAAC;IACpD,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7D,SAAS,EAAE,MAAM,SAAS,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IACrE,6DAA6D;IAC7D,IAAI,EAAE,QAAQ,CAAC;IACf;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC9B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,IAAI,EAAE,cAAc,GAClB,SAAS,CAkFX;AAID;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjG;AAID;;;GAGG;AACH,eAAO,MAAM,2BAA2B,iBAAiB,CAAC;AA+B1D,kFAAkF;AAClF,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,WAAW,EACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,IAAI,CAaN;AAyCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,WAAW,EACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;CAAE,EACnD,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC7B,IAAI,CAiGN;AAID;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAiBhF"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { RunaError } from './errors.js';
|
|
2
|
+
import { flagName, longFlag } from './flag-name.js';
|
|
3
|
+
import { walkSchema } from './parse/schema-walker.js';
|
|
2
4
|
// ─── Public builder ─────────────────────────────────────────
|
|
3
5
|
/**
|
|
4
6
|
* Validate and return a PluginConfig.
|
|
@@ -140,7 +142,7 @@ export function createPluginAPI(pluginName, capabilities, refs) {
|
|
|
140
142
|
if (meta) {
|
|
141
143
|
refs.globalMeta.options[name] = meta;
|
|
142
144
|
}
|
|
143
|
-
// Record the registrant for collision attribution (
|
|
145
|
+
// Record the registrant for collision attribution (ADR-0014).
|
|
144
146
|
// A duplicate registration is NOT rejected here — the single
|
|
145
147
|
// validation pass after setup reports it (order-independent).
|
|
146
148
|
if (refs.globalOptionSources) {
|
|
@@ -169,6 +171,19 @@ export function createPluginAPI(pluginName, capabilities, refs) {
|
|
|
169
171
|
getCommands() {
|
|
170
172
|
return refs.commands;
|
|
171
173
|
},
|
|
174
|
+
async getConfigValues() {
|
|
175
|
+
return refs.getConfigValues?.();
|
|
176
|
+
},
|
|
177
|
+
replaceHelp(show) {
|
|
178
|
+
if (!caps.replaceHelp) {
|
|
179
|
+
throw new RunaError(`Plugin '${pluginName}' called replaceHelp() but did not declare replaceHelp capability.`, { code: 'PLUGIN_CAPABILITY_VIOLATION', exitCode: 1 });
|
|
180
|
+
}
|
|
181
|
+
if (refs.help.owner) {
|
|
182
|
+
throw new RunaError(`Plugins '${refs.help.owner}' and '${pluginName}' both replace the help.`, { code: 'HELP_ALREADY_REPLACED', exitCode: 1 });
|
|
183
|
+
}
|
|
184
|
+
refs.help.owner = pluginName;
|
|
185
|
+
refs.help.show = show;
|
|
186
|
+
},
|
|
172
187
|
};
|
|
173
188
|
}
|
|
174
189
|
// ─── Setup orchestration ────────────────────────────────────
|
|
@@ -181,12 +196,49 @@ export async function runPluginSetup(plugins, refs) {
|
|
|
181
196
|
await plugin.setup(api);
|
|
182
197
|
}
|
|
183
198
|
}
|
|
184
|
-
// ─── Option collision detection (
|
|
199
|
+
// ─── Option collision detection (ADR-0014) ────────────────
|
|
185
200
|
/**
|
|
186
201
|
* Sentinel registrant for global options declared statically in
|
|
187
202
|
* `config.globalOptions` (as opposed to plugin-registered ones).
|
|
188
203
|
*/
|
|
189
204
|
export const STATIC_GLOBAL_OPTION_SOURCE = '<cli-config>';
|
|
205
|
+
/** A key that reads as the negation of another one: `noCache`, `no-cache`. */
|
|
206
|
+
const NEGATED_KEY = /^no(?:-|(?=[A-Z]))(.+)$/;
|
|
207
|
+
function assertUsableNames(options, owner) {
|
|
208
|
+
const keysByFlag = new Map();
|
|
209
|
+
for (const { name, zodType } of walkSchema(options)) {
|
|
210
|
+
const flag = flagName(name);
|
|
211
|
+
const other = keysByFlag.get(flag);
|
|
212
|
+
if (other) {
|
|
213
|
+
throw new RunaError(`Options '${other}' and '${name}' of ${owner} are both '--${flag}'.`, {
|
|
214
|
+
code: 'OPTION_NAME',
|
|
215
|
+
exitCode: 1,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
keysByFlag.set(flag, name);
|
|
219
|
+
const positive = NEGATED_KEY.exec(name)?.[1];
|
|
220
|
+
if (positive && zodType === 'boolean') {
|
|
221
|
+
const key = `${positive[0]?.toLowerCase()}${positive.slice(1)}`;
|
|
222
|
+
throw new RunaError(`Boolean option '${name}' of ${owner} would clash with '--no-${flagName(key)}', ` +
|
|
223
|
+
`which already negates '${key}'. Declare '${key}' instead, with .default(true).`, { code: 'OPTION_NAME', exitCode: 1 });
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/** Keys that can't become a usable flag fail at startup, not on the first use. */
|
|
228
|
+
export function validateOptionNames(commands, globalOptions) {
|
|
229
|
+
assertUsableNames(globalOptions, 'the CLI');
|
|
230
|
+
const walk = (tree, path) => {
|
|
231
|
+
for (const [key, entry] of Object.entries(tree)) {
|
|
232
|
+
if (isCommandNode(entry)) {
|
|
233
|
+
assertUsableNames(entry.options ?? {}, `command '${[...path, key].join(' ')}'`);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
walk(entry, [...path, key]);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
walk(commands, []);
|
|
241
|
+
}
|
|
190
242
|
/** Human label for a registrant in collision messages. */
|
|
191
243
|
function sourceLabel(registrant) {
|
|
192
244
|
return registrant === undefined || registrant === STATIC_GLOBAL_OPTION_SOURCE
|
|
@@ -194,9 +246,7 @@ function sourceLabel(registrant) {
|
|
|
194
246
|
: `from plugin '${registrant}'`;
|
|
195
247
|
}
|
|
196
248
|
/** Render a token for messages: long names as `--name`, short chars as `-c`. */
|
|
197
|
-
|
|
198
|
-
return `--${name}`;
|
|
199
|
-
}
|
|
249
|
+
const renderLong = longFlag;
|
|
200
250
|
function renderShort(char) {
|
|
201
251
|
return `-${char}`;
|
|
202
252
|
}
|
|
@@ -218,7 +268,7 @@ function isCommandNode(value) {
|
|
|
218
268
|
return '_type' in value && value._type === 'runa:command';
|
|
219
269
|
}
|
|
220
270
|
/**
|
|
221
|
-
* Single validation pass over the full option surface (
|
|
271
|
+
* Single validation pass over the full option surface (ADR-0014).
|
|
222
272
|
* Called once per `cli.run()`, immediately after plugin setup — the earliest
|
|
223
273
|
* point where plugin-registered globals AND plugin-added commands both exist.
|
|
224
274
|
*
|
|
@@ -259,7 +309,7 @@ export function validateOptionCollisions(commands, globalOptions, globalMeta, so
|
|
|
259
309
|
map.set(key, owner);
|
|
260
310
|
};
|
|
261
311
|
for (const name of Object.keys(globalOptions)) {
|
|
262
|
-
claim(globalLong, name, { canonical: name, token: renderLong(name) });
|
|
312
|
+
claim(globalLong, flagName(name), { canonical: name, token: renderLong(name) });
|
|
263
313
|
const { longs, shorts } = splitAliases(globalMeta.options[name]);
|
|
264
314
|
for (const long of longs) {
|
|
265
315
|
claim(globalLong, long, { canonical: name, token: renderLong(long) });
|
|
@@ -289,12 +339,13 @@ export function validateOptionCollisions(commands, globalOptions, globalMeta, so
|
|
|
289
339
|
throw new RunaError(`Global option '${renderLong(owner.canonical)}' (${sourceLabel(sources?.get(owner.canonical)?.[0])}) ` +
|
|
290
340
|
`collides with option '${renderLong(optName)}' of command '${commandPath}'.${viaAlias}`, { code: 'OPTION_COLLISION', exitCode: 1 });
|
|
291
341
|
};
|
|
292
|
-
for (const long of [optName, ...longs]) {
|
|
342
|
+
for (const long of [flagName(optName), ...longs]) {
|
|
293
343
|
const owner = globalLong.get(long);
|
|
294
344
|
if (owner) {
|
|
295
345
|
// Re-render the token from the command's side when the
|
|
296
346
|
// collision came through the command's long alias.
|
|
297
|
-
|
|
347
|
+
const isOwnFlag = long === flagName(owner.canonical);
|
|
348
|
+
collide(isOwnFlag ? owner : { ...owner, token: renderLong(long) });
|
|
298
349
|
}
|
|
299
350
|
}
|
|
300
351
|
for (const short of shorts) {
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAetD,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAoB;IAChD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CAAC,qCAAqC,EAAE;YAC1D,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,CAAC;SACX,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACxC,MAAM,IAAI,SAAS,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,iCAAiC,EAAE;YACjF,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,CAAC;SACX,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAMD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAsB;IAC1D,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC;gBACJ,MAAM,GAAG,GAAG,MAAM,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,IAAI,SAAS,CAAC,2DAA2D,EAAE;wBAChF,IAAI,EAAE,mBAAmB;wBACzB,QAAQ,EAAE,CAAC;qBACX,CAAC,CAAC;gBACJ,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,GAAG,YAAY,SAAS;oBAAE,MAAM,GAAG,CAAC;gBACxC,MAAM,IAAI,SAAS,CAClB,+BAA+B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACjF,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC1C,CAAC;YACH,CAAC;QACF,CAAC;aAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAuB;IACtD,0BAA0B;IAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,2CAA2C;IAC3C,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC,CAAC,mCAAmC;IAEnF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,SAAS,CAAC,WAAW,IAAI,iBAAiB,GAAG,6BAA6B,EAAE;oBACrF,IAAI,EAAE,2BAA2B;oBACjC,QAAQ,EAAE,CAAC;iBACX,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;IACF,CAAC;IAED,qDAAqD;IACrD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACvC,IAAI,MAAM,KAAK,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO;YAAE,MAAM;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhC,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACrD,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACnC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;QACF,CAAC;IACF,CAAC;IAED,yDAAyD;IACzD,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,OAAO;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,+CAA+C,SAAS,GAAG,EAAE;YAChF,IAAI,EAAE,4BAA4B;YAClC,QAAQ,EAAE,CAAC;SACX,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AA6BD;;GAEG;AACH,MAAM,UAAU,eAAe,CAC9B,UAAkB,EAClB,YAA4C,EAC5C,IAAoB;IAEpB,MAAM,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;IAEhC,OAAO;QACN,UAAU,CAAC,IAAY,EAAE,OAAgB;YACxC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvB,MAAM,IAAI,SAAS,CAClB,WAAW,UAAU,mEAAmE,EACxF,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,CAAC,EAAE,CACpD,CAAC;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAC/B,CAAC;QAED,eAAe,CAAC,IAAY,EAAE,MAAe,EAAE,IAAiB;YAC/D,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,MAAM,IAAI,SAAS,CAClB,WAAW,UAAU,6EAA6E,EAClG,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,CAAC,EAAE,CACpD,CAAC;YACH,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YAClC,IAAI,IAAI,EAAE,CAAC;gBACV,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACtC,CAAC;YACD,8DAA8D;YAC9D,6DAA6D;YAC7D,8DAA8D;YAC9D,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvD,IAAI,WAAW,EAAE,CAAC;oBACjB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBAClD,CAAC;YACF,CAAC;QACF,CAAC;QAED,aAAa,CAAC,UAAsB;YACnC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACzB,MAAM,IAAI,SAAS,CAClB,WAAW,UAAU,wEAAwE,EAC7F,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,CAAC,EAAE,CACpD,CAAC;YACH,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,IAAc,EAAE,OAAoB;YACxC,uDAAuD;YACvD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,SAAS;YACR,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,CAAC;QAED,WAAW;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC;QACtB,CAAC;QAED,KAAK,CAAC,eAAe;YACpB,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACjC,CAAC;QAED,WAAW,CAAC,IAAiB;YAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvB,MAAM,IAAI,SAAS,CAClB,WAAW,UAAU,oEAAoE,EACzF,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,CAAC,EAAE,CACpD,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,SAAS,CAClB,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,UAAU,UAAU,0BAA0B,EACzE,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC9C,CAAC;YACH,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACvB,CAAC;KACD,CAAC;AACH,CAAC;AAED,+DAA+D;AAE/D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAuB,EAAE,IAAoB;IACjF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzE,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;AACF,CAAC;AAED,6DAA6D;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,cAAc,CAAC;AAE1D,8EAA8E;AAC9E,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAE9C,SAAS,iBAAiB,CAAC,OAAgC,EAAE,KAAa;IACzE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,SAAS,CAAC,YAAY,KAAK,UAAU,IAAI,QAAQ,KAAK,gBAAgB,IAAI,IAAI,EAAE;gBACzF,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,CAAC;aACX,CAAC,CAAC;QACJ,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAE3B,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,SAAS,CAClB,mBAAmB,IAAI,QAAQ,KAAK,2BAA2B,QAAQ,CAAC,GAAG,CAAC,KAAK;gBAChF,0BAA0B,GAAG,eAAe,GAAG,iCAAiC,EACjF,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,CACpC,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAClC,QAAqB,EACrB,aAAsC;IAEtC,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE5C,MAAM,IAAI,GAAG,CAAC,IAAiB,EAAE,IAAc,EAAQ,EAAE;QACxD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,iBAAiB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,YAAY,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7B,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,0DAA0D;AAC1D,SAAS,WAAW,CAAC,UAA8B;IAClD,OAAO,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,2BAA2B;QAC5E,CAAC,CAAC,kCAAkC;QACpC,CAAC,CAAC,gBAAgB,UAAU,GAAG,CAAC;AAClC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,SAAS,WAAW,CAAC,IAAY;IAChC,OAAO,IAAI,IAAI,EAAE,CAAC;AACnB,CAAC;AAED,6FAA6F;AAC7F,SAAS,YAAY,CAAC,IAA4B;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,KAA4B;IAClD,OAAO,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc,CAAC;AAC3D,CAAC;AAUD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB,CACvC,QAAqB,EACrB,aAAsC,EACtC,UAAmD,EACnD,OAA+B;IAE/B,iFAAiF;IACjF,IAAI,OAAO,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC;YAC3C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,WAAW;qBACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,2BAA2B,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;qBACpF,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChB,MAAM,IAAI,SAAS,CAClB,kBAAkB,UAAU,CAAC,IAAI,CAAC,2BAA2B,MAAM,GAAG,EACtE,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE,CACzC,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,oEAAoE;IACpE,kEAAkE;IAClE,gEAAgE;IAChE,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;IACvD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;IAExD,MAAM,KAAK,GAAG,CACb,GAAkC,EAClC,GAAW,EACX,KAAuB,EAChB,EAAE;QACT,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;YACxD,MAAM,IAAI,SAAS,CAClB,kBAAkB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;gBACrG,gCAAgC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;gBAC3H,aAAa,KAAK,CAAC,KAAK,IAAI,EAC7B,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE,CACzC,CAAC;QACH,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACF,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAE5D,qEAAqE;IACrE,2DAA2D;IAC3D,MAAM,IAAI,GAAG,CAAC,IAAiB,EAAE,IAAc,EAAQ,EAAE;QACxD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5B,SAAS;YACV,CAAC;YAED,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAiD,CAAC;YAEhF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;gBACxD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;gBAE9D,MAAM,OAAO,GAAG,CAAC,KAAuB,EAAS,EAAE;oBAClD,MAAM,QAAQ,GACb,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,OAAO,CAAC;wBACjF,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,cAAc,KAAK,CAAC,KAAK,IAAI,CAAC;oBAClC,MAAM,IAAI,SAAS,CAClB,kBAAkB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;wBACrG,yBAAyB,UAAU,CAAC,OAAO,CAAC,iBAAiB,WAAW,KAAK,QAAQ,EAAE,EACxF,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE,CACzC,CAAC;gBACH,CAAC,CAAC;gBAEF,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;oBAClD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACnC,IAAI,KAAK,EAAE,CAAC;wBACX,uDAAuD;wBACvD,mDAAmD;wBACnD,MAAM,SAAS,GAAG,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACrD,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACpE,CAAC;gBACF,CAAC;gBACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACrC,IAAI,KAAK;wBAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAEF,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACpB,CAAC;AAED,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAuB;IAC7D,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,yDAAyD;IACzD,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IAExC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACJ,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClE,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
|
package/dist/stop.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** How long run() has to end once told to stop. */
|
|
2
|
+
export declare const RUN_GRACE_MS = 2000;
|
|
3
|
+
/** How long after that notice the process ends anyway, with cleanup or without it. */
|
|
4
|
+
export declare const STOP_DEADLINE_MS = 5000;
|
|
5
|
+
/**
|
|
6
|
+
* End a process and those it started. It reaches the group on Unix, so the
|
|
7
|
+
* process must lead one, and the tree on Windows, where it must still be alive.
|
|
8
|
+
*/
|
|
9
|
+
export declare function killProcessTree(pid: number): void;
|
|
10
|
+
export interface RunStop {
|
|
11
|
+
readonly signal: AbortSignal;
|
|
12
|
+
/** The exit code a stop asks for, once there was one */
|
|
13
|
+
readonly exitCode: number | undefined;
|
|
14
|
+
/** Run the command, giving up on it once its grace period is over */
|
|
15
|
+
guard(run: () => Promise<void>): Promise<void>;
|
|
16
|
+
/** The run ended: stop listening, and end what a stopped tool left behind */
|
|
17
|
+
finish(): void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Start listening for a stop.
|
|
21
|
+
*
|
|
22
|
+
* @param isTool - This process leads its own group, and has a server above it
|
|
23
|
+
*/
|
|
24
|
+
export declare function watchForStop(isTool: boolean): RunStop;
|
|
25
|
+
//# sourceMappingURL=stop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../src/stop.ts"],"names":[],"mappings":"AAUA,mDAAmD;AACnD,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAarC;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAajD;AAED,MAAM,WAAW,OAAO;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,qEAAqE;IACrE,KAAK,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,6EAA6E;IAC7E,MAAM,IAAI,IAAI,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CA+DrD"}
|
package/dist/stop.js
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @runa-cmd/core — Stopping a run (ADR-0033)
|
|
3
|
+
*
|
|
4
|
+
* A signal and a cut channel with the server enter here and go the same way:
|
|
5
|
+
* tell the command, give it a moment, run cleanup, and leave. Nothing in that
|
|
6
|
+
* path depends on the command cooperating, except how fast it ends.
|
|
7
|
+
*/
|
|
8
|
+
import { spawnSync } from 'node:child_process';
|
|
9
|
+
import { InterruptedError } from './errors.js';
|
|
10
|
+
/** How long run() has to end once told to stop. */
|
|
11
|
+
export const RUN_GRACE_MS = 2000;
|
|
12
|
+
/** How long after that notice the process ends anyway, with cleanup or without it. */
|
|
13
|
+
export const STOP_DEADLINE_MS = 5000;
|
|
14
|
+
/** 128 + the signal number. A cancelled tool ends as if it got SIGTERM. */
|
|
15
|
+
const EXIT_CODES = { SIGINT: 130, SIGTERM: 143, cancelled: 143 };
|
|
16
|
+
const STOP_MESSAGES = {
|
|
17
|
+
SIGINT: 'Interrupted.',
|
|
18
|
+
SIGTERM: 'Interrupted.',
|
|
19
|
+
cancelled: 'Cancelled.',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* End a process and those it started. It reaches the group on Unix, so the
|
|
23
|
+
* process must lead one, and the tree on Windows, where it must still be alive.
|
|
24
|
+
*/
|
|
25
|
+
export function killProcessTree(pid) {
|
|
26
|
+
try {
|
|
27
|
+
if (process.platform === 'win32') {
|
|
28
|
+
spawnSync('taskkill', ['/pid', String(pid), '/T', '/F'], {
|
|
29
|
+
stdio: 'ignore',
|
|
30
|
+
windowsHide: true,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
process.kill(-pid, 'SIGKILL');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Already gone
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Start listening for a stop.
|
|
43
|
+
*
|
|
44
|
+
* @param isTool - This process leads its own group, and has a server above it
|
|
45
|
+
*/
|
|
46
|
+
export function watchForStop(isTool) {
|
|
47
|
+
const controller = new AbortController();
|
|
48
|
+
let cause;
|
|
49
|
+
let graceOver = () => { };
|
|
50
|
+
const gracePeriod = new Promise((_, reject) => {
|
|
51
|
+
graceOver = reject;
|
|
52
|
+
});
|
|
53
|
+
gracePeriod.catch(() => { }); // Nobody is listening unless a command is running
|
|
54
|
+
const interrupted = () => new InterruptedError(STOP_MESSAGES[cause ?? 'SIGINT']);
|
|
55
|
+
const leave = () => {
|
|
56
|
+
if (isTool)
|
|
57
|
+
killProcessTree(process.pid);
|
|
58
|
+
process.exit(EXIT_CODES[cause ?? 'SIGINT']);
|
|
59
|
+
};
|
|
60
|
+
const stop = (next) => {
|
|
61
|
+
if (cause) {
|
|
62
|
+
leave();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
cause = next;
|
|
66
|
+
controller.abort(interrupted());
|
|
67
|
+
setTimeout(() => graceOver(interrupted()), RUN_GRACE_MS).unref();
|
|
68
|
+
setTimeout(leave, STOP_DEADLINE_MS).unref();
|
|
69
|
+
};
|
|
70
|
+
const onSigint = () => stop('SIGINT');
|
|
71
|
+
const onSigterm = () => stop('SIGTERM');
|
|
72
|
+
const onDisconnect = () => stop('cancelled');
|
|
73
|
+
process.on('SIGINT', onSigint);
|
|
74
|
+
process.on('SIGTERM', onSigterm);
|
|
75
|
+
if (isTool) {
|
|
76
|
+
process.on('disconnect', onDisconnect);
|
|
77
|
+
// With the server gone, a write finds a closed pipe: that must not end
|
|
78
|
+
// the process before its cleanup does.
|
|
79
|
+
for (const stream of [process.stdout, process.stderr])
|
|
80
|
+
stream.on('error', () => { });
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
signal: controller.signal,
|
|
84
|
+
get exitCode() {
|
|
85
|
+
return cause && EXIT_CODES[cause];
|
|
86
|
+
},
|
|
87
|
+
async guard(run) {
|
|
88
|
+
if (cause)
|
|
89
|
+
throw interrupted();
|
|
90
|
+
try {
|
|
91
|
+
await Promise.race([run(), gracePeriod]);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (cause)
|
|
95
|
+
throw interrupted();
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
if (cause)
|
|
99
|
+
throw interrupted();
|
|
100
|
+
},
|
|
101
|
+
finish() {
|
|
102
|
+
process.off('SIGINT', onSigint);
|
|
103
|
+
process.off('SIGTERM', onSigterm);
|
|
104
|
+
process.off('disconnect', onDisconnect);
|
|
105
|
+
if (cause && isTool)
|
|
106
|
+
killProcessTree(process.pid);
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=stop.js.map
|
package/dist/stop.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../src/stop.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,mDAAmD;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,sFAAsF;AACtF,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAIrC,2EAA2E;AAC3E,MAAM,UAAU,GAA8B,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AAE5F,MAAM,aAAa,GAA8B;IAChD,MAAM,EAAE,cAAc;IACtB,OAAO,EAAE,cAAc;IACvB,SAAS,EAAE,YAAY;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IAC1C,IAAI,CAAC;QACJ,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAClC,SAAS,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;gBACxD,KAAK,EAAE,QAAQ;gBACf,WAAW,EAAE,IAAI;aACjB,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,eAAe;IAChB,CAAC;AACF,CAAC;AAYD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAe;IAC3C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,KAA4B,CAAC;IAEjC,IAAI,SAAS,GAA4B,GAAG,EAAE,GAAE,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACpD,SAAS,GAAG,MAAM,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,kDAAkD;IAE/E,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,aAAa,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;IAEjF,MAAM,KAAK,GAAG,GAAG,EAAE;QAClB,IAAI,MAAM;YAAE,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,IAAe,EAAE,EAAE;QAChC,IAAI,KAAK,EAAE,CAAC;YACX,KAAK,EAAE,CAAC;YACR,OAAO;QACR,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;QACb,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAChC,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;QACjE,UAAU,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAE7C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACjC,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACvC,uEAAuE;QACvE,uCAAuC;QACvC,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,OAAO;QACN,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,IAAI,QAAQ;YACX,OAAO,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAG;YACd,IAAI,KAAK;gBAAE,MAAM,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACJ,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,KAAK;oBAAE,MAAM,WAAW,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACb,CAAC;YACD,IAAI,KAAK;gBAAE,MAAM,WAAW,EAAE,CAAC;QAChC,CAAC;QACD,MAAM;YACL,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YACxC,IAAI,KAAK,IAAI,MAAM;gBAAE,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/dist/suggest.d.ts
CHANGED
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export declare function levenshtein(a: string, b: string): number;
|
|
12
12
|
/**
|
|
13
|
-
* Find the best suggestion for a misspelled name
|
|
14
|
-
*
|
|
13
|
+
* Find the best suggestion for a misspelled name, or undefined if none is
|
|
14
|
+
* close. The allowed distance grows with the input, up to 3: on a short name,
|
|
15
|
+
* a distance of 3 means nothing in common, and a wrong suggestion misleads.
|
|
15
16
|
*/
|
|
16
17
|
export declare function findSuggestion(input: string, candidates: string[]): string | undefined;
|
|
17
18
|
//# sourceMappingURL=suggest.d.ts.map
|