@component-compass/cli 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ /** Top-level overview: `compass`, `compass --help`. */
2
+ export declare function topHelp(): string;
3
+ /** Per-command usage: `compass <cmd> --help`. Falls back to the overview. */
4
+ export declare function commandHelp(command: string): string;
@@ -0,0 +1,58 @@
1
+ const TOP = `component-compass <command> [options]
2
+
3
+ Commands:
4
+ scan Scan repo and write component-compass.json
5
+ init Scaffold component-compass.config.json
6
+ auth Sign in / out of a Component Compass host (login | logout | status)
7
+ db import Backfill ~/.cc-artifacts/ (or <dir>) into a deployed host
8
+
9
+ Run \`compass <command> --help\` for command-specific options.
10
+
11
+ Other:
12
+ --help, -h
13
+ --version, -v
14
+ `;
15
+ const SCAN = `compass scan [options]
16
+
17
+ Scan the repo and write component-compass.json.
18
+
19
+ Options:
20
+ --config <path> Override config path (default: ./component-compass.config.json)
21
+ --output <path> Override output path
22
+ --capture-values Force capture literal prop values
23
+ --quiet Suppress STDOUT summary
24
+ --json Print JSON to stdout (implies --quiet)
25
+ --repo-id <value> Override repo identifier in the artifact
26
+ --upload Also POST the scan to the configured host
27
+ --host <url> Override host URL (else COMPASS_HOST env, else config.host)
28
+ `;
29
+ const INIT = `compass init [options]
30
+
31
+ Scaffold component-compass.config.json. Interactive when run in a terminal.
32
+
33
+ Options:
34
+ --output <path> Config output path (default: ./component-compass.config.json)
35
+ --framework <name> Pre-select a framework (repeatable): react | vue | lit | html | wc
36
+ --repo-id <value> Repo identifier (default: derived from package.json / dir)
37
+ -y, --yes Accept defaults without prompting (non-interactive)
38
+ `;
39
+ const AUTH = `compass auth <login|logout|status> [--host <url>]
40
+
41
+ login Device-flow browser login; stores tokens in ~/.config/compass/hosts.json
42
+ logout Remove stored tokens for a host
43
+ status Show the signed-in identity
44
+ `;
45
+ const DB = `compass db import [dir] [--host <url>]
46
+
47
+ Backfill artifacts from ~/.cc-artifacts/ (or <dir>) into a deployed host.
48
+ `;
49
+ const REGISTRY = { scan: SCAN, init: INIT, auth: AUTH, db: DB };
50
+ /** Top-level overview: `compass`, `compass --help`. */
51
+ export function topHelp() {
52
+ return TOP;
53
+ }
54
+ /** Per-command usage: `compass <cmd> --help`. Falls back to the overview. */
55
+ export function commandHelp(command) {
56
+ return REGISTRY[command] ?? TOP;
57
+ }
58
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,MAAM,GAAG,GAAG;;;;;;;;;;;;;CAaX,CAAC;AAEF,MAAM,IAAI,GAAG;;;;;;;;;;;;;CAaZ,CAAC;AAEF,MAAM,IAAI,GAAG;;;;;;;;;CASZ,CAAC;AAEF,MAAM,IAAI,GAAG;;;;;CAKZ,CAAC;AAEF,MAAM,EAAE,GAAG;;;CAGV,CAAC;AAEF,MAAM,QAAQ,GAA2B,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAExF,uDAAuD;AACvD,MAAM,UAAU,OAAO;IACrB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;AAClC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /** A user-facing CLI error: its message is printed and `exitCode` is returned. */
2
+ export declare class CliError extends Error {
3
+ exitCode: number;
4
+ constructor(message: string, exitCode?: number);
5
+ }
6
+ export declare const KNOWN_COMMANDS: readonly ["scan", "init", "auth", "db"];
7
+ export type ParsedCommand = {
8
+ values: Record<string, string | boolean | string[] | undefined>;
9
+ positionals: string[];
10
+ };
11
+ /** Parse one command's argv in strict mode, mapping failures to a CliError. */
12
+ export declare function parseCommand(command: string, argv: string[]): ParsedCommand;
13
+ /** Message for an unrecognised top-level command, with a nearest-match hint. */
14
+ export declare function unknownCommandMessage(command: string): string;
@@ -0,0 +1,78 @@
1
+ import { parseArgs } from "node:util";
2
+ import { nearestMatch } from "./suggest.js";
3
+ /** A user-facing CLI error: its message is printed and `exitCode` is returned. */
4
+ export class CliError extends Error {
5
+ exitCode;
6
+ constructor(message, exitCode = 2) {
7
+ super(message);
8
+ this.exitCode = exitCode;
9
+ this.name = "CliError";
10
+ }
11
+ }
12
+ export const KNOWN_COMMANDS = ["scan", "init", "auth", "db"];
13
+ const SCAN_OPTIONS = {
14
+ config: { type: "string" },
15
+ output: { type: "string" },
16
+ "capture-values": { type: "boolean" },
17
+ quiet: { type: "boolean" },
18
+ json: { type: "boolean" },
19
+ "repo-id": { type: "string" },
20
+ upload: { type: "boolean" },
21
+ host: { type: "string" },
22
+ };
23
+ const INIT_OPTIONS = {
24
+ output: { type: "string" },
25
+ framework: { type: "string", multiple: true },
26
+ "repo-id": { type: "string" },
27
+ yes: { type: "boolean", short: "y" },
28
+ };
29
+ const AUTH_OPTIONS = { host: { type: "string" } };
30
+ const DB_OPTIONS = { host: { type: "string" } };
31
+ const COMMANDS = {
32
+ scan: { options: SCAN_OPTIONS, allowPositionals: false },
33
+ init: { options: INIT_OPTIONS, allowPositionals: false },
34
+ auth: { options: AUTH_OPTIONS, allowPositionals: true },
35
+ db: { options: DB_OPTIONS, allowPositionals: true },
36
+ };
37
+ /** Parse one command's argv in strict mode, mapping failures to a CliError. */
38
+ export function parseCommand(command, argv) {
39
+ const spec = COMMANDS[command];
40
+ if (!spec)
41
+ throw new CliError(unknownCommandMessage(command));
42
+ try {
43
+ const { values, positionals } = parseArgs({
44
+ args: argv,
45
+ options: spec.options,
46
+ allowPositionals: spec.allowPositionals,
47
+ strict: true,
48
+ });
49
+ const parsedValues = values;
50
+ return { values: parsedValues, positionals: [...positionals] };
51
+ }
52
+ catch (err) {
53
+ throw toCliError(err, command, spec.options);
54
+ }
55
+ }
56
+ /** Message for an unrecognised top-level command, with a nearest-match hint. */
57
+ export function unknownCommandMessage(command) {
58
+ const suggestion = nearestMatch(command, KNOWN_COMMANDS);
59
+ const hint = suggestion ? ` Did you mean '${suggestion}'?` : "";
60
+ return `Unknown command '${command}'.${hint} Run \`compass --help\`.`;
61
+ }
62
+ function toCliError(err, command, options) {
63
+ const e = err;
64
+ if (e.code === "ERR_PARSE_ARGS_UNKNOWN_OPTION") {
65
+ const bad = extractUnknownOption(e.message ?? "");
66
+ const names = Object.keys(options).map((o) => `--${o}`);
67
+ const suggestion = bad ? nearestMatch(bad, names) : undefined;
68
+ const hint = suggestion ? ` Did you mean '${suggestion}'?` : "";
69
+ return new CliError(`Unknown option '${bad ?? "(option)"}' for \`compass ${command}\`.${hint}`);
70
+ }
71
+ return new CliError(`${e.message ?? `Invalid arguments for \`compass ${command}\``} (run \`compass ${command} --help\`).`);
72
+ }
73
+ /** Node phrases the error as: Unknown option '--ouput'. To specify ... */
74
+ function extractUnknownOption(message) {
75
+ const m = message.match(/Unknown option '([^']+)'/);
76
+ return m?.[1];
77
+ }
78
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/cli/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** Levenshtein edit distance between two strings. */
2
+ export declare function editDistance(a: string, b: string): number;
3
+ /** Closest candidate within `maxDistance` edits, or undefined. */
4
+ export declare function nearestMatch(input: string, candidates: readonly string[], maxDistance?: number): string | undefined;
@@ -0,0 +1,38 @@
1
+ /** Levenshtein edit distance between two strings. */
2
+ export function editDistance(a, b) {
3
+ const m = a.length;
4
+ const n = b.length;
5
+ if (m === 0)
6
+ return n;
7
+ if (n === 0)
8
+ return m;
9
+ let prev = [];
10
+ for (let j = 0; j <= n; j++)
11
+ prev[j] = j;
12
+ for (let i = 1; i <= m; i++) {
13
+ const curr = [i];
14
+ for (let j = 1; j <= n; j++) {
15
+ const cost = a.charAt(i - 1) === b.charAt(j - 1) ? 0 : 1;
16
+ const del = (prev[j] ?? 0) + 1;
17
+ const ins = (curr[j - 1] ?? 0) + 1;
18
+ const sub = (prev[j - 1] ?? 0) + cost;
19
+ curr[j] = Math.min(del, ins, sub);
20
+ }
21
+ prev = curr;
22
+ }
23
+ return prev[n] ?? 0;
24
+ }
25
+ /** Closest candidate within `maxDistance` edits, or undefined. */
26
+ export function nearestMatch(input, candidates, maxDistance = 2) {
27
+ let best;
28
+ let bestDist = maxDistance + 1;
29
+ for (const candidate of candidates) {
30
+ const d = editDistance(input, candidate);
31
+ if (d < bestDist) {
32
+ bestDist = d;
33
+ best = candidate;
34
+ }
35
+ }
36
+ return best;
37
+ }
38
+ //# sourceMappingURL=suggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/cli/suggest.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,UAAU,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEtB,IAAI,IAAI,GAAa,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAa,CAAC,CAAC,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YACtC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,UAA6B,EAC7B,WAAW,GAAG,CAAC;IAEf,IAAI,IAAwB,CAAC;IAC7B,IAAI,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAC;IAC/B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC;YACjB,QAAQ,GAAG,CAAC,CAAC;YACb,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/cli.js CHANGED
@@ -3,137 +3,140 @@ import { runScan, scanExitCode } from "./commands/scan.js";
3
3
  import { runInit } from "./commands/init.js";
4
4
  import { Logger } from "./util/log.js";
5
5
  import { errorStack } from "@component-compass/ast-utils";
6
- const VERSION = "0.1.0";
7
- const HELP = `component-compass <command> [options]
8
-
9
- Commands:
10
- scan Scan repo and write component-compass.json
11
- init Scaffold component-compass.config.json
12
- auth Sign in / out of a Component Compass host (login | logout | status)
13
- db import Backfill ~/.cc-artifacts/ (or <dir>) into a deployed host
14
-
15
- Scan options:
16
- --config <path> Override config path (default: ./component-compass.config.json)
17
- --output <path> Override output path
18
- --capture-values Force capture literal prop values
19
- --quiet Suppress STDOUT summary
20
- --json Print JSON to stdout (implies --quiet)
21
- --repo-id <value> Override repo identifier in the artifact (else env COMPONENT_COMPASS_REPO_ID, git remote, package.json name, or cwd hash)
22
- --upload Also POST the scan to the configured host
23
- --host <url> Override host URL (else COMPASS_HOST env, else config.host)
24
-
25
- Auth:
26
- auth login [--host URL] Device-flow browser login; stores tokens in ~/.config/compass/hosts.json
27
- auth logout [--host URL] Remove stored tokens for a host
28
- auth status [--host URL] Show the signed-in identity
29
-
30
- Other:
31
- --help, -h
32
- --version, -v
33
- `;
6
+ import { readVersion } from "./util/version.js";
7
+ import { topHelp, commandHelp } from "./cli/help.js";
8
+ import { parseCommand, KNOWN_COMMANDS, unknownCommandMessage, CliError } from "./cli/parse.js";
9
+ import { resolve } from "node:path";
10
+ import { isInteractive } from "./util/interactive.js";
11
+ import { clackAdapter, PromptCancelledError } from "./prompts/adapter.js";
12
+ function isKnownCommand(cmd) {
13
+ return KNOWN_COMMANDS.includes(cmd);
14
+ }
15
+ function wantsHelp(args) {
16
+ return args.includes("--help") || args.includes("-h");
17
+ }
34
18
  async function main(argv) {
35
19
  const log = new Logger(false);
36
- if (argv.includes("--version") || argv.includes("-v")) {
37
- process.stdout.write(`${VERSION}\n`);
20
+ if (argv[0] === undefined) {
21
+ process.stdout.write(topHelp());
38
22
  return 0;
39
23
  }
40
- if (argv.includes("--help") || argv.includes("-h")) {
41
- process.stdout.write(HELP);
24
+ if (argv.includes("--version") || argv.includes("-v")) {
25
+ process.stdout.write(`${readVersion()}\n`);
42
26
  return 0;
43
27
  }
44
28
  const [cmd, ...rest] = argv;
45
- if (!cmd) {
46
- process.stdout.write(HELP);
29
+ if (cmd === undefined || cmd === "--help" || cmd === "-h") {
30
+ process.stdout.write(topHelp());
47
31
  return 0;
48
32
  }
49
- if (cmd === "scan") {
50
- const flags = parseFlags(rest);
51
- const scanOpts = {
52
- configPath: flags.config ?? "./component-compass.config.json",
53
- quiet: Boolean(flags.quiet || flags.json),
54
- };
55
- if (flags.output)
56
- scanOpts.outputOverride = flags.output;
57
- if (flags.captureValues)
58
- scanOpts.captureValuesOverride = true;
59
- if (flags.repoId)
60
- scanOpts.repoId = flags.repoId;
61
- if (flags.upload)
62
- scanOpts.upload = true;
63
- if (flags.host)
64
- scanOpts.hostOverride = flags.host;
65
- const result = await runScan(scanOpts);
66
- return scanExitCode(result);
33
+ if (!isKnownCommand(cmd)) {
34
+ log.error(unknownCommandMessage(cmd));
35
+ return 2;
36
+ }
37
+ if (wantsHelp(rest)) {
38
+ process.stdout.write(commandHelp(cmd));
39
+ return 0;
67
40
  }
68
- if (cmd === "init") {
69
- try {
70
- await runInit({ cwd: process.cwd() });
71
- return 0;
41
+ try {
42
+ switch (cmd) {
43
+ case "scan":
44
+ return await runScanCommand(rest);
45
+ case "init":
46
+ return await runInitCommand(rest);
47
+ case "auth": {
48
+ const { runAuth } = await import("./commands/auth.js");
49
+ const interactive = isInteractive();
50
+ return await runAuth(rest, { ...(interactive ? { interactive, prompts: clackAdapter } : {}) });
51
+ }
52
+ case "db":
53
+ return await runDbCommand(rest, log);
72
54
  }
73
- catch (err) {
74
- process.stderr.write(`init failed: ${errorStack(err)}\n`);
75
- return 1;
55
+ }
56
+ catch (err) {
57
+ if (err instanceof CliError) {
58
+ log.error(err.message);
59
+ return err.exitCode;
76
60
  }
61
+ throw err;
77
62
  }
78
- if (cmd === "auth") {
79
- const { runAuth } = await import("./commands/auth.js");
80
- return runAuth(rest);
63
+ return 2; // isKnownCommand makes the switch exhaustive; satisfies the type checker.
64
+ }
65
+ async function runScanCommand(rest) {
66
+ const { values } = parseCommand("scan", rest);
67
+ const { config, quiet, json, output, "capture-values": captureValues, "repo-id": repoId, upload, host, } = values;
68
+ const scanOpts = {
69
+ configPath: typeof config === "string" ? config : "./component-compass.config.json",
70
+ quiet: Boolean(quiet || json),
71
+ };
72
+ if (typeof output === "string")
73
+ scanOpts.outputOverride = output;
74
+ if (captureValues)
75
+ scanOpts.captureValuesOverride = true;
76
+ if (typeof repoId === "string")
77
+ scanOpts.repoId = repoId;
78
+ if (upload)
79
+ scanOpts.upload = true;
80
+ if (typeof host === "string")
81
+ scanOpts.hostOverride = host;
82
+ return scanExitCode(await runScan(scanOpts));
83
+ }
84
+ async function runInitCommand(rest) {
85
+ const { values } = parseCommand("init", rest);
86
+ const { yes, output, "repo-id": repoId, framework } = values;
87
+ const interactive = isInteractive({ yes: Boolean(yes) });
88
+ const initOpts = { cwd: process.cwd(), interactive };
89
+ if (interactive)
90
+ initOpts.prompts = clackAdapter;
91
+ if (typeof output === "string")
92
+ initOpts.outputPath = resolve(process.cwd(), output);
93
+ if (typeof repoId === "string")
94
+ initOpts.repoId = repoId;
95
+ const frameworks = parseFrameworks(framework);
96
+ if (frameworks)
97
+ initOpts.frameworks = frameworks;
98
+ try {
99
+ await runInit(initOpts);
100
+ return 0;
81
101
  }
82
- if (cmd === "db") {
83
- const [sub, ...subRest] = rest;
84
- if (sub === "import") {
85
- const flags = parseFlags(subRest);
86
- const { runDbImport } = await import("./commands/db-import.js");
87
- const dirArg = subRest.find((a) => !a.startsWith("-") && a !== "import");
88
- const r = await runDbImport({
89
- ...(dirArg !== undefined ? { dir: dirArg } : {}),
90
- ...(flags.host !== undefined ? { hostOverride: flags.host } : {}),
91
- });
92
- return r.exitCode;
102
+ catch (err) {
103
+ if (err instanceof PromptCancelledError) {
104
+ process.stderr.write("Cancelled.\n");
105
+ return 130;
93
106
  }
94
- log.error(`Unknown db subcommand: ${sub}\n${HELP}`);
95
- return 2;
107
+ process.stderr.write(`init failed: ${errorStack(err)}\n`);
108
+ return 1;
96
109
  }
97
- log.error(`Unknown command: ${cmd}\n${HELP}`);
98
- return 2;
99
110
  }
100
- function parseFlags(args) {
101
- const out = {};
102
- for (let i = 0; i < args.length; i++) {
103
- const a = args[i];
104
- if (a === undefined)
105
- continue;
106
- if (a === "--config") {
107
- const next = args[++i];
108
- if (next)
109
- out.config = next;
110
- }
111
- else if (a === "--output") {
112
- const next = args[++i];
113
- if (next)
114
- out.output = next;
115
- }
116
- else if (a === "--capture-values")
117
- out.captureValues = true;
118
- else if (a === "--quiet")
119
- out.quiet = true;
120
- else if (a === "--json")
121
- out.json = true;
122
- else if (a === "--repo-id") {
123
- const next = args[++i];
124
- if (next)
125
- out.repoId = next;
126
- }
127
- else if (a === "--upload")
128
- out.upload = true;
129
- else if (a === "--host") {
130
- const next = args[++i];
131
- if (next)
132
- out.host = next;
133
- }
111
+ const VALID_FRAMEWORKS = ["react", "vue", "lit", "html", "wc"];
112
+ function parseFrameworks(raw) {
113
+ if (!Array.isArray(raw))
114
+ return undefined;
115
+ const out = [];
116
+ for (const r of raw) {
117
+ if (VALID_FRAMEWORKS.includes(r))
118
+ out.push(r);
119
+ else
120
+ throw new CliError(`Unknown --framework '${r}'. Valid: ${VALID_FRAMEWORKS.join(", ")}.`);
134
121
  }
135
122
  return out;
136
123
  }
124
+ async function runDbCommand(rest, log) {
125
+ const sub = rest[0];
126
+ if (sub !== "import") {
127
+ log.error(`Unknown db subcommand: ${sub ?? "(none)"}. Run \`compass db --help\`.`);
128
+ return 2;
129
+ }
130
+ const { values, positionals } = parseCommand("db", rest);
131
+ const dirArg = positionals.find((p) => p !== "import");
132
+ const { host } = values;
133
+ const { runDbImport } = await import("./commands/db-import.js");
134
+ const r = await runDbImport({
135
+ ...(dirArg !== undefined ? { dir: dirArg } : {}),
136
+ ...(typeof host === "string" ? { hostOverride: host } : {}),
137
+ });
138
+ return r.exitCode;
139
+ }
137
140
  main(process.argv.slice(2)).then((code) => process.exit(code), (err) => {
138
141
  process.stderr.write(`Unhandled error: ${errorStack(err)}\n`);
139
142
  process.exit(1);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type PromptAdapter } from "../prompts/adapter.js";
1
2
  type StoreOpt = {
2
3
  filePath?: string;
3
4
  };
@@ -6,6 +7,7 @@ export declare function runAuthLogin(opts: {
6
7
  store?: StoreOpt;
7
8
  sleep?: (ms: number) => Promise<void>;
8
9
  now?: () => number;
10
+ prompts?: PromptAdapter;
9
11
  }): Promise<number>;
10
12
  export declare function runAuthStatus(opts: {
11
13
  host?: string;
@@ -19,8 +21,13 @@ export declare function runAuthLogout(opts: {
19
21
  env?: NodeJS.ProcessEnv;
20
22
  write?: (s: string) => void;
21
23
  }): Promise<number>;
22
- export declare function runAuth(argv: string[], deps?: {
24
+ type AuthDeps = {
23
25
  env?: NodeJS.ProcessEnv;
24
26
  store?: StoreOpt;
25
- }): Promise<number>;
27
+ interactive?: boolean;
28
+ prompts?: PromptAdapter;
29
+ sleep?: (ms: number) => Promise<void>;
30
+ now?: () => number;
31
+ };
32
+ export declare function runAuth(argv: string[], deps?: AuthDeps): Promise<number>;
26
33
  export {};