cloudcc-cli 2.2.9 → 2.3.1

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 (90) hide show
  1. package/.cloudcc-cache.json +4 -52
  2. package/.cursor/skills/cloudcc-cli-dev/BACKEND_CLASS.md +15 -1
  3. package/.cursor/skills/cloudcc-cli-dev/BACKEND_SCHEDULE.md +82 -8
  4. package/.cursor/skills/cloudcc-cli-dev/BACKEND_TRIGGER.md +13 -0
  5. package/.cursor/skills/cloudcc-cli-dev/CLI_CHEATSHEET.md +234 -77
  6. package/.cursor/skills/cloudcc-cli-dev/CUSTOM-SETTING-API.md +62 -0
  7. package/.cursor/skills/cloudcc-cli-dev/INSTALL_AND_BOOTSTRAP.md +9 -6
  8. package/.cursor/skills/cloudcc-cli-dev/OBJECTS_AND_FIELDS.md +99 -5
  9. package/.cursor/skills/cloudcc-cli-dev/REQUIREMENTS_BREAKDOWN.md +15 -0
  10. package/.cursor/skills/cloudcc-cli-dev/SKILL.md +29 -7
  11. package/.cursor/skills/cloudcc-cli-dev/STATIC-RESOURCE-API.md +60 -0
  12. package/.cursor/skills/cloudcc-cli-dev/VUE_CUSTOM_PAGE.md +216 -0
  13. package/.cursor/skills/cloudcc-cli-dev/docs//350/207/252/345/256/232/344/271/211/351/241/265/351/235/242.md +228 -0
  14. package/README.md +23 -1
  15. package/bin/index.js +7 -0
  16. package/package.json +2 -2
  17. package/src/application/delete.js +59 -0
  18. package/src/application/get.js +31 -5
  19. package/src/application/index.js +1 -0
  20. package/src/classes/delete.js +43 -0
  21. package/src/classes/detail.js +14 -7
  22. package/src/classes/index.js +7 -1
  23. package/src/customPage/create.js +139 -0
  24. package/src/customPage/delete.js +65 -0
  25. package/src/customPage/get.js +85 -0
  26. package/src/customPage/index.js +10 -0
  27. package/src/customSetting/create.js +27 -0
  28. package/src/customSetting/delete.js +26 -0
  29. package/src/customSetting/detail.js +24 -0
  30. package/src/customSetting/doc.js +196 -0
  31. package/src/customSetting/get.js +25 -0
  32. package/src/customSetting/index.js +11 -0
  33. package/src/fields/delete.js +52 -0
  34. package/src/fields/index.js +1 -0
  35. package/src/menu/create-page.js +16 -25
  36. package/src/menu/create.js +9 -3
  37. package/src/menu/delete.js +59 -0
  38. package/src/menu/get.js +56 -0
  39. package/src/menu/index.js +2 -0
  40. package/src/object/delete.js +51 -0
  41. package/src/object/index.js +1 -0
  42. package/src/plugin/detail.js +14 -6
  43. package/src/plugin/publish1.js +3 -3
  44. package/src/recordType/get.js +1 -1
  45. package/src/scheduleJob/delete.js +26 -0
  46. package/src/scheduleJob/detail.js +23 -0
  47. package/src/scheduleJob/get.js +26 -0
  48. package/src/scheduleJob/index.js +10 -0
  49. package/src/staticResource/count.js +25 -0
  50. package/src/staticResource/delete.js +26 -0
  51. package/src/staticResource/detail.js +24 -0
  52. package/src/staticResource/doc.js +106 -0
  53. package/src/staticResource/get.js +25 -0
  54. package/src/staticResource/index.js +12 -0
  55. package/src/timer/delete.js +43 -0
  56. package/src/timer/index.js +1 -0
  57. package/src/triggers/delete.js +46 -0
  58. package/src/triggers/index.js +1 -0
  59. package/test/application.cli.test.js +49 -8
  60. package/test/classes.cli.test.js +9 -3
  61. package/test/customSetting.cli.test.js +84 -0
  62. package/test/fields.cli.test.js +18 -3
  63. package/test/menu.cli.test.js +34 -4
  64. package/test/object.cli.test.js +17 -1
  65. package/test/scheduleJob.cli.test.js +52 -0
  66. package/test/staticResource.cli.test.js +78 -0
  67. package/test/timer.cli.test.js +8 -2
  68. package/test/trigger.cli.test.js +8 -2
  69. package/build/component-cc-test-001.common.js +0 -831
  70. package/build/component-cc-test-001.common.js.map +0 -1
  71. package/build/component-cc-test-001.css +0 -1
  72. package/build/component-cc-test-001.umd.js +0 -874
  73. package/build/component-cc-test-001.umd.js.map +0 -1
  74. package/build/component-cc-test-001.umd.min.js +0 -8
  75. package/build/component-cc-test-001.umd.min.js.map +0 -1
  76. package/build/demo.html +0 -1
  77. package/core.zip +0 -0
  78. package/plugins/cc-test-001/cc-test-001.vue +0 -32
  79. package/plugins/cc-test-001/components/HelloWorld.vue +0 -11
  80. package/plugins/cc-test-001/config.json +0 -6
  81. package/target/ccopenapi-0.0.4-classes.jar +0 -0
  82. package/target/ccopenapi-0.0.4.jar +0 -0
  83. package/target/maven-archiver/pom.properties +0 -3
  84. package/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +0 -20
  85. package/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +0 -19
  86. /package/{docs → .cursor/skills/cloudcc-cli-dev/docs}/CloudCC/350/207/252/345/256/232/344/271/211/347/273/204/344/273/266/344/275/277/347/224/250/350/257/264/346/230/216.md" +0 -0
  87. /package/{docs → .cursor/skills/cloudcc-cli-dev/docs}/cloudcc/345/256/232/346/227/266/344/275/234/344/270/232.md" +0 -0
  88. /package/{docs → .cursor/skills/cloudcc-cli-dev/docs}/cloudcc/345/256/232/346/227/266/347/261/273.md" +0 -0
  89. /package/{docs → .cursor/skills/cloudcc-cli-dev/docs}//350/207/252/345/256/232/344/271/211/347/261/273.md" +0 -0
  90. /package/{docs → .cursor/skills/cloudcc-cli-dev/docs}//350/247/246/345/217/221/345/231/250/347/261/273.md" +0 -0
@@ -0,0 +1,59 @@
1
+ const chalk = require("chalk");
2
+ const { postClass } = require("../../utils/http");
3
+ const { getPackageJson } = require("../../utils/config");
4
+
5
+ /**
6
+ * 删除自定义菜单(标签页)
7
+ * 用法:cc delete menu <projectPath> <tabId>
8
+ */
9
+ async function remove(argvs) {
10
+ try {
11
+ const projectPath = argvs[2] || process.cwd();
12
+ const tabId = argvs[3];
13
+
14
+ if (!tabId) {
15
+ console.error();
16
+ console.error(chalk.red("Error: 缺少菜单 ID"));
17
+ console.error(chalk.yellow("用法: cc delete menu <projectPath> <tabId>"));
18
+ console.error();
19
+ throw new Error("缺少必需参数: tabId");
20
+ }
21
+
22
+ const config = await getPackageJson(projectPath);
23
+ if (!config || !config.accessToken) {
24
+ console.error();
25
+ console.error(chalk.red("Error: 配置未找到或 accessToken 缺失"));
26
+ console.error();
27
+ throw new Error("配置未找到或 accessToken 缺失");
28
+ }
29
+
30
+ console.error();
31
+ console.error(chalk.green(`Deleting menu (${tabId}), please wait...`));
32
+ console.error();
33
+
34
+ const result = await postClass(
35
+ config.setupSvc + "/api/customTab/deleteTab",
36
+ { id: tabId },
37
+ config.accessToken
38
+ );
39
+
40
+ if (result && result.result) {
41
+ console.error();
42
+ console.error(chalk.green("Success! Menu deleted."));
43
+ console.error();
44
+ return result;
45
+ }
46
+
47
+ const msg = result && (result.returnInfo || result.message) ? (result.returnInfo || result.message) : "Unknown error";
48
+ console.error();
49
+ console.error(chalk.red("Error: " + msg));
50
+ console.error();
51
+ throw new Error("Delete Menu Failed: " + msg);
52
+ } catch (error) {
53
+ console.error();
54
+ console.error(chalk.red("菜单删除失败:"), error);
55
+ throw error;
56
+ }
57
+ }
58
+
59
+ module.exports = remove;
@@ -0,0 +1,56 @@
1
+ const { postClass } = require("../../utils/http");
2
+ const { getPackageJson } = require("../../utils/config");
3
+
4
+ /**
5
+ * 查询自定义菜单(标签页)列表
6
+ * 用法:cc get menu <projectPath> [encodedCondJson]
7
+ */
8
+ async function get(argvs, isMcp = false) {
9
+ const projectPath = argvs[2] || process.cwd();
10
+ const condArg = argvs[3];
11
+
12
+ let body = {};
13
+ if (condArg) {
14
+ try {
15
+ body = JSON.parse(decodeURI(condArg));
16
+ } catch (e) {
17
+ throw new Error("Get Menu Failed: encodedCondJson 解析失败,请传 encodeURI(JSON.stringify(...))");
18
+ }
19
+ }
20
+
21
+ const config = await getPackageJson(projectPath);
22
+ const res = await postClass(
23
+ config.setupSvc + "/api/customTab/queryTabList",
24
+ body,
25
+ config.accessToken
26
+ );
27
+
28
+ if (res && res.result) {
29
+ const data = res.data;
30
+ let rawList = [];
31
+ if (Array.isArray(data)) {
32
+ rawList = data;
33
+ } else if (data && Array.isArray(data.list)) {
34
+ rawList = data.list;
35
+ } else if (data && typeof data === "object") {
36
+ // 兼容 queryTabList 返回的分组结构:botlist/objectlist/objlist/pagelist/scriptlist...
37
+ rawList = Object.keys(data)
38
+ .filter((key) => /list$/i.test(key) && Array.isArray(data[key]))
39
+ .flatMap((key) =>
40
+ data[key].map((item) => ({
41
+ ...item,
42
+ __group: key
43
+ }))
44
+ );
45
+ }
46
+ if (!isMcp) {
47
+ console.log(JSON.stringify(rawList));
48
+ }
49
+ return rawList;
50
+ }
51
+
52
+ const msg = res && (res.returnInfo || res.message) ? (res.returnInfo || res.message) : "Unknown error";
53
+ throw new Error("Get Menu Failed: " + msg);
54
+ }
55
+
56
+ module.exports = get;
package/src/menu/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  const cc = {}
2
2
  cc.create = require("./create")
3
+ cc.delete = require("./delete")
4
+ cc.get = require("./get")
3
5
  function main(action, argvs) {
4
6
  cc[action](argvs)
5
7
  }
@@ -0,0 +1,51 @@
1
+ const chalk = require("chalk");
2
+ const { postClass } = require("../../utils/http");
3
+ const { getPackageJson } = require("../../utils/config");
4
+
5
+ /**
6
+ * 删除自定义对象
7
+ * 用法:cc delete object <projectPath> <objid>
8
+ */
9
+ async function remove(argvs) {
10
+ const projectPath = argvs[2] || process.cwd();
11
+ const objid = argvs[3];
12
+
13
+ if (!objid) {
14
+ console.error();
15
+ console.error(chalk.red("Error: objid is required"));
16
+ console.error(chalk.yellow("Usage: cc delete object <projectPath> <objid>"));
17
+ console.error();
18
+ return;
19
+ }
20
+
21
+ const config = await getPackageJson(projectPath);
22
+ if (!config || !config.accessToken) {
23
+ console.error();
24
+ console.error(chalk.red("Error: Configuration not found or accessToken is missing"));
25
+ console.error();
26
+ return;
27
+ }
28
+
29
+ console.error();
30
+ console.error(chalk.green(`Deleting custom object (${objid}), please wait...`));
31
+ console.error();
32
+
33
+ const res = await postClass(
34
+ config.setupSvc + "/api/customObject/deleteLogic",
35
+ { objid },
36
+ config.accessToken
37
+ );
38
+
39
+ if (res && res.result) {
40
+ console.error(chalk.green("Success! Custom object deleted."));
41
+ console.error();
42
+ return res;
43
+ }
44
+
45
+ const errMsg = res && (res.returnInfo || res.message) ? (res.returnInfo || res.message) : "Unknown error";
46
+ console.error(chalk.red(`Fail: ${errMsg}`));
47
+ console.error();
48
+ throw new Error("Delete Custom Object Failed: " + errMsg);
49
+ }
50
+
51
+ module.exports = remove;
@@ -1,6 +1,7 @@
1
1
  const cc = {}
2
2
  cc.get = require("./get")
3
3
  cc.create = require("./create")
4
+ cc.delete = require("./delete")
4
5
  function main(action, argvs) {
5
6
  cc[action](argvs)
6
7
  }
@@ -10,7 +10,14 @@ const BaseUrl = "https://developer.apis.cloudcc.cn";
10
10
  * - 如果提供了 pluginId,从线上查询
11
11
  * - 如果都没有,返回错误
12
12
  */
13
- async function detail(argvs) {
13
+ function outputResult(result, isMcp) {
14
+ if (!isMcp) {
15
+ console.log(JSON.stringify(result));
16
+ }
17
+ return result;
18
+ }
19
+
20
+ async function detail(argvs, isMcp = false) {
14
21
  const pluginName = argvs[2];
15
22
  const pluginId = argvs[3];
16
23
  const projectPath = argvs[4] || process.cwd();
@@ -30,7 +37,7 @@ async function detail(argvs) {
30
37
  const configContent = JSON.parse(fs.readFileSync(configPath, 'utf8'));
31
38
  const vueContent = fs.readFileSync(vueFilePath, 'utf8');
32
39
 
33
- return {
40
+ return outputResult({
34
41
  name: pluginName,
35
42
  component: configContent.component || `component-${pluginName}`,
36
43
  compName: configContent.compName || pluginName,
@@ -40,7 +47,7 @@ async function detail(argvs) {
40
47
  config: configContent,
41
48
  published: !!configContent.id,
42
49
  fromLocal: true
43
- };
50
+ }, isMcp);
44
51
  } catch (e) {
45
52
  throw new Error(`Failed to read plugin files: ${e.message}`);
46
53
  }
@@ -72,10 +79,11 @@ async function detail(argvs) {
72
79
  header
73
80
  );
74
81
  if (res && res.returnCode == 200 && res.data) {
75
- return {
76
- ...res.data,
82
+ const { compContentJs, compContentVue, ...safeData } = res.data;
83
+ return outputResult({
84
+ ...safeData,
77
85
  fromLocal: false
78
- };
86
+ }, isMcp);
79
87
  } else {
80
88
  throw new Error('Get Plugin Details Failed: ' + (res?.returnInfo || 'Unknown error'));
81
89
  }
@@ -108,9 +108,9 @@ class Builder {
108
108
 
109
109
  if (!data.style) {
110
110
  data.style = {
111
- unit: "px",
112
- width: 72,
113
- height: 38,
111
+ unit: "%",
112
+ width: 100,
113
+ height: 100,
114
114
  top: 0,
115
115
  left: 0,
116
116
  rotate: 0,
@@ -2,7 +2,7 @@ const { postClass } = require("../../utils/http")
2
2
  const { getPackageJson } = require("../../utils/config")
3
3
 
4
4
  async function get(path, prefix, isMcp = false) {
5
- let config = await getPackageJson();
5
+ let config = await getPackageJson(path || process.cwd());
6
6
  let res = await postClass(config.apiSvc + "/api/batch/getRecordType", { prefix: prefix }, config.accessToken)
7
7
  if (!isMcp) {
8
8
  console.log(JSON.stringify(res.data.recordTypeList))
@@ -0,0 +1,26 @@
1
+ const chalk = require("chalk");
2
+ const { getPackageJson } = require("../../utils/config");
3
+ const { postClass } = require("../../utils/http");
4
+
5
+ async function remove(jobId, projectPath = process.cwd()) {
6
+ if (!jobId) {
7
+ throw new Error("Delete Schedule Job Failed: job id is required");
8
+ }
9
+ const config = await getPackageJson(projectPath);
10
+ console.error();
11
+ console.error(chalk.green(`Deleting schedule job (${jobId}), please wait...`));
12
+ console.error();
13
+ const res = await postClass(
14
+ config.setupSvc + "/api/schedulAbleprg/delete",
15
+ { id: jobId },
16
+ config.accessToken
17
+ );
18
+ if (res && res.result) {
19
+ console.error(chalk.green("Success! Schedule job deleted."));
20
+ console.error();
21
+ return res;
22
+ }
23
+ throw new Error("Delete Schedule Job Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
24
+ }
25
+
26
+ module.exports = remove;
@@ -0,0 +1,23 @@
1
+ const { getPackageJson } = require("../../utils/config");
2
+ const { postClass } = require("../../utils/http");
3
+
4
+ async function detail(jobId, projectPath = process.cwd(), isMcp = false) {
5
+ if (!jobId) {
6
+ throw new Error("Schedule Job detail requires job id");
7
+ }
8
+ const config = await getPackageJson(projectPath);
9
+ const res = await postClass(
10
+ config.setupSvc + "/api/schedulAbleprg/edit",
11
+ { id: jobId },
12
+ config.accessToken
13
+ );
14
+ if (res && res.result) {
15
+ if (!isMcp) {
16
+ console.log(JSON.stringify(res.data || {}));
17
+ }
18
+ return res.data || {};
19
+ }
20
+ throw new Error("Get Schedule Job Detail Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
21
+ }
22
+
23
+ module.exports = detail;
@@ -0,0 +1,26 @@
1
+ const { getPackageJson } = require("../../utils/config");
2
+ const { postClass } = require("../../utils/http");
3
+
4
+ async function get(projectPath = process.cwd(), encodedCondJson, isMcp = false) {
5
+ let body = {};
6
+ if (encodedCondJson) {
7
+ body = JSON.parse(decodeURI(encodedCondJson));
8
+ }
9
+ const config = await getPackageJson(projectPath);
10
+ const res = await postClass(
11
+ config.setupSvc + "/api/schedulAbleprg/list",
12
+ body,
13
+ config.accessToken
14
+ );
15
+
16
+ if (res && res.result) {
17
+ const list = Array.isArray(res.data) ? res.data : [];
18
+ if (!isMcp) {
19
+ console.log(JSON.stringify(list));
20
+ }
21
+ return list;
22
+ }
23
+ throw new Error("Get Schedule Job Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
24
+ }
25
+
26
+ module.exports = get;
@@ -0,0 +1,10 @@
1
+ const cc = {};
2
+ cc.get = require("./get");
3
+ cc.detail = require("./detail");
4
+ cc.delete = require("./delete");
5
+
6
+ function main(action, argvs) {
7
+ cc[action](argvs[2], argvs[3]);
8
+ }
9
+
10
+ module.exports = main;
@@ -0,0 +1,25 @@
1
+ const { getPackageJson } = require("../../utils/config");
2
+ const { postClass } = require("../../utils/http");
3
+
4
+ async function count(projectPath = process.cwd(), encodedCondJson, isMcp = false) {
5
+ let body = {};
6
+ if (encodedCondJson) {
7
+ body = JSON.parse(decodeURI(encodedCondJson));
8
+ }
9
+ const config = await getPackageJson(projectPath);
10
+ const res = await postClass(
11
+ config.setupSvc + "/api/staticResource/countStaticResource",
12
+ body,
13
+ config.accessToken
14
+ );
15
+ if (res && res.result) {
16
+ const data = res.data || {};
17
+ if (!isMcp) {
18
+ console.log(JSON.stringify(data));
19
+ }
20
+ return data;
21
+ }
22
+ throw new Error("Count Static Resource Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
23
+ }
24
+
25
+ module.exports = count;
@@ -0,0 +1,26 @@
1
+ const chalk = require("chalk");
2
+ const { getPackageJson } = require("../../utils/config");
3
+ const { postClass } = require("../../utils/http");
4
+
5
+ async function remove(projectPath = process.cwd(), id) {
6
+ if (!id) {
7
+ throw new Error("Delete Static Resource Failed: id is required");
8
+ }
9
+ const config = await getPackageJson(projectPath);
10
+ console.error();
11
+ console.error(chalk.green(`Deleting static resource (${id}), please wait...`));
12
+ console.error();
13
+ const res = await postClass(
14
+ config.setupSvc + "/api/staticResource/deleteStaticResource",
15
+ { id },
16
+ config.accessToken
17
+ );
18
+ if (res && res.result) {
19
+ console.error(chalk.green("Success! Static resource deleted."));
20
+ console.error();
21
+ return res;
22
+ }
23
+ throw new Error("Delete Static Resource Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
24
+ }
25
+
26
+ module.exports = remove;
@@ -0,0 +1,24 @@
1
+ const { getPackageJson } = require("../../utils/config");
2
+ const { postClass } = require("../../utils/http");
3
+
4
+ async function detail(projectPath = process.cwd(), id, isMcp = false) {
5
+ if (!id) {
6
+ throw new Error("Static Resource detail requires id");
7
+ }
8
+ const config = await getPackageJson(projectPath);
9
+ const res = await postClass(
10
+ config.setupSvc + "/api/staticResource/detailStaticResource",
11
+ { id },
12
+ config.accessToken
13
+ );
14
+ if (res && res.result) {
15
+ const data = res.data || {};
16
+ if (!isMcp) {
17
+ console.log(JSON.stringify(data));
18
+ }
19
+ return data;
20
+ }
21
+ throw new Error("Get Static Resource Detail Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
22
+ }
23
+
24
+ module.exports = detail;
@@ -0,0 +1,106 @@
1
+ /**
2
+ * staticResource 文档统一入口(全量一次性输出)
3
+ */
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+
7
+ function generateFullMarkdownDoc() {
8
+ const lines = [
9
+ "# CloudCC 静态资源(Static Resource)操作指南",
10
+ "",
11
+ "直接查看:`cc doc staticResource`",
12
+ "",
13
+ "> 静态资源用于在平台侧保存并复用静态文件(如图片、JS、CSS、压缩包等)。",
14
+ "> 本文档包含页面操作要点 + 相关接口速查(附录自动引入)。",
15
+ "",
16
+ "---",
17
+ "",
18
+ "## 1. 常见操作流程",
19
+ "",
20
+ "### 1.1 查询列表",
21
+ "",
22
+ "- 在静态资源列表页查看已有资源",
23
+ "- 可按 `label`(标签/名称)筛选(部分页面当前固定传空)",
24
+ "",
25
+ "### 1.2 新建静态资源(上传)",
26
+ "",
27
+ "核心字段:",
28
+ "- `label`:标签/名称(必填)",
29
+ "- `file`:上传文件(新建必传)",
30
+ "- `name`:文件名(通常取上传文件名)",
31
+ "- `type`:文件后缀(通常从文件名提取)",
32
+ "- `desc`:描述(可选)",
33
+ "",
34
+ "### 1.3 编辑静态资源",
35
+ "",
36
+ "- 编辑时需要传 `id`",
37
+ "- 若不重新上传文件,`file` 通常传空字符串 `\"\"`(以接口契约为准)",
38
+ "",
39
+ "### 1.4 查看详情",
40
+ "",
41
+ "- 通过资源 `id` 打开查看弹窗/详情接口",
42
+ "",
43
+ "### 1.5 删除静态资源",
44
+ "",
45
+ "- 通过资源 `id` 删除",
46
+ "- 删除前建议确认是否被页面、脚本或组件引用",
47
+ "",
48
+ "### 1.6 上传前容量校验",
49
+ "",
50
+ "- 上传前可先调用容量统计接口,获取当前占用大小",
51
+ "- 前端通常据此判断总大小是否超限(常见阈值约 15MB,具体以产品为准)",
52
+ "",
53
+ "---",
54
+ "",
55
+ "## 2. 接口与动作映射",
56
+ "",
57
+ "- **列表**:`POST /staticResource/listStaticResource`",
58
+ "- **详情**:`POST /staticResource/detailStaticResource`(`id`)",
59
+ "- **新建/编辑**:`POST /staticResource/saveStaticResource`(`FormData`)",
60
+ "- **删除**:`POST /staticResource/deleteStaticResource`(`id`)",
61
+ "- **容量统计**:`POST /staticResource/countStaticResource`",
62
+ "",
63
+ "---",
64
+ "",
65
+ "## 3. Checklist",
66
+ "",
67
+ "- [ ] 上传前已通过容量统计确认大小不会超限",
68
+ "- [ ] `label` 清晰可检索,避免重复命名",
69
+ "- [ ] 编辑不换文件时,确认 `file` 参数是否应传空字符串",
70
+ "- [ ] 删除前确认没有被页面/脚本/组件引用",
71
+ "",
72
+ ];
73
+
74
+ const base = lines.join("\n");
75
+ const apiPath = path.join(__dirname, "..", "..", "cloudcc-cli-dev", "STATIC-RESOURCE-API.md");
76
+ let apiContent = "";
77
+ try {
78
+ apiContent = fs.readFileSync(apiPath, "utf8");
79
+ } catch (e) {
80
+ apiContent = `# 静态资源(Static Resource)接口文档\n\n(未找到文件:${apiPath})\n`;
81
+ }
82
+
83
+ return [
84
+ base,
85
+ "",
86
+ "---",
87
+ "",
88
+ "## 附录:静态资源接口速查",
89
+ "",
90
+ "> 来源:`cloudcc-cli-dev/STATIC-RESOURCE-API.md`",
91
+ "",
92
+ apiContent.trim(),
93
+ "",
94
+ ].join("\n");
95
+ }
96
+
97
+ function doc() {
98
+ const content = generateFullMarkdownDoc();
99
+ console.log(content);
100
+ return content;
101
+ }
102
+
103
+ doc.getEditGuide = doc;
104
+
105
+ module.exports = doc;
106
+
@@ -0,0 +1,25 @@
1
+ const { getPackageJson } = require("../../utils/config");
2
+ const { postClass } = require("../../utils/http");
3
+
4
+ async function get(projectPath = process.cwd(), encodedCondJson, isMcp = false) {
5
+ let body = {};
6
+ if (encodedCondJson) {
7
+ body = JSON.parse(decodeURI(encodedCondJson));
8
+ }
9
+ const config = await getPackageJson(projectPath);
10
+ const res = await postClass(
11
+ config.setupSvc + "/api/staticResource/listStaticResource",
12
+ body,
13
+ config.accessToken
14
+ );
15
+ if (res && res.result) {
16
+ const list = res?.data?.objList || res?.data?.list || [];
17
+ if (!isMcp) {
18
+ console.log(JSON.stringify(list));
19
+ }
20
+ return list;
21
+ }
22
+ throw new Error("Get Static Resource Failed: " + (res?.returnInfo || res?.message || "Unknown error"));
23
+ }
24
+
25
+ module.exports = get;
@@ -0,0 +1,12 @@
1
+ const cc = {};
2
+ cc.doc = require("./doc");
3
+ cc.get = require("./get");
4
+ cc.detail = require("./detail");
5
+ cc.delete = require("./delete");
6
+ cc.count = require("./count");
7
+ function StaticResource(action, argvs) {
8
+ cc[action](argvs[2], argvs[3]);
9
+ }
10
+
11
+ module.exports = StaticResource;
12
+
@@ -0,0 +1,43 @@
1
+ const fs = require("fs");
2
+ const path = require("path");
3
+ const chalk = require("chalk");
4
+ const { getPackageJson } = require("../../utils/config");
5
+ const { postClass } = require("../../utils/http");
6
+
7
+ async function remove(nameOrId, projectPath = process.cwd()) {
8
+ let scheduleId = nameOrId;
9
+ const schedulePath = path.join(projectPath, `schedule/${nameOrId}/`);
10
+ const configPath = path.join(schedulePath, "config.json");
11
+
12
+ if (fs.existsSync(configPath)) {
13
+ const configContent = JSON.parse(fs.readFileSync(configPath, "utf8"));
14
+ if (configContent.id) {
15
+ scheduleId = configContent.id;
16
+ }
17
+ }
18
+
19
+ if (!scheduleId) {
20
+ throw new Error("Delete Schedule Failed: schedule name or id is required");
21
+ }
22
+
23
+ const config = await getPackageJson(projectPath);
24
+ console.error();
25
+ console.error(chalk.green(`Deleting schedule (${scheduleId}), please wait...`));
26
+ console.error();
27
+
28
+ const res = await postClass(
29
+ config.setupSvc + "/api/ccPeak/delete",
30
+ { id: scheduleId },
31
+ config.accessToken
32
+ );
33
+
34
+ if (res && res.result) {
35
+ console.error(chalk.green("Success! Schedule deleted."));
36
+ console.error();
37
+ return res;
38
+ }
39
+ const msg = res && (res.returnInfo || res.message) ? (res.returnInfo || res.message) : "Unknown error";
40
+ throw new Error("Delete Schedule Failed: " + msg);
41
+ }
42
+
43
+ module.exports = remove;
@@ -5,6 +5,7 @@ cc.pull = require("./pull")
5
5
  cc.get = require("./get")
6
6
  cc.pullList = require("./pullList")
7
7
  cc.detail = require("./detail")
8
+ cc.delete = require("./delete")
8
9
  function Timer(action, argvs) {
9
10
  cc[action](argvs[2], argvs[3])
10
11
  }
@@ -0,0 +1,46 @@
1
+ const fs = require("fs");
2
+ const path = require("path");
3
+ const chalk = require("chalk");
4
+ const { getPackageJson } = require("../../utils/config");
5
+ const { postClass } = require("../../utils/http");
6
+
7
+ async function remove(argvs) {
8
+ const namePathOrId = argvs[2];
9
+ const projectPath = argvs[3] || process.cwd();
10
+
11
+ if (!namePathOrId) {
12
+ throw new Error("Delete Trigger Failed: trigger namePath or id is required");
13
+ }
14
+
15
+ let triggerId = namePathOrId;
16
+ const triggerPath = path.join(projectPath, `triggers/${namePathOrId}/`);
17
+ const configPath = path.join(triggerPath, "config.json");
18
+
19
+ if (fs.existsSync(configPath)) {
20
+ const configContent = JSON.parse(fs.readFileSync(configPath, "utf8"));
21
+ if (configContent.id) {
22
+ triggerId = configContent.id;
23
+ }
24
+ }
25
+
26
+ const config = await getPackageJson(projectPath);
27
+ console.error();
28
+ console.error(chalk.green(`Deleting trigger (${triggerId}), please wait...`));
29
+ console.error();
30
+
31
+ const res = await postClass(
32
+ config.setupSvc + "/api/triggerSetup/deleteTrigger",
33
+ { id: triggerId },
34
+ config.accessToken
35
+ );
36
+
37
+ if (res && res.result) {
38
+ console.error(chalk.green("Success! Trigger deleted."));
39
+ console.error();
40
+ return res;
41
+ }
42
+ const msg = res && (res.returnInfo || res.message) ? (res.returnInfo || res.message) : "Unknown error";
43
+ throw new Error("Delete Trigger Failed: " + msg);
44
+ }
45
+
46
+ module.exports = remove;