cam-fe-code-generator 0.0.2 → 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.
- package/README.md +270 -0
- package/dist/api/index.d.ts +11 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +95 -0
- package/dist/api/index.js.map +1 -0
- package/dist/cli/add-service.d.ts +3 -0
- package/dist/cli/add-service.d.ts.map +1 -0
- package/dist/cli/add-service.js +41 -0
- package/dist/cli/add-service.js.map +1 -0
- package/dist/cli/config.d.ts +3 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +29 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +23 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +3 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +64 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/login.d.ts +6 -0
- package/dist/cli/login.d.ts.map +1 -0
- package/dist/cli/login.js +132 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/service.d.ts +4 -0
- package/dist/cli/service.d.ts.map +1 -0
- package/dist/cli/service.js +46 -0
- package/dist/cli/service.js.map +1 -0
- package/dist/cli/update.d.ts +3 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +13 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/user.d.ts +6 -0
- package/dist/cli/user.d.ts.map +1 -0
- package/dist/cli/user.js +138 -0
- package/dist/cli/user.js.map +1 -0
- package/dist/cli.js +5 -4
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -5
- package/dist/index.js.map +1 -1
- package/dist/request/index.d.ts +11 -0
- package/dist/request/index.d.ts.map +1 -0
- package/dist/request/index.js +96 -0
- package/dist/request/index.js.map +1 -0
- package/dist/services/apis/api/index.d.ts +12 -0
- package/dist/services/apis/api/index.d.ts.map +1 -0
- package/dist/services/apis/api/index.js +67 -0
- package/dist/services/apis/api/index.js.map +1 -0
- package/dist/services/apis/api/types.d.ts +215 -0
- package/dist/services/apis/api/types.d.ts.map +1 -0
- package/dist/services/apis/api/types.js +4 -0
- package/dist/services/apis/api/types.js.map +1 -0
- package/dist/services/apis/service/index.d.ts +17 -0
- package/dist/services/apis/service/index.d.ts.map +1 -0
- package/dist/services/apis/service/index.js +85 -0
- package/dist/services/apis/service/index.js.map +1 -0
- package/dist/services/apis/service/types.d.ts +136 -0
- package/dist/services/apis/service/types.d.ts.map +1 -0
- package/dist/services/apis/service/types.js +3 -0
- package/dist/services/apis/service/types.js.map +1 -0
- package/dist/services/apis/user/index.d.ts +8 -0
- package/dist/services/apis/user/index.d.ts.map +1 -0
- package/dist/services/apis/user/index.js +37 -0
- package/dist/services/apis/user/index.js.map +1 -0
- package/dist/services/apis/user/types.d.ts +48 -0
- package/dist/services/apis/user/types.d.ts.map +1 -0
- package/dist/services/apis/user/types.js +3 -0
- package/dist/services/apis/user/types.js.map +1 -0
- package/dist/services/code-generate/config.d.ts +14 -0
- package/dist/services/code-generate/config.d.ts.map +1 -0
- package/dist/services/code-generate/config.js +61 -0
- package/dist/services/code-generate/config.js.map +1 -0
- package/dist/services/code-generate/generator.d.ts +9 -0
- package/dist/services/code-generate/generator.d.ts.map +1 -0
- package/dist/services/code-generate/generator.js +149 -0
- package/dist/services/code-generate/generator.js.map +1 -0
- package/dist/services/code-generate/index.d.ts +4 -0
- package/dist/services/code-generate/index.d.ts.map +1 -0
- package/dist/services/code-generate/index.js +191 -0
- package/dist/services/code-generate/index.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +16 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/types.d.ts +24 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/types.js +3 -0
- package/dist/services/types.js.map +1 -0
- package/dist/templates/functions.d.ts +2 -0
- package/dist/templates/functions.d.ts.map +1 -0
- package/dist/templates/functions.js +10 -0
- package/dist/templates/functions.js.map +1 -0
- package/dist/templates/init.d.ts +3 -0
- package/dist/templates/init.d.ts.map +1 -0
- package/dist/templates/init.js +12 -0
- package/dist/templates/init.js.map +1 -0
- package/dist/templates/serviceClass.d.ts +19 -0
- package/dist/templates/serviceClass.d.ts.map +1 -0
- package/dist/templates/serviceClass.js +99 -0
- package/dist/templates/serviceClass.js.map +1 -0
- package/dist/templates/types.d.ts +2 -0
- package/dist/templates/types.d.ts.map +1 -0
- package/dist/templates/types.js +10 -0
- package/dist/templates/types.js.map +1 -0
- package/dist/utils/data-manager.d.ts +14 -0
- package/dist/utils/data-manager.d.ts.map +1 -0
- package/dist/utils/data-manager.js +93 -0
- package/dist/utils/data-manager.js.map +1 -0
- package/dist/utils/token-manager.d.ts +14 -0
- package/dist/utils/token-manager.d.ts.map +1 -0
- package/dist/utils/token-manager.js +93 -0
- package/dist/utils/token-manager.js.map +1 -0
- package/dist/utils/utils.d.ts +5 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +58 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/package.json +8 -4
package/README.md
ADDED
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
## 用户通过命令行操作 cam 是怎么实现的?
|
|
2
|
+
|
|
3
|
+
用户通过命令行操作 `cam` 的实现机制主要依赖于 `package.json` 中的 `bin` 字段配置以及 `src/cli.ts` 中的逻辑实现。
|
|
4
|
+
|
|
5
|
+
以下是详细的实现原理解析:
|
|
6
|
+
|
|
7
|
+
**1. 命令行入口配置 (`package.json`)**
|
|
8
|
+
|
|
9
|
+
在 [package.json](file:///Users/bytedance/Desktop/work/CAM/fe-code-generator-CAM/package.json#L6-L8) 中,我们配置了 `bin` 字段:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
"bin": {
|
|
13
|
+
"cam": "dist/cli.js"
|
|
14
|
+
},
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- **作用**:这告诉 npm(或 yarn/pnpm),当用户安装这个包时,需要将 `cam` 这个命令注册到系统的 PATH 中。
|
|
18
|
+
- **映射**:当用户在终端输入 `cam` 时,实际执行的是 `dist/cli.js` 这个文件。
|
|
19
|
+
|
|
20
|
+
**2. 可执行脚本声明 (`src/cli.ts`)**
|
|
21
|
+
|
|
22
|
+
在 [src/cli.ts](file:///Users/bytedance/Desktop/work/CAM/fe-code-generator-CAM/src/cli.ts#L1) 的第一行,我们添加了 Shebang:
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
#!/usr/bin/env node
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- **作用**:这行代码告诉操作系统,这个文件不是一个普通的文本文件,而是一个脚本,并且应该使用 `node` 环境来解释执行它。
|
|
29
|
+
|
|
30
|
+
**3. 命令解析与处理 (`src/cli.ts`)**
|
|
31
|
+
|
|
32
|
+
我们使用了 `commander` 库来处理命令行参数和子命令。具体流程如下:
|
|
33
|
+
|
|
34
|
+
- **初始化程序**:
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
const program = new Command();
|
|
38
|
+
program.name("cam").description("...").version("0.0.1");
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
这定义了主命令 `cam` 的基本信息。
|
|
42
|
+
|
|
43
|
+
- **注册 `init` 子命令**:
|
|
44
|
+
在 [src/cli.ts](file:///Users/bytedance/Desktop/work/CAM/fe-code-generator-CAM/src/cli.ts#L14-L45) 中,我们定义了 `init` 命令:
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
program
|
|
48
|
+
.command("init")
|
|
49
|
+
.description("Initialize a new configuration file")
|
|
50
|
+
.action(() => {
|
|
51
|
+
// ... 生成 cam.config.json 的逻辑
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
- `.command('init')`:监听 `cam init` 命令。
|
|
56
|
+
- `.action(...)`:定义了当用户执行该命令时要运行的具体函数。在这里,我们编写了创建 `cam.config.json` 文件的逻辑。
|
|
57
|
+
|
|
58
|
+
- **解析参数**:
|
|
59
|
+
```typescript
|
|
60
|
+
program.parse(process.argv);
|
|
61
|
+
```
|
|
62
|
+
这一行是程序的入口点,它会解析用户传入的命令行参数(`process.argv`),并根据匹配到的命令(如 `init`)去调用相应的 `action` 回调函数。
|
|
63
|
+
|
|
64
|
+
**总结**
|
|
65
|
+
|
|
66
|
+
当用户执行 `cam init` 时,系统发生了以下交互:
|
|
67
|
+
|
|
68
|
+
1. 操作系统查找 PATH 中的 `cam` 命令。
|
|
69
|
+
2. 找到 `cam` 指向的 `dist/cli.js` 文件。
|
|
70
|
+
3. 通过 `node` 执行该文件。
|
|
71
|
+
4. `commander` 解析参数,发现用户输入了 `init`。
|
|
72
|
+
5. 触发 `init` 命令对应的 `action` 函数,在当前工作目录生成配置文件。
|
|
73
|
+
|
|
74
|
+
## 写好代码到发布 npm publish 的流程是什么?
|
|
75
|
+
|
|
76
|
+
从代码开发到发布 `npm publish` 的标准流程如下:
|
|
77
|
+
|
|
78
|
+
### 1. 完善代码与测试
|
|
79
|
+
|
|
80
|
+
确保您的功能开发完成,并且在本地测试通过(比如您刚才做的 `cam init` 测试)。
|
|
81
|
+
|
|
82
|
+
### 2. 自动化构建配置 (已帮您优化)
|
|
83
|
+
|
|
84
|
+
为了防止“忘记编译就发布”的情况,我已经帮您修改了 [package.json](file:///Users/bytedance/Desktop/work/CAM/fe-code-generator-CAM/package.json) 增加了两个关键配置:
|
|
85
|
+
|
|
86
|
+
- **`"prepublishOnly": "npm run build"`**: 这是一个 npm 生命周期钩子。当您运行 `npm publish` 时,它会**自动先执行** `npm run build`。如果构建失败,发布过程会立刻终止。这保证了您发布的一定是最新编译的代码。
|
|
87
|
+
- **`"files": ["dist"]`**: 告诉 npm 只上传 `dist` 目录下的文件(以及默认的 package.json, README 等)。这样可以避免将 `src` 源码或其他杂文件上传到 npm,减小包体积。
|
|
88
|
+
|
|
89
|
+
### 3. 更新版本号
|
|
90
|
+
|
|
91
|
+
每次发布都需要一个新的版本号。您可以使用 `npm version` 命令来自动管理:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
npm version patch # 补丁更新 (0.0.1 -> 0.0.2) - 用于 bug 修复
|
|
95
|
+
npm version minor # 次版本更新 (0.0.1 -> 0.1.0) - 用于新功能
|
|
96
|
+
npm version major # 主版本更新 (0.0.1 -> 1.0.0) - 用于破坏性变更
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
_这个命令会自动修改 package.json 中的 version 字段,并创建一个 git commit 和 tag(如果是一个 git 仓库)。_
|
|
100
|
+
|
|
101
|
+
### 4. 登录 NPM
|
|
102
|
+
|
|
103
|
+
如果您还没有登录过 npm,需要执行一次:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
npm login
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
按提示输入用户名、密码和邮箱。
|
|
110
|
+
|
|
111
|
+
### 5. 发布
|
|
112
|
+
|
|
113
|
+
最后,在项目根目录下执行:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
npm publish
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
由于您的 `package.json` 中已经配置了 `"publishConfig": { "access": "public" }`,包将会被公开推送到 npm 仓库。
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### 总结流程图
|
|
124
|
+
|
|
125
|
+
1. **开发** (`Coding`)
|
|
126
|
+
2. **提交代码** (`git commit`)
|
|
127
|
+
3. **升级版本** (`npm version patch`)
|
|
128
|
+
4. **发布** (`npm publish`)
|
|
129
|
+
- -> 自动触发 `prepublishOnly` (`npm run build`)
|
|
130
|
+
- -> 编译 TS 到 `dist/`
|
|
131
|
+
- -> 上传包到 npm
|
|
132
|
+
|
|
133
|
+
## 开发过程如何调试?
|
|
134
|
+
|
|
135
|
+
在本地开发 CLI 工具时,有三种常用的测试方法。推荐使用 **方案二 (`npm link`)**,因为它最能模拟真实用户的使用场景。
|
|
136
|
+
|
|
137
|
+
### 方案一:直接执行(最简单,适合快速调试)
|
|
138
|
+
|
|
139
|
+
不需要任何配置,直接编译后用 node 运行生成的文件。
|
|
140
|
+
|
|
141
|
+
1. **编译代码**:
|
|
142
|
+
```bash
|
|
143
|
+
npm run build
|
|
144
|
+
```
|
|
145
|
+
2. **执行命令**:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# 在项目根目录下测试
|
|
149
|
+
node dist/cli.js init
|
|
150
|
+
|
|
151
|
+
# 或者去其他目录测试
|
|
152
|
+
cd ../some-test-dir
|
|
153
|
+
node /path/to/your/project/dist/cli.js init
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
### 方案二:npm link(推荐,模拟真实安装)
|
|
159
|
+
|
|
160
|
+
`npm link` 会把您的本地包“软链接”到全局 npm 目录中。这样您就可以像已经安装了该包一样,在终端的任何位置直接使用 `cam` 命令。
|
|
161
|
+
|
|
162
|
+
1. **构建项目**:
|
|
163
|
+
```bash
|
|
164
|
+
npm run build
|
|
165
|
+
```
|
|
166
|
+
2. **创建链接**(在项目根目录 `fe-code-generator-CAM` 下执行):
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
npm link
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
_这会读取 `package.json` 中的 `bin` 配置,把 `cam` 命令注册到系统全局。_
|
|
173
|
+
|
|
174
|
+
3. **验证使用**(在任意目录):
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
mkdir ~/Desktop/test-cam
|
|
178
|
+
cd ~/Desktop/test-cam
|
|
179
|
+
cam init # 直接使用 cam 命令!
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
4. **取消链接**(测试完后):
|
|
183
|
+
```bash
|
|
184
|
+
# 在项目根目录下执行
|
|
185
|
+
npm unlink
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
### 方案三:使用 ts-node(开发效率最高)
|
|
191
|
+
|
|
192
|
+
如果您不想每次修改代码都运行 `npm run build`,可以安装 `ts-node` 直接运行 TS 代码。
|
|
193
|
+
|
|
194
|
+
1. **安装依赖**:
|
|
195
|
+
```bash
|
|
196
|
+
npm install -D ts-node
|
|
197
|
+
```
|
|
198
|
+
2. **直接运行源码**:
|
|
199
|
+
```bash
|
|
200
|
+
# 直接运行 ts 文件,省去编译步骤
|
|
201
|
+
npx ts-node src/cli.ts init
|
|
202
|
+
```
|
|
203
|
+
_注意:这种方式适合开发逻辑调试,但发布前务必还是用方案二验证一下编译后的产物是否正常。_
|
|
204
|
+
|
|
205
|
+
### 总结
|
|
206
|
+
|
|
207
|
+
- **开发逻辑时**:用 **方案三** 或 **方案一**。
|
|
208
|
+
- **发布前验证**:务必用 **方案二**,确保 `package.json` 的 `bin` 配置和 `dist` 产物都没有问题。
|
|
209
|
+
|
|
210
|
+
## cam 登录过程:在 cli 中输入用户名和密码,发请求返回一个 token。token 保存在哪里?每次进行 cli 操作时怎么鉴权?
|
|
211
|
+
|
|
212
|
+
在 CLI 工具中,由于没有浏览器的自动 Cookie 管理,我们通常使用**本地配置文件**来持久化 Token。
|
|
213
|
+
|
|
214
|
+
以下是为您实现的完整方案:
|
|
215
|
+
|
|
216
|
+
### 1. 存储位置:`~/.camrc`
|
|
217
|
+
|
|
218
|
+
Token 会保存在用户主目录下的 `.camrc` 文件中。这是一个隐藏文件,类似于 `.npmrc` 或 `.gitconfig`。
|
|
219
|
+
|
|
220
|
+
### 2. 核心组件实现
|
|
221
|
+
|
|
222
|
+
- **[TokenManager](file:///Users/bytedance/Desktop/work/CAM/fe-code-generator-CAM/src/utils/token-manager.ts)**:专门负责读写 Token。
|
|
223
|
+
- 使用 `os.homedir()` 获取用户主目录。
|
|
224
|
+
- 写入时设置权限为 `0o600`(仅当前用户可读写),提高安全性。
|
|
225
|
+
- **[cam login 命令](file:///Users/bytedance/Desktop/work/CAM/fe-code-generator-CAM/src/cli/login.ts)**:
|
|
226
|
+
- 使用 `inquirer` 提供交互式输入界面(输入密码时会显示 `*`)。
|
|
227
|
+
- 登录成功后,通过 `TokenManager` 将 Token 写入本地。
|
|
228
|
+
|
|
229
|
+
### 3. 如何在后续操作中鉴权?
|
|
230
|
+
|
|
231
|
+
当您需要发送需要授权的请求时,只需调用 `TokenManager.getToken()` 即可。
|
|
232
|
+
|
|
233
|
+
**示例逻辑:**
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
import { TokenManager } from "../utils/token-manager";
|
|
237
|
+
import axios from "axios";
|
|
238
|
+
|
|
239
|
+
async function fetchData() {
|
|
240
|
+
const tokenManager = new TokenManager();
|
|
241
|
+
const token = tokenManager.getToken();
|
|
242
|
+
|
|
243
|
+
if (!token) {
|
|
244
|
+
console.error("请先运行 cam login 进行登录");
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
const response = await axios.get("https://your-api.com/data", {
|
|
249
|
+
headers: {
|
|
250
|
+
Authorization: `Bearer ${token}`, // 在请求头中携带 Token
|
|
251
|
+
},
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### 4. 本地测试
|
|
257
|
+
|
|
258
|
+
我已经完成了代码编写和编译,您可以直接在终端尝试:
|
|
259
|
+
|
|
260
|
+
1. 运行登录命令:
|
|
261
|
+
```bash
|
|
262
|
+
cam login
|
|
263
|
+
```
|
|
264
|
+
2. 按照提示输入用户名和密码。
|
|
265
|
+
3. 验证文件是否生成:
|
|
266
|
+
```bash
|
|
267
|
+
cat ~/.camrc
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
这样,您的 CLI 工具就拥有了持久化的身份认证能力!如果您后续需要对接真实的 API,只需在 [login.ts](file:///Users/bytedance/Desktop/work/CAM/fe-code-generator-CAM/src/cli/login.ts) 中将 mock 逻辑替换为真实的 `axios.post` 请求即可。
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AxiosInstance, AxiosRequestConfig } from "axios";
|
|
2
|
+
export declare const http: AxiosInstance;
|
|
3
|
+
export declare const api: {
|
|
4
|
+
get: <T = unknown>(url: string, params?: Record<string, unknown>, config?: AxiosRequestConfig) => Promise<T>;
|
|
5
|
+
post: <T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig) => Promise<T>;
|
|
6
|
+
put: <T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig) => Promise<T>;
|
|
7
|
+
del: <T = unknown>(url: string, config?: AxiosRequestConfig) => Promise<T>;
|
|
8
|
+
patch: <T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig) => Promise<T>;
|
|
9
|
+
};
|
|
10
|
+
export type { AxiosRequestConfig };
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,aAAa,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAU3E,eAAO,MAAM,IAAI,EAAE,aAMjB,CAAC;AAuEH,eAAO,MAAM,GAAG;UA5CG,CAAC,iBACX,MAAM,WACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WACvB,kBAAkB,KAC5B,OAAO,CAAC,CAAC,CAAC;WAKO,CAAC,iBACZ,MAAM,SACJ,OAAO,WACL,kBAAkB,KAC5B,OAAO,CAAC,CAAC,CAAC;UAKM,CAAC,iBACX,MAAM,SACJ,OAAO,WACL,kBAAkB,KAC5B,OAAO,CAAC,CAAC,CAAC;UAKM,CAAC,iBACX,MAAM,WACF,kBAAkB,KAC5B,OAAO,CAAC,CAAC,CAAC;YAKQ,CAAC,iBACb,MAAM,SACJ,OAAO,WACL,kBAAkB,KAC5B,OAAO,CAAC,CAAC,CAAC;CAWZ,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.api = exports.http = void 0;
|
|
37
|
+
const axios_1 = __importStar(require("axios"));
|
|
38
|
+
const token_manager_1 = require("../utils/token-manager");
|
|
39
|
+
const BASE_URL = "http://124.223.93.75:1024";
|
|
40
|
+
const getAccessToken = () => {
|
|
41
|
+
const tokenManager = token_manager_1.TokenManager.getInstance();
|
|
42
|
+
return tokenManager.getToken() || "";
|
|
43
|
+
};
|
|
44
|
+
exports.http = axios_1.default.create({
|
|
45
|
+
baseURL: BASE_URL,
|
|
46
|
+
timeout: 15000,
|
|
47
|
+
headers: {
|
|
48
|
+
"Content-Type": "application/json",
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
// 请求拦截器:自动附加 Bearer Token
|
|
52
|
+
exports.http.interceptors.request.use((config) => {
|
|
53
|
+
const token = getAccessToken();
|
|
54
|
+
if (token) {
|
|
55
|
+
const headers = axios_1.AxiosHeaders.from(config.headers);
|
|
56
|
+
headers.set("Authorization", `Bearer ${token}`);
|
|
57
|
+
config.headers = headers;
|
|
58
|
+
}
|
|
59
|
+
return config;
|
|
60
|
+
}, (error) => Promise.reject(error));
|
|
61
|
+
// 响应拦截器:统一错误格式
|
|
62
|
+
exports.http.interceptors.response.use((response) => response, (error) => {
|
|
63
|
+
const message = error.message || "Request error";
|
|
64
|
+
console.error("API Error:", message, error);
|
|
65
|
+
return Promise.reject(message);
|
|
66
|
+
});
|
|
67
|
+
// 封装常用请求方法(返回 data)
|
|
68
|
+
const get = async (url, params, config) => {
|
|
69
|
+
const res = await exports.http.get(url, { ...config, params });
|
|
70
|
+
return res.data;
|
|
71
|
+
};
|
|
72
|
+
const post = async (url, data, config) => {
|
|
73
|
+
const res = await exports.http.post(url, data, config);
|
|
74
|
+
return res.data;
|
|
75
|
+
};
|
|
76
|
+
const put = async (url, data, config) => {
|
|
77
|
+
const res = await exports.http.put(url, data, config);
|
|
78
|
+
return res.data;
|
|
79
|
+
};
|
|
80
|
+
const del = async (url, config) => {
|
|
81
|
+
const res = await exports.http.delete(url, config);
|
|
82
|
+
return res.data;
|
|
83
|
+
};
|
|
84
|
+
const patch = async (url, data, config) => {
|
|
85
|
+
const res = await exports.http.patch(url, data, config);
|
|
86
|
+
return res.data;
|
|
87
|
+
};
|
|
88
|
+
exports.api = {
|
|
89
|
+
get,
|
|
90
|
+
post,
|
|
91
|
+
put,
|
|
92
|
+
del,
|
|
93
|
+
patch,
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-service.d.ts","sourceRoot":"","sources":["../../src/cli/add-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CpC,eAAO,MAAM,yBAAyB,GAAI,SAAS,OAAO,SAOzD,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerAddServiceCommand = void 0;
|
|
4
|
+
const utils_1 = require("../utils/utils");
|
|
5
|
+
const code_generate_1 = require("../services/code-generate");
|
|
6
|
+
const addService = async (serviceIdentifier) => {
|
|
7
|
+
const parts = serviceIdentifier.split("@");
|
|
8
|
+
const nameAndUuid = parts[0];
|
|
9
|
+
const version = parts[1] || "latest";
|
|
10
|
+
if (!(0, utils_1.isValidVersion)(version)) {
|
|
11
|
+
console.error("Invalid version format. Version must be in the format x.y.z (where x, y, and z are non-negative integers).");
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
if (!nameAndUuid) {
|
|
15
|
+
console.error("Invalid format. Usage: cam add <service_name>:<service_uuid>@<version | latest>");
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
const [serviceName, serviceUuid] = nameAndUuid.split(":");
|
|
19
|
+
if (!serviceName || !serviceUuid) {
|
|
20
|
+
console.error("Invalid format. Usage: cam add <service_name>:<service_uuid>@<version | latest>");
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
if (!(0, utils_1.isValidFilename)(serviceName)) {
|
|
24
|
+
console.error(`Invalid service name: "${serviceName}". Service name must be a valid directory/file name.`);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
// todo: name要唯一
|
|
28
|
+
console.log(`Service Name: ${serviceName}`);
|
|
29
|
+
console.log(`Service UUID: ${serviceUuid}`);
|
|
30
|
+
console.log(`Version: ${version}`);
|
|
31
|
+
// 先获取service信息,若有权限再修改cam.config.json
|
|
32
|
+
await (0, code_generate_1.storeServiceInfo)(serviceName, serviceUuid, version);
|
|
33
|
+
};
|
|
34
|
+
const registerAddServiceCommand = (program) => {
|
|
35
|
+
program
|
|
36
|
+
.command("add <name:uuid@version>")
|
|
37
|
+
.description("Add a new service. Usage: cam add <service_name>:<service_uuid>@<version | latest>")
|
|
38
|
+
.action((0, utils_1.loginRequired)(addService));
|
|
39
|
+
};
|
|
40
|
+
exports.registerAddServiceCommand = registerAddServiceCommand;
|
|
41
|
+
//# sourceMappingURL=add-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-service.js","sourceRoot":"","sources":["../../src/cli/add-service.ts"],"names":[],"mappings":";;;AACA,0CAAgF;AAChF,6DAA6D;AAE7D,MAAM,UAAU,GAAG,KAAK,EAAE,iBAAyB,EAAE,EAAE;IACnD,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAErC,IAAI,CAAC,IAAA,sBAAc,EAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CACT,4GAA4G,CAC/G,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACT,iFAAiF,CACpF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CACT,iFAAiF,CACpF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,IAAA,uBAAe,EAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CACT,0BAA0B,WAAW,sDAAsD,CAC9F,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IAEnC,sCAAsC;IACtC,MAAM,IAAA,gCAAgB,EAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEK,MAAM,yBAAyB,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC1D,OAAO;SACF,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CACR,oFAAoF,CACvF;SACA,MAAM,CAAC,IAAA,qBAAa,EAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAPW,QAAA,yBAAyB,6BAOpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,eAAO,MAAM,yBAAyB,GAAI,SAAS,OAAO,SAKzD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerAddServiceCommand = void 0;
|
|
4
|
+
const utils_1 = require("../utils/utils");
|
|
5
|
+
const addService = async (serviceIdentifier) => {
|
|
6
|
+
const parts = serviceIdentifier.split("@");
|
|
7
|
+
const nameAndUuid = parts[0];
|
|
8
|
+
const version = parts[1] || "latest";
|
|
9
|
+
if (!nameAndUuid) {
|
|
10
|
+
console.error("Invalid format. Usage: cam add <service_name>:<service_uuid>@<version | latest>");
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
const [serviceName, serviceUuid] = nameAndUuid.split(":");
|
|
14
|
+
if (!serviceName || !serviceUuid) {
|
|
15
|
+
console.error("Invalid format. Usage: cam add <service_name>:<service_uuid>@<version | latest>");
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
console.log(`Service Name: ${serviceName}`);
|
|
19
|
+
console.log(`Service UUID: ${serviceUuid}`);
|
|
20
|
+
console.log(`Version: ${version}`);
|
|
21
|
+
};
|
|
22
|
+
const registerAddServiceCommand = (program) => {
|
|
23
|
+
program
|
|
24
|
+
.command("add <name:uuid@version>")
|
|
25
|
+
.description("Add a new service. Usage: cam add <service_name>:<service_uuid>@<version | latest>")
|
|
26
|
+
.action((0, utils_1.loginRequired)(addService));
|
|
27
|
+
};
|
|
28
|
+
exports.registerAddServiceCommand = registerAddServiceCommand;
|
|
29
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":";;;AACA,0CAA+C;AAE/C,MAAM,UAAU,GAAG,KAAK,EAAE,iBAAyB,EAAE,EAAE;IACnD,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAErC,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE1D,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,iBAAiB,WAAW,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AAEK,MAAM,yBAAyB,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC1D,OAAO;SACF,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CAAC,oFAAoF,CAAC;SACjG,MAAM,CAAC,IAAA,qBAAa,EAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AALW,QAAA,yBAAyB,6BAKpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const version_1 = require("../version");
|
|
6
|
+
const init_1 = require("./init");
|
|
7
|
+
const user_1 = require("./user");
|
|
8
|
+
const service_1 = require("./service");
|
|
9
|
+
const update_1 = require("./update");
|
|
10
|
+
const program = new commander_1.Command();
|
|
11
|
+
program
|
|
12
|
+
.name("cam")
|
|
13
|
+
.description("CAM frontend code generator CLI")
|
|
14
|
+
.version(version_1.VERSION);
|
|
15
|
+
(0, init_1.registerInitCommand)(program);
|
|
16
|
+
(0, user_1.registerLoginCommand)(program);
|
|
17
|
+
(0, user_1.registerLogoutCommand)(program);
|
|
18
|
+
(0, user_1.registerWhoamiCommand)(program);
|
|
19
|
+
(0, service_1.registerAddServiceCommand)(program);
|
|
20
|
+
(0, service_1.registerRemoveServiceCommand)(program);
|
|
21
|
+
(0, update_1.registerUpdateCommand)(program);
|
|
22
|
+
program.parse(process.argv);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,wCAAqC;AACrC,iCAA6C;AAC7C,iCAIgB;AAChB,uCAGmB;AACnB,qCAAiD;AAEjD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,iCAAiC,CAAC;KAC9C,OAAO,CAAC,iBAAO,CAAC,CAAC;AAEtB,IAAA,0BAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,2BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,4BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,4BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,mCAAyB,EAAC,OAAO,CAAC,CAAC;AACnC,IAAA,sCAA4B,EAAC,OAAO,CAAC,CAAC;AACtC,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,eAAO,MAAM,mBAAmB,GAAI,SAAS,OAAO,SAKnD,CAAC"}
|
package/dist/cli/init.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.registerInitCommand = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const init_1 = require("../templates/init");
|
|
40
|
+
const utils_1 = require("../utils/utils");
|
|
41
|
+
const init = async () => {
|
|
42
|
+
const targetPath = path.join(process.cwd(), init_1.CONFIG_FILE_NAME);
|
|
43
|
+
if (fs.existsSync(targetPath)) {
|
|
44
|
+
console.warn(`${init_1.CONFIG_FILE_NAME} already exists in the current directory.\n` +
|
|
45
|
+
"If you want to overwrite it, please delete the existing file.");
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
fs.writeFileSync(targetPath, init_1.CONFIG_FILE_CONTENT);
|
|
50
|
+
console.log(`Successfully initialized ${init_1.CONFIG_FILE_NAME}`);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error(`Failed to initialize ${init_1.CONFIG_FILE_NAME}:`, error);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const registerInitCommand = (program) => {
|
|
58
|
+
program
|
|
59
|
+
.command("init")
|
|
60
|
+
.description("Initialize a new configuration file")
|
|
61
|
+
.action((0, utils_1.loginRequired)(init));
|
|
62
|
+
};
|
|
63
|
+
exports.registerInitCommand = registerInitCommand;
|
|
64
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAyB;AACzB,2CAA6B;AAC7B,4CAA0E;AAC1E,0CAA+C;AAE/C,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACpB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAgB,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CACR,GAAG,uBAAgB,6CAA6C;YAC5D,+DAA+D,CACtE,CAAC;QACF,OAAO;IACX,CAAC;IACD,IAAI,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,0BAAmB,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,4BAA4B,uBAAgB,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,uBAAgB,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC;AAEK,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACpD,OAAO;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC;AALW,QAAA,mBAAmB,uBAK9B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
export declare const login: () => Promise<void>;
|
|
3
|
+
export declare const registerLoginCommand: (program: Command) => void;
|
|
4
|
+
export declare const registerLogoutCommand: (program: Command) => void;
|
|
5
|
+
export declare const registerWhoamiCommand: (program: Command) => void;
|
|
6
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,KAAK,qBAiDjB,CAAC;AA8BF,eAAO,MAAM,oBAAoB,GAAI,SAAS,OAAO,SAEpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,SAAS,OAAO,SAKrD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,SAAS,OAAO,SAKrD,CAAC"}
|