wjx-cli 0.1.5 → 0.1.7
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 +889 -841
- package/dist/commands/completion.d.ts +2 -0
- package/dist/commands/completion.js +119 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/diagnostics.js +11 -3
- package/dist/commands/diagnostics.js.map +1 -1
- package/dist/commands/init.js +7 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/survey.js +7 -1
- package/dist/commands/survey.js.map +1 -1
- package/dist/index.js +22 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/auth.js +1 -2
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/command-helpers.d.ts +12 -1
- package/dist/lib/command-helpers.js +52 -3
- package/dist/lib/command-helpers.js.map +1 -1
- package/dist/lib/completions.d.ts +6 -0
- package/dist/lib/completions.js +49 -0
- package/dist/lib/completions.js.map +1 -0
- package/dist/lib/output.d.ts +0 -1
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/stdin.js +5 -2
- package/dist/lib/stdin.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { writeFileSync, readFileSync, existsSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { CliError, handleError } from "../lib/errors.js";
|
|
5
|
+
const BASH_SCRIPT = `
|
|
6
|
+
_wjx_completions() {
|
|
7
|
+
local cur_word="\${COMP_WORDS[COMP_CWORD]}"
|
|
8
|
+
local line="\${COMP_LINE}"
|
|
9
|
+
local point="\${COMP_POINT}"
|
|
10
|
+
|
|
11
|
+
local candidates
|
|
12
|
+
candidates=$(wjx --get-completions "$point" "$line" 2>/dev/null)
|
|
13
|
+
|
|
14
|
+
COMPREPLY=($(compgen -W "$candidates" -- "$cur_word"))
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
complete -F _wjx_completions wjx
|
|
18
|
+
`.trim();
|
|
19
|
+
const ZSH_SCRIPT = `
|
|
20
|
+
_wjx_completions() {
|
|
21
|
+
local line="\${words[*]}"
|
|
22
|
+
local point="\${CURSOR}"
|
|
23
|
+
|
|
24
|
+
local candidates
|
|
25
|
+
candidates=("\${(@f)$(wjx --get-completions "$point" "$line" 2>/dev/null)}")
|
|
26
|
+
|
|
27
|
+
local -a completions
|
|
28
|
+
for c in "\${candidates[@]}"; do
|
|
29
|
+
[[ -n "$c" ]] && completions+=("$c")
|
|
30
|
+
done
|
|
31
|
+
_describe 'wjx' completions
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
compdef _wjx_completions wjx
|
|
35
|
+
`.trim();
|
|
36
|
+
const FISH_SCRIPT = `
|
|
37
|
+
complete -c wjx -f -a '(wjx --get-completions (commandline -C) (commandline) 2>/dev/null)'
|
|
38
|
+
`.trim();
|
|
39
|
+
const PROFILE_FILES = {
|
|
40
|
+
bash: ".bashrc",
|
|
41
|
+
zsh: ".zshrc",
|
|
42
|
+
fish: join(".config", "fish", "config.fish"),
|
|
43
|
+
};
|
|
44
|
+
const EVAL_LINES = {
|
|
45
|
+
bash: 'eval "$(wjx completion bash)"',
|
|
46
|
+
zsh: 'eval "$(wjx completion zsh)"',
|
|
47
|
+
fish: "wjx completion fish | source",
|
|
48
|
+
};
|
|
49
|
+
function detectShell() {
|
|
50
|
+
const shell = process.env.SHELL || "";
|
|
51
|
+
if (shell.includes("zsh"))
|
|
52
|
+
return "zsh";
|
|
53
|
+
if (shell.includes("bash"))
|
|
54
|
+
return "bash";
|
|
55
|
+
if (shell.includes("fish"))
|
|
56
|
+
return "fish";
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
export function registerCompletionCommands(program) {
|
|
60
|
+
const completion = program
|
|
61
|
+
.command("completion")
|
|
62
|
+
.description("生成 Shell 自动补全脚本");
|
|
63
|
+
completion
|
|
64
|
+
.command("bash")
|
|
65
|
+
.description("输出 Bash 补全脚本")
|
|
66
|
+
.action(() => {
|
|
67
|
+
console.log(BASH_SCRIPT);
|
|
68
|
+
});
|
|
69
|
+
completion
|
|
70
|
+
.command("zsh")
|
|
71
|
+
.description("输出 Zsh 补全脚本")
|
|
72
|
+
.action(() => {
|
|
73
|
+
console.log(ZSH_SCRIPT);
|
|
74
|
+
});
|
|
75
|
+
completion
|
|
76
|
+
.command("fish")
|
|
77
|
+
.description("输出 Fish 补全脚本")
|
|
78
|
+
.action(() => {
|
|
79
|
+
console.log(FISH_SCRIPT);
|
|
80
|
+
});
|
|
81
|
+
completion
|
|
82
|
+
.command("install")
|
|
83
|
+
.description("自动安装补全脚本到 Shell 配置文件")
|
|
84
|
+
.action(() => {
|
|
85
|
+
try {
|
|
86
|
+
const shell = detectShell();
|
|
87
|
+
if (!shell) {
|
|
88
|
+
throw new CliError("INPUT_ERROR", "无法检测 Shell 类型。请手动运行:\n" +
|
|
89
|
+
" Bash: eval \"$(wjx completion bash)\"\n" +
|
|
90
|
+
" Zsh: eval \"$(wjx completion zsh)\"\n" +
|
|
91
|
+
" Fish: wjx completion fish | source");
|
|
92
|
+
}
|
|
93
|
+
const profilePath = join(homedir(), PROFILE_FILES[shell]);
|
|
94
|
+
const evalLine = EVAL_LINES[shell];
|
|
95
|
+
const marker = "# wjx shell completions";
|
|
96
|
+
// Check for existing installation
|
|
97
|
+
try {
|
|
98
|
+
if (existsSync(profilePath)) {
|
|
99
|
+
const content = readFileSync(profilePath, "utf8");
|
|
100
|
+
if (content.includes(evalLine) || content.includes("wjx completion")) {
|
|
101
|
+
process.stderr.write(`补全脚本已安装在 ${profilePath}\n`);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Profile unreadable — proceed to append
|
|
108
|
+
}
|
|
109
|
+
const snippet = `\n${marker}\n${evalLine}\n`;
|
|
110
|
+
writeFileSync(profilePath, snippet, { flag: "a" });
|
|
111
|
+
process.stderr.write(`已添加到 ${profilePath}\n`);
|
|
112
|
+
process.stderr.write(`运行以下命令立即生效:\n source ${profilePath}\n`);
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
handleError(e);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
1
2
|
import { listSurveys } from "wjx-api-sdk";
|
|
2
3
|
import { getCredentials } from "../lib/auth.js";
|
|
3
4
|
import { formatOutput } from "../lib/output.js";
|
|
4
5
|
import { handleError } from "../lib/errors.js";
|
|
5
6
|
import { loadConfig, CONFIG_PATH } from "../lib/config.js";
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
const sdkPkg = require("wjx-api-sdk/package.json");
|
|
9
|
+
function maskApiKey(value) {
|
|
10
|
+
if (value.length <= 4)
|
|
11
|
+
return "****";
|
|
12
|
+
return value.slice(0, 4) + "****" + value.slice(-4);
|
|
13
|
+
}
|
|
6
14
|
export function registerDiagnosticCommands(program) {
|
|
7
15
|
// --- whoami ---
|
|
8
16
|
program
|
|
@@ -13,7 +21,7 @@ export function registerDiagnosticCommands(program) {
|
|
|
13
21
|
const creds = getCredentials(program.opts());
|
|
14
22
|
const result = await listSurveys({ page_index: 1, page_size: 1 }, creds);
|
|
15
23
|
if (result.result === false) {
|
|
16
|
-
//
|
|
24
|
+
// API Key invalid or API error
|
|
17
25
|
formatOutput({ authenticated: false, error: result.errormsg || "ApiKey 无效" }, program.opts());
|
|
18
26
|
process.exit(1);
|
|
19
27
|
}
|
|
@@ -55,7 +63,7 @@ export function registerDiagnosticCommands(program) {
|
|
|
55
63
|
checks.push({
|
|
56
64
|
check: "WJX_API_KEY",
|
|
57
65
|
status: apiKey ? "ok" : "fail",
|
|
58
|
-
detail: apiKey ? `已设置 (${apiKey
|
|
66
|
+
detail: apiKey ? `已设置 (${maskApiKey(apiKey)})` : "未设置",
|
|
59
67
|
});
|
|
60
68
|
// 3. WJX_CORP_ID
|
|
61
69
|
const corpId = process.env.WJX_CORP_ID || config?.corpId;
|
|
@@ -110,7 +118,7 @@ export function registerDiagnosticCommands(program) {
|
|
|
110
118
|
checks.push({
|
|
111
119
|
check: "wjx-api-sdk",
|
|
112
120
|
status: "ok",
|
|
113
|
-
detail:
|
|
121
|
+
detail: `v${sdkPkg.version}`,
|
|
114
122
|
});
|
|
115
123
|
const allOk = checks.every((c) => c.status === "ok" || c.status === "skip" || c.status === "info");
|
|
116
124
|
formatOutput({ ok: allOk, checks }, program.opts());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/commands/diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,iBAAiB;IACjB,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAC/B,KAAK,CACN,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC5B
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/commands/diagnostics.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -2,6 +2,7 @@ import { createInterface } from "node:readline/promises";
|
|
|
2
2
|
import { stdin, stderr } from "node:process";
|
|
3
3
|
import { listSurveys } from "wjx-api-sdk";
|
|
4
4
|
import { loadConfig, saveConfig, CONFIG_PATH } from "../lib/config.js";
|
|
5
|
+
const DEFAULT_BASE_URL = "https://www.wjx.cn";
|
|
5
6
|
function mask(value) {
|
|
6
7
|
if (value.length <= 4)
|
|
7
8
|
return "****";
|
|
@@ -31,7 +32,7 @@ export function registerInitCommands(program) {
|
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
// 2. Base URL (optional)
|
|
34
|
-
const defaultUrl = currentBaseUrl ||
|
|
35
|
+
const defaultUrl = currentBaseUrl || DEFAULT_BASE_URL;
|
|
35
36
|
const baseUrlInput = await rl.question(` WJX_BASE_URL [${defaultUrl}]: `);
|
|
36
37
|
const baseUrl = baseUrlInput.trim() || defaultUrl;
|
|
37
38
|
// 3. Corp ID (optional)
|
|
@@ -39,9 +40,12 @@ export function registerInitCommands(program) {
|
|
|
39
40
|
const corpIdInput = await rl.question(` WJX_CORP_ID${corpHint}: `);
|
|
40
41
|
const corpId = corpIdInput.trim() || currentCorpId || undefined;
|
|
41
42
|
// Apply base URL before validation so SDK uses the correct endpoint
|
|
42
|
-
if (baseUrl !==
|
|
43
|
+
if (baseUrl !== DEFAULT_BASE_URL) {
|
|
43
44
|
process.env.WJX_BASE_URL = baseUrl;
|
|
44
45
|
}
|
|
46
|
+
else {
|
|
47
|
+
delete process.env.WJX_BASE_URL;
|
|
48
|
+
}
|
|
45
49
|
// Validate API Key
|
|
46
50
|
stderr.write("\n验证 API Key...");
|
|
47
51
|
try {
|
|
@@ -60,7 +64,7 @@ export function registerInitCommands(program) {
|
|
|
60
64
|
}
|
|
61
65
|
// Save
|
|
62
66
|
const newConfig = { apiKey };
|
|
63
|
-
if (baseUrl !==
|
|
67
|
+
if (baseUrl !== DEFAULT_BASE_URL)
|
|
64
68
|
newConfig.baseUrl = baseUrl;
|
|
65
69
|
if (corpId)
|
|
66
70
|
newConfig.corpId = corpId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGvE,SAAS,IAAI,CAAC,KAAa;IACzB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACrC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;QACtE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QACzE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;QAEtE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,SAAS,WAAW,MAAM,CAAC,CAAC;QAEzC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,0BAA0B;YAC1B,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC;gBAC1D,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC;gBACvC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;YAED,yBAAyB;YACzB,MAAM,UAAU,GAAG,cAAc,IAAI,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/survey.js
CHANGED
|
@@ -2,7 +2,7 @@ import { createSurvey, getSurvey, listSurveys, updateSurveyStatus, getSurveySett
|
|
|
2
2
|
import { CliError, handleError } from "../lib/errors.js";
|
|
3
3
|
import { mergeStdinWithOpts } from "../lib/stdin.js";
|
|
4
4
|
import { getCredentials } from "../lib/auth.js";
|
|
5
|
-
import { executeCommand, strictInt, requireField } from "../lib/command-helpers.js";
|
|
5
|
+
import { executeCommand, strictInt, requireField, createCapturingFetch, printDryRunPreview } from "../lib/command-helpers.js";
|
|
6
6
|
export function registerSurveyCommands(program) {
|
|
7
7
|
const survey = program.command("survey").description("问卷管理");
|
|
8
8
|
// --- list ---
|
|
@@ -187,6 +187,12 @@ export function registerSurveyCommands(program) {
|
|
|
187
187
|
}
|
|
188
188
|
requireField(merged, "vid");
|
|
189
189
|
const creds = getCredentials(program.opts());
|
|
190
|
+
if (program.opts().dryRun) {
|
|
191
|
+
const { fetchImpl, getCapturedRequest } = createCapturingFetch();
|
|
192
|
+
await getSurvey({ vid: merged.vid }, creds, fetchImpl);
|
|
193
|
+
printDryRunPreview(getCapturedRequest());
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
190
196
|
const result = await getSurvey({ vid: merged.vid }, creds);
|
|
191
197
|
if (result.result === false) {
|
|
192
198
|
throw new CliError("API_ERROR", result.errormsg || "API request failed");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"survey.js","sourceRoot":"","sources":["../../src/commands/survey.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,aAAa,EACb,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"survey.js","sourceRoot":"","sources":["../../src/commands/survey.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from "node:module";
|
|
2
3
|
import { Command, CommanderError } from "commander";
|
|
3
4
|
import { registerSurveyCommands } from "./commands/survey.js";
|
|
4
5
|
import { registerDiagnosticCommands } from "./commands/diagnostics.js";
|
|
@@ -12,21 +13,25 @@ import { registerAccountCommands } from "./commands/account.js";
|
|
|
12
13
|
import { registerSsoCommands } from "./commands/sso.js";
|
|
13
14
|
import { registerAnalyticsCommands } from "./commands/analytics.js";
|
|
14
15
|
import { registerInitCommands } from "./commands/init.js";
|
|
16
|
+
import { registerCompletionCommands } from "./commands/completion.js";
|
|
15
17
|
import { readStdin } from "./lib/stdin.js";
|
|
16
18
|
import { handleError } from "./lib/errors.js";
|
|
17
19
|
import { applyConfigToEnv } from "./lib/config.js";
|
|
20
|
+
import { getCompletions } from "./lib/completions.js";
|
|
18
21
|
// Load ~/.wjxrc config into process.env (env vars take precedence)
|
|
19
22
|
applyConfigToEnv();
|
|
23
|
+
const require = createRequire(import.meta.url);
|
|
24
|
+
const { version } = require("../package.json");
|
|
20
25
|
const program = new Command();
|
|
21
26
|
program
|
|
22
27
|
.name("wjx")
|
|
23
28
|
.description("问卷星 (Wenjuanxing) CLI — AI Agent 原生命令行工具")
|
|
24
|
-
.version(
|
|
29
|
+
.version(version)
|
|
25
30
|
.option("--api-key <apiKey>", "WJX API Key(或设置 WJX_API_KEY 环境变量)")
|
|
26
31
|
.option("--json", "JSON 输出(默认)")
|
|
27
32
|
.option("--table", "表格输出")
|
|
28
|
-
.option("--
|
|
29
|
-
.option("--
|
|
33
|
+
.option("--stdin", "从 stdin 读取 JSON 参数")
|
|
34
|
+
.option("--dry-run", "预览 API 请求(不实际发送)");
|
|
30
35
|
// Prevent Commander from calling process.exit on errors — we handle it ourselves
|
|
31
36
|
program.exitOverride();
|
|
32
37
|
// Global preAction hook: read stdin and merge with command opts
|
|
@@ -52,8 +57,21 @@ registerAccountCommands(program);
|
|
|
52
57
|
registerSsoCommands(program);
|
|
53
58
|
registerAnalyticsCommands(program);
|
|
54
59
|
registerInitCommands(program);
|
|
60
|
+
registerCompletionCommands(program);
|
|
55
61
|
(async () => {
|
|
56
62
|
try {
|
|
63
|
+
// Hidden completion hook: --get-completions <point> <line...>
|
|
64
|
+
const rawArgs = process.argv.slice(2);
|
|
65
|
+
const gcIdx = rawArgs.indexOf("--get-completions");
|
|
66
|
+
if (gcIdx !== -1 && rawArgs[gcIdx + 1] !== undefined) {
|
|
67
|
+
const point = parseInt(rawArgs[gcIdx + 1], 10);
|
|
68
|
+
const line = rawArgs.slice(gcIdx + 2).join(" ");
|
|
69
|
+
const results = getCompletions(program, point, line);
|
|
70
|
+
if (results.length > 0) {
|
|
71
|
+
process.stdout.write(results.join("\n") + "\n");
|
|
72
|
+
}
|
|
73
|
+
process.exit(0);
|
|
74
|
+
}
|
|
57
75
|
await program.parseAsync();
|
|
58
76
|
}
|
|
59
77
|
catch (err) {
|
|
@@ -63,8 +81,8 @@ registerInitCommands(program);
|
|
|
63
81
|
if (err.code === "commander.helpDisplayed" || err.code === "commander.version") {
|
|
64
82
|
process.exit(0);
|
|
65
83
|
}
|
|
66
|
-
// Missing required option, unknown option, etc. — treat as INPUT_ERROR
|
|
67
84
|
handleError(err);
|
|
85
|
+
return;
|
|
68
86
|
}
|
|
69
87
|
handleError(err);
|
|
70
88
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/auth.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { CliError } from "./errors.js";
|
|
2
|
-
import { loadConfig } from "./config.js";
|
|
3
2
|
export function getCredentials(globalOpts) {
|
|
4
|
-
const apiKey = globalOpts.apiKey || process.env.WJX_API_KEY
|
|
3
|
+
const apiKey = globalOpts.apiKey || process.env.WJX_API_KEY;
|
|
5
4
|
if (!apiKey) {
|
|
6
5
|
throw new CliError("AUTH_ERROR", "WJX_API_KEY 未设置。请通过 --api-key 参数、WJX_API_KEY 环境变量、或运行 wjx init 配置。");
|
|
7
6
|
}
|
package/dist/lib/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,UAAU,cAAc,CAAC,UAA+B;IAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAChB,YAAY,EACZ,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import type { WjxApiResponse } from "wjx-api-sdk";
|
|
2
|
+
import type { WjxApiResponse, FetchLike } from "wjx-api-sdk";
|
|
3
3
|
/**
|
|
4
4
|
* Strict integer parser. Rejects garbage like "123abc".
|
|
5
5
|
*/
|
|
@@ -11,6 +11,17 @@ export declare function requireField(merged: Record<string, unknown>, field: str
|
|
|
11
11
|
interface ExecuteOpts {
|
|
12
12
|
noAuth?: boolean;
|
|
13
13
|
}
|
|
14
|
+
export interface CapturedRequest {
|
|
15
|
+
method: string;
|
|
16
|
+
url: string;
|
|
17
|
+
headers: Record<string, string>;
|
|
18
|
+
body: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function createCapturingFetch(): {
|
|
21
|
+
fetchImpl: FetchLike;
|
|
22
|
+
getCapturedRequest: () => CapturedRequest | null;
|
|
23
|
+
};
|
|
24
|
+
export declare function printDryRunPreview(request: CapturedRequest | null): void;
|
|
14
25
|
type SdkFunction = (input: any, creds: any, ...rest: any[]) => Promise<WjxApiResponse<any>>;
|
|
15
26
|
/**
|
|
16
27
|
* Central command executor.
|
|
@@ -6,6 +6,9 @@ import { mergeStdinWithOpts } from "./stdin.js";
|
|
|
6
6
|
* Strict integer parser. Rejects garbage like "123abc".
|
|
7
7
|
*/
|
|
8
8
|
export function strictInt(v) {
|
|
9
|
+
if (v === "") {
|
|
10
|
+
throw new CliError("INPUT_ERROR", `Invalid integer: ""`);
|
|
11
|
+
}
|
|
9
12
|
const n = Number(v);
|
|
10
13
|
if (!Number.isInteger(n)) {
|
|
11
14
|
throw new CliError("INPUT_ERROR", `Invalid integer: "${v}"`);
|
|
@@ -20,6 +23,37 @@ export function requireField(merged, field, label) {
|
|
|
20
23
|
throw new CliError("INPUT_ERROR", `Missing required option: --${label || field}`);
|
|
21
24
|
}
|
|
22
25
|
}
|
|
26
|
+
// "Bearer " prefix is 7 chars; preserve prefix + first 4 key chars, mask middle, keep last 4
|
|
27
|
+
function maskAuthHeader(value) {
|
|
28
|
+
if (value.length <= 12)
|
|
29
|
+
return "****";
|
|
30
|
+
return value.slice(0, 11) + "****" + value.slice(-4);
|
|
31
|
+
}
|
|
32
|
+
export function createCapturingFetch() {
|
|
33
|
+
let captured = null;
|
|
34
|
+
const fetchImpl = async (url, init) => {
|
|
35
|
+
const headers = {};
|
|
36
|
+
if (init?.headers) {
|
|
37
|
+
for (const [k, v] of Object.entries(init.headers)) {
|
|
38
|
+
headers[k] = k.toLowerCase() === "authorization" ? maskAuthHeader(String(v)) : String(v);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
captured = {
|
|
42
|
+
method: init?.method ?? "GET",
|
|
43
|
+
url: String(url),
|
|
44
|
+
headers,
|
|
45
|
+
body: init?.body ? String(init.body) : "",
|
|
46
|
+
};
|
|
47
|
+
return new Response(JSON.stringify({ result: true, data: {} }), {
|
|
48
|
+
status: 200,
|
|
49
|
+
headers: { "Content-Type": "application/json" },
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
return { fetchImpl, getCapturedRequest: () => captured };
|
|
53
|
+
}
|
|
54
|
+
export function printDryRunPreview(request) {
|
|
55
|
+
process.stderr.write(JSON.stringify({ dry_run: true, request }, null, 2) + "\n");
|
|
56
|
+
}
|
|
23
57
|
/**
|
|
24
58
|
* Central command executor.
|
|
25
59
|
* - Merges stdin data with CLI opts (source-aware)
|
|
@@ -42,20 +76,35 @@ export async function executeCommand(program, actionCommand, sdkFn, buildInput,
|
|
|
42
76
|
merged = { ...commandOpts };
|
|
43
77
|
}
|
|
44
78
|
const input = buildInput(merged);
|
|
79
|
+
const globalOpts = program.opts();
|
|
45
80
|
if (opts.noAuth) {
|
|
81
|
+
if (globalOpts.dryRun) {
|
|
82
|
+
process.stderr.write(JSON.stringify({
|
|
83
|
+
dry_run: true,
|
|
84
|
+
note: "本地命令,不会发送 API 请求",
|
|
85
|
+
input,
|
|
86
|
+
}, null, 2) + "\n");
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
46
89
|
// Local commands (e.g. buildSurveyUrl) — call with input only
|
|
47
90
|
const localFn = sdkFn;
|
|
48
91
|
const result = localFn(input);
|
|
49
|
-
formatOutput(result,
|
|
92
|
+
formatOutput(result, globalOpts);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const creds = getCredentials(globalOpts);
|
|
96
|
+
if (globalOpts.dryRun) {
|
|
97
|
+
const { fetchImpl, getCapturedRequest } = createCapturingFetch();
|
|
98
|
+
await sdkFn(input, creds, fetchImpl);
|
|
99
|
+
printDryRunPreview(getCapturedRequest());
|
|
50
100
|
return;
|
|
51
101
|
}
|
|
52
|
-
const creds = getCredentials(program.opts());
|
|
53
102
|
const result = await sdkFn(input, creds);
|
|
54
103
|
// P0 fix: detect SDK API failure response
|
|
55
104
|
if (result.result === false) {
|
|
56
105
|
throw new CliError("API_ERROR", result.errormsg || "API request failed");
|
|
57
106
|
}
|
|
58
|
-
formatOutput(result,
|
|
107
|
+
formatOutput(result, globalOpts);
|
|
59
108
|
}
|
|
60
109
|
catch (e) {
|
|
61
110
|
handleError(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-helpers.js","sourceRoot":"","sources":["../../src/lib/command-helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAA+B,EAAE,KAAa,EAAE,KAAc;IACzF,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAI,QAAQ,CAAC,aAAa,EAAE,8BAA8B,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"command-helpers.js","sourceRoot":"","sources":["../../src/lib/command-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
/**
|
|
3
|
+
* Walk the Commander command tree and return completion candidates
|
|
4
|
+
* for the given input line and cursor position.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getCompletions(program: Command, point: number, line: string): string[];
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walk the Commander command tree and return completion candidates
|
|
3
|
+
* for the given input line and cursor position.
|
|
4
|
+
*/
|
|
5
|
+
export function getCompletions(program, point, line) {
|
|
6
|
+
const partial = line.slice(0, point);
|
|
7
|
+
const tokens = partial.trim().split(/\s+/).slice(1); // drop "wjx"
|
|
8
|
+
// If line ends with space, user wants next token; otherwise last token is partial
|
|
9
|
+
const endsWithSpace = partial.endsWith(" ");
|
|
10
|
+
const partialWord = endsWithSpace ? "" : (tokens.pop() ?? "");
|
|
11
|
+
let currentCmd = program;
|
|
12
|
+
for (const tok of tokens) {
|
|
13
|
+
const sub = currentCmd.commands.find((c) => c.name() === tok);
|
|
14
|
+
if (sub) {
|
|
15
|
+
currentCmd = sub;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const candidates = [];
|
|
22
|
+
if (partialWord.startsWith("-")) {
|
|
23
|
+
// Complete options
|
|
24
|
+
for (const opt of currentCmd.options) {
|
|
25
|
+
if (opt.long)
|
|
26
|
+
candidates.push(opt.long);
|
|
27
|
+
else if (opt.short)
|
|
28
|
+
candidates.push(opt.short);
|
|
29
|
+
}
|
|
30
|
+
// Walk the full parent chain to include global options
|
|
31
|
+
let p = currentCmd.parent;
|
|
32
|
+
while (p) {
|
|
33
|
+
for (const opt of p.options) {
|
|
34
|
+
if (opt.long)
|
|
35
|
+
candidates.push(opt.long);
|
|
36
|
+
}
|
|
37
|
+
p = p.parent;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// Complete subcommand names
|
|
42
|
+
for (const sub of currentCmd.commands) {
|
|
43
|
+
candidates.push(sub.name());
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Filter by prefix
|
|
47
|
+
return candidates.filter((c) => c.startsWith(partialWord));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=completions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.js","sourceRoot":"","sources":["../../src/lib/completions.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,KAAa,EAAE,IAAY;IAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;IAElE,kFAAkF;IAClF,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,IAAI,UAAU,GAAY,OAAO,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC;QACvE,IAAI,GAAG,EAAE,CAAC;YACR,UAAU,GAAG,GAAG,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,mBAAmB;QACnB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,IAAI;gBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBACnC,IAAI,GAAG,CAAC,KAAK;gBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,uDAAuD;QACvD,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;QAC1B,OAAO,CAAC,EAAE,CAAC;YACT,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC5B,IAAI,GAAG,CAAC,IAAI;oBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YACD,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACf,CAAC;IACH,CAAC;SAAM,CAAC;QACN,4BAA4B;QAC5B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
package/dist/lib/output.d.ts
CHANGED
package/dist/lib/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
|