dsh-ssh-tui 0.7.0 → 0.7.1
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.en.md +14 -0
- package/README.md +8 -0
- package/lib/color-depth.js +17 -2
- package/lib/color-depth.js.map +1 -1
- package/lib/diag.js +19 -0
- package/lib/diag.js.map +1 -1
- package/lib/i18n/en.js +2 -0
- package/lib/i18n/en.js.map +1 -1
- package/lib/i18n/zh.js +2 -0
- package/lib/i18n/zh.js.map +1 -1
- package/lib/tui.js +8 -0
- package/lib/tui.js.map +1 -1
- package/lib/types/color-depth.d.ts +1 -1
- package/lib/types/diag.d.ts +11 -0
- package/lib/types/update-check.d.ts +42 -1
- package/lib/update-check.js +31 -2
- package/lib/update-check.js.map +1 -1
- package/package.json +1 -1
|
@@ -25,7 +25,7 @@ export type ColorDepth = 'truecolor' | '256' | '8' | 'none';
|
|
|
25
25
|
* @param env - the environment to read (tests pass their own).
|
|
26
26
|
* @returns the palette to paint with.
|
|
27
27
|
*/
|
|
28
|
-
export declare function colorDepth(env?: NodeJS.ProcessEnv): ColorDepth;
|
|
28
|
+
export declare function colorDepth(env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): ColorDepth;
|
|
29
29
|
/** The xterm 256-colour cube index back to RGB. */
|
|
30
30
|
export declare function rgbFrom256(index: number): [number, number, number];
|
|
31
31
|
/**
|
package/lib/types/diag.d.ts
CHANGED
|
@@ -21,6 +21,16 @@ export interface DiagSnapshot {
|
|
|
21
21
|
hostVersion: string;
|
|
22
22
|
nodeVersion: string;
|
|
23
23
|
platform: string;
|
|
24
|
+
/**
|
|
25
|
+
* What the palette resolved to and which hints decided it. A "no colour on
|
|
26
|
+
* Windows" report is otherwise guesswork: `TERM` is unset there by default.
|
|
27
|
+
*/
|
|
28
|
+
color?: {
|
|
29
|
+
depth: string;
|
|
30
|
+
term?: string;
|
|
31
|
+
colorTerm?: string;
|
|
32
|
+
windowsTerminal: boolean;
|
|
33
|
+
};
|
|
24
34
|
sessionId: string;
|
|
25
35
|
/** This process is the detached Host rather than the launcher. */
|
|
26
36
|
hostProcess: boolean;
|
|
@@ -73,6 +83,7 @@ export declare function collectDiag(options: {
|
|
|
73
83
|
link: DiagSnapshot['link'];
|
|
74
84
|
paintIntervalMs?: number;
|
|
75
85
|
dshHome?: string;
|
|
86
|
+
color?: DiagSnapshot['color'];
|
|
76
87
|
}): Promise<DiagSnapshot>;
|
|
77
88
|
/** Directory holding the per-session index, for callers that report it. */
|
|
78
89
|
export declare function diagIndexPath(dshHome?: string): string;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort npm latest check. Failures stay quiet. The TUI may offer to
|
|
3
|
+
* run `dsh plugin --profile <name> add dsh-ssh-tui@latest` — pnpm otherwise
|
|
4
|
+
* keeps the lockfile pin (e.g. 0.3.7) when the spec is a bare package name.
|
|
5
|
+
*/
|
|
6
|
+
import { spawn } from 'node:child_process';
|
|
1
7
|
export declare const PLUGIN_PACKAGE = "dsh-ssh-tui";
|
|
2
8
|
export declare function compareSemver(a: string, b: string): number;
|
|
3
9
|
export declare function resolvePluginProfileName(env?: NodeJS.ProcessEnv): string;
|
|
@@ -12,7 +18,42 @@ export interface PluginUpdateInfo {
|
|
|
12
18
|
notice: string;
|
|
13
19
|
}
|
|
14
20
|
export declare function checkForPluginUpdate(current: string): Promise<PluginUpdateInfo | undefined>;
|
|
15
|
-
|
|
21
|
+
/**
|
|
22
|
+
* How to re-run the dsh CLI that hosts this process.
|
|
23
|
+
*
|
|
24
|
+
* `spawn('dsh', …)` works on POSIX and fails on Windows with
|
|
25
|
+
* `spawn dsh ENOENT`: a global install there is a `dsh.cmd` shim, and
|
|
26
|
+
* CreateProcess does not apply `PATHEXT` to a bare name. Re-running the CLI we
|
|
27
|
+
* are already inside — the same node binary and the same entry script — needs no
|
|
28
|
+
* PATH lookup and no shell at all. The shell fallback is for the case where our
|
|
29
|
+
* own entry is not visible (a bundled CLI), where Windows *does* need a shell for
|
|
30
|
+
* the `.cmd` shim to resolve.
|
|
31
|
+
*/
|
|
32
|
+
export interface DshInvocation {
|
|
33
|
+
command: string;
|
|
34
|
+
/** Arguments that must precede the subcommand (node needs its entry script). */
|
|
35
|
+
prefix: string[];
|
|
36
|
+
shell: boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare function resolveDshInvocation(options?: {
|
|
39
|
+
execPath?: string;
|
|
40
|
+
argv?: readonly string[];
|
|
41
|
+
platform?: NodeJS.Platform;
|
|
42
|
+
exists?: (path: string) => boolean;
|
|
43
|
+
}): DshInvocation;
|
|
44
|
+
/**
|
|
45
|
+
* The profile argument as the shell path needs it.
|
|
46
|
+
*
|
|
47
|
+
* `shell: true` joins argv with spaces and escapes nothing (Node documents
|
|
48
|
+
* this), so a profile whose name contains whitespace would arrive as two
|
|
49
|
+
* arguments. The no-shell path passes it through untouched, so this only has to
|
|
50
|
+
* hold the fallback together.
|
|
51
|
+
*/
|
|
52
|
+
export declare function shellSafeProfile(profile: string): string;
|
|
53
|
+
export declare function installPluginLatest(profile?: string, deps?: {
|
|
54
|
+
invocation?: DshInvocation;
|
|
55
|
+
spawnFn?: typeof spawn;
|
|
56
|
+
}): Promise<{
|
|
16
57
|
ok: boolean;
|
|
17
58
|
output: string;
|
|
18
59
|
}>;
|
package/lib/update-check.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* keeps the lockfile pin (e.g. 0.3.7) when the spec is a bare package name.
|
|
5
5
|
*/
|
|
6
6
|
import { spawn } from 'node:child_process';
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
7
8
|
import { t } from './i18n/index.js';
|
|
8
9
|
const NPM_REGISTRY = 'https://registry.npmjs.org/dsh-ssh-tui/latest';
|
|
9
10
|
const CHECK_TIMEOUT_MS = 4000;
|
|
@@ -70,11 +71,39 @@ export async function checkForPluginUpdate(current) {
|
|
|
70
71
|
notice: formatUpdateNotice(current, latest, profile),
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
|
-
export
|
|
74
|
+
export function resolveDshInvocation(options = {}) {
|
|
75
|
+
const execPath = options.execPath ?? process.execPath;
|
|
76
|
+
const argv = options.argv ?? process.argv;
|
|
77
|
+
const platform = options.platform ?? process.platform;
|
|
78
|
+
const exists = options.exists ?? existsSync;
|
|
79
|
+
const entry = argv[1];
|
|
80
|
+
if (typeof entry === 'string' && entry !== '' && exists(entry)) {
|
|
81
|
+
return { command: execPath, prefix: [entry], shell: false };
|
|
82
|
+
}
|
|
83
|
+
return { command: 'dsh', prefix: [], shell: platform === 'win32' };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The profile argument as the shell path needs it.
|
|
87
|
+
*
|
|
88
|
+
* `shell: true` joins argv with spaces and escapes nothing (Node documents
|
|
89
|
+
* this), so a profile whose name contains whitespace would arrive as two
|
|
90
|
+
* arguments. The no-shell path passes it through untouched, so this only has to
|
|
91
|
+
* hold the fallback together.
|
|
92
|
+
*/
|
|
93
|
+
export function shellSafeProfile(profile) {
|
|
94
|
+
return /\s/u.test(profile) ? `"${profile.replaceAll('"', '')}"` : profile;
|
|
95
|
+
}
|
|
96
|
+
export async function installPluginLatest(profile = resolvePluginProfileName(), deps = {}) {
|
|
97
|
+
const invocation = deps.invocation ?? resolveDshInvocation();
|
|
98
|
+
const spawnFn = deps.spawnFn ?? spawn;
|
|
99
|
+
const profileArg = invocation.shell ? shellSafeProfile(profile) : profile;
|
|
74
100
|
return await new Promise(resolve => {
|
|
75
|
-
const child =
|
|
101
|
+
const child = spawnFn(invocation.command, [...invocation.prefix, 'plugin', '--profile', profileArg, 'add', `${PLUGIN_PACKAGE}@latest`], {
|
|
76
102
|
env: process.env,
|
|
77
103
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
104
|
+
shell: invocation.shell,
|
|
105
|
+
// No console window flashing over the TUI on Windows.
|
|
106
|
+
windowsHide: true,
|
|
78
107
|
});
|
|
79
108
|
const chunks = [];
|
|
80
109
|
child.stdout?.on('data', chunk => chunks.push(Buffer.from(chunk)));
|
package/lib/update-check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"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"}
|