@aiot-toolkit/aiotpack 2.0.1-alpha.12 → 2.0.1-alpha.13

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 (55) hide show
  1. package/lib/compiler/javascript/JavascriptCompiler.d.ts +1 -0
  2. package/lib/compiler/javascript/JavascriptCompiler.js +20 -16
  3. package/lib/compiler/javascript/JavascriptCompiler.js.map +1 -1
  4. package/lib/compiler/javascript/JavascriptDefaultCompileOption.d.ts +1 -0
  5. package/lib/compiler/javascript/JavascriptDefaultCompileOption.js +5 -0
  6. package/lib/compiler/javascript/JavascriptDefaultCompileOption.js.map +1 -1
  7. package/lib/compiler/javascript/vela/model/Package.js +2 -2
  8. package/lib/compiler/javascript/vela/model/Package.js.map +1 -1
  9. package/lib/compiler/javascript/vela/utils/Jsc.d.ts +1 -1
  10. package/lib/compiler/javascript/vela/utils/Jsc.js +4 -5
  11. package/lib/compiler/javascript/vela/utils/Jsc.js.map +1 -1
  12. package/lib/compiler/javascript/vela/utils/UxCompileUtil.js +2 -2
  13. package/lib/compiler/javascript/vela/utils/UxCompileUtil.js.map +1 -1
  14. package/lib/compiler/javascript/vela/utils/ZipUtil.js +4 -4
  15. package/lib/compiler/javascript/vela/utils/ZipUtil.js.map +1 -1
  16. package/lib/compiler/javascript/vela/utils/signature/SignUtil.js +14 -10
  17. package/lib/compiler/javascript/vela/utils/signature/SignUtil.js.map +1 -1
  18. package/lib/config/UxConfig.d.ts +3 -3
  19. package/lib/config/UxConfig.js +13 -2
  20. package/lib/config/UxConfig.js.map +1 -1
  21. package/lib/followWorks/xts/entryTemplate.d.ts +2 -2
  22. package/lib/followWorks/xts/entryTemplate.js +61 -42
  23. package/lib/followWorks/xts/entryTemplate.js.map +1 -1
  24. package/lib/followWorks/xts/generateRpk.js +1 -1
  25. package/lib/followWorks/xts/generateRpk.js.map +1 -1
  26. package/lib/followWorks/xts/ts2wasm.js +3 -12
  27. package/lib/followWorks/xts/ts2wasm.js.map +1 -1
  28. package/lib/loader/ux/JsLoader.d.ts +9 -0
  29. package/lib/loader/ux/JsLoader.js +38 -0
  30. package/lib/loader/ux/JsLoader.js.map +1 -0
  31. package/lib/loader/ux/PngLoader.js +4 -7
  32. package/lib/loader/ux/PngLoader.js.map +1 -1
  33. package/lib/loader/xts/XtsLoader.js +3 -7
  34. package/lib/loader/xts/XtsLoader.js.map +1 -1
  35. package/lib/preWorks/xts/preInstall.js +4 -10
  36. package/lib/preWorks/xts/preInstall.js.map +1 -1
  37. package/lib/utils/PreWorkUtils.js +9 -4
  38. package/lib/utils/PreWorkUtils.js.map +1 -1
  39. package/lib/utils/ux/ManifestSchema.d.ts +3 -0
  40. package/lib/utils/ux/ManifestSchema.js +209 -0
  41. package/lib/utils/ux/ManifestSchema.js.map +1 -0
  42. package/lib/utils/ux/UxFileUtils.d.ts +21 -4
  43. package/lib/utils/ux/UxFileUtils.js +74 -3
  44. package/lib/utils/ux/UxFileUtils.js.map +1 -1
  45. package/lib/utils/ux/UxFollowWorks.js +14 -2
  46. package/lib/utils/ux/UxFollowWorks.js.map +1 -1
  47. package/lib/utils/ux/UxLoaderUtils.d.ts +1 -1
  48. package/lib/utils/ux/UxLoaderUtils.js +3 -7
  49. package/lib/utils/ux/UxLoaderUtils.js.map +1 -1
  50. package/lib/utils/ux/UxPreWorks.d.ts +10 -0
  51. package/lib/utils/ux/UxPreWorks.js +33 -0
  52. package/lib/utils/ux/UxPreWorks.js.map +1 -0
  53. package/lib/utils/xts/XtsFollowWorks.js +3 -10
  54. package/lib/utils/xts/XtsFollowWorks.js.map +1 -1
  55. package/package.json +5 -5
@@ -2,6 +2,7 @@ import ICompileParam from '../interface/ICompileParam';
2
2
  import ICompiler from '../interface/ICompiler';
3
3
  import IJavascriptCompileOption from './interface/IJavascriptCompileOption';
4
4
  declare class JavascriptCompiler implements ICompiler {
5
+ readonly QUICKAPP_CONFIG = "quickapp.config.js";
5
6
  compile(param: IJavascriptCompileOption): Promise<void>;
6
7
  private createWebpackConfig;
7
8
  private getConfigurator;
@@ -12,25 +12,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const ColorConsole2_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole2"));
15
+ const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
16
+ const CommonUtil_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/utils/CommonUtil"));
16
17
  const path_1 = __importDefault(require("path"));
17
18
  const webpack_1 = require("webpack");
18
19
  const VelaWebpackConfigurator_1 = __importDefault(require("./vela/VelaWebpackConfigurator"));
19
20
  const UxCompileUtil_1 = __importDefault(require("./vela/utils/UxCompileUtil"));
20
21
  class JavascriptCompiler {
22
+ constructor() {
23
+ this.QUICKAPP_CONFIG = 'quickapp.config.js';
24
+ }
21
25
  compile(param) {
22
26
  return __awaiter(this, void 0, void 0, function* () {
23
27
  return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
24
28
  this.showEnvLog(param);
25
29
  yield this.clean(param);
26
30
  const config = this.createWebpackConfig(param);
27
- (0, webpack_1.webpack)(config, (error) => {
31
+ (0, webpack_1.webpack)(config, (error, stats) => {
28
32
  if (error) {
29
- reject(error);
33
+ reject([error]);
30
34
  }
31
35
  else {
32
- ColorConsole2_1.default.info(`webpack complete`);
33
- resolve();
36
+ const errors = stats === null || stats === void 0 ? void 0 : stats.toJson().errors;
37
+ if (errors && errors.length) {
38
+ reject(errors);
39
+ }
40
+ else {
41
+ resolve();
42
+ }
34
43
  }
35
44
  });
36
45
  }));
@@ -49,18 +58,14 @@ class JavascriptCompiler {
49
58
  }
50
59
  const { projectPath, mode, devtool, outputPath } = param;
51
60
  const buildPath = path_1.default.resolve(projectPath, outputPath);
52
- const result = {
53
- context: projectPath,
54
- mode,
55
- devtool,
56
- output: {
61
+ const quickAppConfig = CommonUtil_1.default.requireModule(path_1.default.join(param.projectPath, this.QUICKAPP_CONFIG));
62
+ const result = Object.assign(Object.assign({}, quickAppConfig === null || quickAppConfig === void 0 ? void 0 : quickAppConfig.webpack), { context: projectPath, mode,
63
+ devtool, output: {
57
64
  globalObject: 'window',
58
65
  filename: '[name].js',
59
66
  publicPath: './',
60
67
  path: buildPath
61
- },
62
- module: {},
63
- stats: {
68
+ }, module: {}, stats: {
64
69
  builtAt: false,
65
70
  entrypoints: false,
66
71
  children: false,
@@ -70,8 +75,7 @@ class JavascriptCompiler {
70
75
  modules: false,
71
76
  version: false,
72
77
  assets: false
73
- }
74
- };
78
+ } });
75
79
  if (configurator.createEntry) {
76
80
  result.entry = configurator.createEntry();
77
81
  }
@@ -94,7 +98,7 @@ class JavascriptCompiler {
94
98
  NODE_PLATFORM: param.platform,
95
99
  NODE_PHASE: param.mode
96
100
  };
97
- console.log(`Configuration environment:${JSON.stringify(env)}`);
101
+ ColorConsole_1.default.info(`Configuration environment:${JSON.stringify(env)}`);
98
102
  }
99
103
  clean(param) {
100
104
  return __awaiter(this, void 0, void 0, function* () {
@@ -1 +1 @@
1
- {"version":3,"sources":["compiler/javascript/JavascriptCompiler.ts"],"names":[],"mappings":"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","file":"JavascriptCompiler.js","sourcesContent":["import ColorConsole2 from '@aiot-toolkit/shared-utils/lib/ColorConsole2'\nimport path from 'path'\nimport { Configuration, webpack } from 'webpack'\nimport ICompileParam from '../interface/ICompileParam'\nimport ICompiler from '../interface/ICompiler'\nimport IJavascriptCompileOption from './interface/IJavascriptCompileOption'\nimport IWebpackConfigurator from './interface/IWebpackConfigurator'\nimport VelaWebpackConfigurator from './vela/VelaWebpackConfigurator'\nimport UxCompileUtil from './vela/utils/UxCompileUtil'\n\nclass JavascriptCompiler implements ICompiler {\n async compile(param: IJavascriptCompileOption): Promise<void> {\n return new Promise(async (resolve, reject) => {\n this.showEnvLog(param)\n await this.clean(param)\n const config = this.createWebpackConfig(param)\n webpack(config, (error) => {\n if (error) {\n reject(error)\n } else {\n ColorConsole2.info(`webpack complete`)\n resolve()\n }\n })\n })\n }\n\n private createWebpackConfig(param: IJavascriptCompileOption): Configuration {\n const configurator = this.getConfigurator()\n if (!configurator) {\n throw new Error(`This project is not supported`)\n }\n\n configurator.param = param\n // 如果configurator有 create 函数,直接返回\n // 否则,结合configurator生成默认配置,并使用\n if (configurator.create) {\n return configurator.create()\n }\n\n const { projectPath, mode, devtool, outputPath } = param\n const buildPath = path.resolve(projectPath, outputPath)\n\n const result: Configuration = {\n context: projectPath,\n mode,\n devtool,\n output: {\n globalObject: 'window',\n filename: '[name].js',\n publicPath: './',\n path: buildPath\n },\n module: {},\n stats: {\n builtAt: false,\n entrypoints: false,\n children: false,\n chunks: false,\n chunkModules: false,\n chunkOrigins: false,\n modules: false,\n version: false,\n assets: false\n }\n }\n\n if (configurator.createEntry) {\n result.entry = configurator.createEntry()\n }\n\n if (configurator.createRules && result.module) {\n result.module.rules = configurator.createRules()\n }\n\n if (configurator.createPlugins) {\n result.plugins = configurator.createPlugins()\n }\n\n if (configurator.hook) {\n configurator.hook(result)\n }\n\n return result\n }\n\n private getConfigurator(): IWebpackConfigurator {\n return new VelaWebpackConfigurator()\n }\n\n private showEnvLog(param: ICompileParam) {\n const env = {\n NODE_PLATFORM: param.platform,\n NODE_PHASE: param.mode\n }\n\n console.log(`Configuration environment:${JSON.stringify(env)}`)\n }\n\n async clean(param: ICompileParam & IJavascriptCompileOption): Promise<void> {\n const { outputPath, releasePath, projectPath } = param\n UxCompileUtil.clean([outputPath, releasePath].map((item) => path.resolve(projectPath, item)))\n }\n}\n\nexport default JavascriptCompiler\n"],"sourceRoot":"../../../src"}
1
+ {"version":3,"sources":["compiler/javascript/JavascriptCompiler.ts"],"names":[],"mappings":"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","file":"JavascriptCompiler.js","sourcesContent":["import ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport CommonUtil from '@aiot-toolkit/shared-utils/lib/utils/CommonUtil'\nimport path from 'path'\nimport { Configuration, webpack } from 'webpack'\nimport ICompileParam from '../interface/ICompileParam'\nimport ICompiler from '../interface/ICompiler'\nimport IJavascriptCompileOption from './interface/IJavascriptCompileOption'\nimport IWebpackConfigurator from './interface/IWebpackConfigurator'\nimport VelaWebpackConfigurator from './vela/VelaWebpackConfigurator'\nimport UxCompileUtil from './vela/utils/UxCompileUtil'\n\nclass JavascriptCompiler implements ICompiler {\n readonly QUICKAPP_CONFIG = 'quickapp.config.js'\n\n async compile(param: IJavascriptCompileOption): Promise<void> {\n return new Promise(async (resolve, reject) => {\n this.showEnvLog(param)\n await this.clean(param)\n const config = this.createWebpackConfig(param)\n webpack(config, (error, stats) => {\n if (error) {\n reject([error])\n } else {\n const errors = stats?.toJson().errors\n if (errors && errors.length) {\n reject(errors)\n } else {\n resolve()\n }\n }\n })\n })\n }\n\n private createWebpackConfig(param: IJavascriptCompileOption): Configuration {\n const configurator = this.getConfigurator()\n if (!configurator) {\n throw new Error(`This project is not supported`)\n }\n\n configurator.param = param\n // 如果configurator有 create 函数,直接返回\n // 否则,结合configurator生成默认配置,并使用\n if (configurator.create) {\n return configurator.create()\n }\n\n const { projectPath, mode, devtool, outputPath } = param\n const buildPath = path.resolve(projectPath, outputPath)\n const quickAppConfig = CommonUtil.requireModule(\n path.join(param.projectPath, this.QUICKAPP_CONFIG)\n )\n const result: Configuration = {\n ...quickAppConfig?.webpack,\n context: projectPath,\n mode,\n devtool,\n output: {\n globalObject: 'window',\n filename: '[name].js',\n publicPath: './',\n path: buildPath\n },\n module: {},\n stats: {\n builtAt: false,\n entrypoints: false,\n children: false,\n chunks: false,\n chunkModules: false,\n chunkOrigins: false,\n modules: false,\n version: false,\n assets: false\n }\n }\n\n if (configurator.createEntry) {\n result.entry = configurator.createEntry()\n }\n\n if (configurator.createRules && result.module) {\n result.module.rules = configurator.createRules()\n }\n\n if (configurator.createPlugins) {\n result.plugins = configurator.createPlugins()\n }\n\n if (configurator.hook) {\n configurator.hook(result)\n }\n\n return result\n }\n\n private getConfigurator(): IWebpackConfigurator {\n return new VelaWebpackConfigurator()\n }\n\n private showEnvLog(param: ICompileParam) {\n const env = {\n NODE_PLATFORM: param.platform,\n NODE_PHASE: param.mode\n }\n\n ColorConsole.info(`Configuration environment:${JSON.stringify(env)}`)\n }\n\n async clean(param: ICompileParam & IJavascriptCompileOption): Promise<void> {\n const { outputPath, releasePath, projectPath } = param\n UxCompileUtil.clean([outputPath, releasePath].map((item) => path.resolve(projectPath, item)))\n }\n}\n\nexport default JavascriptCompiler\n"],"sourceRoot":"../../../src"}
@@ -1,3 +1,4 @@
1
1
  import IJavascriptCompileOption from './interface/IJavascriptCompileOption';
2
2
  declare const JavascriptDefaultCompileOption: Partial<IJavascriptCompileOption>;
3
+ export declare function setServerPort(port: number): void;
3
4
  export default JavascriptDefaultCompileOption;
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.setServerPort = void 0;
6
7
  const os_1 = __importDefault(require("os"));
7
8
  const path_1 = __importDefault(require("path"));
8
9
  const clientRecordPath = path_1.default.join(os_1.default.homedir(), 'hap-toolkit-client-records.json');
@@ -16,6 +17,10 @@ const JavascriptDefaultCompileOption = {
16
17
  clientRecordPath,
17
18
  server: { port: 8000 }
18
19
  };
20
+ function setServerPort(port) {
21
+ JavascriptDefaultCompileOption.server.port = port;
22
+ }
23
+ exports.setServerPort = setServerPort;
19
24
  exports.default = JavascriptDefaultCompileOption;
20
25
 
21
26
  //# sourceMappingURL=JavascriptDefaultCompileOption.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["compiler/javascript/JavascriptDefaultCompileOption.ts"],"names":[],"mappings":";;;;;AAAA,4CAAmB;AACnB,gDAAuB;AAGvB,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,iCAAiC,CAAC,CAAA;AACnF,MAAM,8BAA8B,GAAsC;IACxE,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,eAAe;IAC7B,gBAAgB;IAChB,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CACvB,CAAA;AAED,kBAAe,8BAA8B,CAAA","file":"JavascriptDefaultCompileOption.js","sourcesContent":["import os from 'os'\nimport path from 'path'\nimport IJavascriptCompileOption from './interface/IJavascriptCompileOption'\n\nconst clientRecordPath = path.join(os.homedir(), 'hap-toolkit-client-records.json')\nconst JavascriptDefaultCompileOption: Partial<IJavascriptCompileOption> = {\n devtool: false,\n sourceRoot: './src',\n signRoot: './sign',\n releasePath: './dist',\n outputPath: './build',\n dataCoverage: './.nyc_output',\n clientRecordPath,\n server: { port: 8000 }\n}\n\nexport default JavascriptDefaultCompileOption\n"],"sourceRoot":"../../../src"}
1
+ {"version":3,"sources":["compiler/javascript/JavascriptDefaultCompileOption.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAmB;AACnB,gDAAuB;AAGvB,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,iCAAiC,CAAC,CAAA;AACnF,MAAM,8BAA8B,GAAsC;IACxE,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,eAAe;IAC7B,gBAAgB;IAChB,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CACvB,CAAA;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,8BAA8B,CAAC,MAAQ,CAAC,IAAI,GAAG,IAAI,CAAA;AACrD,CAAC;AAFD,sCAEC;AAED,kBAAe,8BAA8B,CAAA","file":"JavascriptDefaultCompileOption.js","sourcesContent":["import os from 'os'\nimport path from 'path'\nimport IJavascriptCompileOption from './interface/IJavascriptCompileOption'\n\nconst clientRecordPath = path.join(os.homedir(), 'hap-toolkit-client-records.json')\nconst JavascriptDefaultCompileOption: Partial<IJavascriptCompileOption> = {\n devtool: false,\n sourceRoot: './src',\n signRoot: './sign',\n releasePath: './dist',\n outputPath: './build',\n dataCoverage: './.nyc_output',\n clientRecordPath,\n server: { port: 8000 }\n}\n\nexport function setServerPort(port: number) {\n JavascriptDefaultCompileOption.server!!.port = port\n}\n\nexport default JavascriptDefaultCompileOption\n"],"sourceRoot":"../../../src"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const ColorConsole2_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole2"));
6
+ const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
7
7
  /**
8
8
  * 定义文件包
9
9
  *
@@ -38,7 +38,7 @@ class Package {
38
38
  addResource(data) {
39
39
  const { fileBuildPath } = data;
40
40
  if (this.include(fileBuildPath)) {
41
- ColorConsole2_1.default.throw(`File ${fileBuildPath} is added repeatedly`);
41
+ ColorConsole_1.default.throw(`File ${fileBuildPath} is added repeatedly`);
42
42
  return;
43
43
  }
44
44
  this._resourceDic[fileBuildPath] = true;
@@ -1 +1 @@
1
- {"version":3,"sources":["compiler/javascript/vela/model/Package.ts"],"names":[],"mappings":";;;;;AAAA,iGAAwE;AAwBxE;;;;GAIG;AACH,MAAM,OAAO;IAoCX;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAID;;OAEG;IACH,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,IAAmB;QACpC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YAC/B,uBAAa,CAAC,KAAK,CAAC,QAAQ,aAAa,sBAAsB,CAAC,CAAA;YAChE,OAAM;SACP;QACD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAA;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,YAAY,IAAsB;QAjElC;;WAEG;QACH,eAAU,GAAY,KAAK,CAAA;QAoBnB,kBAAa,GAAoB,EAAE,CAAA;QASnC,iBAAY,GAAwB,EAAE,CAAA;QAkC5C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAEzB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC;aACjE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC/B,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;CACF;AACD,kBAAe,OAAO,CAAA","file":"Package.js","sourcesContent":["import ColorConsole2 from '@aiot-toolkit/shared-utils/lib/ColorConsole2'\nimport { Dictionary } from '@aiot-toolkit/shared-utils/lib/type/Type'\n\n/**\n * 文件资源\n */\nexport interface IFileResource {\n /**\n * 文件路径\n */\n fileBuildPath: string\n\n /**\n * 文件内容\n */\n fileContentBuffer: Buffer\n\n /**\n * 文件摘要\n * 文件内容生成的 hash 值\n */\n fileContentDigest?: Uint8Array\n}\n\n/**\n * 定义文件包\n *\n * 相当于虚拟的 rpk 包\n */\nclass Package {\n /**\n * 包前缀\n */\n filePrefix?: string\n\n /**\n * 子包名称;整包没有\n */\n fileSubname?: string\n\n /**\n * 是否为独立包\n */\n standalone: boolean = false\n\n /**\n * 后缀名\n */\n fileSuffix?: string\n\n icon?: string\n\n banner?: string\n\n comment?: string\n\n /**\n * 资源路径匹配\n */\n subMatch?: RegExp\n\n readonly fileName: string\n\n private _resourceList: IFileResource[] = []\n\n /**\n * 资源文件列表\n */\n public get resourceList(): IFileResource[] {\n return this._resourceList\n }\n\n private _resourceDic: Dictionary<boolean> = {}\n\n /**\n * 资源文件字典,以高效检查资源是否存在\n */\n public get resourceDic(): Dictionary<boolean> {\n return this._resourceDic\n }\n\n /**\n * 是否已包含指定文件\n * @param filePath 文件路径\n * @returns\n */\n public include(filePath: string) {\n return this.resourceDic[filePath]\n }\n\n /**\n * 添加资源\n * @param data\n * @returns\n */\n public addResource(data: IFileResource) {\n const { fileBuildPath } = data\n if (this.include(fileBuildPath)) {\n ColorConsole2.throw(`File ${fileBuildPath} is added repeatedly`)\n return\n }\n this._resourceDic[fileBuildPath] = true\n this._resourceList.push(data)\n }\n\n constructor(data: Partial<Package>) {\n Object.assign(this, data)\n\n this.fileName = [this.filePrefix, this.fileSubname, this.fileSuffix]\n .filter((item) => Boolean(item))\n .join('.')\n }\n}\nexport default Package\n"],"sourceRoot":"../../../../../src"}
1
+ {"version":3,"sources":["compiler/javascript/vela/model/Package.ts"],"names":[],"mappings":";;;;;AAAA,+FAAsE;AAwBtE;;;;GAIG;AACH,MAAM,OAAO;IAoCX;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAID;;OAEG;IACH,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,IAAmB;QACpC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YAC/B,sBAAY,CAAC,KAAK,CAAC,QAAQ,aAAa,sBAAsB,CAAC,CAAA;YAC/D,OAAM;SACP;QACD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAA;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,YAAY,IAAsB;QAjElC;;WAEG;QACH,eAAU,GAAY,KAAK,CAAA;QAoBnB,kBAAa,GAAoB,EAAE,CAAA;QASnC,iBAAY,GAAwB,EAAE,CAAA;QAkC5C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAEzB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC;aACjE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC/B,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;CACF;AACD,kBAAe,OAAO,CAAA","file":"Package.js","sourcesContent":["import ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport { Dictionary } from '@aiot-toolkit/shared-utils/lib/type/Type'\n\n/**\n * 文件资源\n */\nexport interface IFileResource {\n /**\n * 文件路径\n */\n fileBuildPath: string\n\n /**\n * 文件内容\n */\n fileContentBuffer: Buffer\n\n /**\n * 文件摘要\n * 文件内容生成的 hash 值\n */\n fileContentDigest?: Uint8Array\n}\n\n/**\n * 定义文件包\n *\n * 相当于虚拟的 rpk 包\n */\nclass Package {\n /**\n * 包前缀\n */\n filePrefix?: string\n\n /**\n * 子包名称;整包没有\n */\n fileSubname?: string\n\n /**\n * 是否为独立包\n */\n standalone: boolean = false\n\n /**\n * 后缀名\n */\n fileSuffix?: string\n\n icon?: string\n\n banner?: string\n\n comment?: string\n\n /**\n * 资源路径匹配\n */\n subMatch?: RegExp\n\n readonly fileName: string\n\n private _resourceList: IFileResource[] = []\n\n /**\n * 资源文件列表\n */\n public get resourceList(): IFileResource[] {\n return this._resourceList\n }\n\n private _resourceDic: Dictionary<boolean> = {}\n\n /**\n * 资源文件字典,以高效检查资源是否存在\n */\n public get resourceDic(): Dictionary<boolean> {\n return this._resourceDic\n }\n\n /**\n * 是否已包含指定文件\n * @param filePath 文件路径\n * @returns\n */\n public include(filePath: string) {\n return this.resourceDic[filePath]\n }\n\n /**\n * 添加资源\n * @param data\n * @returns\n */\n public addResource(data: IFileResource) {\n const { fileBuildPath } = data\n if (this.include(fileBuildPath)) {\n ColorConsole.throw(`File ${fileBuildPath} is added repeatedly`)\n return\n }\n this._resourceDic[fileBuildPath] = true\n this._resourceList.push(data)\n }\n\n constructor(data: Partial<Package>) {\n Object.assign(this, data)\n\n this.fileName = [this.filePrefix, this.fileSubname, this.fileSuffix]\n .filter((item) => Boolean(item))\n .join('.')\n }\n}\nexport default Package\n"],"sourceRoot":"../../../../../src"}
@@ -5,6 +5,6 @@ declare class Jsc {
5
5
  readonly projectPath: string;
6
6
  readonly buildPath: string;
7
7
  constructor(projectPath: string, buildPath: string);
8
- jsc(): Promise<string[]>;
8
+ jsc(): Promise<void | string[]>;
9
9
  }
10
10
  export default Jsc;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const ColorConsole2_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole2"));
6
+ const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
7
7
  const CommonUtil_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/utils/CommonUtil"));
8
8
  const del_1 = __importDefault(require("del"));
9
9
  /**
@@ -16,16 +16,15 @@ class Jsc {
16
16
  }
17
17
  jsc() {
18
18
  const { projectPath, buildPath } = this;
19
- return CommonUtil_1.default.requireModule(projectPath, `@aiot-toolkit/jsc`)
19
+ return CommonUtil_1.default.requireNodeModule(projectPath, `@aiot-toolkit/jsc`)
20
20
  .then((module) => {
21
21
  return module.default(buildPath);
22
22
  })
23
23
  .then(() => {
24
- return (0, del_1.default)(`${buildPath}/**/*.js`);
24
+ return (0, del_1.default)(`${buildPath}/**/*.js`, { force: true });
25
25
  })
26
26
  .catch((error) => {
27
- ColorConsole2_1.default.error(error.message);
28
- process.exit();
27
+ ColorConsole_1.default.throw(error.message);
29
28
  });
30
29
  }
31
30
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["compiler/javascript/vela/utils/Jsc.ts"],"names":[],"mappings":";;;;;AAAA,iGAAwE;AACxE,iGAAwE;AACxE,8CAAqB;AACrB;;GAEG;AACH,MAAM,GAAG;IACP,YACkB,WAAmB,EACnB,SAAiB;QADjB,gBAAW,GAAX,WAAW,CAAQ;QACnB,cAAS,GAAT,SAAS,CAAQ;IAChC,CAAC;IAEJ,GAAG;QACD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QACvC,OAAO,oBAAU,CAAC,aAAa,CAAC,WAAW,EAAE,mBAAmB,CAAC;aAC9D,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE;YACpB,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAClC,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACT,OAAO,IAAA,aAAG,EAAC,GAAG,SAAS,UAAU,CAAC,CAAA;QACpC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;YACtB,uBAAa,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAClC,OAAO,CAAC,IAAI,EAAE,CAAA;QAChB,CAAC,CAAC,CAAA;IACN,CAAC;CACF;AACD,kBAAe,GAAG,CAAA","file":"Jsc.js","sourcesContent":["import ColorConsole2 from '@aiot-toolkit/shared-utils/lib/ColorConsole2'\nimport CommonUtil from '@aiot-toolkit/shared-utils/lib/utils/CommonUtil'\nimport del from 'del'\n/**\n * Jsc\n */\nclass Jsc {\n constructor(\n public readonly projectPath: string,\n public readonly buildPath: string\n ) {}\n\n jsc() {\n const { projectPath, buildPath } = this\n return CommonUtil.requireModule(projectPath, `@aiot-toolkit/jsc`)\n .then((module: any) => {\n return module.default(buildPath)\n })\n .then(() => {\n return del(`${buildPath}/**/*.js`)\n })\n .catch((error: Error) => {\n ColorConsole2.error(error.message)\n process.exit()\n })\n }\n}\nexport default Jsc\n"],"sourceRoot":"../../../../../src"}
1
+ {"version":3,"sources":["compiler/javascript/vela/utils/Jsc.ts"],"names":[],"mappings":";;;;;AAAA,+FAAsE;AACtE,iGAAwE;AACxE,8CAAqB;AACrB;;GAEG;AACH,MAAM,GAAG;IACP,YACkB,WAAmB,EACnB,SAAiB;QADjB,gBAAW,GAAX,WAAW,CAAQ;QACnB,cAAS,GAAT,SAAS,CAAQ;IAChC,CAAC;IAEJ,GAAG;QACD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QACvC,OAAO,oBAAU,CAAC,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,CAAC;aAClE,IAAI,CAAC,CAAC,MAAW,EAAE,EAAE;YACpB,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAClC,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACT,OAAO,IAAA,aAAG,EAAC,GAAG,SAAS,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACrD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;YACtB,sBAAY,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;IACN,CAAC;CACF;AACD,kBAAe,GAAG,CAAA","file":"Jsc.js","sourcesContent":["import ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport CommonUtil from '@aiot-toolkit/shared-utils/lib/utils/CommonUtil'\nimport del from 'del'\n/**\n * Jsc\n */\nclass Jsc {\n constructor(\n public readonly projectPath: string,\n public readonly buildPath: string\n ) {}\n\n jsc() {\n const { projectPath, buildPath } = this\n return CommonUtil.requireNodeModule(projectPath, `@aiot-toolkit/jsc`)\n .then((module: any) => {\n return module.default(buildPath)\n })\n .then(() => {\n return del(`${buildPath}/**/*.js`, { force: true })\n })\n .catch((error: Error) => {\n ColorConsole.throw(error.message)\n })\n }\n}\nexport default Jsc\n"],"sourceRoot":"../../../../../src"}
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
6
7
  const fs_extra_1 = __importDefault(require("fs-extra"));
7
8
  const path_1 = __importDefault(require("path"));
8
9
  const EntryType_1 = __importDefault(require("../enum/EntryType"));
@@ -36,8 +37,7 @@ class UxCompileUtil {
36
37
  }
37
38
  const appFile = this.resolveFile(path_1.default.join(codeDir, 'app'));
38
39
  if (!fs_extra_1.default.existsSync(appFile)) {
39
- console.log(`app file does not exist`);
40
- process.exit(1);
40
+ ColorConsole_1.default.throw(`App file does not exist`);
41
41
  }
42
42
  const { pages = {}, widgets = {}, floatingWindows = {} } = router;
43
43
  const confsList = [
@@ -1 +1 @@
1
- {"version":3,"sources":["compiler/javascript/vela/utils/UxCompileUtil.ts"],"names":[],"mappings":"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","file":"UxCompileUtil.js","sourcesContent":["import { Dictionary } from '@aiot-toolkit/shared-utils/lib/type/Type'\nimport fs from 'fs-extra'\nimport path from 'path'\nimport EntryType from '../enum/EntryType'\n\nclass UxCompileUtil {\n // 摘要文件夹\n static readonly DIGEST_ZIP_DIR = 'META-INF'\n\n static clean(dirList: string[]) {\n if (!dirList) {\n return\n }\n\n dirList.forEach((item) => {\n if (fs.existsSync(item)) {\n if (fs.statSync(item).isFile()) {\n fs.unlinkSync(item)\n } else {\n fs.rmdirSync(item, { recursive: true })\n }\n }\n })\n }\n\n /**\n * 从项目配置文件中解析出入口文件\n * @param config 项目配置文件的内容,应为json对象\n * @param codeDir 源码目录\n * @param projectPath 项目目录\n * @returns {[入口名]:源文件路径}\n */\n static resolveEntries(config: any, codeDir: string, projectPath: string): Dictionary<string> {\n const { router } = config\n if (!router) {\n throw Error('No routing configured in manifest.json!')\n }\n\n const appFile = this.resolveFile(path.join(codeDir, 'app'))\n if (!fs.existsSync(appFile)) {\n console.log(`app file does not exist`)\n process.exit(1)\n }\n\n const { pages = {}, widgets = {}, floatingWindows = {} } = router\n const confsList = [\n {\n confs: pages,\n type: EntryType.PAGE\n },\n {\n confs: floatingWindows,\n type: EntryType.FLOAT\n },\n {\n confs: widgets,\n type: EntryType.CARD\n }\n ]\n\n // 1. 添加app\n const result: { [key: string]: any } = {\n app: `./${path.relative(projectPath, appFile)}?uxType=${EntryType.APP}`\n }\n\n // 2. 添加 route 配置的文件\n confsList.forEach((item) => {\n const { confs, type } = item\n Object.keys(confs).forEach((routePath) => {\n if (/^\\//.test(routePath)) {\n throw new Error(\n `Compilation failed: please confirm that '${routePath}' configured by router.pages in manifest.json is the directory name`\n )\n }\n const conf = confs[routePath]\n const entryKey = path.join(routePath, conf.component)\n const filePath = this.resolveFile(path.join(codeDir, entryKey))\n if (!filePath) {\n throw new Error(\n `Compilation failed: please confirm that the file path ${entryKey} configured in manifest.json exists`\n )\n }\n\n let sourceFile = `./${path.relative(projectPath, filePath)}?uxType=${type}`\n sourceFile = sourceFile.replace(/\\\\/g, '/')\n result[entryKey] = sourceFile\n })\n })\n\n // 3. 添加 workers\n const { workers } = config\n if (workers && workers.entries && Array.isArray(workers.entries)) {\n workers.entries\n .filter((worker: any) => worker.file)\n .forEach((worker: any) => {\n result[worker.file.replace(/\\.js$/, '')] = './src/' + worker.file\n })\n }\n\n // 4. 添加 services\n const { services } = config\n // 数组格式\n if (Array.isArray(services)) {\n services.forEach((item) => {\n const { name, path } = item\n if (name && path) {\n result['services/' + name] = './src/' + path + `?uxType=${EntryType.APP}`\n }\n })\n }\n // 字典格式\n else {\n for (const key in services) {\n if (Object.hasOwnProperty.call(services, key)) {\n result['services/' + key] = './src/' + services[key].path + `?uxType=${EntryType.APP}`\n }\n }\n }\n return result\n }\n\n /**\n * 通过无后缀的文件名路径获取存在的文件路径\n *\n * @example\n * const path = resolveFile('/project/a')\n * // path = '/project/a.ux'\n * @param filePath\n */\n static resolveFile(filePath: string) {\n const extensionList = this.getExtensionList()\n for (const item of extensionList) {\n const currentPath = `${filePath}${item}`\n if (fs.existsSync(currentPath)) {\n return currentPath\n }\n }\n return ''\n }\n\n /**\n * 获取ux文件支持的后缀列表\n * @param withDot\n * @returns\n */\n static getExtensionList(withDot = true) {\n const result = ['js']\n\n if (withDot) {\n return result.map((item) => `.${item}`)\n }\n\n return result\n }\n}\n\nexport default UxCompileUtil\n"],"sourceRoot":"../../../../../src"}
1
+ {"version":3,"sources":["compiler/javascript/vela/utils/UxCompileUtil.ts"],"names":[],"mappings":"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","file":"UxCompileUtil.js","sourcesContent":["import ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport { Dictionary } from '@aiot-toolkit/shared-utils/lib/type/Type'\nimport fs from 'fs-extra'\nimport path from 'path'\nimport EntryType from '../enum/EntryType'\n\nclass UxCompileUtil {\n // 摘要文件夹\n static readonly DIGEST_ZIP_DIR = 'META-INF'\n\n static clean(dirList: string[]) {\n if (!dirList) {\n return\n }\n\n dirList.forEach((item) => {\n if (fs.existsSync(item)) {\n if (fs.statSync(item).isFile()) {\n fs.unlinkSync(item)\n } else {\n fs.rmdirSync(item, { recursive: true })\n }\n }\n })\n }\n\n /**\n * 从项目配置文件中解析出入口文件\n * @param config 项目配置文件的内容,应为json对象\n * @param codeDir 源码目录\n * @param projectPath 项目目录\n * @returns {[入口名]:源文件路径}\n */\n static resolveEntries(config: any, codeDir: string, projectPath: string): Dictionary<string> {\n const { router } = config\n if (!router) {\n throw Error('No routing configured in manifest.json!')\n }\n\n const appFile = this.resolveFile(path.join(codeDir, 'app'))\n if (!fs.existsSync(appFile)) {\n ColorConsole.throw(`App file does not exist`)\n }\n\n const { pages = {}, widgets = {}, floatingWindows = {} } = router\n const confsList = [\n {\n confs: pages,\n type: EntryType.PAGE\n },\n {\n confs: floatingWindows,\n type: EntryType.FLOAT\n },\n {\n confs: widgets,\n type: EntryType.CARD\n }\n ]\n\n // 1. 添加app\n const result: { [key: string]: any } = {\n app: `./${path.relative(projectPath, appFile)}?uxType=${EntryType.APP}`\n }\n\n // 2. 添加 route 配置的文件\n confsList.forEach((item) => {\n const { confs, type } = item\n Object.keys(confs).forEach((routePath) => {\n if (/^\\//.test(routePath)) {\n throw new Error(\n `Compilation failed: please confirm that '${routePath}' configured by router.pages in manifest.json is the directory name`\n )\n }\n const conf = confs[routePath]\n const entryKey = path.join(routePath, conf.component)\n const filePath = this.resolveFile(path.join(codeDir, entryKey))\n if (!filePath) {\n throw new Error(\n `Compilation failed: please confirm that the file path ${entryKey} configured in manifest.json exists`\n )\n }\n\n let sourceFile = `./${path.relative(projectPath, filePath)}?uxType=${type}`\n sourceFile = sourceFile.replace(/\\\\/g, '/')\n result[entryKey] = sourceFile\n })\n })\n\n // 3. 添加 workers\n const { workers } = config\n if (workers && workers.entries && Array.isArray(workers.entries)) {\n workers.entries\n .filter((worker: any) => worker.file)\n .forEach((worker: any) => {\n result[worker.file.replace(/\\.js$/, '')] = './src/' + worker.file\n })\n }\n\n // 4. 添加 services\n const { services } = config\n // 数组格式\n if (Array.isArray(services)) {\n services.forEach((item) => {\n const { name, path } = item\n if (name && path) {\n result['services/' + name] = './src/' + path + `?uxType=${EntryType.APP}`\n }\n })\n }\n // 字典格式\n else {\n for (const key in services) {\n if (Object.hasOwnProperty.call(services, key)) {\n result['services/' + key] = './src/' + services[key].path + `?uxType=${EntryType.APP}`\n }\n }\n }\n return result\n }\n\n /**\n * 通过无后缀的文件名路径获取存在的文件路径\n *\n * @example\n * const path = resolveFile('/project/a')\n * // path = '/project/a.ux'\n * @param filePath\n */\n static resolveFile(filePath: string) {\n const extensionList = this.getExtensionList()\n for (const item of extensionList) {\n const currentPath = `${filePath}${item}`\n if (fs.existsSync(currentPath)) {\n return currentPath\n }\n }\n return ''\n }\n\n /**\n * 获取ux文件支持的后缀列表\n * @param withDot\n * @returns\n */\n static getExtensionList(withDot = true) {\n const result = ['js']\n\n if (withDot) {\n return result.map((item) => `.${item}`)\n }\n\n return result\n }\n}\n\nexport default UxCompileUtil\n"],"sourceRoot":"../../../../../src"}
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  var _a;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- const ColorConsole2_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole2"));
16
+ const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
17
17
  const CommonUtil_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/utils/CommonUtil"));
18
18
  const FileUtil_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/utils/FileUtil"));
19
19
  const fs_extra_1 = __importDefault(require("fs-extra"));
@@ -51,7 +51,7 @@ class ZipUtil {
51
51
  // 1
52
52
  const files = this.getSortedFiles(dist, param, config);
53
53
  if (!files.length) {
54
- ColorConsole2_1.default.error(`The build file is missing, stop generating the application package, please check carefully`);
54
+ ColorConsole_1.default.error(`The build file is missing, stop generating the application package, please check carefully`);
55
55
  return;
56
56
  }
57
57
  // 2
@@ -95,6 +95,7 @@ class ZipUtil {
95
95
  const { releasePath, projectPath } = param;
96
96
  const filePath = path_1.default.join(projectPath, releasePath, fileName);
97
97
  fs_extra_1.default.outputFileSync(filePath, buffer);
98
+ ColorConsole_1.default.success(`Project build and generate files:${fileName}`);
98
99
  });
99
100
  }
100
101
  static createZipBufferFromFileList(fileList, comment) {
@@ -239,8 +240,7 @@ class ZipUtil {
239
240
  // fullPackageBuffer
240
241
  const fullPackageBuffer = yield SignUtil_1.default.signZipBufferForPackage(fullPackage, privatekey, certificate);
241
242
  if (fullPackageBuffer === false) {
242
- // 报错
243
- console.error('【ZipUtil】error: fullpackage signature failed');
243
+ ColorConsole_1.default.throw('Fullpackage signature failed');
244
244
  }
245
245
  else {
246
246
  fullPackage = fullPackageBuffer;
@@ -1 +1 @@
1
- {"version":3,"sources":["compiler/javascript/vela/utils/ZipUtil.ts"],"names":[],"mappings":"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","file":"ZipUtil.js","sourcesContent":["import ColorConsole2 from '@aiot-toolkit/shared-utils/lib/ColorConsole2'\nimport { Dictionary } from '@aiot-toolkit/shared-utils/lib/type/Type'\nimport CommonUtil from '@aiot-toolkit/shared-utils/lib/utils/CommonUtil'\nimport FileUtil from '@aiot-toolkit/shared-utils/lib/utils/FileUtil'\nimport fs from 'fs-extra'\nimport JSZip from 'jszip'\nimport path from 'path'\nimport UxFileUtils from '../../../../utils/ux/UxFileUtils'\nimport CompileMode from '../../../enum/CompileMode'\nimport ISignConfig from '../../../interface/ISignConfig'\nimport IJavascriptCompileOption from '../../interface/IJavascriptCompileOption'\nimport BuildNameFormatType from '../enum/BuildNameFormatType'\nimport IManifest from '../interface/IManifest'\nimport Package, { IFileResource } from '../model/Package'\nimport UxCompileUtil from './UxCompileUtil'\nimport SignUtil from './signature/SignUtil'\n/**\n * Zip 用于将打包成功的 build 目录按特定规则压缩成 rpk\n *\n * @see ZipUtil.createRpk 打包的完整规则\n */\nclass ZipUtil {\n static readonly DIGEST_HASH_JSON = 'hash.json'\n\n // 摘要文件夹\n static readonly META_PATH = 'META-INF'\n\n // 文件摘要包(zip 文件)\n static readonly CERT_PATH = `${this.META_PATH}/CERT`\n\n // 打包信息文件\n static readonly BUILD_FILE_PATH = `${this.META_PATH}/build.txt`\n\n /**\n * zip压缩参数\n */\n static readonly ZIP_OPTION: JSZip.JSZipGeneratorOptions = {\n type: 'nodebuffer',\n compression: 'DEFLATE',\n compressionOptions: {\n level: 9\n }\n }\n\n /**\n * dist 目录生成 rpk\n * 1. 获取文件列表\n * 1. 过滤出需要的文件\n * 2. 按配置排序\n * 2. 生成文件流\n * 1. 每个文件生成加密串\n * 2. 生成元数据流\n * 3. 把元数据流和普通文件合并到一个流\n * 3. 写入到硬盘\n * @param dist\n * @param param\n * @returns\n */\n static async createRpk(dist: string, param: IJavascriptCompileOption) {\n const config = UxFileUtils.getMainfestInfo(param.projectPath, param.sourceRoot)\n\n // 1\n const files = this.getSortedFiles(dist, param, config)\n if (!files.length) {\n ColorConsole2.error(\n `The build file is missing, stop generating the application package, please check carefully`\n )\n return\n }\n\n // 2\n const { fullPackage } = await this.createPackagesDefinition(param, config, files)\n const zipBuffer = await this.packageToZipBuffer(fullPackage)\n\n // 生产出带签名的rpk文件buffer\n const signConfig = SignUtil.getProjectSignConfig(param)\n const { rpkBuffer } = await ZipUtil.buildProjectAndOutput(zipBuffer, signConfig)\n // IDE 扫码预览打包 todo\n // IDE 重置包名\n // 3\n this.generateDistFile(rpkBuffer, param, this.getFileName(param, config, 'rpk'))\n }\n\n private static getFileName(param: IJavascriptCompileOption, config: IManifest, ext: string) {\n const { mode, buildNameFormat } = param\n const { package: packageName } = config\n return [\n packageName,\n mode === CompileMode.DEVELOPMENT ? 'debug' : 'release',\n buildNameFormat === BuildNameFormatType.DEFAULT ? config.versionName : '',\n ext\n ]\n .filter(Boolean)\n .join('.')\n }\n\n private static async packageToZipBuffer(target: Package) {\n const { resourceList, comment } = target\n const packageFileList: { path: string; content: any }[] = resourceList.map((item) => {\n return {\n path: item.fileBuildPath,\n content: item.fileContentBuffer\n }\n })\n return await this.createZipBufferFromFileList(packageFileList, comment)\n }\n\n private static async generateDistFile(\n buffer: Buffer,\n param: IJavascriptCompileOption,\n fileName: string\n ) {\n const { releasePath, projectPath } = param\n const filePath = path.join(projectPath, releasePath, fileName)\n fs.outputFileSync(filePath, buffer)\n }\n\n static async createZipBufferFromFileList(\n fileList: { path: string; content: string | Buffer }[],\n comment?: string\n ): Promise<Buffer> {\n const zip = new JSZip()\n fileList.forEach((item) => {\n zip.file(item.path, item.content)\n })\n\n return (await zip.generateAsync({\n ...this.ZIP_OPTION,\n comment\n })) as Buffer\n }\n\n /**\n * 创建包,一个包对应一个 rpk 文件\n * @param param\n * @param config\n * @param files\n * @returns\n */\n private static async createPackagesDefinition(\n param: IJavascriptCompileOption,\n config: IManifest,\n files: string[]\n ) {\n const { projectPath, outputPath } = param\n const { package: appPackage } = config\n\n const comment = this.createComment(param)\n const fullPackage = new Package({\n filePrefix: appPackage,\n fileSuffix: 'rpk',\n standalone: true,\n comment: JSON.stringify(comment)\n })\n\n // 写入文件\n for (let fileBuildPath of files) {\n const absPath = path.join(projectPath, outputPath, fileBuildPath)\n let fileContentBuffer = fs.readFileSync(absPath)\n if (fileBuildPath === ZipUtil.CERT_PATH) {\n let metaZip = await JSZip.loadAsync(fileContentBuffer)\n fileContentBuffer = (await metaZip.generateAsync({\n ...ZipUtil.ZIP_OPTION,\n comment: null as any\n })) as Buffer\n }\n const fileContentDigest = CommonUtil.calcDataDigest(fileContentBuffer)\n\n const resourceInfo: IFileResource = {\n fileBuildPath,\n fileContentBuffer,\n fileContentDigest\n }\n fullPackage.addResource(resourceInfo)\n\n // 分包相关逻辑 todo\n }\n\n return { fullPackage }\n }\n\n /**\n * 获取有序的文件列表\n *\n * 打包后的文件夹生成vela 应用程序,需要先把文件排序,再进行压缩\n *\n * @see getPriorities 获取排序规则\n *\n * @param dist 打包后的文件目录的绝对路径\n * @param param 打包参数\n * @returns\n */\n static getSortedFiles(dist: string, param: IJavascriptCompileOption, config: IManifest) {\n const priorities = this.getPriorities(config)\n const getFileIndex = (file: string) => {\n const result = priorities.findIndex((item) => {\n if (typeof item === 'string') {\n return item === file\n }\n return file.match(item)\n })\n\n if (result < 0) {\n return Number.MAX_SAFE_INTEGER\n }\n return result\n }\n // 筛选中需要的文件并排序\n // 1. 排除META-INF 目录下的文件\n // 2. 生产环境排除 .map 文件\n const mapReg = /\\.map$/\n let result = FileUtil.readAlldirSync(dist)\n result = result\n .filter((item) => {\n return !(\n item.startsWith(UxCompileUtil.DIGEST_ZIP_DIR) ||\n (param.mode === 'production' && !mapReg.test(item))\n )\n })\n .map((item) => path.relative(dist, item))\n\n result.sort((a, b) => {\n const indexA = getFileIndex(a)\n const indexB = getFileIndex(b)\n return indexA - indexB\n })\n\n return result\n }\n\n /**\n * 根据 **固定规则**、**manifest.json入口配置**,获取压缩文件时使用的排序规则\n *\n * @param param\n * @returns\n */\n private static getPriorities(config: IManifest) {\n const entrySkFiles: string[] = [] // todo\n const { entry } = config.router\n const result = [\n 'META-INF/CERT',\n // 多语言配置文件要在 manifest 之前\n /^i18n\\/.+\\.json$/i,\n // 多终端配置文件如manifest-tv.json,也要在manifest之前,不然流式加载初始化的时候,会读不到对应的终端配置文件\n /^manifest-\\w+\\.json$/,\n 'manifest.json',\n 'app.js',\n /page-chunks.json$/,\n /skeleton\\/config\\.json$/,\n ...entrySkFiles,\n new RegExp(`^${entry}/$`),\n new RegExp(`^${entry}/.+`),\n /^common\\//i, // 静态资源\n /.+\\.js/,\n 'META-INF/build.txt'\n ]\n\n return result\n }\n\n /**\n * 创建打包的注释属性\n */\n public static createComment(param: IJavascriptCompileOption): Dictionary<any> {\n const obj = {\n originType: param.originType,\n toolkit: require(path.join(__dirname, '../../../../../package.json')).version,\n timeStamp: new Date().toJSON(),\n node: process.version,\n platform: process.platform,\n arch: process.arch,\n component: true\n }\n return obj\n }\n private static async buildProjectAndOutput(\n fullPackage: Buffer,\n signConfig: ISignConfig | undefined\n ) {\n // 1. 默认携带META,如果禁用流失打包,需要删除META\n // 2. 是否需要增加签名内容\n if (signConfig) {\n const { privatekey, certificate } = signConfig\n // fullPackageBuffer\n const fullPackageBuffer = await SignUtil.signZipBufferForPackage(\n fullPackage,\n privatekey,\n certificate\n )\n if (fullPackageBuffer === false) {\n // 报错\n console.error('【ZipUtil】error: fullpackage signature failed')\n } else {\n fullPackage = fullPackageBuffer\n }\n }\n // 3. 校验体积等\n // 4. 生成rpks:不需要META和签名\n // 5. 返回\n return {\n rpkBuffer: fullPackage\n }\n }\n}\nexport default ZipUtil\n"],"sourceRoot":"../../../../../src"}
1
+ {"version":3,"sources":["compiler/javascript/vela/utils/ZipUtil.ts"],"names":[],"mappings":"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","file":"ZipUtil.js","sourcesContent":["import ColorConsole from '@aiot-toolkit/shared-utils/lib/ColorConsole'\nimport { Dictionary } from '@aiot-toolkit/shared-utils/lib/type/Type'\nimport CommonUtil from '@aiot-toolkit/shared-utils/lib/utils/CommonUtil'\nimport FileUtil from '@aiot-toolkit/shared-utils/lib/utils/FileUtil'\nimport fs from 'fs-extra'\nimport JSZip from 'jszip'\nimport path from 'path'\nimport UxFileUtils from '../../../../utils/ux/UxFileUtils'\nimport CompileMode from '../../../enum/CompileMode'\nimport ISignConfig from '../../../interface/ISignConfig'\nimport IJavascriptCompileOption from '../../interface/IJavascriptCompileOption'\nimport BuildNameFormatType from '../enum/BuildNameFormatType'\nimport IManifest from '../interface/IManifest'\nimport Package, { IFileResource } from '../model/Package'\nimport UxCompileUtil from './UxCompileUtil'\nimport SignUtil from './signature/SignUtil'\n/**\n * Zip 用于将打包成功的 build 目录按特定规则压缩成 rpk\n *\n * @see ZipUtil.createRpk 打包的完整规则\n */\nclass ZipUtil {\n static readonly DIGEST_HASH_JSON = 'hash.json'\n\n // 摘要文件夹\n static readonly META_PATH = 'META-INF'\n\n // 文件摘要包(zip 文件)\n static readonly CERT_PATH = `${this.META_PATH}/CERT`\n\n // 打包信息文件\n static readonly BUILD_FILE_PATH = `${this.META_PATH}/build.txt`\n\n /**\n * zip压缩参数\n */\n static readonly ZIP_OPTION: JSZip.JSZipGeneratorOptions = {\n type: 'nodebuffer',\n compression: 'DEFLATE',\n compressionOptions: {\n level: 9\n }\n }\n\n /**\n * dist 目录生成 rpk\n * 1. 获取文件列表\n * 1. 过滤出需要的文件\n * 2. 按配置排序\n * 2. 生成文件流\n * 1. 每个文件生成加密串\n * 2. 生成元数据流\n * 3. 把元数据流和普通文件合并到一个流\n * 3. 写入到硬盘\n * @param dist\n * @param param\n * @returns\n */\n static async createRpk(dist: string, param: IJavascriptCompileOption) {\n const config = UxFileUtils.getMainfestInfo(param.projectPath, param.sourceRoot)\n\n // 1\n const files = this.getSortedFiles(dist, param, config)\n if (!files.length) {\n ColorConsole.error(\n `The build file is missing, stop generating the application package, please check carefully`\n )\n return\n }\n\n // 2\n const { fullPackage } = await this.createPackagesDefinition(param, config, files)\n const zipBuffer = await this.packageToZipBuffer(fullPackage)\n\n // 生产出带签名的rpk文件buffer\n const signConfig = SignUtil.getProjectSignConfig(param)\n const { rpkBuffer } = await ZipUtil.buildProjectAndOutput(zipBuffer, signConfig)\n // IDE 扫码预览打包 todo\n // IDE 重置包名\n // 3\n this.generateDistFile(rpkBuffer, param, this.getFileName(param, config, 'rpk'))\n }\n\n private static getFileName(param: IJavascriptCompileOption, config: IManifest, ext: string) {\n const { mode, buildNameFormat } = param\n const { package: packageName } = config\n return [\n packageName,\n mode === CompileMode.DEVELOPMENT ? 'debug' : 'release',\n buildNameFormat === BuildNameFormatType.DEFAULT ? config.versionName : '',\n ext\n ]\n .filter(Boolean)\n .join('.')\n }\n\n private static async packageToZipBuffer(target: Package) {\n const { resourceList, comment } = target\n const packageFileList: { path: string; content: any }[] = resourceList.map((item) => {\n return {\n path: item.fileBuildPath,\n content: item.fileContentBuffer\n }\n })\n return await this.createZipBufferFromFileList(packageFileList, comment)\n }\n\n private static async generateDistFile(\n buffer: Buffer,\n param: IJavascriptCompileOption,\n fileName: string\n ) {\n const { releasePath, projectPath } = param\n const filePath = path.join(projectPath, releasePath, fileName)\n fs.outputFileSync(filePath, buffer)\n ColorConsole.success(`Project build and generate files:${fileName}`)\n }\n\n static async createZipBufferFromFileList(\n fileList: { path: string; content: string | Buffer }[],\n comment?: string\n ): Promise<Buffer> {\n const zip = new JSZip()\n fileList.forEach((item) => {\n zip.file(item.path, item.content)\n })\n\n return (await zip.generateAsync({\n ...this.ZIP_OPTION,\n comment\n })) as Buffer\n }\n\n /**\n * 创建包,一个包对应一个 rpk 文件\n * @param param\n * @param config\n * @param files\n * @returns\n */\n private static async createPackagesDefinition(\n param: IJavascriptCompileOption,\n config: IManifest,\n files: string[]\n ) {\n const { projectPath, outputPath } = param\n const { package: appPackage } = config\n\n const comment = this.createComment(param)\n const fullPackage = new Package({\n filePrefix: appPackage,\n fileSuffix: 'rpk',\n standalone: true,\n comment: JSON.stringify(comment)\n })\n\n // 写入文件\n for (let fileBuildPath of files) {\n const absPath = path.join(projectPath, outputPath, fileBuildPath)\n let fileContentBuffer = fs.readFileSync(absPath)\n if (fileBuildPath === ZipUtil.CERT_PATH) {\n let metaZip = await JSZip.loadAsync(fileContentBuffer)\n fileContentBuffer = (await metaZip.generateAsync({\n ...ZipUtil.ZIP_OPTION,\n comment: null as any\n })) as Buffer\n }\n const fileContentDigest = CommonUtil.calcDataDigest(fileContentBuffer)\n\n const resourceInfo: IFileResource = {\n fileBuildPath,\n fileContentBuffer,\n fileContentDigest\n }\n fullPackage.addResource(resourceInfo)\n\n // 分包相关逻辑 todo\n }\n\n return { fullPackage }\n }\n\n /**\n * 获取有序的文件列表\n *\n * 打包后的文件夹生成vela 应用程序,需要先把文件排序,再进行压缩\n *\n * @see getPriorities 获取排序规则\n *\n * @param dist 打包后的文件目录的绝对路径\n * @param param 打包参数\n * @returns\n */\n static getSortedFiles(dist: string, param: IJavascriptCompileOption, config: IManifest) {\n const priorities = this.getPriorities(config)\n const getFileIndex = (file: string) => {\n const result = priorities.findIndex((item) => {\n if (typeof item === 'string') {\n return item === file\n }\n return file.match(item)\n })\n\n if (result < 0) {\n return Number.MAX_SAFE_INTEGER\n }\n return result\n }\n // 筛选中需要的文件并排序\n // 1. 排除META-INF 目录下的文件\n // 2. 生产环境排除 .map 文件\n const mapReg = /\\.map$/\n let result = FileUtil.readAlldirSync(dist)\n result = result\n .filter((item) => {\n return !(\n item.startsWith(UxCompileUtil.DIGEST_ZIP_DIR) ||\n (param.mode === 'production' && !mapReg.test(item))\n )\n })\n .map((item) => path.relative(dist, item))\n\n result.sort((a, b) => {\n const indexA = getFileIndex(a)\n const indexB = getFileIndex(b)\n return indexA - indexB\n })\n\n return result\n }\n\n /**\n * 根据 **固定规则**、**manifest.json入口配置**,获取压缩文件时使用的排序规则\n *\n * @param param\n * @returns\n */\n private static getPriorities(config: IManifest) {\n const entrySkFiles: string[] = [] // todo\n const { entry } = config.router\n const result = [\n 'META-INF/CERT',\n // 多语言配置文件要在 manifest 之前\n /^i18n\\/.+\\.json$/i,\n // 多终端配置文件如manifest-tv.json,也要在manifest之前,不然流式加载初始化的时候,会读不到对应的终端配置文件\n /^manifest-\\w+\\.json$/,\n 'manifest.json',\n 'app.js',\n /page-chunks.json$/,\n /skeleton\\/config\\.json$/,\n ...entrySkFiles,\n new RegExp(`^${entry}/$`),\n new RegExp(`^${entry}/.+`),\n /^common\\//i, // 静态资源\n /.+\\.js/,\n 'META-INF/build.txt'\n ]\n\n return result\n }\n\n /**\n * 创建打包的注释属性\n */\n public static createComment(param: IJavascriptCompileOption): Dictionary<any> {\n const obj = {\n originType: param.originType,\n toolkit: require(path.join(__dirname, '../../../../../package.json')).version,\n timeStamp: new Date().toJSON(),\n node: process.version,\n platform: process.platform,\n arch: process.arch,\n component: true\n }\n return obj\n }\n private static async buildProjectAndOutput(\n fullPackage: Buffer,\n signConfig: ISignConfig | undefined\n ) {\n // 1. 默认携带META,如果禁用流失打包,需要删除META\n // 2. 是否需要增加签名内容\n if (signConfig) {\n const { privatekey, certificate } = signConfig\n // fullPackageBuffer\n const fullPackageBuffer = await SignUtil.signZipBufferForPackage(\n fullPackage,\n privatekey,\n certificate\n )\n if (fullPackageBuffer === false) {\n ColorConsole.throw('Fullpackage signature failed')\n } else {\n fullPackage = fullPackageBuffer\n }\n }\n // 3. 校验体积等\n // 4. 生成rpks:不需要META和签名\n // 5. 返回\n return {\n rpkBuffer: fullPackage\n }\n }\n}\nexport default ZipUtil\n"],"sourceRoot":"../../../../../src"}
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- const ColorConsole2_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole2"));
15
+ const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
16
16
  const CommonUtil_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/utils/CommonUtil"));
17
17
  const FileUtil_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/utils/FileUtil"));
18
18
  const crypto_1 = __importDefault(require("crypto"));
@@ -44,14 +44,16 @@ class SignUtil {
44
44
  case CompileMode_1.default.DEVELOPMENT:
45
45
  privatekeyPath = path_1.default.join(__dirname, 'pem', 'private.pem');
46
46
  certificatePath = path_1.default.join(__dirname, 'pem', 'certificate.pem');
47
+ ColorConsole_1.default.info(`User debug signature is enabled by project build`);
47
48
  break;
48
49
  case CompileMode_1.default.PRODUCTION:
49
50
  privatekeyPath = path_1.default.join(projectPath, signRoot, 'private.pem');
50
51
  certificatePath = path_1.default.join(projectPath, signRoot, 'certificate.pem');
52
+ ColorConsole_1.default.info(`elease signature is enabled by project build`);
51
53
  break;
52
54
  default:
53
55
  // 打印信息, 模式未定义
54
- ColorConsole2_1.default.error(`【SignUtil】Error: mode ${mode} undefined`);
56
+ ColorConsole_1.default.error(`Error: mode ${mode} undefined`);
55
57
  break;
56
58
  }
57
59
  // 检查路径是否真实存在
@@ -64,8 +66,8 @@ class SignUtil {
64
66
  };
65
67
  }
66
68
  else {
67
- // 报错, 抛出错误
68
- ColorConsole2_1.default.throw();
69
+ // 抛出错误
70
+ ColorConsole_1.default.throw();
69
71
  }
70
72
  return signConfig;
71
73
  }
@@ -85,8 +87,8 @@ class SignUtil {
85
87
  };
86
88
  const signedMetaBuffer = SignUtil.doSign(metaBuffer, [metaHash], privatekey, certificate);
87
89
  if (signedMetaBuffer === false) {
88
- // 报错,META-INF/CERT签名失败
89
- console.error('【SignUtil】error: META-INF/CERT signature failed');
90
+ // META-INF/CERT签名失败
91
+ ColorConsole_1.default.throw('META-INF/CERT signature failed');
90
92
  }
91
93
  else {
92
94
  fileList.push({
@@ -112,6 +114,10 @@ class SignUtil {
112
114
  const newZipBuffer = yield ZipUtil_1.default.createZipBufferFromFileList(fileList, zipInstWrap.comment);
113
115
  // 对新ZIP流重新签名
114
116
  const signedZipBuffer = SignUtil.doSign(newZipBuffer, fileDigestHash, privatekey, certificate);
117
+ if (signedZipBuffer === false) {
118
+ // 签名失败
119
+ ColorConsole_1.default.throw('package signature failed');
120
+ }
115
121
  return signedZipBuffer;
116
122
  });
117
123
  }
@@ -174,15 +180,13 @@ class SignUtil {
174
180
  static unZipFiles(fileBuffer, files) {
175
181
  // 1. 读取zip文件
176
182
  if (!fileBuffer || fileBuffer.length <= 4) {
177
- // 报错
178
- console.error('【SignUtil】Zip file open failed');
183
+ ColorConsole_1.default.error('Zip file open failed');
179
184
  return false;
180
185
  }
181
186
  // 2. 检查文件格式是否正确
182
187
  const fileMagic = fileBuffer.readInt32LE(0);
183
188
  if (fileMagic !== 0x4034b50) {
184
- // 报错
185
- console.error('【SignUtil】Zip file format is wrong');
189
+ ColorConsole_1.default.error('Zip file format is wrong');
186
190
  return false;
187
191
  }
188
192
  // 3. 解析数据块