@scalebun/cli 1.6.5 → 1.8.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/lib/commands/ota-publish.d.ts.map +1 -1
- package/lib/commands/ota-publish.js +211 -1
- package/lib/commands/ota-publish.js.map +1 -1
- package/lib/commands/quickstart.d.ts.map +1 -1
- package/lib/commands/quickstart.js +3 -17
- package/lib/commands/quickstart.js.map +1 -1
- package/lib/index.js +15 -6
- package/lib/index.js.map +1 -1
- package/lib/ui/banner.d.ts +23 -0
- package/lib/ui/banner.d.ts.map +1 -0
- package/lib/ui/banner.js +160 -0
- package/lib/ui/banner.js.map +1 -0
- package/lib/ui/mark.d.ts +3 -0
- package/lib/ui/mark.d.ts.map +1 -0
- package/lib/ui/mark.js +24 -0
- package/lib/ui/mark.js.map +1 -0
- package/lib/utils/apps.d.ts +20 -0
- package/lib/utils/apps.d.ts.map +1 -0
- package/lib/utils/apps.js +19 -0
- package/lib/utils/apps.js.map +1 -0
- package/lib/utils/browser.d.ts +9 -0
- package/lib/utils/browser.d.ts.map +1 -0
- package/lib/utils/browser.js +39 -0
- package/lib/utils/browser.js.map +1 -0
- package/lib/utils/prompt.d.ts +28 -16
- package/lib/utils/prompt.d.ts.map +1 -1
- package/lib/utils/prompt.js +213 -3
- package/lib/utils/prompt.js.map +1 -1
- package/lib/utils/ui.d.ts +0 -1
- package/lib/utils/ui.d.ts.map +1 -1
- package/lib/utils/ui.js +2 -16
- package/lib/utils/ui.js.map +1 -1
- package/package.json +3 -2
package/lib/ui/banner.js
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.WORDMARK = exports.MARK = void 0;
|
|
7
|
+
exports.termWidth = termWidth;
|
|
8
|
+
exports.banner = banner;
|
|
9
|
+
exports.shouldShowArt = shouldShowArt;
|
|
10
|
+
// scalebun/src/ui/banner.ts
|
|
11
|
+
// Ported from the reference banner.mjs — do NOT retune the width thresholds, the
|
|
12
|
+
// gradient stops, the colour ladder, or the mark art. The mark is pre-rendered;
|
|
13
|
+
// regenerate with `pnpm --filter @scalebun/cli gen:mark` if the logo changes.
|
|
14
|
+
// Glyph set is ▀ ▄ █ + space only: the CP437 legacy subset that every monospace
|
|
15
|
+
// font ships (braille U+2800 does NOT ship in DejaVu Sans Mono / Liberation Mono
|
|
16
|
+
// and renders as tofu).
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
const mark_1 = require("./mark");
|
|
19
|
+
Object.defineProperty(exports, "MARK", { enumerable: true, get: function () { return mark_1.MARK; } });
|
|
20
|
+
const MARK_H = mark_1.MARK.length;
|
|
21
|
+
exports.WORDMARK = [
|
|
22
|
+
'███████╗ ██████╗ █████╗ ██╗ ███████╗██████╗ ██╗ ██╗███╗ ██╗',
|
|
23
|
+
'██╔════╝██╔════╝██╔══██╗██║ ██╔════╝██╔══██╗██║ ██║████╗ ██║',
|
|
24
|
+
'███████╗██║ ███████║██║ █████╗ ██████╔╝██║ ██║██╔██╗ ██║',
|
|
25
|
+
'╚════██║██║ ██╔══██║██║ ██╔══╝ ██╔══██╗██║ ██║██║╚██╗██║',
|
|
26
|
+
'███████║╚██████╗██║ ██║███████╗███████╗██████╔╝╚██████╔╝██║ ╚████║',
|
|
27
|
+
'╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚══════╝╚═════╝ ╚═════╝ ╚═╝ ╚═══╝',
|
|
28
|
+
];
|
|
29
|
+
const WORD_W = exports.WORDMARK[0].length;
|
|
30
|
+
/* ── colour ─────────────────────────────────────────────────────────── */
|
|
31
|
+
// Detection is chalk's (`chalk.level`), the CLI's single source of truth for
|
|
32
|
+
// colour support — it also parses argv, so `--no-color` / `--color=never` are
|
|
33
|
+
// honoured here exactly as they are for the status box and command table. The
|
|
34
|
+
// raw-ANSI emitters below stay local: they do per-character gradient with
|
|
35
|
+
// repeat-collapsing, which chalk does not offer.
|
|
36
|
+
const BRAND = [80, 70, 229]; // #5046E5, flat logo indigo
|
|
37
|
+
const GRAD = [
|
|
38
|
+
[108, 92, 231], // #6C5CE7
|
|
39
|
+
[244, 114, 208], // #F472D0
|
|
40
|
+
];
|
|
41
|
+
function rgb256(r, g, b) {
|
|
42
|
+
const q = (v) => Math.round((v / 255) * 5);
|
|
43
|
+
return 16 + 36 * q(r) + 6 * q(g) + q(b);
|
|
44
|
+
}
|
|
45
|
+
function fg(level, r, g, b) {
|
|
46
|
+
if (level >= 3)
|
|
47
|
+
return `\x1b[38;2;${r};${g};${b}m`;
|
|
48
|
+
if (level === 2)
|
|
49
|
+
return `\x1b[38;5;${rgb256(r, g, b)}m`;
|
|
50
|
+
if (level === 1)
|
|
51
|
+
return '\x1b[95m'; // bright magenta
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
const RESET = (lvl) => (lvl ? '\x1b[0m' : '');
|
|
55
|
+
const STEPS = 12; // quantised: 12 stops instead of one escape per character
|
|
56
|
+
function mix(t) {
|
|
57
|
+
const [a, b] = GRAD;
|
|
58
|
+
const q = Math.round(t * (STEPS - 1)) / (STEPS - 1);
|
|
59
|
+
return [
|
|
60
|
+
Math.round(a[0] + (b[0] - a[0]) * q),
|
|
61
|
+
Math.round(a[1] + (b[1] - a[1]) * q),
|
|
62
|
+
Math.round(a[2] + (b[2] - a[2]) * q),
|
|
63
|
+
];
|
|
64
|
+
}
|
|
65
|
+
/** Per-character horizontal gradient. Falls back to one flat escape below truecolor. */
|
|
66
|
+
function gradient(line, level) {
|
|
67
|
+
if (level === 0)
|
|
68
|
+
return line;
|
|
69
|
+
if (level < 3)
|
|
70
|
+
return fg(level, GRAD[0][0], GRAD[0][1], GRAD[0][2]) + line + RESET(level);
|
|
71
|
+
let out = '';
|
|
72
|
+
let last = '';
|
|
73
|
+
for (let i = 0; i < line.length; i++) {
|
|
74
|
+
const [r, g, b] = mix(i / Math.max(1, line.length - 1));
|
|
75
|
+
const c = fg(3, r, g, b);
|
|
76
|
+
if (c !== last) {
|
|
77
|
+
out += c;
|
|
78
|
+
last = c;
|
|
79
|
+
} // collapse repeats
|
|
80
|
+
out += line[i];
|
|
81
|
+
}
|
|
82
|
+
return out + RESET(level);
|
|
83
|
+
}
|
|
84
|
+
/* ── layout ─────────────────────────────────────────────────────────── */
|
|
85
|
+
/** Real TTY width wins; COLUMNS only covers the non-TTY case (pipes, tests). */
|
|
86
|
+
function termWidth() {
|
|
87
|
+
return process.stdout.columns || Number(process.env.COLUMNS) || 80;
|
|
88
|
+
}
|
|
89
|
+
const pad = (s, n) => s + ' '.repeat(Math.max(0, n - s.length));
|
|
90
|
+
function banner(o = {}) {
|
|
91
|
+
const version = o.version ?? '0.0.0';
|
|
92
|
+
const tagline = o.tagline ?? 'Enterprise OTA Update & Telemetry Control Plane';
|
|
93
|
+
const level = o.level ?? chalk_1.default.level; // 0 none · 1 basic · 2 256 · 3 truecolor
|
|
94
|
+
const width = o.width ?? termWidth();
|
|
95
|
+
const dim = level ? '\x1b[90m' : '';
|
|
96
|
+
const R = RESET(level);
|
|
97
|
+
// Narrow terminals: no art at all. One line beats a broken picture.
|
|
98
|
+
if (width < 46)
|
|
99
|
+
return `${fg(level, BRAND[0], BRAND[1], BRAND[2])}scalebun${R} ${dim}v${version}${R}\n`;
|
|
100
|
+
const GAP = 2;
|
|
101
|
+
const OFF = GAP + 3; // gap used by the compact lockup
|
|
102
|
+
const brand = fg(level, BRAND[0], BRAND[1], BRAND[2]);
|
|
103
|
+
const lines = [];
|
|
104
|
+
// Full lockup — mark + block wordmark, wordmark optically centred.
|
|
105
|
+
if (o.mark !== false && width >= mark_1.MARK_W + GAP + WORD_W) {
|
|
106
|
+
const top = Math.floor((MARK_H - exports.WORDMARK.length) / 2) - 1;
|
|
107
|
+
for (let i = 0; i < MARK_H; i++) {
|
|
108
|
+
const left = brand + pad(mark_1.MARK[i] ?? '', mark_1.MARK_W) + R;
|
|
109
|
+
const wi = i - top;
|
|
110
|
+
let right = '';
|
|
111
|
+
if (wi >= 0 && wi < exports.WORDMARK.length)
|
|
112
|
+
right = gradient(exports.WORDMARK[wi], level);
|
|
113
|
+
else if (wi === exports.WORDMARK.length + 1)
|
|
114
|
+
right = `${dim}v${version} · ${tagline}${R}`;
|
|
115
|
+
lines.push(right ? left + ' '.repeat(GAP) + right : left);
|
|
116
|
+
}
|
|
117
|
+
return lines.join('\n').replace(/[ \t]+$/gm, '') + '\n';
|
|
118
|
+
}
|
|
119
|
+
// Compact lockup — mark + type. Same composition as the `quiet` direction, so
|
|
120
|
+
// an 80-column terminal still gets the rabbit.
|
|
121
|
+
const shortTag = 'OTA updates and telemetry';
|
|
122
|
+
const tag = width >= mark_1.MARK_W + OFF + tagline.length ? tagline : shortTag;
|
|
123
|
+
if (o.mark !== false && width >= mark_1.MARK_W + OFF + shortTag.length) {
|
|
124
|
+
const bold = level ? '\x1b[1m' : '';
|
|
125
|
+
const type = [
|
|
126
|
+
`${bold}${fg(level, GRAD[0][0], GRAD[0][1], GRAD[0][2])}scalebun${R} ${dim}v${version}${R}`,
|
|
127
|
+
`${dim}${tag}${R}`,
|
|
128
|
+
];
|
|
129
|
+
const top = Math.floor((MARK_H - type.length) / 2);
|
|
130
|
+
for (let i = 0; i < MARK_H; i++) {
|
|
131
|
+
const left = brand + pad(mark_1.MARK[i] ?? '', mark_1.MARK_W) + R;
|
|
132
|
+
const ti = i - top;
|
|
133
|
+
const right = ti >= 0 && ti < type.length ? type[ti] : '';
|
|
134
|
+
lines.push(right ? left + ' '.repeat(OFF) + right : left);
|
|
135
|
+
}
|
|
136
|
+
return lines.join('\n').replace(/[ \t]+$/gm, '') + '\n';
|
|
137
|
+
}
|
|
138
|
+
// No room beside the mark: type only.
|
|
139
|
+
if (width >= WORD_W)
|
|
140
|
+
exports.WORDMARK.forEach((l) => lines.push(gradient(l, level)));
|
|
141
|
+
else
|
|
142
|
+
lines.push(`${fg(level, BRAND[0], BRAND[1], BRAND[2])}scalebun${R}`);
|
|
143
|
+
lines.push('');
|
|
144
|
+
lines.push(`${dim}v${version} · ${width >= 60 ? tagline : shortTag}${R}`);
|
|
145
|
+
return lines.join('\n') + '\n';
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Gates the ART ONLY (mark + wordmark). The splash body — status line and
|
|
149
|
+
* command table — is the output of the no-arg command, not banner decoration,
|
|
150
|
+
* so it must NOT be gated by this. Keep the two concerns separate.
|
|
151
|
+
*/
|
|
152
|
+
function shouldShowArt(argv = process.argv.slice(2)) {
|
|
153
|
+
if (argv.includes('--no-banner') || process.env.SCALEBUN_NO_BANNER)
|
|
154
|
+
return false;
|
|
155
|
+
if (process.env.CI && !process.stdout.isTTY)
|
|
156
|
+
return false;
|
|
157
|
+
const cmd = argv.find((a) => !a.startsWith('-'));
|
|
158
|
+
return !cmd || cmd === 'help'; // bare `scalebun` and `scalebun help` only
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"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"}
|
package/lib/ui/mark.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../src/ui/mark.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,IAAI,EAAE,SAAS,MAAM,EAejC,CAAC;AACF,eAAO,MAAM,MAAM,KAAK,CAAC"}
|
package/lib/ui/mark.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MARK_W = exports.MARK = void 0;
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
// prettier-ignore
|
|
6
|
+
// GENERATED by tools/gen-mark.mjs — do not edit by hand.
|
|
7
|
+
exports.MARK = [
|
|
8
|
+
" ▄▄█████",
|
|
9
|
+
" █████ ████████",
|
|
10
|
+
"███████ ███████",
|
|
11
|
+
"███ ████ ▄███▀ ▀▀",
|
|
12
|
+
"████ ███ ████▀",
|
|
13
|
+
"▀███▄███▄████▄▄",
|
|
14
|
+
" ▀███████████████▄",
|
|
15
|
+
" ████▀▀▀ ▀▀████▄",
|
|
16
|
+
"████ ▄▄▄ ▀███",
|
|
17
|
+
"███ ███ ▄███",
|
|
18
|
+
"███ ▀███",
|
|
19
|
+
"███▄ ▄▄▄ ▄████",
|
|
20
|
+
"▀████▄▄▄▄▄▄███████▀",
|
|
21
|
+
" ▀██████████▀▀▀▀",
|
|
22
|
+
];
|
|
23
|
+
exports.MARK_W = 20;
|
|
24
|
+
//# sourceMappingURL=mark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark.js","sourceRoot":"","sources":["../../src/ui/mark.ts"],"names":[],"mappings":";;;AAAA,oBAAoB;AACpB,kBAAkB;AAClB,yDAAyD;AAC5C,QAAA,IAAI,GAAsB;IACrC,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;CACpB,CAAC;AACW,QAAA,MAAM,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ApiClient } from '../api/client';
|
|
2
|
+
/**
|
|
3
|
+
* Fetching the account's apps — shared by `scalebun apps`, `quickstart`, and the
|
|
4
|
+
* interactive `ota publish` wizard, so the org → project → app walk lives in one
|
|
5
|
+
* place instead of being copy-pasted per command.
|
|
6
|
+
*/
|
|
7
|
+
export interface AppRow {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
platform: string | null;
|
|
11
|
+
}
|
|
12
|
+
export interface AppEntry {
|
|
13
|
+
orgId: string;
|
|
14
|
+
orgName: string;
|
|
15
|
+
projectName: string;
|
|
16
|
+
app: AppRow;
|
|
17
|
+
}
|
|
18
|
+
/** Every app the account can see, flattened for listing/selection. */
|
|
19
|
+
export declare function fetchAllApps(client: ApiClient): Promise<AppEntry[]>;
|
|
20
|
+
//# sourceMappingURL=apps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/utils/apps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C;;;;GAIG;AAEH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAaD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,sEAAsE;AACtE,wBAAsB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAiBzE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchAllApps = fetchAllApps;
|
|
4
|
+
/** Every app the account can see, flattened for listing/selection. */
|
|
5
|
+
async function fetchAllApps(client) {
|
|
6
|
+
const orgs = await client.get('/organizations');
|
|
7
|
+
const entries = [];
|
|
8
|
+
for (const org of orgs ?? []) {
|
|
9
|
+
const projects = await client.get(`/organizations/${org.id}/projects`);
|
|
10
|
+
for (const p of projects ?? []) {
|
|
11
|
+
const detail = await client.get(`/organizations/${org.id}/projects/${p.id}`);
|
|
12
|
+
for (const app of detail?.apps ?? []) {
|
|
13
|
+
entries.push({ orgId: org.id, orgName: org.name, projectName: p.name, app });
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return entries;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/utils/apps.ts"],"names":[],"mappings":";;AAiCA,oCAiBC;AAlBD,sEAAsE;AAC/D,KAAK,UAAU,YAAY,CAAC,MAAiB;IAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAW,gBAAgB,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAC/B,kBAAkB,GAAG,CAAC,EAAE,WAAW,CACpC,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC7B,kBAAkB,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,CAC5C,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort "open this URL in the default browser". Non-fatal: callers always
|
|
3
|
+
* print the URL too, so a headless box or a missing opener never blocks the flow.
|
|
4
|
+
*
|
|
5
|
+
* Uses the platform opener (`start` on Windows, `open` on macOS, `xdg-open` on
|
|
6
|
+
* Linux) detached, so the CLI doesn't wait on the browser process.
|
|
7
|
+
*/
|
|
8
|
+
export declare function openUrl(url: string): void;
|
|
9
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/utils/browser.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAuBzC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.openUrl = openUrl;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
/**
|
|
6
|
+
* Best-effort "open this URL in the default browser". Non-fatal: callers always
|
|
7
|
+
* print the URL too, so a headless box or a missing opener never blocks the flow.
|
|
8
|
+
*
|
|
9
|
+
* Uses the platform opener (`start` on Windows, `open` on macOS, `xdg-open` on
|
|
10
|
+
* Linux) detached, so the CLI doesn't wait on the browser process.
|
|
11
|
+
*/
|
|
12
|
+
function openUrl(url) {
|
|
13
|
+
try {
|
|
14
|
+
let command;
|
|
15
|
+
let args;
|
|
16
|
+
if (process.platform === 'win32') {
|
|
17
|
+
// `start` is a cmd builtin; the empty "" is the window title arg it expects.
|
|
18
|
+
command = 'cmd';
|
|
19
|
+
args = ['/c', 'start', '', url];
|
|
20
|
+
}
|
|
21
|
+
else if (process.platform === 'darwin') {
|
|
22
|
+
command = 'open';
|
|
23
|
+
args = [url];
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
command = 'xdg-open';
|
|
27
|
+
args = [url];
|
|
28
|
+
}
|
|
29
|
+
const child = (0, child_process_1.spawn)(command, args, { stdio: 'ignore', detached: true });
|
|
30
|
+
child.on('error', () => {
|
|
31
|
+
/* opener missing — the caller already printed the URL */
|
|
32
|
+
});
|
|
33
|
+
child.unref();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
/* never throw from a convenience opener */
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/utils/browser.ts"],"names":[],"mappings":";;AASA,0BAuBC;AAhCD,iDAAsC;AAEtC;;;;;;GAMG;AACH,SAAgB,OAAO,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,IAAI,OAAe,CAAC;QACpB,IAAI,IAAc,CAAC;QACnB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,6EAA6E;YAC7E,OAAO,GAAG,KAAK,CAAC;YAChB,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACzC,OAAO,GAAG,MAAM,CAAC;YACjB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,UAAU,CAAC;YACrB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACrB,yDAAyD;QAC3D,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;AACH,CAAC"}
|
package/lib/utils/prompt.d.ts
CHANGED
|
@@ -1,20 +1,32 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hidden terminal input for secrets (access tokens).
|
|
3
|
-
*
|
|
4
|
-
* `readline.question` echoes what the user types, so a pasted access token would
|
|
5
|
-
* sit in the terminal scrollback in cleartext. This reads the token in raw mode
|
|
6
|
-
* and echoes a `*` per character instead — the token never appears on screen.
|
|
7
|
-
*
|
|
8
|
-
* Paste-safe: a pasted token usually arrives as one multi-character `data`
|
|
9
|
-
* chunk (often with a trailing newline), so each chunk is processed
|
|
10
|
-
* character-by-character. Backspace and Ctrl-C are handled. When stdin is not a
|
|
11
|
-
* TTY (CI, pipes) raw mode is unavailable — callers must supply the token via
|
|
12
|
-
* --token or an env var instead of relying on this.
|
|
13
|
-
*
|
|
14
|
-
* Control keys are compared by char code to avoid embedding raw control bytes in
|
|
15
|
-
* this source file.
|
|
16
|
-
*/
|
|
17
1
|
/** True when interactive hidden input is possible on this stdin. */
|
|
18
2
|
export declare function canPromptHidden(): boolean;
|
|
19
3
|
export declare function promptHidden(query: string): Promise<string>;
|
|
4
|
+
/** Close the shared prompt interface so the process can exit / move on. */
|
|
5
|
+
export declare function closePrompts(): void;
|
|
6
|
+
/** Free-text question with an optional default (shown in parentheses). */
|
|
7
|
+
export declare function text(query: string, opts?: {
|
|
8
|
+
default?: string;
|
|
9
|
+
}): Promise<string>;
|
|
10
|
+
/** Yes/no question. Empty input takes the default. */
|
|
11
|
+
export declare function confirm(query: string, opts?: {
|
|
12
|
+
default?: boolean;
|
|
13
|
+
}): Promise<boolean>;
|
|
14
|
+
/** Integer question with optional default and min/max validation (loops until valid). */
|
|
15
|
+
export declare function number(query: string, opts?: {
|
|
16
|
+
default?: number;
|
|
17
|
+
min?: number;
|
|
18
|
+
max?: number;
|
|
19
|
+
}): Promise<number>;
|
|
20
|
+
export interface Choice<T> {
|
|
21
|
+
label: string;
|
|
22
|
+
value: T;
|
|
23
|
+
hint?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Single choice from a list. Arrow keys (↑/↓, j/k) in a real TTY; a numbered
|
|
27
|
+
* prompt otherwise. Returns the chosen value.
|
|
28
|
+
*/
|
|
29
|
+
export declare function select<T>(query: string, choices: Choice<T>[], opts?: {
|
|
30
|
+
default?: number;
|
|
31
|
+
}): Promise<T>;
|
|
20
32
|
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"AA4BA,oEAAoE;AACpE,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiD3D;AAyBD,2EAA2E;AAC3E,wBAAgB,YAAY,IAAI,IAAI,CAKnC;AAmBD,0EAA0E;AAC1E,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAI1F;AAED,sDAAsD;AACtD,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/F;AAED,yFAAyF;AACzF,wBAAsB,MAAM,CAC1B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1D,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EACpB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B,OAAO,CAAC,CAAC,CAAC,CAKZ"}
|
package/lib/utils/prompt.js
CHANGED
|
@@ -1,4 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.canPromptHidden = canPromptHidden;
|
|
40
|
+
exports.promptHidden = promptHidden;
|
|
41
|
+
exports.closePrompts = closePrompts;
|
|
42
|
+
exports.text = text;
|
|
43
|
+
exports.confirm = confirm;
|
|
44
|
+
exports.number = number;
|
|
45
|
+
exports.select = select;
|
|
46
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
47
|
+
const readline = __importStar(require("readline"));
|
|
2
48
|
/**
|
|
3
49
|
* Hidden terminal input for secrets (access tokens).
|
|
4
50
|
*
|
|
@@ -15,9 +61,6 @@
|
|
|
15
61
|
* Control keys are compared by char code to avoid embedding raw control bytes in
|
|
16
62
|
* this source file.
|
|
17
63
|
*/
|
|
18
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.canPromptHidden = canPromptHidden;
|
|
20
|
-
exports.promptHidden = promptHidden;
|
|
21
64
|
const CODE_ETX = 3; // Ctrl-C
|
|
22
65
|
const CODE_EOT = 4; // Ctrl-D
|
|
23
66
|
const CODE_LF = 10; // \n
|
|
@@ -80,4 +123,171 @@ function promptHidden(query) {
|
|
|
80
123
|
stdin.on('data', onData);
|
|
81
124
|
});
|
|
82
125
|
}
|
|
126
|
+
// ── Interactive prompts (dependency-free) ────────────────────────────────────
|
|
127
|
+
//
|
|
128
|
+
// A tiny prompt toolkit for the interactive `ota publish` wizard: text, confirm,
|
|
129
|
+
// number, and a select. `select` uses arrow keys in a real TTY and falls back to
|
|
130
|
+
// a numbered choice otherwise, so it works over pipes / limited terminals too.
|
|
131
|
+
// A single shared readline for all line-based prompts in a session. Creating a
|
|
132
|
+
// fresh interface per question is the classic anti-pattern: over a pipe the
|
|
133
|
+
// first one buffers the remaining lines and later ones hang on an already-ended
|
|
134
|
+
// stdin. One interface reads sequential lines correctly. It is created lazily —
|
|
135
|
+
// after the raw-mode `select`s run — so it never fights their stdin handling.
|
|
136
|
+
let sharedRl = null;
|
|
137
|
+
function getRl() {
|
|
138
|
+
if (!sharedRl) {
|
|
139
|
+
sharedRl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
140
|
+
sharedRl.on('close', () => {
|
|
141
|
+
sharedRl = null;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
return sharedRl;
|
|
145
|
+
}
|
|
146
|
+
/** Close the shared prompt interface so the process can exit / move on. */
|
|
147
|
+
function closePrompts() {
|
|
148
|
+
if (sharedRl) {
|
|
149
|
+
sharedRl.close();
|
|
150
|
+
sharedRl = null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/** One-line echoed question via the shared readline. Resolves '' on EOF. */
|
|
154
|
+
function ask(query) {
|
|
155
|
+
return new Promise((resolve) => {
|
|
156
|
+
const rl = getRl();
|
|
157
|
+
let answered = false;
|
|
158
|
+
const onClose = () => {
|
|
159
|
+
if (!answered)
|
|
160
|
+
resolve('');
|
|
161
|
+
};
|
|
162
|
+
rl.once('close', onClose);
|
|
163
|
+
rl.question(query, (answer) => {
|
|
164
|
+
answered = true;
|
|
165
|
+
rl.removeListener('close', onClose);
|
|
166
|
+
resolve(answer);
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
/** Free-text question with an optional default (shown in parentheses). */
|
|
171
|
+
async function text(query, opts = {}) {
|
|
172
|
+
const suffix = opts.default ? chalk_1.default.dim(` (${opts.default})`) : '';
|
|
173
|
+
const answer = (await ask(`${chalk_1.default.cyan('?')} ${query}${suffix}: `)).trim();
|
|
174
|
+
return answer || opts.default || '';
|
|
175
|
+
}
|
|
176
|
+
/** Yes/no question. Empty input takes the default. */
|
|
177
|
+
async function confirm(query, opts = {}) {
|
|
178
|
+
const def = opts.default ?? false;
|
|
179
|
+
const answer = (await ask(`${chalk_1.default.cyan('?')} ${query} ${chalk_1.default.dim(def ? '(Y/n)' : '(y/N)')}: `))
|
|
180
|
+
.trim()
|
|
181
|
+
.toLowerCase();
|
|
182
|
+
if (!answer)
|
|
183
|
+
return def;
|
|
184
|
+
return answer === 'y' || answer === 'yes';
|
|
185
|
+
}
|
|
186
|
+
/** Integer question with optional default and min/max validation (loops until valid). */
|
|
187
|
+
async function number(query, opts = {}) {
|
|
188
|
+
const { min, max } = opts;
|
|
189
|
+
const range = min !== undefined && max !== undefined ? ` between ${min} and ${max}` : '';
|
|
190
|
+
// eslint-disable-next-line no-constant-condition
|
|
191
|
+
while (true) {
|
|
192
|
+
const suffix = opts.default !== undefined ? chalk_1.default.dim(` (${opts.default})`) : '';
|
|
193
|
+
const raw = (await ask(`${chalk_1.default.cyan('?')} ${query}${suffix}: `)).trim();
|
|
194
|
+
if (!raw && opts.default !== undefined)
|
|
195
|
+
return opts.default;
|
|
196
|
+
const n = Number(raw);
|
|
197
|
+
if (Number.isInteger(n) &&
|
|
198
|
+
(min === undefined || n >= min) &&
|
|
199
|
+
(max === undefined || n <= max)) {
|
|
200
|
+
return n;
|
|
201
|
+
}
|
|
202
|
+
console.log(chalk_1.default.yellow(` Please enter a whole number${range}.`));
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Single choice from a list. Arrow keys (↑/↓, j/k) in a real TTY; a numbered
|
|
207
|
+
* prompt otherwise. Returns the chosen value.
|
|
208
|
+
*/
|
|
209
|
+
async function select(query, choices, opts = {}) {
|
|
210
|
+
if (!choices.length)
|
|
211
|
+
throw new Error('select() needs at least one choice');
|
|
212
|
+
const def = Math.min(Math.max(opts.default ?? 0, 0), choices.length - 1);
|
|
213
|
+
if (!process.stdin.isTTY)
|
|
214
|
+
return numberedSelect(query, choices, def);
|
|
215
|
+
return arrowSelect(query, choices, def);
|
|
216
|
+
}
|
|
217
|
+
async function numberedSelect(query, choices, def) {
|
|
218
|
+
console.log(`${chalk_1.default.cyan('?')} ${query}`);
|
|
219
|
+
choices.forEach((c, i) => {
|
|
220
|
+
console.log(` ${chalk_1.default.cyan(String(i + 1))}) ${c.label}${c.hint ? chalk_1.default.dim(` — ${c.hint}`) : ''}`);
|
|
221
|
+
});
|
|
222
|
+
// eslint-disable-next-line no-constant-condition
|
|
223
|
+
while (true) {
|
|
224
|
+
const raw = (await ask(` Choose 1-${choices.length} ${chalk_1.default.dim(`(${def + 1})`)}: `)).trim();
|
|
225
|
+
if (!raw)
|
|
226
|
+
return choices[def].value;
|
|
227
|
+
const n = parseInt(raw, 10);
|
|
228
|
+
if (Number.isInteger(n) && n >= 1 && n <= choices.length)
|
|
229
|
+
return choices[n - 1].value;
|
|
230
|
+
console.log(chalk_1.default.yellow(` Enter a number between 1 and ${choices.length}.`));
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
function arrowSelect(query, choices, def) {
|
|
234
|
+
return new Promise((resolve) => {
|
|
235
|
+
const stdin = process.stdin;
|
|
236
|
+
const stdout = process.stdout;
|
|
237
|
+
let idx = def;
|
|
238
|
+
stdin.resume();
|
|
239
|
+
stdin.setEncoding('utf8');
|
|
240
|
+
if (stdin.isTTY)
|
|
241
|
+
stdin.setRawMode(true);
|
|
242
|
+
stdout.write('\x1b[?25l'); // hide cursor
|
|
243
|
+
const draw = (first) => {
|
|
244
|
+
if (!first)
|
|
245
|
+
stdout.write(`\x1b[${choices.length}A`); // back up to the first option
|
|
246
|
+
choices.forEach((c, i) => {
|
|
247
|
+
const active = i === idx;
|
|
248
|
+
const pointer = active ? chalk_1.default.cyan('❯') : ' ';
|
|
249
|
+
const label = active ? chalk_1.default.cyan(c.label) : c.label;
|
|
250
|
+
const hint = c.hint ? chalk_1.default.dim(` ${c.hint}`) : '';
|
|
251
|
+
stdout.write(`\r\x1b[K ${pointer} ${label}${hint}\n`);
|
|
252
|
+
});
|
|
253
|
+
};
|
|
254
|
+
stdout.write(`${chalk_1.default.cyan('?')} ${query}\n`);
|
|
255
|
+
draw(true);
|
|
256
|
+
const cleanup = () => {
|
|
257
|
+
if (stdin.isTTY)
|
|
258
|
+
stdin.setRawMode(false);
|
|
259
|
+
stdin.pause();
|
|
260
|
+
stdin.removeListener('data', onData);
|
|
261
|
+
stdout.write('\x1b[?25h'); // show cursor
|
|
262
|
+
};
|
|
263
|
+
const finish = () => {
|
|
264
|
+
cleanup();
|
|
265
|
+
// Collapse the query + options into one summary line.
|
|
266
|
+
stdout.write('\r');
|
|
267
|
+
stdout.write(`\x1b[${choices.length + 1}A`); // up to the query line
|
|
268
|
+
stdout.write('\x1b[J'); // clear query + options
|
|
269
|
+
stdout.write(`${chalk_1.default.cyan('?')} ${query} ${chalk_1.default.cyan('›')} ${chalk_1.default.cyan(choices[idx].label)}\n`);
|
|
270
|
+
resolve(choices[idx].value);
|
|
271
|
+
};
|
|
272
|
+
const onData = (chunk) => {
|
|
273
|
+
if (chunk === '\x1b[A' || chunk === '\x1bOA' || chunk === 'k') {
|
|
274
|
+
idx = (idx - 1 + choices.length) % choices.length;
|
|
275
|
+
draw(false);
|
|
276
|
+
}
|
|
277
|
+
else if (chunk === '\x1b[B' || chunk === '\x1bOB' || chunk === 'j') {
|
|
278
|
+
idx = (idx + 1) % choices.length;
|
|
279
|
+
draw(false);
|
|
280
|
+
}
|
|
281
|
+
else if (chunk === '\r' || chunk === '\n') {
|
|
282
|
+
finish();
|
|
283
|
+
}
|
|
284
|
+
else if (chunk === '\x03') {
|
|
285
|
+
cleanup();
|
|
286
|
+
stdout.write('\n');
|
|
287
|
+
process.exit(1);
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
stdin.on('data', onData);
|
|
291
|
+
});
|
|
292
|
+
}
|
|
83
293
|
//# sourceMappingURL=prompt.js.map
|
package/lib/utils/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/ui.d.ts
CHANGED
package/lib/utils/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,IAAI,IAAI,CAUnC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAwDrC"}
|