@leeguoo/yapi-mcp 0.3.26 → 0.4.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.
Files changed (81) hide show
  1. package/dist/cli/commands/col.d.ts +2 -0
  2. package/dist/cli/commands/col.js +80 -0
  3. package/dist/cli/commands/col.js.map +1 -0
  4. package/dist/cli/commands/docs-sync.d.ts +3 -0
  5. package/dist/cli/commands/docs-sync.js +1011 -0
  6. package/dist/cli/commands/docs-sync.js.map +1 -0
  7. package/dist/cli/commands/env.d.ts +2 -0
  8. package/dist/cli/commands/env.js +13 -0
  9. package/dist/cli/commands/env.js.map +1 -0
  10. package/dist/cli/commands/export.d.ts +2 -0
  11. package/dist/cli/commands/export.js +86 -0
  12. package/dist/cli/commands/export.js.map +1 -0
  13. package/dist/cli/commands/follow.d.ts +2 -0
  14. package/dist/cli/commands/follow.js +8 -0
  15. package/dist/cli/commands/follow.js.map +1 -0
  16. package/dist/cli/commands/group.d.ts +2 -0
  17. package/dist/cli/commands/group.js +22 -0
  18. package/dist/cli/commands/group.js.map +1 -0
  19. package/dist/cli/commands/install-skill.d.ts +1 -0
  20. package/dist/cli/commands/install-skill.js +9 -0
  21. package/dist/cli/commands/install-skill.js.map +1 -0
  22. package/dist/cli/commands/interface.d.ts +2 -0
  23. package/dist/cli/commands/interface.js +99 -0
  24. package/dist/cli/commands/interface.js.map +1 -0
  25. package/dist/cli/commands/log.d.ts +2 -0
  26. package/dist/cli/commands/log.js +31 -0
  27. package/dist/cli/commands/log.js.map +1 -0
  28. package/dist/cli/commands/login.d.ts +2 -0
  29. package/dist/cli/commands/login.js +90 -0
  30. package/dist/cli/commands/login.js.map +1 -0
  31. package/dist/cli/commands/logout.d.ts +2 -0
  32. package/dist/cli/commands/logout.js +25 -0
  33. package/dist/cli/commands/logout.js.map +1 -0
  34. package/dist/cli/commands/member.d.ts +2 -0
  35. package/dist/cli/commands/member.js +25 -0
  36. package/dist/cli/commands/member.js.map +1 -0
  37. package/dist/cli/commands/project.d.ts +2 -0
  38. package/dist/cli/commands/project.js +49 -0
  39. package/dist/cli/commands/project.js.map +1 -0
  40. package/dist/cli/commands/request.d.ts +2 -0
  41. package/dist/cli/commands/request.js +189 -0
  42. package/dist/cli/commands/request.js.map +1 -0
  43. package/dist/cli/commands/search.d.ts +2 -0
  44. package/dist/cli/commands/search.js +39 -0
  45. package/dist/cli/commands/search.js.map +1 -0
  46. package/dist/cli/commands/self-update.d.ts +1 -0
  47. package/dist/cli/commands/self-update.js +19 -0
  48. package/dist/cli/commands/self-update.js.map +1 -0
  49. package/dist/cli/commands/user.d.ts +2 -0
  50. package/dist/cli/commands/user.js +27 -0
  51. package/dist/cli/commands/user.js.map +1 -0
  52. package/dist/cli/commands/whoami.d.ts +2 -0
  53. package/dist/cli/commands/whoami.js +8 -0
  54. package/dist/cli/commands/whoami.js.map +1 -0
  55. package/dist/cli/http.d.ts +9 -0
  56. package/dist/cli/http.js +44 -0
  57. package/dist/cli/http.js.map +1 -0
  58. package/dist/cli/simple-request.d.ts +2 -0
  59. package/dist/cli/simple-request.js +135 -0
  60. package/dist/cli/simple-request.js.map +1 -0
  61. package/dist/cli/types.d.ts +161 -0
  62. package/dist/cli/types.js +3 -0
  63. package/dist/cli/types.js.map +1 -0
  64. package/dist/cli/utils.d.ts +53 -0
  65. package/dist/cli/utils.js +610 -0
  66. package/dist/cli/utils.js.map +1 -0
  67. package/dist/yapi-cli.js +441 -3134
  68. package/dist/yapi-cli.js.map +1 -1
  69. package/package.json +12 -25
  70. package/dist/cli.d.ts +0 -2
  71. package/dist/cli.js +0 -32
  72. package/dist/cli.js.map +0 -1
  73. package/dist/config.d.ts +0 -28
  74. package/dist/config.js +0 -240
  75. package/dist/config.js.map +0 -1
  76. package/dist/index.d.ts +0 -5
  77. package/dist/index.js +0 -66
  78. package/dist/index.js.map +0 -1
  79. package/dist/server.d.ts +0 -28
  80. package/dist/server.js +0 -1004
  81. package/dist/server.js.map +0 -1
@@ -0,0 +1,610 @@
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.UPDATE_CHECK_TTL_MS = void 0;
7
+ exports.parseKeyValue = parseKeyValue;
8
+ exports.parseQueryArg = parseQueryArg;
9
+ exports.parseHeader = parseHeader;
10
+ exports.parseJsonMaybe = parseJsonMaybe;
11
+ exports.formatBytes = formatBytes;
12
+ exports.parseByteSize = parseByteSize;
13
+ exports.parsePayloadLimit = parsePayloadLimit;
14
+ exports.findGitRoot = findGitRoot;
15
+ exports.getPayloadMessage = getPayloadMessage;
16
+ exports.getPayloadErrcode = getPayloadErrcode;
17
+ exports.looksLikeAuthError = looksLikeAuthError;
18
+ exports.joinUrl = joinUrl;
19
+ exports.globalConfigPath = globalConfigPath;
20
+ exports.parseSimpleToml = parseSimpleToml;
21
+ exports.resolveToken = resolveToken;
22
+ exports.resolveLocalBin = resolveLocalBin;
23
+ exports.parseJsonLoose = parseJsonLoose;
24
+ exports.extractCookiesFromPayload = extractCookiesFromPayload;
25
+ exports.normalizeCookieExpiresMs = normalizeCookieExpiresMs;
26
+ exports.runAgentBrowser = runAgentBrowser;
27
+ exports.loginByBrowserAndReadCookie = loginByBrowserAndReadCookie;
28
+ exports.escapeTomlValue = escapeTomlValue;
29
+ exports.formatToml = formatToml;
30
+ exports.writeConfig = writeConfig;
31
+ exports.promptText = promptText;
32
+ exports.promptHidden = promptHidden;
33
+ exports.promptRequired = promptRequired;
34
+ exports.initConfigIfMissing = initConfigIfMissing;
35
+ exports.readVersion = readVersion;
36
+ exports.resolveLimit = resolveLimit;
37
+ exports.buildDocsSyncHash = buildDocsSyncHash;
38
+ exports.updateCachePath = updateCachePath;
39
+ exports.readUpdateCache = readUpdateCache;
40
+ exports.writeUpdateCache = writeUpdateCache;
41
+ exports.compareSemver = compareSemver;
42
+ exports.isNewerVersion = isNewerVersion;
43
+ exports.normalizeUiBaseUrl = normalizeUiBaseUrl;
44
+ exports.buildInterfaceWebUrl = buildInterfaceWebUrl;
45
+ exports.normalizePathSegment = normalizePathSegment;
46
+ exports.buildEnvUrl = buildEnvUrl;
47
+ exports.normalizeProjectEnvs = normalizeProjectEnvs;
48
+ const crypto_1 = __importDefault(require("crypto"));
49
+ const child_process_1 = require("child_process");
50
+ const fs_1 = __importDefault(require("fs"));
51
+ const os_1 = __importDefault(require("os"));
52
+ const path_1 = __importDefault(require("path"));
53
+ const readline_1 = __importDefault(require("readline"));
54
+ function parseKeyValue(raw) {
55
+ if (!raw || !raw.includes("="))
56
+ throw new Error("expected key=value");
57
+ const idx = raw.indexOf("=");
58
+ return [raw.slice(0, idx), raw.slice(idx + 1)];
59
+ }
60
+ function parseQueryArg(raw) {
61
+ const trimmed = String(raw || "").trim().replace(/^\?/, "");
62
+ if (!trimmed)
63
+ throw new Error("expected key=value");
64
+ if (!trimmed.includes("&"))
65
+ return [parseKeyValue(trimmed)];
66
+ const items = Array.from(new URLSearchParams(trimmed).entries()).filter(([key]) => Boolean(key));
67
+ if (items.length)
68
+ return items;
69
+ return [parseKeyValue(trimmed)];
70
+ }
71
+ function parseHeader(raw) {
72
+ if (!raw || !raw.includes(":"))
73
+ throw new Error("expected Header:Value");
74
+ const idx = raw.indexOf(":");
75
+ return [raw.slice(0, idx).trim(), raw.slice(idx + 1).trim()];
76
+ }
77
+ function parseJsonMaybe(text) {
78
+ try {
79
+ return JSON.parse(text);
80
+ }
81
+ catch {
82
+ return null;
83
+ }
84
+ }
85
+ function formatBytes(bytes) {
86
+ if (!Number.isFinite(bytes) || bytes <= 0)
87
+ return "0 B";
88
+ const units = ["B", "KiB", "MiB", "GiB"];
89
+ let value = bytes;
90
+ let index = 0;
91
+ while (value >= 1024 && index < units.length - 1) {
92
+ value /= 1024;
93
+ index += 1;
94
+ }
95
+ return `${value >= 10 || index === 0 ? value.toFixed(0) : value.toFixed(2)} ${units[index]}`;
96
+ }
97
+ function parseByteSize(raw) {
98
+ const text = String(raw || "");
99
+ const bytesMatch = text.match(/(\d+)\s*bytes?/i);
100
+ if (bytesMatch)
101
+ return Number(bytesMatch[1]);
102
+ const unitMatch = text.match(/(\d+(?:\.\d+)?)\s*(kib|kb|mib|mb|gib|gb)\b/i);
103
+ if (!unitMatch)
104
+ return null;
105
+ const value = Number(unitMatch[1]);
106
+ if (!Number.isFinite(value))
107
+ return null;
108
+ const unit = unitMatch[2].toLowerCase();
109
+ const factors = {
110
+ kb: 1000,
111
+ kib: 1024,
112
+ mb: 1000 * 1000,
113
+ mib: 1024 * 1024,
114
+ gb: 1000 * 1000 * 1000,
115
+ gib: 1024 * 1024 * 1024,
116
+ };
117
+ return Math.round(value * (factors[unit] || 1));
118
+ }
119
+ function parsePayloadLimit(text) {
120
+ const match = String(text || "").match(/(?:limit|max(?:imum)?(?:\s+body)?(?:\s+size)?)[^0-9]{0,12}(\d+(?:\.\d+)?\s*(?:bytes?|kib|kb|mib|mb|gib|gb))/i);
121
+ if (match)
122
+ return parseByteSize(match[1]);
123
+ return parseByteSize(text);
124
+ }
125
+ function findGitRoot(startDir) {
126
+ let current = path_1.default.resolve(startDir);
127
+ while (true) {
128
+ const candidate = path_1.default.join(current, ".git");
129
+ if (fs_1.default.existsSync(candidate))
130
+ return current;
131
+ const parent = path_1.default.dirname(current);
132
+ if (parent === current)
133
+ return null;
134
+ current = parent;
135
+ }
136
+ }
137
+ function getPayloadMessage(payload) {
138
+ if (!payload || typeof payload !== "object")
139
+ return "";
140
+ const record = payload;
141
+ const message = record.errmsg ?? record.message ?? record.msg;
142
+ return typeof message === "string" ? message : "";
143
+ }
144
+ function getPayloadErrcode(payload) {
145
+ if (!payload || typeof payload !== "object")
146
+ return null;
147
+ const record = payload;
148
+ const code = Number(record.errcode ?? record.code ?? record.errCode);
149
+ return Number.isFinite(code) ? code : null;
150
+ }
151
+ function looksLikeAuthError(status, payload) {
152
+ if (status === 401 || status === 403)
153
+ return true;
154
+ const code = getPayloadErrcode(payload);
155
+ if (code !== null && [40011, 40012, 40013, 401, 403].includes(code))
156
+ return true;
157
+ const message = getPayloadMessage(payload);
158
+ if (!message)
159
+ return false;
160
+ return /登录|login|权限|unauthori|forbidden|not\s*login|no\s*permission/i.test(message);
161
+ }
162
+ function joinUrl(baseUrl, endpoint) {
163
+ if (!baseUrl)
164
+ return endpoint;
165
+ if (baseUrl.endsWith("/") && endpoint.startsWith("/"))
166
+ return baseUrl.slice(0, -1) + endpoint;
167
+ if (!baseUrl.endsWith("/") && !endpoint.startsWith("/"))
168
+ return baseUrl + "/" + endpoint;
169
+ return baseUrl + endpoint;
170
+ }
171
+ function globalConfigPath() {
172
+ const yapiHome = process.env.YAPI_HOME || path_1.default.join(os_1.default.homedir(), ".yapi");
173
+ return path_1.default.join(yapiHome, "config.toml");
174
+ }
175
+ function parseSimpleToml(text) {
176
+ const data = {};
177
+ const lines = String(text || "").split(/\r?\n/);
178
+ for (const rawLine of lines) {
179
+ const line = rawLine.split("#", 1)[0].split(";", 1)[0].trim();
180
+ if (!line || line.startsWith("["))
181
+ continue;
182
+ const idx = line.indexOf("=");
183
+ if (idx === -1)
184
+ continue;
185
+ const key = line.slice(0, idx).trim();
186
+ let value = line.slice(idx + 1).trim();
187
+ if (!key)
188
+ continue;
189
+ if ((value.startsWith('"') && value.endsWith('"')) ||
190
+ (value.startsWith("'") && value.endsWith("'"))) {
191
+ value = value.slice(1, -1);
192
+ }
193
+ data[key] = value;
194
+ }
195
+ return data;
196
+ }
197
+ function resolveToken(tokenValue, projectId) {
198
+ if (!tokenValue)
199
+ return "";
200
+ if (tokenValue.includes(",") || tokenValue.includes(":")) {
201
+ let defaultToken = "";
202
+ const mapping = {};
203
+ tokenValue.split(",").forEach((rawPair) => {
204
+ const pair = rawPair.trim();
205
+ if (!pair)
206
+ return;
207
+ const idx = pair.indexOf(":");
208
+ if (idx === -1) {
209
+ defaultToken = pair;
210
+ return;
211
+ }
212
+ const pid = pair.slice(0, idx).trim();
213
+ const token = pair.slice(idx + 1).trim();
214
+ if (pid && token)
215
+ mapping[pid] = token;
216
+ });
217
+ if (projectId && mapping[projectId])
218
+ return mapping[projectId];
219
+ if (defaultToken)
220
+ return defaultToken;
221
+ const keys = Object.keys(mapping);
222
+ if (keys.length)
223
+ return mapping[keys[0]];
224
+ }
225
+ return tokenValue;
226
+ }
227
+ function resolveLocalBin(binName) {
228
+ const baseName = process.platform === "win32" ? `${binName}.cmd` : binName;
229
+ const localBin = path_1.default.resolve(__dirname, "..", "..", "node_modules", ".bin", baseName);
230
+ if (fs_1.default.existsSync(localBin))
231
+ return localBin;
232
+ return binName;
233
+ }
234
+ function parseJsonLoose(text) {
235
+ const raw = String(text || "").trim();
236
+ if (!raw)
237
+ return null;
238
+ const direct = parseJsonMaybe(raw);
239
+ if (direct !== null)
240
+ return direct;
241
+ const lines = raw
242
+ .split(/\r?\n/)
243
+ .map((line) => line.trim())
244
+ .filter(Boolean);
245
+ for (let i = lines.length - 1; i >= 0; i -= 1) {
246
+ const parsed = parseJsonMaybe(lines[i]);
247
+ if (parsed !== null)
248
+ return parsed;
249
+ }
250
+ const firstBrace = raw.indexOf("{");
251
+ const firstBracket = raw.indexOf("[");
252
+ const starts = [firstBrace, firstBracket].filter((n) => n >= 0);
253
+ if (!starts.length)
254
+ return null;
255
+ const start = Math.min(...starts);
256
+ const lastBrace = raw.lastIndexOf("}");
257
+ const lastBracket = raw.lastIndexOf("]");
258
+ const end = Math.max(lastBrace, lastBracket);
259
+ if (end <= start)
260
+ return null;
261
+ const sliced = raw.slice(start, end + 1);
262
+ return parseJsonMaybe(sliced);
263
+ }
264
+ function extractCookiesFromPayload(payload) {
265
+ const queue = [payload];
266
+ const visited = new Set();
267
+ while (queue.length) {
268
+ const current = queue.shift();
269
+ if (current === null || current === undefined)
270
+ continue;
271
+ if (visited.has(current))
272
+ continue;
273
+ visited.add(current);
274
+ if (Array.isArray(current)) {
275
+ if (current.every((item) => item && typeof item === "object")) {
276
+ return current;
277
+ }
278
+ continue;
279
+ }
280
+ if (typeof current !== "object")
281
+ continue;
282
+ const obj = current;
283
+ if (Array.isArray(obj.cookies))
284
+ return obj.cookies;
285
+ if (Array.isArray(obj.data))
286
+ return obj.data;
287
+ if (obj.data && typeof obj.data === "object")
288
+ queue.push(obj.data);
289
+ if (obj.result && typeof obj.result === "object")
290
+ queue.push(obj.result);
291
+ if (obj.payload && typeof obj.payload === "object")
292
+ queue.push(obj.payload);
293
+ }
294
+ return [];
295
+ }
296
+ function normalizeCookieExpiresMs(raw) {
297
+ const n = Number(raw);
298
+ if (!Number.isFinite(n) || n <= 0)
299
+ return undefined;
300
+ return n > 1_000_000_000_000 ? n : n * 1000;
301
+ }
302
+ function runAgentBrowser(args, options = {}) {
303
+ const bins = [
304
+ resolveLocalBin("agent-browser-stealth"),
305
+ resolveLocalBin("agent-browser"),
306
+ "agent-browser-stealth",
307
+ "agent-browser",
308
+ ];
309
+ const uniq = Array.from(new Set(bins));
310
+ let lastError = null;
311
+ for (const bin of uniq) {
312
+ try {
313
+ if (options.captureOutput) {
314
+ const output = (0, child_process_1.execFileSync)(bin, args, {
315
+ encoding: "utf8",
316
+ stdio: ["pipe", "pipe", "pipe"],
317
+ });
318
+ return String(output || "");
319
+ }
320
+ (0, child_process_1.execFileSync)(bin, args, { stdio: "inherit" });
321
+ return "";
322
+ }
323
+ catch (error) {
324
+ const code = error.code;
325
+ if (code === "ENOENT") {
326
+ lastError = error;
327
+ continue;
328
+ }
329
+ if (options.ignoreError)
330
+ return "";
331
+ throw error;
332
+ }
333
+ }
334
+ if (lastError?.code === "ENOENT") {
335
+ throw new Error("未找到 agent-browser-stealth。请先执行: pnpm -C packages/yapi-mcp add agent-browser-stealth && pnpm -C packages/yapi-mcp exec agent-browser-stealth install");
336
+ }
337
+ throw new Error("启动 agent-browser-stealth 失败");
338
+ }
339
+ async function loginByBrowserAndReadCookie(baseUrl, loginUrlOption) {
340
+ const normalizedBase = String(baseUrl || "").replace(/\/+$/, "");
341
+ const defaultLoginUrl = normalizedBase;
342
+ let loginUrl = String(loginUrlOption || "").trim();
343
+ if (!loginUrl) {
344
+ const answer = await promptText(`YApi page URL [${defaultLoginUrl}]: `);
345
+ loginUrl = answer.trim() || defaultLoginUrl;
346
+ }
347
+ try {
348
+ const parsed = new URL(loginUrl);
349
+ loginUrl = parsed.toString();
350
+ }
351
+ catch {
352
+ throw new Error(`invalid login url: ${loginUrl}`);
353
+ }
354
+ const sessionName = `yapi-login-${Date.now()}-${crypto_1.default.randomBytes(4).toString("hex")}`;
355
+ console.log(`opening browser for login: ${loginUrl}`);
356
+ console.log(`browser session name: ${sessionName}`);
357
+ runAgentBrowser(["open", loginUrl, "--headed", "--session-name", sessionName]);
358
+ await promptText("请在浏览器完成登录,然后按回车继续...");
359
+ let cookies = [];
360
+ try {
361
+ const output = runAgentBrowser(["cookies", "--json", "--session-name", sessionName], {
362
+ captureOutput: true,
363
+ });
364
+ const payload = parseJsonLoose(output);
365
+ cookies = extractCookiesFromPayload(payload);
366
+ }
367
+ finally {
368
+ runAgentBrowser(["close", "--session-name", sessionName], { ignoreError: true });
369
+ }
370
+ if (!cookies.length) {
371
+ throw new Error(`未读取到浏览器 cookie。请确认登录完成后再回车;如果仍失败,请先自检:\nagent-browser-stealth cookies --json --session-name ${sessionName}`);
372
+ }
373
+ const tokenCookie = cookies.find((item) => String(item?.name || "") === "_yapi_token");
374
+ const uidCookie = cookies.find((item) => String(item?.name || "") === "_yapi_uid");
375
+ const yapiToken = String(tokenCookie?.value || "").trim();
376
+ if (!yapiToken) {
377
+ throw new Error("未找到 _yapi_token,请确认登录站点是目标 YApi 域名");
378
+ }
379
+ const yapiUid = String(uidCookie?.value || "").trim() || undefined;
380
+ const expiresAt = normalizeCookieExpiresMs(tokenCookie?.expiresAt) ?? normalizeCookieExpiresMs(tokenCookie?.expires);
381
+ return { yapiToken, yapiUid, expiresAt };
382
+ }
383
+ function escapeTomlValue(value) {
384
+ return String(value || "")
385
+ .replace(/\\/g, "\\\\")
386
+ .replace(/"/g, '\\"');
387
+ }
388
+ function formatToml(config) {
389
+ const orderedKeys = ["base_url", "auth_mode", "email", "password", "token", "project_id"];
390
+ const lines = ["# YApi CLI config"];
391
+ for (const key of orderedKeys) {
392
+ const value = config[key] || "";
393
+ lines.push(`${key} = "${escapeTomlValue(value)}"`);
394
+ }
395
+ return `${lines.join("\n")}\n`;
396
+ }
397
+ function writeConfig(filePath, config) {
398
+ fs_1.default.mkdirSync(path_1.default.dirname(filePath), { recursive: true });
399
+ fs_1.default.writeFileSync(filePath, formatToml(config), "utf8");
400
+ }
401
+ function promptText(question) {
402
+ const rl = readline_1.default.createInterface({
403
+ input: process.stdin,
404
+ output: process.stdout,
405
+ terminal: true,
406
+ });
407
+ return new Promise((resolve) => {
408
+ rl.question(question, (answer) => {
409
+ rl.close();
410
+ resolve(answer);
411
+ });
412
+ });
413
+ }
414
+ function promptHidden(question) {
415
+ const rl = readline_1.default.createInterface({
416
+ input: process.stdin,
417
+ output: process.stdout,
418
+ terminal: true,
419
+ });
420
+ const output = rl.output || process.stdout;
421
+ const originalWrite = rl
422
+ ._writeToOutput;
423
+ if (question) {
424
+ output.write(question);
425
+ }
426
+ rl.stdoutMuted = true;
427
+ rl._writeToOutput =
428
+ function writeToOutput(value) {
429
+ if (rl.stdoutMuted)
430
+ return;
431
+ if (typeof originalWrite === "function") {
432
+ originalWrite.call(this, value);
433
+ }
434
+ else {
435
+ output.write(value);
436
+ }
437
+ };
438
+ return new Promise((resolve) => {
439
+ rl.question("", (answer) => {
440
+ rl.stdoutMuted = false;
441
+ if (question) {
442
+ output.write("\n");
443
+ }
444
+ rl.close();
445
+ resolve(answer);
446
+ });
447
+ });
448
+ }
449
+ async function promptRequired(question, hidden) {
450
+ while (true) {
451
+ const answer = hidden ? await promptHidden(question) : await promptText(question);
452
+ const trimmed = String(answer || "").trim();
453
+ if (trimmed)
454
+ return trimmed;
455
+ }
456
+ }
457
+ async function initConfigIfMissing(options) {
458
+ const hasBaseUrl = Boolean(options.baseUrl);
459
+ const hasEmail = Boolean(options.email);
460
+ const hasPassword = Boolean(options.password);
461
+ if (!hasBaseUrl || !hasEmail || !hasPassword) {
462
+ if (!process.stdin.isTTY || !process.stdout.isTTY)
463
+ return null;
464
+ }
465
+ const baseUrl = hasBaseUrl ? options.baseUrl : await promptRequired("YApi base URL: ", false);
466
+ const email = hasEmail ? options.email : await promptRequired("YApi email: ", false);
467
+ const password = hasPassword ? options.password : await promptRequired("YApi password: ", true);
468
+ const config = {
469
+ base_url: baseUrl || "",
470
+ auth_mode: "global",
471
+ email: email || "",
472
+ password: password || "",
473
+ token: options.token || "",
474
+ project_id: options.projectId || "",
475
+ };
476
+ const configPath = globalConfigPath();
477
+ writeConfig(configPath, config);
478
+ return { configPath, config };
479
+ }
480
+ function readVersion() {
481
+ try {
482
+ const pkgPath = path_1.default.resolve(__dirname, "../../package.json");
483
+ const pkg = JSON.parse(fs_1.default.readFileSync(pkgPath, "utf8"));
484
+ return pkg.version || "unknown";
485
+ }
486
+ catch {
487
+ return "unknown";
488
+ }
489
+ }
490
+ function resolveLimit(value, fallback) {
491
+ if (typeof value === "string") {
492
+ const trimmed = value.trim();
493
+ if (trimmed)
494
+ return trimmed;
495
+ }
496
+ if (Number.isFinite(value ?? NaN)) {
497
+ return String(value);
498
+ }
499
+ return fallback;
500
+ }
501
+ function buildDocsSyncHash(markdown, options) {
502
+ const hash = crypto_1.default.createHash("sha1");
503
+ hash.update(options.noMermaid ? "no-mermaid\n" : "mermaid\n");
504
+ if (!options.noMermaid) {
505
+ if (options.mermaidLook) {
506
+ hash.update(`mermaid-look:${options.mermaidLook}\n`);
507
+ }
508
+ if (Number.isFinite(options.mermaidHandDrawnSeed ?? NaN)) {
509
+ hash.update(`mermaid-seed:${options.mermaidHandDrawnSeed}\n`);
510
+ }
511
+ }
512
+ hash.update(markdown);
513
+ return hash.digest("hex");
514
+ }
515
+ exports.UPDATE_CHECK_TTL_MS = 12 * 60 * 60 * 1000;
516
+ function updateCachePath() {
517
+ const yapiHome = process.env.YAPI_HOME || path_1.default.join(os_1.default.homedir(), ".yapi");
518
+ return path_1.default.join(yapiHome, "update.json");
519
+ }
520
+ function readUpdateCache() {
521
+ try {
522
+ const cachePath = updateCachePath();
523
+ if (!fs_1.default.existsSync(cachePath))
524
+ return {};
525
+ const raw = fs_1.default.readFileSync(cachePath, "utf8");
526
+ const parsed = JSON.parse(raw);
527
+ return parsed && typeof parsed === "object" ? parsed : {};
528
+ }
529
+ catch {
530
+ return {};
531
+ }
532
+ }
533
+ function writeUpdateCache(cache) {
534
+ try {
535
+ const cachePath = updateCachePath();
536
+ fs_1.default.mkdirSync(path_1.default.dirname(cachePath), { recursive: true });
537
+ fs_1.default.writeFileSync(cachePath, `${JSON.stringify(cache, null, 2)}\n`, "utf8");
538
+ }
539
+ catch {
540
+ }
541
+ }
542
+ function compareSemver(a, b) {
543
+ const toParts = (value) => String(value || "")
544
+ .trim()
545
+ .split(".")
546
+ .map((part) => Number(part.replace(/\D/g, "")) || 0);
547
+ const aParts = toParts(a);
548
+ const bParts = toParts(b);
549
+ const len = Math.max(aParts.length, bParts.length);
550
+ for (let i = 0; i < len; i += 1) {
551
+ const diff = (aParts[i] || 0) - (bParts[i] || 0);
552
+ if (diff !== 0)
553
+ return diff;
554
+ }
555
+ return 0;
556
+ }
557
+ function isNewerVersion(latest, current) {
558
+ return compareSemver(latest, current) > 0;
559
+ }
560
+ function normalizeUiBaseUrl(baseUrl) {
561
+ const trimmed = String(baseUrl || "")
562
+ .trim()
563
+ .replace(/\/+$/, "");
564
+ if (!trimmed)
565
+ return "";
566
+ return trimmed.endsWith("/api") ? trimmed.slice(0, -4) : trimmed;
567
+ }
568
+ function buildInterfaceWebUrl(baseUrl, projectId, apiId) {
569
+ const base = normalizeUiBaseUrl(baseUrl);
570
+ const pid = encodeURIComponent(String(projectId ?? ""));
571
+ const aid = encodeURIComponent(String(apiId ?? ""));
572
+ if (!base || !pid || !aid)
573
+ return "";
574
+ return `${base}/project/${pid}/interface/api/${aid}`;
575
+ }
576
+ function normalizePathSegment(value) {
577
+ const trimmed = String(value || "").trim();
578
+ if (!trimmed || trimmed === "/")
579
+ return "";
580
+ const noTrailing = trimmed.replace(/\/+$/, "");
581
+ return noTrailing.startsWith("/") ? noTrailing : `/${noTrailing}`;
582
+ }
583
+ function buildEnvUrl(domain, basepath, apiPath) {
584
+ const base = String(domain || "")
585
+ .trim()
586
+ .replace(/\/+$/, "");
587
+ if (!base)
588
+ return "";
589
+ const normalizedBasepath = normalizePathSegment(basepath);
590
+ const normalizedPath = normalizePathSegment(apiPath);
591
+ return `${base}${normalizedBasepath}${normalizedPath}`;
592
+ }
593
+ function normalizeProjectEnvs(raw) {
594
+ if (!Array.isArray(raw))
595
+ return [];
596
+ const result = [];
597
+ raw.forEach((item) => {
598
+ const name = item && typeof item === "object" && "name" in item
599
+ ? String(item.name || "").trim()
600
+ : "";
601
+ const domain = item && typeof item === "object" && "domain" in item
602
+ ? String(item.domain || "").trim()
603
+ : "";
604
+ if (!domain)
605
+ return;
606
+ result.push({ name: name || domain, domain });
607
+ });
608
+ return result;
609
+ }
610
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"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"}