@cloudglab/yapi-cli 0.0.5 → 0.0.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +17 -2
  3. package/dist/cli.js +121 -23
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/cli-output.d.ts +1 -1
  6. package/dist/core/cli-output.js +114 -25
  7. package/dist/core/cli-output.js.map +1 -1
  8. package/dist/core/errors.js +36 -3
  9. package/dist/core/errors.js.map +1 -1
  10. package/dist/core/http-metrics.d.ts +31 -0
  11. package/dist/core/http-metrics.js +35 -0
  12. package/dist/core/http-metrics.js.map +1 -0
  13. package/dist/core/output.d.ts +18 -4
  14. package/dist/core/output.js +105 -22
  15. package/dist/core/output.js.map +1 -1
  16. package/dist/core/update-probe.d.ts +4 -1
  17. package/dist/core/update-probe.js +43 -2
  18. package/dist/core/update-probe.js.map +1 -1
  19. package/dist/core/url-parser.d.ts +20 -0
  20. package/dist/core/url-parser.js +237 -0
  21. package/dist/core/url-parser.js.map +1 -0
  22. package/dist/install.js +10 -1
  23. package/dist/install.js.map +1 -1
  24. package/dist/manifest.json +22 -2
  25. package/dist/services/yapi/api.d.ts +12 -1
  26. package/dist/services/yapi/api.js +96 -10
  27. package/dist/services/yapi/api.js.map +1 -1
  28. package/dist/tools/shared.d.ts +2 -2
  29. package/dist/tools/shared.js.map +1 -1
  30. package/dist/tools/yapi/register-auth.js +12 -12
  31. package/dist/tools/yapi/register-auth.js.map +1 -1
  32. package/dist/tools/yapi/register-group.js +16 -16
  33. package/dist/tools/yapi/register-group.js.map +1 -1
  34. package/dist/tools/yapi/register-interface.js +123 -55
  35. package/dist/tools/yapi/register-interface.js.map +1 -1
  36. package/dist/tools/yapi/register-project.js +92 -31
  37. package/dist/tools/yapi/register-project.js.map +1 -1
  38. package/dist/tools/yapi/register-test.js +11 -11
  39. package/dist/tools/yapi/register-test.js.map +1 -1
  40. package/dist/tools/yapi/register-util.js +124 -34
  41. package/dist/tools/yapi/register-util.js.map +1 -1
  42. package/dist/version.d.ts +1 -1
  43. package/dist/version.js +1 -1
  44. package/docs/ai-cli-optimization-plan.md +412 -0
  45. package/package.json +1 -1
@@ -0,0 +1,31 @@
1
+ /**
2
+ * 进程级 HTTP 请求指标。
3
+ *
4
+ * 设计目的:
5
+ * - 业务命令一次调用通常会发多个 HTTP 请求(列表、详情、用户信息等)
6
+ * - 输出 JSON 时自动注入 `meta.requestCount/durationMs/cacheHit`,
7
+ * 让 AI 或脚本能直接判断这次调用有多贵、是否命中了缓存
8
+ *
9
+ * 状态是进程级,CLI 一次执行内累计;
10
+ * 在 `cli.ts` 顶层 `runCli()` 开始时调用 `resetRequestMetrics()` 清零。
11
+ */
12
+ export interface RequestMetricSample {
13
+ /** 本次请求的耗时(毫秒) */
14
+ durationMs: number;
15
+ /** 本次请求是否命中缓存 */
16
+ cacheHit?: boolean;
17
+ }
18
+ export interface RequestMetrics {
19
+ /** 本次 CLI 执行累计的请求数 */
20
+ requestCount: number;
21
+ /** 最近一次请求的耗时(毫秒) */
22
+ durationMs: number;
23
+ /** 最近一次请求是否命中缓存 */
24
+ cacheHit: boolean;
25
+ }
26
+ /** 记录一次请求的耗时与缓存命中状态。 */
27
+ export declare function recordRequest(sample: RequestMetricSample): void;
28
+ /** 获取当前累计指标快照。 */
29
+ export declare function getRequestMetrics(): RequestMetrics;
30
+ /** 清零累计指标。一般在 CLI 入口处、每次执行开始时调用。 */
31
+ export declare function resetRequestMetrics(): void;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * 进程级 HTTP 请求指标。
3
+ *
4
+ * 设计目的:
5
+ * - 业务命令一次调用通常会发多个 HTTP 请求(列表、详情、用户信息等)
6
+ * - 输出 JSON 时自动注入 `meta.requestCount/durationMs/cacheHit`,
7
+ * 让 AI 或脚本能直接判断这次调用有多贵、是否命中了缓存
8
+ *
9
+ * 状态是进程级,CLI 一次执行内累计;
10
+ * 在 `cli.ts` 顶层 `runCli()` 开始时调用 `resetRequestMetrics()` 清零。
11
+ */
12
+ let _requestCount = 0;
13
+ let _lastDurationMs = 0;
14
+ let _lastCacheHit = false;
15
+ /** 记录一次请求的耗时与缓存命中状态。 */
16
+ export function recordRequest(sample) {
17
+ _requestCount += 1;
18
+ _lastDurationMs = sample.durationMs;
19
+ _lastCacheHit = sample.cacheHit ?? false;
20
+ }
21
+ /** 获取当前累计指标快照。 */
22
+ export function getRequestMetrics() {
23
+ return {
24
+ requestCount: _requestCount,
25
+ durationMs: _lastDurationMs,
26
+ cacheHit: _lastCacheHit,
27
+ };
28
+ }
29
+ /** 清零累计指标。一般在 CLI 入口处、每次执行开始时调用。 */
30
+ export function resetRequestMetrics() {
31
+ _requestCount = 0;
32
+ _lastDurationMs = 0;
33
+ _lastCacheHit = false;
34
+ }
35
+ //# sourceMappingURL=http-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-metrics.js","sourceRoot":"","sources":["../../src/core/http-metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAkBH,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B,wBAAwB;AACxB,MAAM,UAAU,aAAa,CAAC,MAA2B;IACvD,aAAa,IAAI,CAAC,CAAC;IACnB,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC;IACpC,aAAa,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;AAC3C,CAAC;AAED,kBAAkB;AAClB,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,YAAY,EAAE,aAAa;QAC3B,UAAU,EAAE,eAAe;QAC3B,QAAQ,EAAE,aAAa;KACxB,CAAC;AACJ,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,mBAAmB;IACjC,aAAa,GAAG,CAAC,CAAC;IAClB,eAAe,GAAG,CAAC,CAAC;IACpB,aAAa,GAAG,KAAK,CAAC;AACxB,CAAC"}
@@ -1,15 +1,17 @@
1
1
  /**
2
2
  * 统一输出渲染。
3
3
  *
4
- * 支持两种模式:
5
- * json JSON 输出(默认,MCP 协议兼容)
6
- * pretty 人类友好格式(列表、表格、颜色标记)
4
+ * 支持多种模式:
5
+ * compact 面向 AI 的精简 JSON
6
+ * normal 保留主要字段的 JSON
7
+ * verbose — 完整 JSON
8
+ * pretty — 人类友好格式(列表、表格、颜色标记)
7
9
  *
8
10
  * 所有命令 handler 统一通过 `output.result(data)` 返回,
9
11
  * 由 OutputFormatter 根据格式模式渲染。
10
12
  */
11
13
  import type { JsonContentResult } from './cli-registry.js';
12
- export type OutputFormat = 'json' | 'pretty';
14
+ export type OutputFormat = 'json' | 'compact' | 'normal' | 'verbose' | 'pretty';
13
15
  export declare class OutputFormatter {
14
16
  readonly format: OutputFormat;
15
17
  private readonly appName;
@@ -22,6 +24,18 @@ export declare class OutputFormatter {
22
24
  printMessage(msg: string): void;
23
25
  /** 将数据格式化为字符串 */
24
26
  private formatData;
27
+ /**
28
+ * 当输出为非 pretty 的结构化模式且数据本身是普通对象时,
29
+ * 自动注入 `meta.requestCount / durationMs / cacheHit`,方便 AI 与脚本
30
+ * 直接判断本次调用的成本和缓存命中情况。
31
+ *
32
+ * 仅在确实发生过 HTTP 请求(`requestCount > 0`)时注入 meta,
33
+ * 避免给 `help` / `version` 等本地命令增加噪声。
34
+ */
35
+ private injectMetaIfNeeded;
36
+ private resolveStructuredFormat;
37
+ private normalizeStructuredValue;
38
+ private formatPrettyData;
25
39
  private renderTable;
26
40
  private renderObject;
27
41
  }
@@ -1,13 +1,20 @@
1
1
  /**
2
2
  * 统一输出渲染。
3
3
  *
4
- * 支持两种模式:
5
- * json JSON 输出(默认,MCP 协议兼容)
6
- * pretty 人类友好格式(列表、表格、颜色标记)
4
+ * 支持多种模式:
5
+ * compact 面向 AI 的精简 JSON
6
+ * normal 保留主要字段的 JSON
7
+ * verbose — 完整 JSON
8
+ * pretty — 人类友好格式(列表、表格、颜色标记)
7
9
  *
8
10
  * 所有命令 handler 统一通过 `output.result(data)` 返回,
9
11
  * 由 OutputFormatter 根据格式模式渲染。
10
12
  */
13
+ import { getRequestMetrics } from './http-metrics.js';
14
+ const COMPACT_STRING_LIMIT = 600;
15
+ const NORMAL_STRING_LIMIT = 2000;
16
+ const COMPACT_ARRAY_LIMIT = 20;
17
+ const NORMAL_ARRAY_LIMIT = 100;
11
18
  export class OutputFormatter {
12
19
  constructor(format = 'json', appName = 'yapi-cli') {
13
20
  this.format = format;
@@ -38,14 +45,104 @@ export class OutputFormatter {
38
45
  }
39
46
  /** 将数据格式化为字符串 */
40
47
  formatData(data) {
41
- if (this.format === 'json') {
42
- return JSON.stringify(data, null, 2);
48
+ if (this.format === 'pretty') {
49
+ return this.formatPrettyData(data);
50
+ }
51
+ const normalized = this.normalizeStructuredValue(data, this.resolveStructuredFormat());
52
+ return JSON.stringify(this.injectMetaIfNeeded(normalized), null, 2);
53
+ }
54
+ /**
55
+ * 当输出为非 pretty 的结构化模式且数据本身是普通对象时,
56
+ * 自动注入 `meta.requestCount / durationMs / cacheHit`,方便 AI 与脚本
57
+ * 直接判断本次调用的成本和缓存命中情况。
58
+ *
59
+ * 仅在确实发生过 HTTP 请求(`requestCount > 0`)时注入 meta,
60
+ * 避免给 `help` / `version` 等本地命令增加噪声。
61
+ */
62
+ injectMetaIfNeeded(value) {
63
+ if (!isRecord(value)) {
64
+ return value;
65
+ }
66
+ const metrics = getRequestMetrics();
67
+ if (metrics.requestCount <= 0) {
68
+ return value;
69
+ }
70
+ return {
71
+ ...value,
72
+ meta: {
73
+ requestCount: metrics.requestCount,
74
+ durationMs: metrics.durationMs,
75
+ cacheHit: metrics.cacheHit,
76
+ },
77
+ };
78
+ }
79
+ resolveStructuredFormat() {
80
+ if (this.format === 'json' || this.format === 'pretty') {
81
+ return 'verbose';
43
82
  }
83
+ return this.format;
84
+ }
85
+ normalizeStructuredValue(value, format) {
86
+ const stringLimit = format === 'compact'
87
+ ? COMPACT_STRING_LIMIT
88
+ : format === 'normal'
89
+ ? NORMAL_STRING_LIMIT
90
+ : Number.POSITIVE_INFINITY;
91
+ const arrayLimit = format === 'compact'
92
+ ? COMPACT_ARRAY_LIMIT
93
+ : format === 'normal'
94
+ ? NORMAL_ARRAY_LIMIT
95
+ : Number.POSITIVE_INFINITY;
96
+ if (value === null || value === undefined) {
97
+ return value;
98
+ }
99
+ if (typeof value === 'string') {
100
+ if (value.length <= stringLimit) {
101
+ return value;
102
+ }
103
+ return `${value.slice(0, stringLimit)}…`;
104
+ }
105
+ if (typeof value === 'number' || typeof value === 'boolean') {
106
+ return value;
107
+ }
108
+ if (Array.isArray(value)) {
109
+ const items = value.slice(0, arrayLimit).map((item) => this.normalizeStructuredValue(item, format));
110
+ if (value.length > arrayLimit) {
111
+ return {
112
+ total: value.length,
113
+ items,
114
+ truncated: true,
115
+ };
116
+ }
117
+ return items;
118
+ }
119
+ if (isRecord(value)) {
120
+ const normalized = {};
121
+ for (const [key, item] of Object.entries(value)) {
122
+ normalized[key] = this.normalizeStructuredValue(item, format);
123
+ }
124
+ return normalized;
125
+ }
126
+ return String(value);
127
+ }
128
+ formatPrettyData(data) {
44
129
  if (!isRecord(data)) {
45
130
  return String(data);
46
131
  }
47
- // 纯成功消息
48
- if (data.success === true && data.message && !data.items && !data.projects && !data.interfaces && !data.categories && !data.users && !data.collections && !data.envs && !data.members && !data.logs && !data.groups && data.constructor === Object && Object.keys(data).length <= 3) {
132
+ if (data.success === true
133
+ && data.message
134
+ && !data.items
135
+ && !data.projects
136
+ && !data.interfaces
137
+ && !data.categories
138
+ && !data.users
139
+ && !data.collections
140
+ && !data.envs
141
+ && !data.members
142
+ && !data.logs
143
+ && !data.groups
144
+ && data.constructor === Object
145
+ && Object.keys(data).length <= 3) {
49
146
  return data.message;
50
147
  }
51
148
  if (looksLikeConfigSummary(data)) {
@@ -72,11 +169,9 @@ export class OutputFormatter {
72
169
  message: data.message ?? '-',
73
170
  });
74
171
  }
75
- // 错误消息
76
172
  if (data.success === false && data.message) {
77
173
  return `✗ ${data.message}`;
78
174
  }
79
- // 项目列表
80
175
  if (data.projects && Array.isArray(data.projects)) {
81
176
  return this.renderTable(['ID', '名称', '路径前缀', '分组 ID', '类型'], data.projects.map((p) => [
82
177
  String(p.id ?? ''),
@@ -86,7 +181,6 @@ export class OutputFormatter {
86
181
  String(p.projectType ?? ''),
87
182
  ]), `项目列表 (共 ${data.total ?? data.projects.length} 个)`);
88
183
  }
89
- // 接口列表
90
184
  if (data.interfaces && Array.isArray(data.interfaces)) {
91
185
  return this.renderTable(['ID', '方法', '路径', '标题', '状态'], data.interfaces.map((i) => [
92
186
  String(i.id ?? ''),
@@ -96,7 +190,6 @@ export class OutputFormatter {
96
190
  String(i.status ?? ''),
97
191
  ]), `接口列表 (共 ${data.total ?? data.interfaces.length} 个)`);
98
192
  }
99
- // 搜索结果
100
193
  if (data.items && Array.isArray(data.items)) {
101
194
  return this.renderTable(['ID', '方法', '路径', '标题', '项目'], data.items.map((i) => [
102
195
  String(i.id ?? ''),
@@ -106,7 +199,6 @@ export class OutputFormatter {
106
199
  String(i.projectName ?? ''),
107
200
  ]), `搜索结果 (共 ${data.total ?? data.items.length} 个)`);
108
201
  }
109
- // 分组列表
110
202
  if (data.groups && Array.isArray(data.groups)) {
111
203
  return this.renderTable(['ID', '名称', '项目数'], data.groups.map((g) => [
112
204
  String(g.id ?? ''),
@@ -114,7 +206,6 @@ export class OutputFormatter {
114
206
  String(g.projectCount ?? ''),
115
207
  ]), `分组列表 (共 ${data.groups.length} 个)`);
116
208
  }
117
- // 分类列表
118
209
  if (data.categories && Array.isArray(data.categories)) {
119
210
  return this.renderTable(['ID', '名称', '接口数'], data.categories.map((c) => [
120
211
  String(c.id ?? ''),
@@ -122,7 +213,6 @@ export class OutputFormatter {
122
213
  String(c.interfaceCount ?? ''),
123
214
  ]), `分类列表 (共 ${data.categories.length} 个)`);
124
215
  }
125
- // 用户列表
126
216
  if (data.users && Array.isArray(data.users)) {
127
217
  return this.renderTable(['ID', '用户名', '邮箱', '角色'], data.users.map((u) => [
128
218
  String(u.id ?? ''),
@@ -131,15 +221,13 @@ export class OutputFormatter {
131
221
  String(u.role ?? ''),
132
222
  ]), `用户列表 (共 ${data.total ?? data.users.length} 个)`);
133
223
  }
134
- // 环境列表
135
224
  if (data.envs && Array.isArray(data.envs)) {
136
225
  return this.renderTable(['ID', '名称', '域名'], data.envs.map((e) => [
137
226
  String(e.id ?? ''),
138
227
  String(e.name ?? ''),
139
228
  String(e.domain ?? ''),
140
- ]), `环境列表`);
229
+ ]), '环境列表');
141
230
  }
142
- // 成员列表
143
231
  if (data.members && Array.isArray(data.members)) {
144
232
  return this.renderTable(['ID', '用户名', '邮箱', '角色'], data.members.map((m) => [
145
233
  String(m.id ?? ''),
@@ -148,14 +236,12 @@ export class OutputFormatter {
148
236
  String(m.role ?? ''),
149
237
  ]), `成员列表 (共 ${data.members.length} 个)`);
150
238
  }
151
- // 集合列表
152
239
  if (data.collections && Array.isArray(data.collections)) {
153
240
  return this.renderTable(['ID', '名称'], data.collections.map((c) => [
154
241
  String(c.id ?? ''),
155
242
  String(c.name ?? ''),
156
243
  ]), `集合列表 (共 ${data.collections.length} 个)`);
157
244
  }
158
- // 日志列表
159
245
  if (data.logs && Array.isArray(data.logs)) {
160
246
  return this.renderTable(['时间', '用户', '类型', '内容'], data.logs.map((l) => [
161
247
  l.time ? formatTimestamp(l.time) : '',
@@ -164,7 +250,6 @@ export class OutputFormatter {
164
250
  String(String(l.content ?? '').slice(0, 60)),
165
251
  ]), `日志 (共 ${data.total ?? data.logs.length} 条)`);
166
252
  }
167
- // 用户详情 / 项目详情 / 接口详情等单对象
168
253
  if (data.user && isRecord(data.user)) {
169
254
  return this.renderObject('用户信息', data.user);
170
255
  }
@@ -174,7 +259,6 @@ export class OutputFormatter {
174
259
  if (data.interface && isRecord(data.interface)) {
175
260
  return this.renderObject('接口详情', data.interface);
176
261
  }
177
- // 兜底:JSON
178
262
  return JSON.stringify(data, null, 2);
179
263
  }
180
264
  renderTable(headers, rows, title) {
@@ -183,7 +267,6 @@ export class OutputFormatter {
183
267
  lines.push(title);
184
268
  if (title)
185
269
  lines.push('');
186
- // 计算列宽
187
270
  const colWidths = headers.map((h, i) => {
188
271
  const maxData = rows.reduce((w, r) => Math.max(w, r[i]?.length ?? 0), 0);
189
272
  return Math.max(h.length, maxData) + 2;
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/core/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/core/output.ts"],"names":[],"mappings":"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"}
@@ -4,11 +4,14 @@ export interface UpdateInfo {
4
4
  isUpdateAvailable: boolean;
5
5
  packageName: string;
6
6
  error?: string;
7
+ checkedAt?: string;
7
8
  }
8
9
  /**
9
10
  * 检查 npm registry 是否有更新版本。
10
11
  * 不抛错 — 失败时静默返回当前版本。
11
12
  */
12
- export declare function checkForUpdates(): UpdateInfo;
13
+ export declare function checkForUpdates(options?: {
14
+ force?: boolean;
15
+ }): UpdateInfo;
13
16
  /** 获取 npm install 更新命令提示 */
14
17
  export declare function getUpdateSuggestion(updateInfo: UpdateInfo, isGlobal?: boolean): string;
@@ -1,8 +1,11 @@
1
1
  import { execSync } from 'node:child_process';
2
- import { readFileSync } from 'node:fs';
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { homedir } from 'node:os';
3
4
  import { fileURLToPath } from 'node:url';
4
5
  import { dirname, join } from 'node:path';
5
6
  import { CLI_VERSION } from '../version.js';
7
+ const UPDATE_CACHE_MAX_AGE_MS = 24 * 60 * 60 * 1000;
8
+ const UPDATE_CACHE_PATH = join(homedir(), '.yapi', 'update-check.json');
6
9
  /** 从 package.json 读取包名 */
7
10
  function getPackageName() {
8
11
  try {
@@ -18,13 +21,18 @@ function getPackageName() {
18
21
  * 检查 npm registry 是否有更新版本。
19
22
  * 不抛错 — 失败时静默返回当前版本。
20
23
  */
21
- export function checkForUpdates() {
24
+ export function checkForUpdates(options) {
22
25
  const packageName = getPackageName();
26
+ const cached = options?.force ? null : readCachedUpdateInfo(packageName);
27
+ if (cached) {
28
+ return cached;
29
+ }
23
30
  const result = {
24
31
  currentVersion: CLI_VERSION,
25
32
  latestVersion: null,
26
33
  isUpdateAvailable: false,
27
34
  packageName,
35
+ checkedAt: new Date().toISOString(),
28
36
  };
29
37
  try {
30
38
  const stdout = execSync(`npm view ${packageName} version 2>/dev/null || true`, {
@@ -45,6 +53,7 @@ export function checkForUpdates() {
45
53
  // 静默失败 — 可能未发布、无网络等
46
54
  result.error = '无法检查更新(可能未发布到 npm registry)';
47
55
  }
56
+ writeCachedUpdateInfo(result);
48
57
  return result;
49
58
  }
50
59
  /** 获取 npm install 更新命令提示 */
@@ -64,4 +73,36 @@ function detectPackageManager() {
64
73
  return 'yarn';
65
74
  return 'npm';
66
75
  }
76
+ function readCachedUpdateInfo(packageName) {
77
+ try {
78
+ if (!existsSync(UPDATE_CACHE_PATH)) {
79
+ return null;
80
+ }
81
+ const raw = readFileSync(UPDATE_CACHE_PATH, 'utf-8');
82
+ const cached = JSON.parse(raw);
83
+ if (!cached.checkedAt) {
84
+ return null;
85
+ }
86
+ const age = Date.now() - Date.parse(cached.checkedAt);
87
+ if (!Number.isFinite(age) || age > UPDATE_CACHE_MAX_AGE_MS) {
88
+ return null;
89
+ }
90
+ if (cached.currentVersion !== CLI_VERSION || cached.packageName !== packageName) {
91
+ return null;
92
+ }
93
+ return cached;
94
+ }
95
+ catch {
96
+ return null;
97
+ }
98
+ }
99
+ function writeCachedUpdateInfo(info) {
100
+ try {
101
+ mkdirSync(dirname(UPDATE_CACHE_PATH), { recursive: true });
102
+ writeFileSync(UPDATE_CACHE_PATH, JSON.stringify(info, null, 2));
103
+ }
104
+ catch {
105
+ // 忽略缓存写入失败,避免影响主流程
106
+ }
107
+ }
67
108
  //# sourceMappingURL=update-probe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-probe.js","sourceRoot":"","sources":["../../src/core/update-probe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAU5C,0BAA0B;AAC1B,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,IAAI,IAAI,UAAU,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,MAAM,GAAe;QACzB,cAAc,EAAE,WAAW;QAC3B,aAAa,EAAE,IAAI;QACnB,iBAAiB,EAAE,KAAK;QACxB,WAAW;KACZ,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,WAAW,8BAA8B,EAAE;YAC7E,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,MAAM,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC;YAC9B,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oBAAoB;QACpB,MAAM,CAAC,KAAK,GAAG,6BAA6B,CAAC;IAC/C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,mBAAmB,CAAC,UAAsB,EAAE,QAAQ,GAAG,IAAI;IACzE,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;QAClC,OAAO,QAAQ,UAAU,CAAC,cAAc,QAAQ,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAElC,OAAO,SAAS,UAAU,CAAC,cAAc,MAAM,UAAU,CAAC,aAAa,WAAW,EAAE,YAAY,MAAM,GAAG,UAAU,CAAC,WAAW,SAAS,CAAC;AAC3I,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;IAC1D,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"update-probe.js","sourceRoot":"","sources":["../../src/core/update-probe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export type YApiRouteKind = 'home' | 'login' | 'group-list' | 'group-detail' | 'project-detail' | 'interface-list' | 'interface-detail' | 'category-detail' | 'collection-detail' | 'case-detail' | 'project-activity' | 'project-data' | 'project-members' | 'project-setting' | 'project-wiki' | 'user-list' | 'user-profile' | 'follow' | 'add-project' | 'statistic' | 'unknown';
2
+ export interface ParsedYApiUrl {
3
+ url: string;
4
+ matchedServer: boolean;
5
+ configuredBaseUrl: string | null;
6
+ normalizedPath: string;
7
+ routeKind: YApiRouteKind;
8
+ params: Record<string, string | number>;
9
+ primaryCommand: string | null;
10
+ suggestedCommands: string[];
11
+ note?: string;
12
+ }
13
+ export interface ParsedYApiUrlCommand {
14
+ commandName: string;
15
+ commandArgs: string[];
16
+ displayCommand: string;
17
+ }
18
+ export declare function looksLikeHttpUrl(value: string): boolean;
19
+ export declare function parseYApiPageUrl(rawUrl: string, configuredBaseUrl?: string | null): ParsedYApiUrl;
20
+ export declare function resolveParsedYApiUrlCommand(parsed: ParsedYApiUrl): ParsedYApiUrlCommand | null;