@kamaras/venpm 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +163 -24
- package/dist/cli/completions.d.ts +3 -0
- package/dist/cli/completions.d.ts.map +1 -0
- package/dist/cli/completions.js +78 -0
- package/dist/cli/completions.js.map +1 -0
- package/dist/cli/config-cmd.d.ts.map +1 -1
- package/dist/cli/config-cmd.js +31 -22
- package/dist/cli/config-cmd.js.map +1 -1
- package/dist/cli/context.d.ts +1 -4
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js +28 -7
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +22 -32
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +37 -23
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/first-run.d.ts +4 -0
- package/dist/cli/first-run.d.ts.map +1 -0
- package/dist/cli/first-run.js +51 -0
- package/dist/cli/first-run.js.map +1 -0
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +42 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/info.d.ts.map +1 -1
- package/dist/cli/info.js +48 -53
- package/dist/cli/info.js.map +1 -1
- package/dist/cli/install.d.ts.map +1 -1
- package/dist/cli/install.js +53 -68
- package/dist/cli/install.js.map +1 -1
- package/dist/cli/list.d.ts.map +1 -1
- package/dist/cli/list.js +20 -20
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/rebuild.js +37 -34
- package/dist/cli/rebuild.js.map +1 -1
- package/dist/cli/repo.d.ts.map +1 -1
- package/dist/cli/repo.js +22 -32
- package/dist/cli/repo.js.map +1 -1
- package/dist/cli/search.d.ts.map +1 -1
- package/dist/cli/search.js +19 -20
- package/dist/cli/search.js.map +1 -1
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +17 -20
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +28 -40
- package/dist/cli/update.js.map +1 -1
- package/dist/cli/validate.d.ts.map +1 -1
- package/dist/cli/validate.js +14 -21
- package/dist/cli/validate.js.map +1 -1
- package/dist/core/ansi.d.ts +14 -0
- package/dist/core/ansi.d.ts.map +1 -0
- package/dist/core/ansi.js +36 -0
- package/dist/core/ansi.js.map +1 -0
- package/dist/core/builder.d.ts +1 -0
- package/dist/core/builder.d.ts.map +1 -1
- package/dist/core/builder.js +18 -7
- package/dist/core/builder.js.map +1 -1
- package/dist/core/errors.d.ts +36 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +70 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/fuzzy.d.ts +3 -0
- package/dist/core/fuzzy.d.ts.map +1 -0
- package/dist/core/fuzzy.js +30 -0
- package/dist/core/fuzzy.js.map +1 -0
- package/dist/core/json-renderer.d.ts +5 -0
- package/dist/core/json-renderer.d.ts.map +1 -0
- package/dist/core/json-renderer.js +48 -0
- package/dist/core/json-renderer.js.map +1 -0
- package/dist/core/json.d.ts +5 -3
- package/dist/core/json.d.ts.map +1 -1
- package/dist/core/json.js +8 -4
- package/dist/core/json.js.map +1 -1
- package/dist/core/progress.d.ts +11 -0
- package/dist/core/progress.d.ts.map +1 -0
- package/dist/core/progress.js +53 -0
- package/dist/core/progress.js.map +1 -0
- package/dist/core/prompt.d.ts +1 -0
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +73 -4
- package/dist/core/prompt.js.map +1 -1
- package/dist/core/renderer.d.ts +13 -0
- package/dist/core/renderer.d.ts.map +1 -0
- package/dist/core/renderer.js +157 -0
- package/dist/core/renderer.js.map +1 -0
- package/dist/core/stream-renderer.d.ts +5 -0
- package/dist/core/stream-renderer.d.ts.map +1 -0
- package/dist/core/stream-renderer.js +71 -0
- package/dist/core/stream-renderer.js.map +1 -0
- package/dist/core/types.d.ts +48 -8
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.js +21 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/log.d.ts +0 -8
- package/dist/core/log.d.ts.map +0 -1
- package/dist/core/log.js +0 -24
- package/dist/core/log.js.map +0 -1
package/dist/core/builder.js
CHANGED
|
@@ -27,11 +27,11 @@ export async function deployDist(fs, vencordPath) {
|
|
|
27
27
|
const deployPath = DEPLOY_PATHS[platform] ?? DEPLOY_PATHS.linux;
|
|
28
28
|
const deployedDirExists = await fs.exists(deployPath);
|
|
29
29
|
if (!deployedDirExists) {
|
|
30
|
-
return { deployed: false };
|
|
30
|
+
return { deployed: false, restarted: false };
|
|
31
31
|
}
|
|
32
32
|
const srcDist = join(vencordPath, "dist");
|
|
33
33
|
await fs.copyDir(srcDist, deployPath);
|
|
34
|
-
return { deployed: true, deployPath };
|
|
34
|
+
return { deployed: true, deployPath, restarted: false };
|
|
35
35
|
}
|
|
36
36
|
// ─── Restart ──────────────────────────────────────────────────────────────────
|
|
37
37
|
/**
|
|
@@ -40,12 +40,22 @@ export async function deployDist(fs, vencordPath) {
|
|
|
40
40
|
* skipped — Discord is still spawned so the caller can open it fresh.
|
|
41
41
|
*/
|
|
42
42
|
export async function restartDiscord(shell, discordBinary) {
|
|
43
|
-
// pkill returns 0 if at least one process was signalled, 1 if none found.
|
|
44
|
-
// Use -x (exact name match) with basename to avoid matching unrelated processes.
|
|
45
43
|
const processName = basename(discordBinary);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
if (process.platform === "win32") {
|
|
45
|
+
// taskkill /IM matches image name; /F forces termination.
|
|
46
|
+
// Exit code 128 = process not found (not an error for us).
|
|
47
|
+
const killResult = await shell.exec("taskkill", ["/IM", `${processName}.exe`, "/F"]);
|
|
48
|
+
if (killResult.exitCode !== 0 && killResult.exitCode !== 128) {
|
|
49
|
+
throw new Error(`taskkill failed (exit ${killResult.exitCode}): ${killResult.stderr}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// pkill returns 0 if at least one process was signalled, 1 if none found.
|
|
54
|
+
// -x = exact name match, -i = case-insensitive (binary is "discord", comm is "Discord").
|
|
55
|
+
const killResult = await shell.exec("pkill", ["-xi", processName]);
|
|
56
|
+
if (killResult.exitCode !== 0 && killResult.exitCode !== 1) {
|
|
57
|
+
throw new Error(`pkill failed (exit ${killResult.exitCode}): ${killResult.stderr}`);
|
|
58
|
+
}
|
|
49
59
|
}
|
|
50
60
|
// Give the process a moment to fully exit before relaunching.
|
|
51
61
|
await new Promise(resolve => setTimeout(resolve, 500));
|
|
@@ -59,6 +69,7 @@ export async function buildAndDeploy(fs, shell, vencordPath, options = {}) {
|
|
|
59
69
|
const result = await deployDist(fs, vencordPath);
|
|
60
70
|
if (options.restart && options.discordBinary) {
|
|
61
71
|
await restartDiscord(shell, options.discordBinary);
|
|
72
|
+
result.restarted = true;
|
|
62
73
|
}
|
|
63
74
|
return result;
|
|
64
75
|
}
|
package/dist/core/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG3C,iFAAiF;AAEjF,MAAM,CAAC,MAAM,YAAY,GAAiD;IACtE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IACpD,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,CAAC;IAC5E,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC;CAC/F,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/core/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface ErrorInfo {
|
|
2
|
+
code: string;
|
|
3
|
+
message: string;
|
|
4
|
+
suggestion?: string;
|
|
5
|
+
candidates?: string[];
|
|
6
|
+
docsUrl?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const ErrorCode: {
|
|
9
|
+
readonly VENCORD_NOT_FOUND: "VENCORD_NOT_FOUND";
|
|
10
|
+
readonly PLUGIN_NOT_FOUND: "PLUGIN_NOT_FOUND";
|
|
11
|
+
readonly PLUGIN_AMBIGUOUS: "PLUGIN_AMBIGUOUS";
|
|
12
|
+
readonly PLUGIN_NOT_INSTALLED: "PLUGIN_NOT_INSTALLED";
|
|
13
|
+
readonly REPO_FETCH_FAILED: "REPO_FETCH_FAILED";
|
|
14
|
+
readonly GIT_NOT_AVAILABLE: "GIT_NOT_AVAILABLE";
|
|
15
|
+
readonly PNPM_NOT_AVAILABLE: "PNPM_NOT_AVAILABLE";
|
|
16
|
+
readonly CIRCULAR_DEPENDENCY: "CIRCULAR_DEPENDENCY";
|
|
17
|
+
readonly VERSION_NOT_FOUND: "VERSION_NOT_FOUND";
|
|
18
|
+
readonly SCHEMA_INVALID: "SCHEMA_INVALID";
|
|
19
|
+
readonly BUILD_FAILED: "BUILD_FAILED";
|
|
20
|
+
readonly DISCORD_NOT_FOUND: "DISCORD_NOT_FOUND";
|
|
21
|
+
readonly NON_INTERACTIVE: "NON_INTERACTIVE";
|
|
22
|
+
};
|
|
23
|
+
export type ErrorCodeValue = typeof ErrorCode[keyof typeof ErrorCode];
|
|
24
|
+
export declare const ExitCode: {
|
|
25
|
+
readonly SUCCESS: 0;
|
|
26
|
+
readonly COMMAND_ERROR: 1;
|
|
27
|
+
readonly USAGE_ERROR: 2;
|
|
28
|
+
readonly ENV_ERROR: 3;
|
|
29
|
+
};
|
|
30
|
+
export declare function exitCodeForError(code: ErrorCodeValue): number;
|
|
31
|
+
export declare function makeError(code: ErrorCodeValue, message: string, options?: {
|
|
32
|
+
suggestion?: string;
|
|
33
|
+
candidates?: string[];
|
|
34
|
+
docsUrl?: string;
|
|
35
|
+
}): ErrorInfo;
|
|
36
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;CAcZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAkBtE,eAAO,MAAM,QAAQ;;;;;CAKX,CAAC;AAEX,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAW7D;AAED,wBAAgB,SAAS,CACrB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3E,SAAS,CAsBX"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export const ErrorCode = {
|
|
2
|
+
VENCORD_NOT_FOUND: "VENCORD_NOT_FOUND",
|
|
3
|
+
PLUGIN_NOT_FOUND: "PLUGIN_NOT_FOUND",
|
|
4
|
+
PLUGIN_AMBIGUOUS: "PLUGIN_AMBIGUOUS",
|
|
5
|
+
PLUGIN_NOT_INSTALLED: "PLUGIN_NOT_INSTALLED",
|
|
6
|
+
REPO_FETCH_FAILED: "REPO_FETCH_FAILED",
|
|
7
|
+
GIT_NOT_AVAILABLE: "GIT_NOT_AVAILABLE",
|
|
8
|
+
PNPM_NOT_AVAILABLE: "PNPM_NOT_AVAILABLE",
|
|
9
|
+
CIRCULAR_DEPENDENCY: "CIRCULAR_DEPENDENCY",
|
|
10
|
+
VERSION_NOT_FOUND: "VERSION_NOT_FOUND",
|
|
11
|
+
SCHEMA_INVALID: "SCHEMA_INVALID",
|
|
12
|
+
BUILD_FAILED: "BUILD_FAILED",
|
|
13
|
+
DISCORD_NOT_FOUND: "DISCORD_NOT_FOUND",
|
|
14
|
+
NON_INTERACTIVE: "NON_INTERACTIVE",
|
|
15
|
+
};
|
|
16
|
+
const DEFAULT_SUGGESTIONS = {
|
|
17
|
+
VENCORD_NOT_FOUND: "Run: venpm config set vencord.path /path/to/Vencord",
|
|
18
|
+
PLUGIN_NOT_FOUND: "Run: venpm search <query> to find available plugins",
|
|
19
|
+
PLUGIN_AMBIGUOUS: "Use --from <repo> to specify which repository",
|
|
20
|
+
PLUGIN_NOT_INSTALLED: "Run: venpm list to see installed plugins",
|
|
21
|
+
REPO_FETCH_FAILED: "Check URL with: venpm repo list",
|
|
22
|
+
GIT_NOT_AVAILABLE: "Install git, or use --tarball",
|
|
23
|
+
PNPM_NOT_AVAILABLE: "Install pnpm: npm i -g pnpm",
|
|
24
|
+
CIRCULAR_DEPENDENCY: "Check dependency graph for cycles",
|
|
25
|
+
VERSION_NOT_FOUND: "Run: venpm info <plugin> to see available versions",
|
|
26
|
+
SCHEMA_INVALID: "Run: venpm validate --strict for detailed errors",
|
|
27
|
+
BUILD_FAILED: "Run: venpm doctor to check your environment",
|
|
28
|
+
DISCORD_NOT_FOUND: "Set: venpm config set discord.binary /path/to/discord",
|
|
29
|
+
NON_INTERACTIVE: "Use --yes to auto-confirm, or set config explicitly",
|
|
30
|
+
};
|
|
31
|
+
export const ExitCode = {
|
|
32
|
+
SUCCESS: 0,
|
|
33
|
+
COMMAND_ERROR: 1,
|
|
34
|
+
USAGE_ERROR: 2,
|
|
35
|
+
ENV_ERROR: 3,
|
|
36
|
+
};
|
|
37
|
+
export function exitCodeForError(code) {
|
|
38
|
+
switch (code) {
|
|
39
|
+
case ErrorCode.VENCORD_NOT_FOUND:
|
|
40
|
+
case ErrorCode.GIT_NOT_AVAILABLE:
|
|
41
|
+
case ErrorCode.PNPM_NOT_AVAILABLE:
|
|
42
|
+
case ErrorCode.BUILD_FAILED:
|
|
43
|
+
case ErrorCode.DISCORD_NOT_FOUND:
|
|
44
|
+
return ExitCode.ENV_ERROR;
|
|
45
|
+
default:
|
|
46
|
+
return ExitCode.COMMAND_ERROR;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function makeError(code, message, options) {
|
|
50
|
+
let suggestion = options?.suggestion;
|
|
51
|
+
if (!suggestion && options?.candidates && options.candidates.length > 0) {
|
|
52
|
+
if (options.candidates.length === 1) {
|
|
53
|
+
suggestion = `Did you mean: ${options.candidates[0]}`;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
suggestion = `Did you mean one of: ${options.candidates.join(", ")}`;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (!suggestion) {
|
|
60
|
+
suggestion = DEFAULT_SUGGESTIONS[code];
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
code,
|
|
64
|
+
message,
|
|
65
|
+
suggestion,
|
|
66
|
+
candidates: options?.candidates,
|
|
67
|
+
docsUrl: options?.docsUrl,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;CAC5B,CAAC;AAIX,MAAM,mBAAmB,GAA2B;IAChD,iBAAiB,EAAE,qDAAqD;IACxE,gBAAgB,EAAE,qDAAqD;IACvE,gBAAgB,EAAE,+CAA+C;IACjE,oBAAoB,EAAE,0CAA0C;IAChE,iBAAiB,EAAE,iCAAiC;IACpD,iBAAiB,EAAE,+BAA+B;IAClD,kBAAkB,EAAE,6BAA6B;IACjD,mBAAmB,EAAE,mCAAmC;IACxD,iBAAiB,EAAE,oDAAoD;IACvE,cAAc,EAAE,kDAAkD;IAClE,YAAY,EAAE,6CAA6C;IAC3D,iBAAiB,EAAE,uDAAuD;IAC1E,eAAe,EAAE,qDAAqD;CACzE,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;CACN,CAAC;AAEX,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACjD,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,SAAS,CAAC,iBAAiB,CAAC;QACjC,KAAK,SAAS,CAAC,iBAAiB,CAAC;QACjC,KAAK,SAAS,CAAC,kBAAkB,CAAC;QAClC,KAAK,SAAS,CAAC,YAAY,CAAC;QAC5B,KAAK,SAAS,CAAC,iBAAiB;YAC5B,OAAO,QAAQ,CAAC,SAAS,CAAC;QAC9B;YACI,OAAO,QAAQ,CAAC,aAAa,CAAC;IACtC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CACrB,IAAoB,EACpB,OAAe,EACf,OAA0E;IAE1E,IAAI,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IAErC,IAAI,CAAC,UAAU,IAAI,OAAO,EAAE,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,UAAU,GAAG,iBAAiB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG,wBAAwB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,CAAC;IACL,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACH,IAAI;QACJ,OAAO;QACP,UAAU;QACV,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,OAAO,EAAE,OAAO,EAAE,OAAO;KAC5B,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../src/core/fuzzy.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBxD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,UAAU,SAAI,GAAG,MAAM,EAAE,CAY5F"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function levenshtein(a, b) {
|
|
2
|
+
if (a.length === 0)
|
|
3
|
+
return b.length;
|
|
4
|
+
if (b.length === 0)
|
|
5
|
+
return a.length;
|
|
6
|
+
const matrix = [];
|
|
7
|
+
for (let i = 0; i <= b.length; i++)
|
|
8
|
+
matrix[i] = [i];
|
|
9
|
+
for (let j = 0; j <= a.length; j++)
|
|
10
|
+
matrix[0][j] = j;
|
|
11
|
+
for (let i = 1; i <= b.length; i++) {
|
|
12
|
+
for (let j = 1; j <= a.length; j++) {
|
|
13
|
+
const cost = b[i - 1] === a[j - 1] ? 0 : 1;
|
|
14
|
+
matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return matrix[b.length][a.length];
|
|
18
|
+
}
|
|
19
|
+
export function findCandidates(input, candidates, maxResults = 3) {
|
|
20
|
+
if (candidates.length === 0 || input.length === 0)
|
|
21
|
+
return [];
|
|
22
|
+
const threshold = Math.max(2, Math.floor(input.length * 0.4));
|
|
23
|
+
const inputLower = input.toLowerCase();
|
|
24
|
+
const scored = candidates
|
|
25
|
+
.map(c => ({ name: c, distance: levenshtein(input, c) }))
|
|
26
|
+
.filter(c => c.distance <= threshold || c.name.toLowerCase().startsWith(inputLower))
|
|
27
|
+
.sort((a, b) => a.distance - b.distance);
|
|
28
|
+
return scored.slice(0, maxResults).map(c => c.name);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=fuzzy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../../src/core/fuzzy.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC5C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IAEpC,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACnB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EACpB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACpB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAC9B,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,UAAoB,EAAE,UAAU,GAAG,CAAC;IAC9E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,UAAU;SACpB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SACxD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SACnF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAE7C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-renderer.d.ts","sourceRoot":"","sources":["../../src/core/json-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,KAAK,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAQtC,wBAAgB,kBAAkB,CAC9B,KAAK,GAAE,OAAwC,GAChD,QAAQ,CAuCV"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const NOOP_PROGRESS = {
|
|
2
|
+
update() { },
|
|
3
|
+
succeed() { },
|
|
4
|
+
fail() { },
|
|
5
|
+
};
|
|
6
|
+
export function createJsonRenderer(write = (s) => process.stdout.write(s)) {
|
|
7
|
+
const warnings = [];
|
|
8
|
+
let lastError;
|
|
9
|
+
return {
|
|
10
|
+
text() { },
|
|
11
|
+
heading() { },
|
|
12
|
+
success() { },
|
|
13
|
+
warn(message) {
|
|
14
|
+
warnings.push(message);
|
|
15
|
+
},
|
|
16
|
+
error(info) {
|
|
17
|
+
lastError = info;
|
|
18
|
+
},
|
|
19
|
+
verbose() { },
|
|
20
|
+
dim() { },
|
|
21
|
+
table() { },
|
|
22
|
+
keyValue() { },
|
|
23
|
+
list() { },
|
|
24
|
+
progress() {
|
|
25
|
+
return NOOP_PROGRESS;
|
|
26
|
+
},
|
|
27
|
+
write() { },
|
|
28
|
+
finish(success, data, extraWarnings) {
|
|
29
|
+
const allWarnings = [...warnings, ...(extraWarnings ?? [])];
|
|
30
|
+
if (success) {
|
|
31
|
+
const envelope = { success: true, data };
|
|
32
|
+
if (allWarnings.length > 0)
|
|
33
|
+
envelope.warnings = allWarnings;
|
|
34
|
+
write(JSON.stringify(envelope) + "\n");
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const envelope = {
|
|
38
|
+
success: false,
|
|
39
|
+
error: lastError ?? { code: "UNKNOWN", message: "Unknown error" },
|
|
40
|
+
};
|
|
41
|
+
if (allWarnings.length > 0)
|
|
42
|
+
envelope.warnings = allWarnings;
|
|
43
|
+
write(JSON.stringify(envelope) + "\n");
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=json-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-renderer.js","sourceRoot":"","sources":["../../src/core/json-renderer.ts"],"names":[],"mappings":"AAMA,MAAM,aAAa,GAAmB;IAClC,MAAM,KAAU,CAAC;IACjB,OAAO,KAAU,CAAC;IAClB,IAAI,KAAU,CAAC;CAClB,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAC9B,QAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,SAAgC,CAAC;IAErC,OAAO;QACH,IAAI,KAAU,CAAC;QACf,OAAO,KAAU,CAAC;QAClB,OAAO,KAAU,CAAC;QAClB,IAAI,CAAC,OAAe;YAChB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,KAAK,CAAC,IAAe;YACjB,SAAS,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,KAAU,CAAC;QAClB,GAAG,KAAU,CAAC;QACd,KAAK,KAAU,CAAC;QAChB,QAAQ,KAAU,CAAC;QACnB,IAAI,KAAU,CAAC;QACf,QAAQ;YACJ,OAAO,aAAa,CAAC;QACzB,CAAC;QACD,KAAK,KAAU,CAAC;QAChB,MAAM,CAAC,OAAgB,EAAE,IAAc,EAAE,aAAwB;YAC7D,MAAM,WAAW,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,QAAQ,GAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBAClE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;oBAAE,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACJ,MAAM,QAAQ,GAA4B;oBACtC,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE;iBACpE,CAAC;gBACF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;oBAAE,QAAQ,CAAC,QAAQ,GAAG,WAAW,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC"}
|
package/dist/core/json.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import type { ErrorInfo } from "./errors.js";
|
|
1
2
|
export interface JsonEnvelope<T = unknown> {
|
|
2
3
|
success: boolean;
|
|
3
|
-
error?:
|
|
4
|
+
error?: ErrorInfo;
|
|
4
5
|
data?: T;
|
|
6
|
+
warnings?: string[];
|
|
5
7
|
}
|
|
6
|
-
export declare function jsonSuccess<T>(data: T): JsonEnvelope<T>;
|
|
7
|
-
export declare function jsonError(
|
|
8
|
+
export declare function jsonSuccess<T>(data: T, warnings?: string[]): JsonEnvelope<T>;
|
|
9
|
+
export declare function jsonError(error: ErrorInfo): JsonEnvelope<never>;
|
|
8
10
|
export declare function writeJson(envelope: JsonEnvelope, write?: (s: string) => void): void;
|
|
9
11
|
//# sourceMappingURL=json.d.ts.map
|
package/dist/core/json.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/core/json.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/core/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAM5E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAE/D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAmC,GAAG,IAAI,CAEjH"}
|
package/dist/core/json.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
export function jsonSuccess(data) {
|
|
2
|
-
|
|
1
|
+
export function jsonSuccess(data, warnings) {
|
|
2
|
+
const envelope = { success: true, data };
|
|
3
|
+
if (warnings && warnings.length > 0) {
|
|
4
|
+
envelope.warnings = warnings;
|
|
5
|
+
}
|
|
6
|
+
return envelope;
|
|
3
7
|
}
|
|
4
|
-
export function jsonError(
|
|
5
|
-
return { success: false, error
|
|
8
|
+
export function jsonError(error) {
|
|
9
|
+
return { success: false, error };
|
|
6
10
|
}
|
|
7
11
|
export function writeJson(envelope, write = s => process.stdout.write(s)) {
|
|
8
12
|
write(JSON.stringify(envelope) + "\n");
|
package/dist/core/json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/core/json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/core/json.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,WAAW,CAAI,IAAO,EAAE,QAAmB;IACvD,MAAM,QAAQ,GAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACjC,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAgB;IACtC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAsB,EAAE,QAA6B,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Colors } from "./ansi.js";
|
|
2
|
+
export interface ProgressHandle {
|
|
3
|
+
update(message: string): void;
|
|
4
|
+
succeed(message?: string): void;
|
|
5
|
+
fail(message?: string): void;
|
|
6
|
+
}
|
|
7
|
+
type WriteFn = (data: string) => void;
|
|
8
|
+
export declare function createPlainProgress(_id: string, initialMessage: string, write: WriteFn): ProgressHandle;
|
|
9
|
+
export declare function createTtyProgress(_id: string, initialMessage: string, write: WriteFn, colors: Colors): ProgressHandle;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/core/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,cAAc;IAC3B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,KAAK,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAItC,wBAAgB,mBAAmB,CAC/B,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,OAAO,GACf,cAAc,CAchB;AAOD,wBAAgB,iBAAiB,CAC7B,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,GACf,cAAc,CAoChB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// ─── Plain (non-TTY) ─────────────────────────────────────────────────────────
|
|
2
|
+
export function createPlainProgress(_id, initialMessage, write) {
|
|
3
|
+
write(` ⟩ ${initialMessage}\n`);
|
|
4
|
+
return {
|
|
5
|
+
update(message) {
|
|
6
|
+
write(` ⟩ ${message}\n`);
|
|
7
|
+
},
|
|
8
|
+
succeed(message) {
|
|
9
|
+
write(` ✔ ${message ?? initialMessage}\n`);
|
|
10
|
+
},
|
|
11
|
+
fail(message) {
|
|
12
|
+
write(` ✖ ${message ?? initialMessage}\n`);
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
// ─── TTY (animated spinner) ──────────────────────────────────────────────────
|
|
17
|
+
const SPINNER_FRAMES = ["⟩", "⟫", "⟩"];
|
|
18
|
+
const SPINNER_INTERVAL = 120;
|
|
19
|
+
export function createTtyProgress(_id, initialMessage, write, colors) {
|
|
20
|
+
let message = initialMessage;
|
|
21
|
+
let frameIndex = 0;
|
|
22
|
+
let finished = false;
|
|
23
|
+
function render() {
|
|
24
|
+
const frame = SPINNER_FRAMES[frameIndex % SPINNER_FRAMES.length];
|
|
25
|
+
write(`\r\x1b[K ${colors.amber(frame)} ${message}`);
|
|
26
|
+
}
|
|
27
|
+
render();
|
|
28
|
+
const timer = setInterval(() => {
|
|
29
|
+
if (finished)
|
|
30
|
+
return;
|
|
31
|
+
frameIndex++;
|
|
32
|
+
render();
|
|
33
|
+
}, SPINNER_INTERVAL);
|
|
34
|
+
function stop() {
|
|
35
|
+
finished = true;
|
|
36
|
+
clearInterval(timer);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
update(msg) {
|
|
40
|
+
message = msg;
|
|
41
|
+
render();
|
|
42
|
+
},
|
|
43
|
+
succeed(msg) {
|
|
44
|
+
stop();
|
|
45
|
+
write(`\r\x1b[K ${colors.emerald("✔")} ${msg ?? message}\n`);
|
|
46
|
+
},
|
|
47
|
+
fail(msg) {
|
|
48
|
+
stop();
|
|
49
|
+
write(`\r\x1b[K ${colors.red("✖")} ${msg ?? message}\n`);
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/core/progress.ts"],"names":[],"mappings":"AAUA,gFAAgF;AAEhF,MAAM,UAAU,mBAAmB,CAC/B,GAAW,EACX,cAAsB,EACtB,KAAc;IAEd,KAAK,CAAC,OAAO,cAAc,IAAI,CAAC,CAAC;IAEjC,OAAO;QACH,MAAM,CAAC,OAAe;YAClB,KAAK,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,OAAgB;YACpB,KAAK,CAAC,OAAO,OAAO,IAAI,cAAc,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,OAAgB;YACjB,KAAK,CAAC,OAAO,OAAO,IAAI,cAAc,IAAI,CAAC,CAAC;QAChD,CAAC;KACJ,CAAC;AACN,CAAC;AAED,gFAAgF;AAEhF,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,UAAU,iBAAiB,CAC7B,GAAW,EACX,cAAsB,EACtB,KAAc,EACd,MAAc;IAEd,IAAI,OAAO,GAAG,cAAc,CAAC;IAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,SAAS,MAAM;QACX,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACjE,KAAK,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,EAAE,CAAC;IACT,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3B,IAAI,QAAQ;YAAE,OAAO;QACrB,UAAU,EAAE,CAAC;QACb,MAAM,EAAE,CAAC;IACb,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAErB,SAAS,IAAI;QACT,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,OAAO;QACH,MAAM,CAAC,GAAW;YACd,OAAO,GAAG,GAAG,CAAC;YACd,MAAM,EAAE,CAAC;QACb,CAAC;QACD,OAAO,CAAC,GAAY;YAChB,IAAI,EAAE,CAAC;YACP,KAAK,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,OAAO,IAAI,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,CAAC,GAAY;YACb,IAAI,EAAE,CAAC;YACP,KAAK,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,OAAO,IAAI,CAAC,CAAC;QAC9D,CAAC;KACJ,CAAC;AACN,CAAC"}
|
package/dist/core/prompt.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/core/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/core/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,QAAQ,CAyI5F"}
|
package/dist/core/prompt.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createColors, shouldColorize } from "./ansi.js";
|
|
1
2
|
export function createPrompter(options) {
|
|
2
3
|
if (options.yes) {
|
|
3
4
|
return {
|
|
@@ -12,13 +13,25 @@ export function createPrompter(options) {
|
|
|
12
13
|
},
|
|
13
14
|
};
|
|
14
15
|
}
|
|
16
|
+
if (options.nonInteractive) {
|
|
17
|
+
const bail = (message) => {
|
|
18
|
+
throw new Error(`Cannot prompt in non-interactive mode (no TTY): "${message}". ` +
|
|
19
|
+
`Use --yes to auto-confirm, or set config values explicitly.`);
|
|
20
|
+
};
|
|
21
|
+
return {
|
|
22
|
+
async confirm(message) { return bail(message); },
|
|
23
|
+
async input(message) { return bail(message); },
|
|
24
|
+
async select(message) { return bail(message); },
|
|
25
|
+
};
|
|
26
|
+
}
|
|
15
27
|
return {
|
|
16
28
|
async confirm(message, defaultValue = true) {
|
|
17
29
|
const { createInterface } = await import("readline/promises");
|
|
18
30
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
31
|
+
const c = createColors(shouldColorize(process.stdout));
|
|
19
32
|
const hint = defaultValue ? "[Y/n]" : "[y/N]";
|
|
20
33
|
try {
|
|
21
|
-
const answer = await rl.question(
|
|
34
|
+
const answer = await rl.question(` ${c.amber("?")} ${message} ${c.dim(hint)} `);
|
|
22
35
|
const trimmed = answer.trim().toLowerCase();
|
|
23
36
|
if (trimmed === "")
|
|
24
37
|
return defaultValue;
|
|
@@ -31,9 +44,10 @@ export function createPrompter(options) {
|
|
|
31
44
|
async input(message, defaultValue) {
|
|
32
45
|
const { createInterface } = await import("readline/promises");
|
|
33
46
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
47
|
+
const c = createColors(shouldColorize(process.stdout));
|
|
34
48
|
const hint = defaultValue !== undefined ? ` (${defaultValue})` : "";
|
|
35
49
|
try {
|
|
36
|
-
const answer = await rl.question(
|
|
50
|
+
const answer = await rl.question(` ${c.amber("?")} ${message}${c.dim(hint)}: `);
|
|
37
51
|
const trimmed = answer.trim();
|
|
38
52
|
return trimmed === "" ? (defaultValue ?? "") : trimmed;
|
|
39
53
|
}
|
|
@@ -42,13 +56,68 @@ export function createPrompter(options) {
|
|
|
42
56
|
}
|
|
43
57
|
},
|
|
44
58
|
async select(message, choices) {
|
|
59
|
+
const c = createColors(shouldColorize(process.stdout));
|
|
60
|
+
// Try raw mode for arrow-key navigation
|
|
61
|
+
if (process.stdin.isTTY && typeof process.stdin.setRawMode === "function") {
|
|
62
|
+
return new Promise((resolve) => {
|
|
63
|
+
let selected = 0;
|
|
64
|
+
function render() {
|
|
65
|
+
const lines = choices.map((choice, i) => {
|
|
66
|
+
const marker = i === selected ? c.amber("❯") : " ";
|
|
67
|
+
const label = i === selected ? choice.label : c.dim(choice.label);
|
|
68
|
+
return ` ${marker} ${label}`;
|
|
69
|
+
});
|
|
70
|
+
process.stdout.write(`\r\x1b[K ${c.amber("?")} ${message}\n`);
|
|
71
|
+
for (const line of lines) {
|
|
72
|
+
process.stdout.write(`\r\x1b[K${line}\n`);
|
|
73
|
+
}
|
|
74
|
+
// Move cursor back up
|
|
75
|
+
process.stdout.write(`\x1b[${lines.length + 1}A`);
|
|
76
|
+
}
|
|
77
|
+
render();
|
|
78
|
+
process.stdin.setRawMode(true);
|
|
79
|
+
process.stdin.resume();
|
|
80
|
+
function onData(data) {
|
|
81
|
+
const key = data.toString();
|
|
82
|
+
if (key === "\x1b[A" || key === "k") { // Up arrow or k
|
|
83
|
+
selected = (selected - 1 + choices.length) % choices.length;
|
|
84
|
+
render();
|
|
85
|
+
}
|
|
86
|
+
else if (key === "\x1b[B" || key === "j") { // Down arrow or j
|
|
87
|
+
selected = (selected + 1) % choices.length;
|
|
88
|
+
render();
|
|
89
|
+
}
|
|
90
|
+
else if (key === "\r" || key === "\n") { // Enter
|
|
91
|
+
process.stdin.setRawMode(false);
|
|
92
|
+
process.stdin.pause();
|
|
93
|
+
process.stdin.removeListener("data", onData);
|
|
94
|
+
// Clear the select UI and show chosen value
|
|
95
|
+
process.stdout.write(`\r\x1b[K ${c.amber("?")} ${message} ${c.bright(choices[selected].label)}\n`);
|
|
96
|
+
// Clear remaining lines
|
|
97
|
+
for (let i = 0; i < choices.length; i++) {
|
|
98
|
+
process.stdout.write(`\r\x1b[K\n`);
|
|
99
|
+
}
|
|
100
|
+
process.stdout.write(`\x1b[${choices.length}A`);
|
|
101
|
+
resolve(choices[selected].value);
|
|
102
|
+
}
|
|
103
|
+
else if (key === "\x03") { // Ctrl+C
|
|
104
|
+
process.stdin.setRawMode(false);
|
|
105
|
+
process.stdin.pause();
|
|
106
|
+
process.stdin.removeListener("data", onData);
|
|
107
|
+
process.exit(130);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
process.stdin.on("data", onData);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// Fallback: numbered input with styling
|
|
45
114
|
const { createInterface } = await import("readline/promises");
|
|
46
115
|
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
47
|
-
const lines = choices.map((
|
|
116
|
+
const lines = choices.map((ch, i) => ` ${i + 1}) ${ch.label}`).join("\n");
|
|
48
117
|
try {
|
|
49
118
|
// eslint-disable-next-line no-constant-condition
|
|
50
119
|
while (true) {
|
|
51
|
-
const answer = await rl.question(
|
|
120
|
+
const answer = await rl.question(` ${c.amber("?")} ${message}\n${lines}\nChoice [1]: `);
|
|
52
121
|
const trimmed = answer.trim();
|
|
53
122
|
if (trimmed === "")
|
|
54
123
|
return choices[0].value;
|
package/dist/core/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/core/prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/core/prompt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEzD,MAAM,UAAU,cAAc,CAAC,OAAmD;IAC9E,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;YACH,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,YAAY,GAAG,IAAI;gBAC/C,OAAO,YAAY,CAAC;YACxB,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,YAAqB;gBAC/C,OAAO,YAAY,IAAI,EAAE,CAAC;YAC9B,CAAC;YACD,KAAK,CAAC,MAAM,CAAmB,QAAgB,EAAE,OAAsC;gBACnF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC5B,CAAC;SACJ,CAAC;IACN,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,OAAe,EAAS,EAAE;YACpC,MAAM,IAAI,KAAK,CACX,oDAAoD,OAAO,KAAK;gBAChE,6DAA6D,CAChE,CAAC;QACN,CAAC,CAAC;QACF,OAAO;YACH,KAAK,CAAC,OAAO,CAAC,OAAe,IAAsB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1E,KAAK,CAAC,KAAK,CAAC,OAAe,IAAqB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvE,KAAK,CAAC,MAAM,CAAmB,OAAe,IAAgB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACxF,CAAC;IACN,CAAC;IAED,OAAO;QACH,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,YAAY,GAAG,IAAI;YAC9C,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC9D,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAC9C,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC5C,IAAI,OAAO,KAAK,EAAE;oBAAE,OAAO,YAAY,CAAC;gBACxC,OAAO,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,KAAK,CAAC;YAChD,CAAC;oBAAS,CAAC;gBACP,EAAE,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;QACL,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,YAAqB;YAC9C,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC9D,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3D,CAAC;oBAAS,CAAC;gBACP,EAAE,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;QACL,CAAC;QAED,KAAK,CAAC,MAAM,CAAmB,OAAe,EAAE,OAAsC;YAClF,MAAM,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAEvD,wCAAwC;YACxC,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACxE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,EAAE;oBAC9B,IAAI,QAAQ,GAAG,CAAC,CAAC;oBAEjB,SAAS,MAAM;wBACX,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BACpC,MAAM,MAAM,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;4BACnD,MAAM,KAAK,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BAClE,OAAO,OAAO,MAAM,IAAI,KAAK,EAAE,CAAC;wBACpC,CAAC,CAAC,CAAC;wBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;wBAC/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;4BACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;wBAC9C,CAAC;wBACD,sBAAsB;wBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;oBACtD,CAAC;oBAED,MAAM,EAAE,CAAC;oBACT,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAEvB,SAAS,MAAM,CAAC,IAAY;wBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC5B,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,gBAAgB;4BACnD,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;4BAC5D,MAAM,EAAE,CAAC;wBACb,CAAC;6BAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,kBAAkB;4BAC5D,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;4BAC3C,MAAM,EAAE,CAAC;wBACb,CAAC;6BAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ;4BAC/C,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;4BAChC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;4BACtB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;4BAC7C,4CAA4C;4BAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BACpG,wBAAwB;4BACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gCACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;4BACvC,CAAC;4BACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;4BAChD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;wBACrC,CAAC;6BAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC,CAAC,SAAS;4BAClC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;4BAChC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;4BACtB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;4BAC7C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtB,CAAC;oBACL,CAAC;oBAED,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;YACP,CAAC;YAED,wCAAwC;YACxC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC9D,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3E,IAAI,CAAC;gBACD,iDAAiD;gBACjD,OAAO,IAAI,EAAE,CAAC;oBACV,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,gBAAgB,CAAC,CAAC;oBACzF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC9B,IAAI,OAAO,KAAK,EAAE;wBAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;wBAClD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;oBAC9B,CAAC;gBACL,CAAC;YACL,CAAC;oBAAS,CAAC;gBACP,EAAE,CAAC,KAAK,EAAE,CAAC;YACf,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Renderer } from "./types.js";
|
|
2
|
+
import type { Colors } from "./ansi.js";
|
|
3
|
+
type WriteFn = (data: string) => void;
|
|
4
|
+
export declare function createPlainRenderer(options: {
|
|
5
|
+
verbose: boolean;
|
|
6
|
+
quiet: boolean;
|
|
7
|
+
}, write?: WriteFn): Renderer;
|
|
8
|
+
export declare function createTtyRenderer(options: {
|
|
9
|
+
verbose: boolean;
|
|
10
|
+
quiet: boolean;
|
|
11
|
+
}, write?: WriteFn, colors?: Colors): Renderer;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAIxC,KAAK,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAmCtC,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAC7C,KAAK,GAAE,OAAwC,GAChD,QAAQ,CA0EV;AAID,wBAAgB,iBAAiB,CAC7B,OAAO,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAC7C,KAAK,GAAE,OAAwC,EAC/C,MAAM,GAAE,MAA2B,GACpC,QAAQ,CAgFV"}
|