@nbtca/prompt 1.0.1 → 1.0.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/features/docs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/features/docs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nbtca/prompt",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -9,7 +9,8 @@
9
9
  },
10
10
  "scripts": {
11
11
  "start": "node dist/index.js",
12
- "dev": "tsx watch src/index.ts",
12
+ "dev": "tsx src/index.ts",
13
+ "dev:watch": "tsx watch src/index.ts",
13
14
  "build": "tsc",
14
15
  "postbuild": "mkdir -p dist/logo && cp src/logo/logo.txt dist/logo/ && cp src/logo/ascii-logo.txt dist/logo/",
15
16
  "clean": "rm -rf dist",
@@ -19,7 +19,7 @@ export const URLS = {
19
19
 
20
20
  export const APP_INFO = {
21
21
  name: 'Prompt',
22
- version: '1.0.0',
22
+ version: '1.0.2',
23
23
  description: '浙大宁波理工学院计算机协会',
24
24
  fullDescription: 'NBTCA Prompt - 极简命令行工具',
25
25
  author: 'm1ngsama <contact@m1ng.space>',
package/src/core/menu.ts CHANGED
@@ -17,40 +17,40 @@ import { APP_INFO, URLS } from '../config/data.js';
17
17
  */
18
18
  const MAIN_MENU = [
19
19
  {
20
- name: '近期活动' + chalk.gray(' 查看最近30天的社团活动'),
20
+ name: '[*] Recent Events ' + chalk.gray('查看最近30天的社团活动'),
21
21
  value: 'events',
22
- short: '近期活动'
22
+ short: 'Recent Events'
23
23
  },
24
24
  {
25
- name: '维修服务' + chalk.gray(' 电脑维修、软件安装'),
25
+ name: '[*] Repair Service ' + chalk.gray('电脑维修、软件安装'),
26
26
  value: 'repair',
27
- short: '维修服务'
27
+ short: 'Repair Service'
28
28
  },
29
29
  {
30
- name: '知识库' + chalk.gray(' 技术文档、教程资源'),
30
+ name: '[*] Knowledge Base ' + chalk.gray('技术文档、教程资源'),
31
31
  value: 'docs',
32
- short: '知识库'
32
+ short: 'Knowledge Base'
33
33
  },
34
34
  {
35
- name: '官方网站' + chalk.gray(' 访问NBTCA主页'),
35
+ name: '[*] Official Website ' + chalk.gray('访问NBTCA主页'),
36
36
  value: 'website',
37
- short: '官方网站'
37
+ short: 'Official Website'
38
38
  },
39
39
  {
40
- name: 'GitHub' + chalk.gray(' 开源项目与代码'),
40
+ name: '[*] GitHub ' + chalk.gray('开源项目与代码'),
41
41
  value: 'github',
42
42
  short: 'GitHub'
43
43
  },
44
44
  {
45
- name: '关于' + chalk.gray(' 项目信息与帮助'),
45
+ name: '[?] About ' + chalk.gray('项目信息与帮助'),
46
46
  value: 'about',
47
- short: '关于'
47
+ short: 'About'
48
48
  },
49
49
  new inquirer.Separator(' '),
50
50
  {
51
- name: chalk.dim('退出'),
51
+ name: chalk.dim('[x] Exit'),
52
52
  value: 'exit',
53
- short: '退出'
53
+ short: 'Exit'
54
54
  }
55
55
  ];
56
56
 
@@ -60,6 +60,10 @@ const MAIN_MENU = [
60
60
  export async function showMainMenu(): Promise<void> {
61
61
  while (true) {
62
62
  try {
63
+ // Show keybinding hints
64
+ console.log(chalk.dim(' Navigation: j/k or ↑/↓ | Jump: g/G | Quit: q or Ctrl+C'));
65
+ console.log();
66
+
63
67
  const { action } = await inquirer.prompt<{ action: string }>([
64
68
  {
65
69
  type: 'list',
@@ -135,23 +139,23 @@ async function handleAction(action: string): Promise<void> {
135
139
  */
136
140
  function showAbout(): void {
137
141
  console.log();
138
- console.log(chalk.bold('关于 NBTCA'));
142
+ console.log(chalk.bold('>> About NBTCA'));
139
143
  console.log();
140
- console.log(chalk.dim('项目') + ' ' + APP_INFO.name);
141
- console.log(chalk.dim('版本') + ' ' + `v${APP_INFO.version}`);
142
- console.log(chalk.dim('描述') + ' ' + APP_INFO.fullDescription);
144
+ console.log(chalk.dim('Project ') + APP_INFO.name);
145
+ console.log(chalk.dim('Version ') + `v${APP_INFO.version}`);
146
+ console.log(chalk.dim('Description ') + APP_INFO.fullDescription);
143
147
  console.log();
144
- console.log(chalk.dim('GitHub') + ' ' + chalk.cyan(APP_INFO.repository));
145
- console.log(chalk.dim('官网') + ' ' + chalk.cyan(URLS.homepage));
146
- console.log(chalk.dim('邮箱') + ' ' + chalk.cyan(URLS.email));
148
+ console.log(chalk.dim('GitHub ') + chalk.cyan(APP_INFO.repository));
149
+ console.log(chalk.dim('Website ') + chalk.cyan(URLS.homepage));
150
+ console.log(chalk.dim('Email ') + chalk.cyan(URLS.email));
147
151
  console.log();
148
- console.log(chalk.dim('功能'));
149
- console.log(' 查看社团近期活动');
150
- console.log(' 在线维修服务');
151
- console.log(' 技术知识库访问');
152
- console.log(' 快速访问官网和GitHub');
152
+ console.log(chalk.dim('Features:'));
153
+ console.log(' - View recent association events');
154
+ console.log(' - Online repair service');
155
+ console.log(' - Technical knowledge base access');
156
+ console.log(' - Quick access to website and GitHub');
153
157
  console.log();
154
- console.log(chalk.dim('协议') + ' ' + 'MIT License');
155
- console.log(chalk.dim('作者') + ' ' + 'm1ngsama');
158
+ console.log(chalk.dim('License ') + 'MIT License');
159
+ console.log(chalk.dim('Author ') + 'm1ngsama');
156
160
  console.log();
157
161
  }
@@ -1,49 +1,56 @@
1
1
  /**
2
- * Vim 键位支持
3
- * 通过拦截和转换键盘输入来实现 j/k/g/G/q 键位
2
+ * Vim keybindings support
3
+ * Intercepts and translates keyboard input for j/k/g/G/q/ESC keys
4
4
  */
5
5
 
6
6
  /**
7
- * stdin 添加 Vim 键位映射
7
+ * Enable Vim key mappings for stdin
8
+ * Maps: j/k (down/up), g/G (home/end), q (quit), ESC (back)
8
9
  */
9
10
  export function enableVimKeys() {
10
11
  const stdin = process.stdin;
11
12
 
12
- // 确保 stdin TTY
13
+ // Only enable for TTY sessions
13
14
  if (!stdin.isTTY) {
14
15
  return;
15
16
  }
16
17
 
17
- // 保存原始的输入处理
18
+ // Save original input handler
18
19
  const originalEmit = stdin.emit.bind(stdin);
19
20
 
20
- // 重写 emit 方法来拦截键盘事件
21
+ // Override emit method to intercept keyboard events
21
22
  (stdin.emit as any) = function (event: string, ...args: any[]) {
22
23
  if (event === 'keypress') {
23
24
  const [, key] = args;
24
25
 
25
26
  if (key && key.name) {
26
- // j = 向下 (映射为 down)
27
+ // j = down (mapped to down arrow)
27
28
  if (key.name === 'j' && !key.ctrl && !key.meta) {
28
29
  return originalEmit('keypress', null, { name: 'down' });
29
30
  }
30
31
 
31
- // k = 向上 (映射为 up)
32
+ // k = up (mapped to up arrow)
32
33
  if (key.name === 'k' && !key.ctrl && !key.meta) {
33
34
  return originalEmit('keypress', null, { name: 'up' });
34
35
  }
35
36
 
36
- // g = 跳到顶部 (映射为 home)
37
+ // g = jump to top (mapped to home)
37
38
  if (key.name === 'g' && !key.shift && !key.ctrl && !key.meta) {
38
39
  return originalEmit('keypress', null, { name: 'home' });
39
40
  }
40
41
 
41
- // G (Shift+g) = 跳到底部 (映射为 end)
42
+ // G (Shift+g) = jump to bottom (mapped to end)
42
43
  if (key.name === 'g' && key.shift) {
43
44
  return originalEmit('keypress', null, { name: 'end' });
44
45
  }
45
46
 
46
- // q = 退出 (映射为 Ctrl+C)
47
+ // ESC = back/cancel (pass through for menu handling)
48
+ // Note: Applications should implement back navigation for ESC
49
+ if (key.name === 'escape') {
50
+ return originalEmit('keypress', null, { name: 'escape', sequence: '\x1b' });
51
+ }
52
+
53
+ // q = quit (mapped to Ctrl+C for application exit)
47
54
  if (key.name === 'q' && !key.ctrl && !key.meta) {
48
55
  return originalEmit('keypress', null, { name: 'c', ctrl: true });
49
56
  }
@@ -55,8 +62,9 @@ export function enableVimKeys() {
55
62
  }
56
63
 
57
64
  /**
58
- * 禁用 Vim 键位映射
65
+ * Disable Vim key mappings
66
+ * Currently not implemented as we use Vim keys throughout the application
59
67
  */
60
68
  export function disableVimKeys() {
61
- // 这个功能暂时不需要实现,因为我们会在整个应用中使用 Vim 键位
69
+ // Not needed for current implementation
62
70
  }
@@ -5,61 +5,291 @@
5
5
 
6
6
  import axios from 'axios';
7
7
  import { marked } from 'marked';
8
- import markedTerminal from 'marked-terminal';
8
+ import TerminalRenderer from 'marked-terminal';
9
9
  import chalk from 'chalk';
10
10
  import open from 'open';
11
11
  import inquirer from 'inquirer';
12
12
  import { error, info, success, warning } from '../core/ui.js';
13
13
 
14
14
  // 配置marked使用终端渲染器
15
- marked.use(markedTerminal as any);
15
+ marked.setOptions({
16
+ // @ts-ignore - markedTerminal类型定义问题
17
+ renderer: new TerminalRenderer()
18
+ });
16
19
 
17
20
  /**
18
- * 文档列表(硬编码常用文档)
21
+ * GitHub仓库配置
19
22
  */
20
- const DOCS_LIST = [
21
- { name: '返回主菜单', value: 'back' },
22
- { name: '在浏览器中打开知识库', value: 'browser' }
23
- ];
23
+ const GITHUB_REPO = {
24
+ owner: 'nbtca',
25
+ repo: 'documents',
26
+ branch: 'main'
27
+ };
24
28
 
25
29
  /**
26
- * 获取文档列表
30
+ * 文档结构类型
27
31
  */
28
- export async function fetchDocs(): Promise<string[]> {
29
- // 简化版:返回预设的文档列表
30
- // 实际项目中可以从API动态获取
31
- return [
32
- '首页',
33
- '技术文档',
34
- '教程资源'
35
- ];
32
+ interface DocItem {
33
+ name: string;
34
+ path: string;
35
+ type: 'file' | 'dir';
36
+ sha?: string;
36
37
  }
37
38
 
38
39
  /**
39
- * 查看指定文档
40
+ * 预定义的文档分类
40
41
  */
41
- export async function viewDoc(path: string): Promise<void> {
42
- try {
43
- info(`正在加载文档: ${path}`);
42
+ const DOC_CATEGORIES = [
43
+ { name: '[Tutorial] 教程', path: 'tutorial' },
44
+ { name: '[Repair] 维修日', path: '维修日' },
45
+ { name: '[Events] 相关活动举办', path: '相关活动举办' },
46
+ { name: '[Process] 流程文档', path: 'process' },
47
+ { name: '[Repair] 维修相关', path: 'repair' },
48
+ { name: '[Archive] 归档文档', path: 'archived' },
49
+ { name: '[README] 项目说明', path: 'README.md' }
50
+ ];
51
+
52
+ /**
53
+ * 从GitHub获取目录内容
54
+ */
55
+ async function fetchGitHubDirectory(path: string = ''): Promise<DocItem[]> {
56
+ const url = `https://api.github.com/repos/${GITHUB_REPO.owner}/${GITHUB_REPO.repo}/contents/${path}?ref=${GITHUB_REPO.branch}`;
44
57
 
45
- const response = await axios.get(`https://docs.nbtca.space/${path}`, {
58
+ try {
59
+ const response = await axios.get(url, {
46
60
  timeout: 10000,
47
61
  headers: {
48
- 'User-Agent': 'NBTCA-CLI/2.3.1'
62
+ 'Accept': 'application/vnd.github.v3+json',
63
+ 'User-Agent': 'NBTCA-CLI'
49
64
  }
50
65
  });
51
66
 
52
- console.log('\r' + ' '.repeat(50) + '\r'); // 清除加载提示
67
+ return response.data
68
+ .filter((item: any) => {
69
+ // 过滤掉 node_modules, .git 等目录
70
+ if (item.name.startsWith('.')) return false;
71
+ if (item.name === 'node_modules') return false;
72
+ if (item.name === 'package.json') return false;
73
+ if (item.name === 'pnpm-lock.yaml') return false;
74
+
75
+ // 只显示目录和 markdown 文件
76
+ if (item.type === 'file' && !item.name.endsWith('.md')) return false;
77
+
78
+ return true;
79
+ })
80
+ .map((item: any) => ({
81
+ name: item.name,
82
+ path: item.path,
83
+ type: item.type === 'dir' ? 'dir' : 'file',
84
+ sha: item.sha
85
+ }))
86
+ .sort((a: DocItem, b: DocItem) => {
87
+ // 目录排在前面
88
+ if (a.type === 'dir' && b.type === 'file') return -1;
89
+ if (a.type === 'file' && b.type === 'dir') return 1;
90
+ return a.name.localeCompare(b.name);
91
+ });
92
+ } catch (err: any) {
93
+ throw new Error(`无法获取目录内容: ${err.message}`);
94
+ }
95
+ }
96
+
97
+ /**
98
+ * 从GitHub获取文件原始内容
99
+ */
100
+ async function fetchGitHubRawContent(path: string): Promise<string> {
101
+ const url = `https://raw.githubusercontent.com/${GITHUB_REPO.owner}/${GITHUB_REPO.repo}/${GITHUB_REPO.branch}/${path}`;
102
+
103
+ try {
104
+ const response = await axios.get(url, {
105
+ timeout: 15000,
106
+ headers: {
107
+ 'User-Agent': 'NBTCA-CLI'
108
+ }
109
+ });
110
+
111
+ return response.data;
112
+ } catch (err: any) {
113
+ throw new Error(`无法获取文件内容: ${err.message}`);
114
+ }
115
+ }
116
+
117
+ /**
118
+ * 清理和格式化Markdown内容
119
+ * 移除VitePress frontmatter和特殊语法,优化终端显示
120
+ */
121
+ function cleanMarkdownContent(content: string): string {
122
+ let cleaned = content;
123
+
124
+ // 1. 移除 YAML frontmatter (---开头结尾的部分)
125
+ cleaned = cleaned.replace(/^---\n[\s\S]*?\n---\n/m, '');
126
+
127
+ // 2. 移除 VitePress 的特殊容器语法 (:::info, :::tip, :::warning 等)
128
+ // 保留内容,只移除容器标记
129
+ cleaned = cleaned.replace(/^:::(info|tip|warning|danger|details).*$/gm, '');
130
+ cleaned = cleaned.replace(/^:::$/gm, '');
131
+
132
+ // 3. 处理 VitePress 的 [[toc]] 语法
133
+ cleaned = cleaned.replace(/\[\[toc\]\]/gi, '**目录**\n\n_(请在浏览器中查看完整目录)_\n');
134
+
135
+ // 4. 清理多余的空行(超过2个连续空行压缩为2个)
136
+ cleaned = cleaned.replace(/\n{3,}/g, '\n\n');
137
+
138
+ // 5. 移除 HTML 注释
139
+ cleaned = cleaned.replace(/<!--[\s\S]*?-->/g, '');
140
+
141
+ // 6. 清理开头和结尾的空白
142
+ cleaned = cleaned.trim();
143
+
144
+ return cleaned;
145
+ }
146
+
147
+ /**
148
+ * 提取文档标题(从第一个 # 标题)
149
+ */
150
+ function extractDocTitle(content: string): string | null {
151
+ const match = content.match(/^#\s+(.+)$/m);
152
+ return match?.[1]?.trim() ?? null;
153
+ }
154
+
155
+ /**
156
+ * 浏览目录并选择文档
157
+ */
158
+ async function browseDirectory(dirPath: string = ''): Promise<void> {
159
+ try {
160
+ info(dirPath ? `正在加载目录: ${dirPath}` : '正在加载文档列表...');
161
+
162
+ const items = await fetchGitHubDirectory(dirPath);
163
+
164
+ console.log('\r' + ' '.repeat(60) + '\r'); // 清除加载提示
165
+
166
+ if (items.length === 0) {
167
+ warning('该目录为空');
168
+ return;
169
+ }
170
+
171
+ // 构建选择列表
172
+ const choices = [
173
+ ...(dirPath ? [
174
+ { name: chalk.gray('[..] Up to parent directory'), value: { type: 'back' } },
175
+ new inquirer.Separator()
176
+ ] : []),
177
+ ...items.map(item => ({
178
+ name: item.type === 'dir'
179
+ ? chalk.cyan(`[DIR] ${item.name}/`)
180
+ : chalk.white(`[MD] ${item.name}`),
181
+ value: item
182
+ })),
183
+ new inquirer.Separator(),
184
+ { name: chalk.gray('[ ^] Return to main menu'), value: { type: 'exit' } }
185
+ ];
186
+
187
+ const { selected } = await inquirer.prompt([
188
+ {
189
+ type: 'list',
190
+ name: 'selected',
191
+ message: dirPath ? `当前目录: ${dirPath}` : '选择文档或目录:',
192
+ choices,
193
+ pageSize: 15,
194
+ loop: false
195
+ }
196
+ ]);
197
+
198
+ // 处理用户选择
199
+ if (selected.type === 'exit') {
200
+ return;
201
+ } else if (selected.type === 'back') {
202
+ // 返回上级目录
203
+ const parentPath = dirPath.split('/').slice(0, -1).join('/');
204
+ await browseDirectory(parentPath);
205
+ } else if (selected.type === 'dir') {
206
+ // 进入子目录
207
+ await browseDirectory(selected.path);
208
+ } else if (selected.type === 'file') {
209
+ // 查看文件
210
+ await viewMarkdownFile(selected.path);
211
+ // 查看完后继续浏览当前目录
212
+ await browseDirectory(dirPath);
213
+ }
214
+
215
+ } catch (err: any) {
216
+ error('无法加载目录');
217
+ console.log(chalk.gray(` 错误: ${err.message}`));
218
+
219
+ const { retry } = await inquirer.prompt([
220
+ {
221
+ type: 'confirm',
222
+ name: 'retry',
223
+ message: '是否重试?',
224
+ default: true
225
+ }
226
+ ]);
53
227
 
54
- // 渲染Markdown
55
- const rendered = marked(response.data);
228
+ if (retry) {
229
+ await browseDirectory(dirPath);
230
+ }
231
+ }
232
+ }
233
+
234
+ /**
235
+ * 查看Markdown文件
236
+ */
237
+ async function viewMarkdownFile(path: string): Promise<void> {
238
+ try {
239
+ info(`正在加载: ${path}`);
240
+
241
+ // 从GitHub获取原始Markdown内容
242
+ const rawContent = await fetchGitHubRawContent(path);
243
+
244
+ // 清理VitePress特殊语法
245
+ const cleanedContent = cleanMarkdownContent(rawContent);
246
+
247
+ // 提取标题
248
+ const title = extractDocTitle(cleanedContent) || path.split('/').pop() || path;
249
+
250
+ console.clear();
251
+ console.log();
252
+ console.log(chalk.cyan.bold(`>> ${title}`));
253
+ console.log(chalk.gray(` ${path}`));
254
+ console.log();
255
+ console.log(chalk.gray('='.repeat(80)));
256
+ console.log();
257
+
258
+ // 渲染Markdown到终端
259
+ const rendered = marked(cleanedContent);
56
260
  console.log(rendered);
57
261
  console.log();
262
+ console.log(chalk.gray('='.repeat(80)));
263
+ console.log();
264
+ console.log(chalk.dim(' Note: Some features are only available in browser'));
265
+ console.log();
58
266
 
59
267
  success('文档加载完成');
60
- } catch (err) {
268
+ console.log();
269
+
270
+ // 提供后续操作选项
271
+ const { action } = await inquirer.prompt([
272
+ {
273
+ type: 'list',
274
+ name: 'action',
275
+ message: '选择操作:',
276
+ choices: [
277
+ { name: '[ <] Back to docs list', value: 'back' },
278
+ { name: '[ *] Open in browser', value: 'browser' }
279
+ ]
280
+ }
281
+ ]);
282
+
283
+ if (action === 'browser') {
284
+ await openDocsInBrowser(path);
285
+ }
286
+
287
+ } catch (err: any) {
288
+ console.log('\r' + ' '.repeat(60) + '\r');
61
289
  error('无法加载文档');
290
+ console.log(chalk.gray(` 错误: ${err.message}`));
62
291
  warning('建议在浏览器中查看');
292
+ console.log();
63
293
 
64
294
  const { openBrowser } = await inquirer.prompt([
65
295
  {
@@ -71,7 +301,7 @@ export async function viewDoc(path: string): Promise<void> {
71
301
  ]);
72
302
 
73
303
  if (openBrowser) {
74
- await openDocsInBrowser();
304
+ await openDocsInBrowser(path);
75
305
  }
76
306
  }
77
307
  }
@@ -79,10 +309,13 @@ export async function viewDoc(path: string): Promise<void> {
79
309
  /**
80
310
  * 在浏览器中打开知识库
81
311
  */
82
- export async function openDocsInBrowser(): Promise<void> {
312
+ export async function openDocsInBrowser(path?: string): Promise<void> {
83
313
  try {
84
314
  info('正在打开浏览器...');
85
- await open('https://docs.nbtca.space');
315
+ const url = path
316
+ ? `https://docs.nbtca.space/${path.replace(/\.md$/, '')}`
317
+ : 'https://docs.nbtca.space';
318
+ await open(url);
86
319
  success('已在浏览器中打开知识库');
87
320
  } catch (err) {
88
321
  error('无法打开浏览器');
@@ -95,26 +328,42 @@ export async function openDocsInBrowser(): Promise<void> {
95
328
  * 显示知识库菜单
96
329
  */
97
330
  export async function showDocsMenu(): Promise<void> {
98
- while (true) {
99
- console.log();
100
- console.log(chalk.cyan.bold(' 知识库'));
101
- console.log();
331
+ console.log();
332
+ console.log(chalk.cyan.bold(' >> Knowledge Base'));
333
+ console.log(chalk.dim(' Browse documentation from terminal or open in browser'));
334
+ console.log();
102
335
 
103
- const { action } = await inquirer.prompt([
104
- {
105
- type: 'list',
106
- name: 'action',
107
- message: '选择操作:',
108
- choices: DOCS_LIST,
109
- pageSize: 10
110
- }
111
- ]);
336
+ const choices = [
337
+ ...DOC_CATEGORIES.map(cat => ({
338
+ name: cat.name,
339
+ value: cat.path
340
+ })),
341
+ new inquirer.Separator(),
342
+ { name: chalk.gray('[ *] Open in browser'), value: 'browser' },
343
+ { name: chalk.gray('[ ^] Back to main menu'), value: 'back' }
344
+ ];
112
345
 
113
- if (action === 'back') {
114
- break;
115
- } else if (action === 'browser') {
116
- await openDocsInBrowser();
117
- break;
346
+ const { action } = await inquirer.prompt([
347
+ {
348
+ type: 'list',
349
+ name: 'action',
350
+ message: '选择文档分类:',
351
+ choices,
352
+ pageSize: 15,
353
+ loop: false
118
354
  }
355
+ ]);
356
+
357
+ if (action === 'back') {
358
+ return;
359
+ } else if (action === 'browser') {
360
+ await openDocsInBrowser();
361
+ } else if (action === 'README.md') {
362
+ // 直接查看 README
363
+ await viewMarkdownFile('README.md');
364
+ } else {
365
+ // 浏览指定目录
366
+ await browseDirectory(action);
119
367
  }
120
368
  }
369
+