@zhin.js/cli 1.0.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 (54) hide show
  1. package/README.md +120 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +21 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/build.d.ts +3 -0
  7. package/dist/commands/build.d.ts.map +1 -0
  8. package/dist/commands/build.js +61 -0
  9. package/dist/commands/build.js.map +1 -0
  10. package/dist/commands/dev.d.ts +3 -0
  11. package/dist/commands/dev.d.ts.map +1 -0
  12. package/dist/commands/dev.js +162 -0
  13. package/dist/commands/dev.js.map +1 -0
  14. package/dist/commands/init.d.ts +3 -0
  15. package/dist/commands/init.d.ts.map +1 -0
  16. package/dist/commands/init.js +784 -0
  17. package/dist/commands/init.js.map +1 -0
  18. package/dist/commands/start.d.ts +4 -0
  19. package/dist/commands/start.d.ts.map +1 -0
  20. package/dist/commands/start.js +212 -0
  21. package/dist/commands/start.js.map +1 -0
  22. package/dist/commands/stop.d.ts +3 -0
  23. package/dist/commands/stop.d.ts.map +1 -0
  24. package/dist/commands/stop.js +24 -0
  25. package/dist/commands/stop.js.map +1 -0
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +2 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/utils/env.d.ts +11 -0
  31. package/dist/utils/env.d.ts.map +1 -0
  32. package/dist/utils/env.js +64 -0
  33. package/dist/utils/env.js.map +1 -0
  34. package/dist/utils/logger.d.ts +8 -0
  35. package/dist/utils/logger.d.ts.map +1 -0
  36. package/dist/utils/logger.js +18 -0
  37. package/dist/utils/logger.js.map +1 -0
  38. package/dist/utils/process.d.ts +29 -0
  39. package/dist/utils/process.d.ts.map +1 -0
  40. package/dist/utils/process.js +308 -0
  41. package/dist/utils/process.js.map +1 -0
  42. package/package.json +36 -0
  43. package/src/cli.ts +25 -0
  44. package/src/commands/build.ts +68 -0
  45. package/src/commands/dev.ts +188 -0
  46. package/src/commands/init.ts +826 -0
  47. package/src/commands/start.ts +236 -0
  48. package/src/commands/stop.ts +27 -0
  49. package/src/index.ts +1 -0
  50. package/src/utils/env.ts +70 -0
  51. package/src/utils/logger.ts +21 -0
  52. package/src/utils/process.ts +348 -0
  53. package/tsconfig.json +24 -0
  54. package/tsconfig.tsbuildinfo +1 -0
package/README.md ADDED
@@ -0,0 +1,120 @@
1
+ # @zhin.js/cli
2
+
3
+ Zhin Bot Framework的命令行工具,提供项目管理和开发工具。
4
+
5
+ ## 命令
6
+
7
+ ### init
8
+
9
+ 初始化新的Zhin Bot项目。
10
+
11
+ ```bash
12
+ zhin init [project-name] [options]
13
+ ```
14
+
15
+ 选项:
16
+ - `-c, --config <format>`: 配置文件格式 (json|yaml|toml|ts|js),默认js
17
+ - `-p, --package-manager <manager>`: 包管理器 (npm|yarn|pnpm),默认pnpm
18
+ - `-r, --runtime <runtime>`: 运行时 (node|bun),默认bun
19
+ - `-y, --yes`: 使用默认选项,跳过交互式配置
20
+
21
+ ### dev
22
+
23
+ 开发模式启动,支持热重载。
24
+
25
+ ```bash
26
+ zhin dev [options]
27
+ ```
28
+
29
+ 选项:
30
+ - `-p, --port [port]`: HMR服务端口,默认3000
31
+ - `--verbose`: 显示详细日志
32
+ - `--bun`: 使用bun运行(默认使用node)
33
+
34
+ ### start
35
+
36
+ 生产模式启动。
37
+
38
+ ```bash
39
+ zhin start [options]
40
+ ```
41
+
42
+ 选项:
43
+ - `-d, --daemon`: 后台运行
44
+ - `--log-file [file]`: 日志文件路径
45
+ - `--bun`: 使用bun运行(默认使用node)
46
+
47
+ ### restart
48
+
49
+ 重启生产模式的机器人进程。
50
+
51
+ ```bash
52
+ zhin restart
53
+ ```
54
+
55
+ ### stop
56
+
57
+ 停止运行中的机器人。
58
+
59
+ ```bash
60
+ zhin stop
61
+ ```
62
+
63
+ ## 项目结构
64
+
65
+ 初始化的项目结构:
66
+
67
+ ```
68
+ my-bot/
69
+ ├── src/
70
+ │ ├── index.ts # 主入口文件
71
+ │ └── plugins/ # 插件目录
72
+ │ └── test-plugin.ts # 示例插件
73
+ ├── dist/ # 构建输出目录
74
+ ├── data/ # 数据目录
75
+ ├── zhin.config.[js|ts] # 配置文件
76
+ ├── package.json # 项目配置
77
+ └── tsconfig.json # TypeScript配置
78
+ ```
79
+
80
+ ## 开发流程
81
+
82
+ 1. 初始化项目:
83
+ ```bash
84
+ zhin init my-bot
85
+ ```
86
+
87
+ 2. 开发模式:
88
+ ```bash
89
+ cd my-bot
90
+ zhin dev
91
+ ```
92
+
93
+ 3. 生产部署:
94
+ ```bash
95
+ # 构建
96
+ zhin build
97
+
98
+ # 启动(前台)
99
+ zhin start
100
+
101
+ # 启动(后台)
102
+ zhin start --daemon
103
+
104
+ # 重启
105
+ zhin restart
106
+
107
+ # 停止
108
+ zhin stop
109
+ ```
110
+
111
+ ## 环境变量
112
+
113
+ - `NODE_ENV`: 运行环境 (development/production)
114
+ - `ZHIN_DEV_MODE`: 开发模式标识
115
+ - `ZHIN_HMR_PORT`: HMR服务端口
116
+ - `ZHIN_VERBOSE`: 详细日志开关
117
+
118
+ ## 许可证
119
+
120
+ MIT License
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { initCommand } from './commands/init.js';
4
+ import { startCommand, restartCommand } from './commands/start.js';
5
+ import { stopCommand } from './commands/stop.js';
6
+ import { devCommand } from './commands/dev.js';
7
+ import { buildCommand } from './commands/build.js';
8
+ const program = new Command();
9
+ program
10
+ .name('zhin')
11
+ .description('Zhin机器人框架CLI工具')
12
+ .version('1.0.0');
13
+ // 注册命令
14
+ program.addCommand(initCommand);
15
+ program.addCommand(startCommand);
16
+ program.addCommand(restartCommand);
17
+ program.addCommand(stopCommand);
18
+ program.addCommand(devCommand);
19
+ program.addCommand(buildCommand);
20
+ program.parse();
21
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,gBAAgB,CAAC;KAC7B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;AACP,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEjC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const buildCommand: Command;
3
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,YAAY,SA+CrB,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { Command } from 'commander';
2
+ import { logger } from '../utils/logger.js';
3
+ import { spawn } from 'child_process';
4
+ import fs from 'fs-extra';
5
+ import path from 'path';
6
+ export const buildCommand = new Command('build')
7
+ .description('构建机器人项目')
8
+ .option('--clean', '清理输出目录', false)
9
+ .action(async (options) => {
10
+ try {
11
+ const cwd = process.cwd();
12
+ // 检查是否是Zhin项目
13
+ if (!isZhinProject(cwd)) {
14
+ logger.error('当前目录不是Zhin项目');
15
+ process.exit(1);
16
+ }
17
+ const distPath = path.join(cwd, 'dist');
18
+ // 清理输出目录
19
+ if (options.clean && fs.existsSync(distPath)) {
20
+ logger.info('正在清理输出目录...');
21
+ await fs.remove(distPath);
22
+ }
23
+ logger.info('正在构建项目...');
24
+ // 使用TypeScript编译
25
+ const child = spawn('npx', ['tsc'], {
26
+ cwd,
27
+ stdio: 'inherit'
28
+ });
29
+ child.on('close', (code) => {
30
+ if (code === 0) {
31
+ logger.info('构建完成!');
32
+ }
33
+ else {
34
+ logger.error(`构建失败,退出码: ${code}`);
35
+ process.exit(1);
36
+ }
37
+ });
38
+ child.on('error', (error) => {
39
+ logger.error(`构建失败: ${error.message}`);
40
+ process.exit(1);
41
+ });
42
+ }
43
+ catch (error) {
44
+ logger.error(`构建失败: ${error}`);
45
+ process.exit(1);
46
+ }
47
+ });
48
+ function isZhinProject(cwd) {
49
+ const packageJsonPath = path.join(cwd, 'package.json');
50
+ if (!fs.existsSync(packageJsonPath)) {
51
+ return false;
52
+ }
53
+ try {
54
+ const packageJson = fs.readJsonSync(packageJsonPath);
55
+ return packageJson.dependencies && packageJson.dependencies['zhin.js'];
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,SAAS,CAAC;KACtB,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1B,cAAc;QACd,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAExC,SAAS;QACT,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3B,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzB,iBAAiB;QACjB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;YAClC,GAAG;YACH,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACrD,OAAO,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const devCommand: Command;
3
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,UAAU,SAmKnB,CAAC"}
@@ -0,0 +1,162 @@
1
+ import { Command } from 'commander';
2
+ import { logger } from '../utils/logger.js';
3
+ import { loadEnvFiles } from '../utils/env.js';
4
+ import { spawn } from 'child_process';
5
+ import fs from 'fs-extra';
6
+ import path from 'path';
7
+ export const devCommand = new Command('dev')
8
+ .option('-p, --port [port]', 'HMR服务端口', '3000')
9
+ .option('--verbose', '显示详细日志', false)
10
+ .option('--bun', '使用 bun 运行(默认使用 node', false)
11
+ .action(async (options) => {
12
+ try {
13
+ const cwd = process.cwd();
14
+ // 检查是否是Zhin项目
15
+ if (!isZhinProject(cwd)) {
16
+ logger.error('当前目录不是Zhin项目');
17
+ logger.info('请在Zhin项目根目录运行此命令,或使用 zhin init 初始化项目');
18
+ process.exit(1);
19
+ }
20
+ // 加载环境变量文件
21
+ logger.info('🔍 正在加载环境变量...');
22
+ loadEnvFiles(cwd, 'development');
23
+ // 检查src目录是否存在
24
+ const srcPath = path.join(cwd, 'src');
25
+ if (!fs.existsSync(srcPath)) {
26
+ logger.error('src目录不存在');
27
+ logger.info('请确保项目结构正确,src目录包含入口文件');
28
+ process.exit(1);
29
+ }
30
+ // 检查入口文件
31
+ const entryFile = path.join(srcPath, 'index.ts');
32
+ if (!fs.existsSync(entryFile)) {
33
+ logger.error('入口文件 src/index.ts 不存在');
34
+ process.exit(1);
35
+ }
36
+ logger.info('📦 开发模式启动中...');
37
+ // 启动机器人的函数
38
+ const startBot = () => {
39
+ // 设置环境变量
40
+ const env = {
41
+ ...process.env,
42
+ NODE_ENV: 'development',
43
+ ZHIN_DEV_MODE: 'true',
44
+ ZHIN_HMR_PORT: options.port,
45
+ ZHIN_VERBOSE: options.verbose ? 'true' : 'false'
46
+ };
47
+ // 选择运行时
48
+ const runtime = options.bun ? 'bun' : 'tsx';
49
+ const args = options.bun ? ['src/index.ts'] : ['--expose-gc', 'src/index.ts'];
50
+ logger.info(`📦 启动命令: ${runtime} ${args.join(' ')}`);
51
+ // 启动机器人
52
+ return spawn(runtime, args, {
53
+ cwd,
54
+ stdio: 'inherit',
55
+ env
56
+ });
57
+ };
58
+ let child = startBot();
59
+ let isRestarting = false;
60
+ let isKilling = false;
61
+ // 重启函数
62
+ const restartBot = async () => {
63
+ if (isRestarting || isKilling)
64
+ return;
65
+ isRestarting = true;
66
+ logger.info('🔄 正在重启开发服务器...');
67
+ // 优雅关闭当前进程
68
+ if (child && !child.killed) {
69
+ const oldChild = child;
70
+ oldChild.kill('SIGTERM');
71
+ // 如果5秒后还没关闭,强制杀掉
72
+ setTimeout(() => {
73
+ if (oldChild && !oldChild.killed) {
74
+ oldChild.kill('SIGKILL');
75
+ }
76
+ }, 5000);
77
+ }
78
+ child = startBot();
79
+ setupChildHandlers(child);
80
+ isRestarting = false;
81
+ };
82
+ // 设置子进程处理器
83
+ const setupChildHandlers = (childProcess) => {
84
+ childProcess.on('error', (error) => {
85
+ if (!isRestarting) {
86
+ logger.error(`❌ 启动失败: ${error.message}`);
87
+ // 提供常见问题的解决建议
88
+ if (error.message.includes('ENOENT')) {
89
+ if (options.bun) {
90
+ logger.info('💡 请确保已安装 bun: https://bun.sh/');
91
+ }
92
+ else {
93
+ logger.info('💡 请确保已安装 tsx: npm install -D tsx');
94
+ }
95
+ }
96
+ process.exit(1);
97
+ }
98
+ });
99
+ childProcess.on('exit', (code) => {
100
+ if (!isRestarting && !isKilling) {
101
+ if (code === 51) {
102
+ return restartBot();
103
+ }
104
+ if (code !== 0) {
105
+ logger.error(`🔄 进程退出,代码: ${code}`);
106
+ }
107
+ }
108
+ });
109
+ };
110
+ // 设置初始子进程处理器
111
+ setupChildHandlers(child);
112
+ // 保存主进程PID文件(虽然开发模式不提供CLI重启,但保留用于进程管理)
113
+ const pidFile = path.join(cwd, '.zhin-dev.pid');
114
+ fs.writeFileSync(pidFile, process.pid.toString());
115
+ // 处理退出信号
116
+ const cleanup = () => {
117
+ if (isKilling)
118
+ return;
119
+ logger.info('🛑 正在关闭开发服务器...');
120
+ isKilling = true;
121
+ if (child && !child.killed) {
122
+ child.kill('SIGTERM');
123
+ }
124
+ // 给子进程一些时间优雅退出
125
+ setTimeout(() => {
126
+ if (child && !child.killed) {
127
+ child.kill('SIGKILL');
128
+ }
129
+ // 清理PID文件
130
+ if (fs.existsSync(pidFile)) {
131
+ fs.removeSync(pidFile);
132
+ }
133
+ logger.info('✅ 开发服务器已关闭');
134
+ process.exit(0);
135
+ }, 3000);
136
+ };
137
+ process.on('SIGINT', cleanup);
138
+ process.on('SIGTERM', cleanup);
139
+ // 显示开发模式提示
140
+ logger.info('💡 开发模式运行中,按 Ctrl+C 退出');
141
+ logger.info('💡 重启方式: 在插件中调用 process.exit(51)');
142
+ }
143
+ catch (error) {
144
+ logger.error(`❌ 开发模式启动失败: ${error}`);
145
+ process.exit(1);
146
+ }
147
+ });
148
+ function isZhinProject(cwd) {
149
+ const packageJsonPath = path.join(cwd, 'package.json');
150
+ if (!fs.existsSync(packageJsonPath)) {
151
+ return false;
152
+ }
153
+ try {
154
+ const packageJson = fs.readJsonSync(packageJsonPath);
155
+ return packageJson.dependencies && (packageJson.dependencies['zhin.js'] ||
156
+ packageJson.devDependencies?.['zhin.js']);
157
+ }
158
+ catch {
159
+ return false;
160
+ }
161
+ }
162
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const initCommand: Command;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,WAAW,SA0HpB,CAAC"}