@nasl/cli 0.3.3 → 0.3.4

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.
@@ -0,0 +1,17 @@
1
+ import type { ServerOptions } from '../types/api';
2
+ export interface AppResult {
3
+ success: boolean;
4
+ appId?: string;
5
+ appURL?: string;
6
+ message?: string;
7
+ error?: string;
8
+ }
9
+ /**
10
+ * 创建应用(POST /nasl/app/create)
11
+ */
12
+ export declare function createApp(fullNaturalTS: string, options: ServerOptions, appName: string, packageName: string): Promise<AppResult>;
13
+ /**
14
+ * 更新应用(POST /nasl/app/update)
15
+ */
16
+ export declare function updateApp(fullNaturalTS: string, options: ServerOptions, appId: string): Promise<AppResult>;
17
+ //# sourceMappingURL=appApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appApi.d.ts","sourceRoot":"","sources":["../../src/apis/appApi.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAgBvI;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAehH"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createApp = createApp;
4
+ exports.updateApp = updateApp;
5
+ const createAxios_1 = require("./createAxios");
6
+ const openapi_1 = require("./openapi");
7
+ /**
8
+ * 创建应用(POST /nasl/app/create)
9
+ */
10
+ async function createApp(fullNaturalTS, options, appName, packageName) {
11
+ const axiosInstance = await (0, createAxios_1.createAxios)(options);
12
+ const res = await axiosInstance.post('/app/create', {
13
+ fullNaturalTS,
14
+ packageName,
15
+ appName,
16
+ ideVersion: options.ideVersion,
17
+ }, {
18
+ headers: { ...(0, openapi_1.buildNaslHeaders)(options), 'Content-Type': 'application/json' },
19
+ });
20
+ return res.data.result;
21
+ }
22
+ /**
23
+ * 更新应用(POST /nasl/app/update)
24
+ */
25
+ async function updateApp(fullNaturalTS, options, appId) {
26
+ const axiosInstance = await (0, createAxios_1.createAxios)(options);
27
+ const res = await axiosInstance.post('/app/update', {
28
+ fullNaturalTS,
29
+ appId,
30
+ ideVersion: options.ideVersion,
31
+ }, {
32
+ headers: { ...(0, openapi_1.buildNaslHeaders)(options), 'Content-Type': 'application/json' },
33
+ });
34
+ return res.data.result;
35
+ }
36
+ //# sourceMappingURL=appApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appApi.js","sourceRoot":"","sources":["../../src/apis/appApi.ts"],"names":[],"mappings":";;AAeA,8BAgBC;AAKD,8BAeC;AAnDD,+CAA4C;AAC5C,uCAA6C;AAW7C;;GAEG;AACI,KAAK,UAAU,SAAS,CAAC,aAAqB,EAAE,OAAsB,EAAE,OAAe,EAAE,WAAmB;IAC/G,MAAM,aAAa,GAAG,MAAM,IAAA,yBAAW,EAAC,OAAO,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAChC,aAAa,EACb;QACI,aAAa;QACb,WAAW;QACX,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,UAAU;KACjC,EACD;QACI,OAAO,EAAE,EAAE,GAAG,IAAA,0BAAgB,EAAC,OAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChF,CACJ,CAAC;IAEF,OAAO,GAAG,CAAC,IAAI,CAAC,MAAmB,CAAC;AACxC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,SAAS,CAAC,aAAqB,EAAE,OAAsB,EAAE,KAAa;IACxF,MAAM,aAAa,GAAG,MAAM,IAAA,yBAAW,EAAC,OAAO,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAChC,aAAa,EACb;QACI,aAAa;QACb,KAAK;QACL,UAAU,EAAE,OAAO,CAAC,UAAU;KACjC,EACD;QACI,OAAO,EAAE,EAAE,GAAG,IAAA,0BAAgB,EAAC,OAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChF,CACJ,CAAC;IAEF,OAAO,GAAG,CAAC,IAAI,CAAC,MAAmB,CAAC;AACxC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export * from './compileApi';
2
- export * from './createAppApi';
2
+ export * from './appApi';
3
3
  export * from './dependencyApi';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/apis/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/apis/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC"}
package/out/apis/index.js CHANGED
@@ -15,6 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./compileApi"), exports);
18
- __exportStar(require("./createAppApi"), exports);
18
+ __exportStar(require("./appApi"), exports);
19
19
  __exportStar(require("./dependencyApi"), exports);
20
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/apis/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,iDAA+B;AAC/B,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/apis/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,2CAAyB;AACzB,kDAAgC"}
package/out/bin/nasl.js CHANGED
@@ -1,38 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || (function () {
20
- var ownKeys = function(o) {
21
- ownKeys = Object.getOwnPropertyNames || function (o) {
22
- var ar = [];
23
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
- return ar;
25
- };
26
- return ownKeys(o);
27
- };
28
- return function (mod) {
29
- if (mod && mod.__esModule) return mod;
30
- var result = {};
31
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
- __setModuleDefault(result, mod);
33
- return result;
34
- };
35
- })();
36
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
37
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
38
5
  };
@@ -42,24 +9,7 @@ const commands_1 = require("../commands");
42
9
  const logger_1 = require("../utils/logger");
43
10
  const package_json_1 = __importDefault(require("../../package.json"));
44
11
  const dep_1 = require("../commands/dep");
45
- const readline = __importStar(require("readline"));
46
12
  const program = new commander_1.Command();
47
- /**
48
- * 使用 readline 询问用户确认
49
- */
50
- function askForConfirmation(question) {
51
- const rl = readline.createInterface({
52
- input: process.stdin,
53
- output: process.stdout,
54
- });
55
- return new Promise((resolve) => {
56
- rl.question(question, (answer) => {
57
- rl.close();
58
- const normalizedAnswer = answer.trim().toLowerCase();
59
- resolve(!normalizedAnswer || normalizedAnswer === 'y' || normalizedAnswer === 'yes' || normalizedAnswer === '是');
60
- });
61
- });
62
- }
63
13
  const entryDescription = `是相对于项目根目录的路径,支持 glob 模式(注意要用引号包裹),例如:
64
14
  - src/app.enums.Status.ts 支持具体文件
65
15
  - "src/app.enums.*.ts" 表示所有枚举
@@ -181,17 +131,6 @@ program
181
131
  .option('-q, --quiet', '不询问问题')
182
132
  .action(async (entry, options) => {
183
133
  try {
184
- // 如果不是 quiet 模式,询问用户确认
185
- if (!options?.quiet) {
186
- logger_1.defaultLogger.newLine();
187
- logger_1.defaultLogger.info('即将在 IDE 中创建新的应用,此操作将调用远程接口。');
188
- const confirmed = await askForConfirmation('请确认是否继续?(Y/n): ');
189
- if (!confirmed) {
190
- logger_1.defaultLogger.info('已取消操作');
191
- process.exit(0);
192
- }
193
- logger_1.defaultLogger.newLine();
194
- }
195
134
  await (0, commands_1.createAppInIde)(entry, options);
196
135
  }
197
136
  catch (error) {
@@ -199,6 +138,20 @@ program
199
138
  process.exit(1);
200
139
  }
201
140
  });
141
+ program
142
+ .command('update-app-in-ide <appId> [entry]')
143
+ .description('在 IDE 中更新已有应用')
144
+ .option('-v, --verbose', '显示详细信息,如依赖分析树')
145
+ .option('-q, --quiet', '不询问问题')
146
+ .action(async (appId, entry, options) => {
147
+ try {
148
+ await (0, commands_1.updateAppInIde)(appId, entry, options);
149
+ }
150
+ catch (error) {
151
+ logger_1.defaultLogger.error(`更新应用过程发生错误:${error.message}`);
152
+ process.exit(1);
153
+ }
154
+ });
202
155
  program
203
156
  .command('transform <transformType> [entry]')
204
157
  .description('转换文件格式\n transformType: files2full (将 src 文件组合成 fullNaturalTS), json2files (将 JSON 转换为文件), files2json (将 src 文件转换为 JSON), doc2full (将 plan markdown 文档组合成 fullNaturalTS)')
@@ -1 +1 @@
1
- {"version":3,"file":"nasl.js","sourceRoot":"","sources":["../../src/bin/nasl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nasl.js","sourceRoot":"","sources":["../../src/bin/nasl.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,3 @@
1
1
  import type { CommandOptions } from '../types';
2
- /**
3
- * 创建应用在 IDE 中
4
- */
5
2
  export declare function createAppInIde(entry?: string, options?: CommandOptions): Promise<void>;
6
3
  //# sourceMappingURL=createAppInIde.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createAppInIde.d.ts","sourceRoot":"","sources":["../../src/commands/createAppInIde.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAwB/C;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,iBAsE5E"}
1
+ {"version":3,"file":"createAppInIde.d.ts","sourceRoot":"","sources":["../../src/commands/createAppInIde.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,iBAwD5E"}
@@ -1,123 +1,56 @@
1
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
2
  Object.defineProperty(exports, "__esModule", { value: true });
39
3
  exports.createAppInIde = createAppInIde;
40
4
  const utils_1 = require("../utils");
41
5
  const apis_1 = require("../apis");
42
6
  const compose_1 = require("../services/compose");
43
7
  const resolve_1 = require("../services/resolve");
44
- const fs = __importStar(require("fs-extra"));
45
- const path = __importStar(require("path"));
46
8
  const config_1 = require("../utils/config");
47
- const dayjs_1 = __importDefault(require("dayjs"));
48
- /**
49
- * 获取 specs 下第1个文件夹的名字
50
- */
51
- function getFirstSpecFolderName(projectRoot) {
52
- const dirname = path.basename(projectRoot);
53
- const specsDir = path.join(projectRoot, 'specs');
54
- if (!fs.existsSync(specsDir))
55
- return dirname;
56
- const entries = fs.readdirSync(specsDir, { withFileTypes: true });
57
- const folders = entries
58
- .filter(entry => entry.isDirectory())
59
- .map(entry => entry.name);
60
- if (folders.length === 0)
61
- return dirname;
62
- return folders[0];
63
- }
64
- /**
65
- * 创建应用在 IDE 中
66
- */
9
+ const appName_1 = require("../utils/appName");
10
+ const prompt_1 = require("../utils/prompt");
67
11
  async function createAppInIde(entry, options) {
68
12
  const logger = options?.logger || utils_1.defaultLogger;
69
- logger.info('开始创建应用在 IDE 中...');
70
- // 收集需要处理的文件
71
- const { collectedFiles, config } = await (0, resolve_1.resolveNASLFiles)(entry, logger, false, options?.verbose);
72
- if (config.useOPENAPI) {
73
- logger.error('create-app-in-ide 暂不支持 useOPENAPI 模式');
74
- logger.exit(1);
13
+ // ── 扫描 ─────────────────────────────────────────────
14
+ const { collectedFiles, config, mergedDependencies } = await (0, resolve_1.resolveNASLFiles)(entry, logger, false, options?.verbose);
15
+ // ── 展示参数 ──────────────────────────────────────────
16
+ const { appName, packageName } = (0, appName_1.deriveAppNames)((0, config_1.getProjectRoot)());
17
+ logger.newLine();
18
+ logger.info(`应用名称: ${appName}`);
19
+ logger.info(`包名: ${packageName}`);
20
+ logger.info(`IDE 版本: ${config.ideVersion}`);
21
+ logger.info(`租户名称: ${config.tenantName || 'defaulttenant'}`);
22
+ // ── 确认 ──────────────────────────────────────────────
23
+ if (!options?.quiet) {
24
+ logger.newLine();
25
+ const confirmed = await (0, prompt_1.askForConfirmation)('即将在 IDE 中创建新的应用,请确认是否继续?(Y/n): ');
26
+ if (!confirmed) {
27
+ logger.info('已取消操作');
28
+ process.exit(0);
29
+ }
75
30
  }
76
- // 生成 fullNaturalTS
31
+ // ── 执行 ──────────────────────────────────────────────
77
32
  logger.newLine();
78
33
  logger.info('正在生成 NaturalTS 代码...');
79
- let fullNaturalTS = '';
34
+ let fullNaturalTS;
80
35
  try {
81
36
  fullNaturalTS = (0, compose_1.composeToString)(collectedFiles);
37
+ fullNaturalTS = (0, compose_1.prependDependencies)(fullNaturalTS, mergedDependencies);
82
38
  }
83
39
  catch (error) {
84
40
  logger.error(`生成 NaturalTS 代码失败: ${error.message}`);
85
41
  throw error;
86
42
  }
87
- // 获取 specs 下第1个文件夹
88
- const projectRoot = (0, config_1.getProjectRoot)();
89
- const firstSpecFolderName = getFirstSpecFolderName(projectRoot);
90
- const suffix = (0, dayjs_1.default)().format('MMDDHHmmss');
91
- let cleaned = firstSpecFolderName.replace(/[^a-zA-Z0-9]/g, '').replace(/^\d+/, '').slice(0, 12);
92
- if (!cleaned)
93
- cleaned = 'app';
94
- const appName = `${cleaned}_${suffix}`;
95
- const packageName = `${cleaned}${suffix}`;
96
- logger.info(`应用名称: ${appName}`);
97
- logger.info(`包名: ${packageName}`);
98
- logger.info(`IDE 版本: ${config.ideVersion}`);
99
- logger.info(`完整版本: ${config.ideVersion}.0`);
100
- // 调用创建应用 API
101
- logger.newLine();
102
43
  logger.info('正在调用创建应用服务...');
103
44
  try {
104
- const result = await (0, apis_1.createAppSyncApi)(fullNaturalTS, {
105
- packageName: packageName,
106
- appName: appName,
107
- serverBaseURL: config.serverBaseURL,
108
- ideVersion: config.ideVersion,
109
- });
45
+ const result = await (0, apis_1.createApp)(fullNaturalTS, config, appName, packageName);
110
46
  if (result.success) {
111
47
  logger.success('应用创建成功!');
112
- if (result.appURL) {
48
+ if (result.appURL)
113
49
  logger.info(`应用 URL: ${result.appURL}`);
114
- }
115
- if (result.appId) {
50
+ if (result.appId)
116
51
  logger.info(`应用 ID: ${result.appId}`);
117
- }
118
- if (result.message) {
52
+ if (result.message)
119
53
  logger.info(result.message);
120
- }
121
54
  }
122
55
  else {
123
56
  logger.error(`应用创建失败: ${result.error || '未知错误'}`);
@@ -1 +1 @@
1
- {"version":3,"file":"createAppInIde.js","sourceRoot":"","sources":["../../src/commands/createAppInIde.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createAppInIde.js","sourceRoot":"","sources":["../../src/commands/createAppInIde.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export * from './dep';
5
5
  export * from './dev';
6
6
  export * from './build';
7
7
  export * from './createAppInIde';
8
+ export * from './updateAppInIde';
8
9
  export * from './transform';
9
10
  export * from './install';
10
11
  export * from './docCheck';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -21,6 +21,7 @@ __exportStar(require("./dep"), exports);
21
21
  __exportStar(require("./dev"), exports);
22
22
  __exportStar(require("./build"), exports);
23
23
  __exportStar(require("./createAppInIde"), exports);
24
+ __exportStar(require("./updateAppInIde"), exports);
24
25
  __exportStar(require("./transform"), exports);
25
26
  __exportStar(require("./install"), exports);
26
27
  __exportStar(require("./docCheck"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,4CAA0B;AAC1B,0CAAwB;AACxB,wCAAsB;AACtB,wCAAsB;AACtB,0CAAwB;AACxB,mDAAiC;AACjC,8CAA4B;AAC5B,4CAA0B;AAC1B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,4CAA0B;AAC1B,0CAAwB;AACxB,wCAAsB;AACtB,wCAAsB;AACtB,0CAAwB;AACxB,mDAAiC;AACjC,mDAAiC;AACjC,8CAA4B;AAC5B,4CAA0B;AAC1B,6CAA2B"}
@@ -0,0 +1,3 @@
1
+ import type { CommandOptions } from '../types';
2
+ export declare function updateAppInIde(appId: string, entry?: string, options?: CommandOptions): Promise<void>;
3
+ //# sourceMappingURL=updateAppInIde.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateAppInIde.d.ts","sourceRoot":"","sources":["../../src/commands/updateAppInIde.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,iBAoD3F"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateAppInIde = updateAppInIde;
4
+ const utils_1 = require("../utils");
5
+ const apis_1 = require("../apis");
6
+ const compose_1 = require("../services/compose");
7
+ const resolve_1 = require("../services/resolve");
8
+ const prompt_1 = require("../utils/prompt");
9
+ async function updateAppInIde(appId, entry, options) {
10
+ const logger = options?.logger || utils_1.defaultLogger;
11
+ // ── 扫描 ─────────────────────────────────────────────
12
+ const { collectedFiles, config, mergedDependencies } = await (0, resolve_1.resolveNASLFiles)(entry, logger, false, options?.verbose);
13
+ // ── 展示参数 ──────────────────────────────────────────
14
+ logger.newLine();
15
+ logger.info(`应用 ID: ${appId}`);
16
+ logger.info(`IDE 版本: ${config.ideVersion}`);
17
+ logger.info(`租户名称: ${config.tenantName || 'defaulttenant'}`);
18
+ // ── 确认 ──────────────────────────────────────────────
19
+ if (!options?.quiet) {
20
+ logger.newLine();
21
+ const confirmed = await (0, prompt_1.askForConfirmation)(`即将更新应用 ${appId},请确认是否继续?(Y/n): `);
22
+ if (!confirmed) {
23
+ logger.info('已取消操作');
24
+ process.exit(0);
25
+ }
26
+ }
27
+ // ── 执行 ──────────────────────────────────────────────
28
+ logger.newLine();
29
+ logger.info('正在生成 NaturalTS 代码...');
30
+ let fullNaturalTS;
31
+ try {
32
+ fullNaturalTS = (0, compose_1.composeToString)(collectedFiles);
33
+ fullNaturalTS = (0, compose_1.prependDependencies)(fullNaturalTS, mergedDependencies);
34
+ }
35
+ catch (error) {
36
+ logger.error(`生成 NaturalTS 代码失败: ${error.message}`);
37
+ throw error;
38
+ }
39
+ logger.info('正在调用更新应用服务...');
40
+ try {
41
+ const result = await (0, apis_1.updateApp)(fullNaturalTS, config, appId);
42
+ if (result.success) {
43
+ logger.success('应用更新成功!');
44
+ if (result.appURL)
45
+ logger.info(`应用 URL: ${result.appURL}`);
46
+ if (result.message)
47
+ logger.info(result.message);
48
+ }
49
+ else {
50
+ logger.error(`应用更新失败: ${result.error || '未知错误'}`);
51
+ throw new Error(result.error || '应用更新失败');
52
+ }
53
+ }
54
+ catch (error) {
55
+ logger.error(`调用更新应用服务失败: ${error.message}`);
56
+ throw error;
57
+ }
58
+ }
59
+ //# sourceMappingURL=updateAppInIde.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateAppInIde.js","sourceRoot":"","sources":["../../src/commands/updateAppInIde.ts"],"names":[],"mappings":";;AAOA,wCAoDC;AA3DD,oCAAyC;AACzC,kCAAoC;AACpC,iDAA2E;AAC3E,iDAAuD;AACvD,4CAAqD;AAG9C,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,KAAc,EAAE,OAAwB;IACxF,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,qBAAa,CAAC;IAEhD,sDAAsD;IACtD,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,IAAA,0BAAgB,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAEtH,qDAAqD;IACrD,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,UAAU,IAAI,eAAe,EAAE,CAAC,CAAC;IAE7D,uDAAuD;IACvD,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAkB,EAAC,UAAU,KAAK,kBAAkB,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,uDAAuD;IACvD,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAEpC,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACD,aAAa,GAAG,IAAA,yBAAe,EAAC,cAAc,CAAC,CAAC;QAChD,aAAa,GAAG,IAAA,6BAAmB,EAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,sBAAuB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE7B,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAS,EAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAE7D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3D,IAAI,MAAM,CAAC,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,eAAgB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 从项目目录推导出合法的应用名称和包名
3
+ */
4
+ export declare function deriveAppNames(projectRoot: string): {
5
+ appName: string;
6
+ packageName: string;
7
+ };
8
+ //# sourceMappingURL=appName.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appName.d.ts","sourceRoot":"","sources":["../../src/utils/appName.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAW5F"}
@@ -0,0 +1,71 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.deriveAppNames = deriveAppNames;
40
+ const fs = __importStar(require("fs-extra"));
41
+ const path = __importStar(require("path"));
42
+ const dayjs_1 = __importDefault(require("dayjs"));
43
+ /**
44
+ * 从 specs/ 目录取第一个子文件夹名;若无则退回项目根目录名
45
+ */
46
+ function getSpecBaseName(projectRoot) {
47
+ const specsDir = path.join(projectRoot, 'specs');
48
+ if (fs.existsSync(specsDir)) {
49
+ const folders = fs.readdirSync(specsDir, { withFileTypes: true })
50
+ .filter(e => e.isDirectory())
51
+ .map(e => e.name);
52
+ if (folders.length > 0)
53
+ return folders[0];
54
+ }
55
+ return path.basename(projectRoot);
56
+ }
57
+ /**
58
+ * 从项目目录推导出合法的应用名称和包名
59
+ */
60
+ function deriveAppNames(projectRoot) {
61
+ const baseName = getSpecBaseName(projectRoot);
62
+ const suffix = (0, dayjs_1.default)().format('MMDDHHmmss');
63
+ let cleaned = baseName.replace(/[^a-zA-Z0-9]/g, '').replace(/^\d+/, '').slice(0, 12);
64
+ if (!cleaned)
65
+ cleaned = 'app';
66
+ return {
67
+ appName: `${cleaned}_${suffix}`,
68
+ packageName: `${cleaned}${suffix}`,
69
+ };
70
+ }
71
+ //# sourceMappingURL=appName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appName.js","sourceRoot":"","sources":["../../src/utils/appName.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,wCAWC;AAhCD,6CAA+B;AAC/B,2CAA6B;AAC7B,kDAA0B;AAE1B;;GAEG;AACH,SAAS,eAAe,CAAC,WAAmB;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,WAAmB;IAC9C,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAA,eAAK,GAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE5C,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,KAAK,CAAC;IAE9B,OAAO;QACH,OAAO,EAAE,GAAG,OAAO,IAAI,MAAM,EAAE;QAC/B,WAAW,EAAE,GAAG,OAAO,GAAG,MAAM,EAAE;KACrC,CAAC;AACN,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 使用 readline 询问用户确认
3
+ */
4
+ export declare function askForConfirmation(question: string): Promise<boolean>;
5
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAarE"}