@aiot-toolkit/aiotpack 2.0.2-beta.17 → 2.0.2-beta.18

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.
@@ -87,6 +87,15 @@ class JavascriptCompiler {
87
87
  }
88
88
  ]
89
89
  },
90
+ optimization: {
91
+ minimizer: [
92
+ new core_1.rspack.SwcJsMinimizerRspackPlugin({
93
+ minimizerOptions: {
94
+ module: true
95
+ }
96
+ })
97
+ ]
98
+ },
90
99
  resolve: {
91
100
  extensions: ['.js', '.ts', '.ux']
92
101
  },
@@ -63,6 +63,7 @@ declare class Package {
63
63
  * @returns
64
64
  */
65
65
  include(filePath: string): boolean;
66
+ getResource(filePath: string): IFileResource | undefined;
66
67
  /**
67
68
  * 添加资源
68
69
  * @param data
@@ -27,6 +27,9 @@ class Package {
27
27
  include(filePath) {
28
28
  return this.resourceDic[filePath];
29
29
  }
30
+ getResource(filePath) {
31
+ return this.resourceList.find((item) => item.fileBuildPath === filePath);
32
+ }
30
33
  /**
31
34
  * 添加资源
32
35
  * @param data
@@ -2,6 +2,7 @@ import { Dictionary } from '@aiot-toolkit/shared-utils';
2
2
  import JSZip from 'jszip';
3
3
  import IJavascriptCompileOption from '../../interface/IJavascriptCompileOption';
4
4
  import IManifest from '../interface/IManifest';
5
+ import Package from '../model/Package';
5
6
  /**
6
7
  * Zip 用于将打包成功的 build 目录按特定规则压缩成 rpk
7
8
  *
@@ -51,7 +52,9 @@ declare class ZipUtil {
51
52
  * @param files
52
53
  * @returns
53
54
  */
54
- private static createPackagesDefinition;
55
+ static createPackagesDefinition(param: IJavascriptCompileOption, config: IManifest, files: string[]): Promise<{
56
+ fullPackage: Package;
57
+ }>;
55
58
  /**
56
59
  * 获取有序的文件列表
57
60
  *
@@ -54,10 +54,9 @@ class ZipUtil {
54
54
  }
55
55
  // 2
56
56
  const { fullPackage } = yield this.createPackagesDefinition(param, config, files);
57
- const zipBuffer = yield this.packageToZipBuffer(fullPackage);
58
57
  // 生产出带签名的rpk文件buffer
59
58
  const signConfig = SignUtil_1.default.getProjectSignConfig(param);
60
- const rpkBuffer = yield _a.buildProjectAndOutput(zipBuffer, signConfig);
59
+ const rpkBuffer = yield _a.buildProjectAndOutput(fullPackage, signConfig);
61
60
  // 3
62
61
  this.generateDistFile(rpkBuffer, param, this.getFileName(param, config, 'rpk'));
63
62
  });
@@ -241,12 +240,12 @@ class ZipUtil {
241
240
  * @param signConfig 证书信息
242
241
  * @returns
243
242
  */
244
- static buildProjectAndOutput(zipBuffer, signConfig) {
243
+ static buildProjectAndOutput(target, signConfig) {
245
244
  return __awaiter(this, void 0, void 0, function* () {
246
- let result = zipBuffer;
245
+ let result;
247
246
  if (signConfig) {
248
247
  const { privatekey, certificate } = signConfig;
249
- const fullPackageBuffer = yield SignUtil_1.default.signZipBufferForPackage(zipBuffer, privatekey, certificate);
248
+ const fullPackageBuffer = yield SignUtil_1.default.signPackage(target, privatekey, certificate);
250
249
  if (fullPackageBuffer === false) {
251
250
  shared_utils_1.ColorConsole.throw('Fullpackage signature failed');
252
251
  }
@@ -254,6 +253,9 @@ class ZipUtil {
254
253
  result = fullPackageBuffer;
255
254
  }
256
255
  }
256
+ if (!result) {
257
+ result = yield this.packageToZipBuffer(target);
258
+ }
257
259
  return result;
258
260
  });
259
261
  }
@@ -1,4 +1,5 @@
1
1
  import IJavascriptCompileOption from '../../../interface/IJavascriptCompileOption';
2
+ import Package from '../../model/Package';
2
3
  /**
3
4
  * SignUtil
4
5
  */
@@ -15,16 +16,15 @@ declare class SignUtil {
15
16
  /**
16
17
  * 对二进制zipBuffer签名
17
18
  *
18
- * 1. 解压 zip 流,获取文件列表
19
- * 2. 对`META-INF/CERT`做签名,并生成新的`META-INF/CERT` buffer
20
- * 3. "新`META-INF/CERT` + 其它文件"生成新的 zipBuffer
21
- * 4. 对“新zipBuffer”,做整体签名
19
+ * 1. 对`META-INF/CERT`做签名,并生成新的`META-INF/CERT` buffer
20
+ * 2. "新`META-INF/CERT` + 其它文件"生成新的 zipBuffer
21
+ * 3. 对“新zipBuffer”,做整体签名
22
22
  * @param zipBuffer
23
23
  * @param privatekey
24
24
  * @param certificate
25
25
  * @returns
26
26
  */
27
- static signZipBufferForPackage(zipBuffer: Buffer, privatekey: Buffer, certificate: Buffer): Promise<false | Buffer>;
27
+ static signPackage(target: Package, privatekey: Buffer, certificate: Buffer): Promise<false | Buffer>;
28
28
  /**
29
29
  * 根据ZIP流获取文件实例
30
30
  *
@@ -99,24 +99,25 @@ class SignUtil {
99
99
  /**
100
100
  * 对二进制zipBuffer签名
101
101
  *
102
- * 1. 解压 zip 流,获取文件列表
103
- * 2. 对`META-INF/CERT`做签名,并生成新的`META-INF/CERT` buffer
104
- * 3. "新`META-INF/CERT` + 其它文件"生成新的 zipBuffer
105
- * 4. 对“新zipBuffer”,做整体签名
102
+ * 1. 对`META-INF/CERT`做签名,并生成新的`META-INF/CERT` buffer
103
+ * 2. "新`META-INF/CERT` + 其它文件"生成新的 zipBuffer
104
+ * 3. 对“新zipBuffer”,做整体签名
106
105
  * @param zipBuffer
107
106
  * @param privatekey
108
107
  * @param certificate
109
108
  * @returns
110
109
  */
111
- static signZipBufferForPackage(zipBuffer, privatekey, certificate) {
110
+ static signPackage(target, privatekey, certificate) {
112
111
  return __awaiter(this, void 0, void 0, function* () {
113
- // 1
114
- const zipInstWrap = yield SignUtil.createFileListFromZipBuffer(zipBuffer);
112
+ var _a;
113
+ const getFileBuffer = (path) => {
114
+ return target.getResource(path);
115
+ };
115
116
  // 摘要 和 文件列表
116
117
  const fileDigestHash = [];
117
118
  const fileList = [];
118
- // 2.1
119
- const metaBuffer = zipInstWrap.getFileBuffer(ZipUtil_1.default.CERT_PATH);
119
+ // 1
120
+ const metaBuffer = (_a = getFileBuffer(ZipUtil_1.default.CERT_PATH)) === null || _a === void 0 ? void 0 : _a.fileContentBuffer;
120
121
  if (metaBuffer) {
121
122
  const metaHash = {
122
123
  name: ZipUtil_1.default.DIGEST_HASH_JSON,
@@ -138,9 +139,17 @@ class SignUtil {
138
139
  });
139
140
  }
140
141
  }
141
- // 2.2
142
- const files = zipInstWrap.fileList;
143
- files.filter(SignUtil.fileFilter).map((item) => {
142
+ // 2
143
+ const files = target.resourceList;
144
+ files
145
+ .map((item) => {
146
+ return {
147
+ path: item.fileBuildPath,
148
+ content: item.fileContentBuffer
149
+ };
150
+ })
151
+ .filter(SignUtil.fileFilter)
152
+ .map((item) => {
144
153
  fileList.push(item);
145
154
  fileDigestHash.push({
146
155
  name: item.path,
@@ -148,8 +157,8 @@ class SignUtil {
148
157
  });
149
158
  });
150
159
  // 因为META变化,重新创建ZIP流
151
- const newZipBuffer = yield ZipUtil_1.default.createZipBufferFromFileList(fileList, zipInstWrap.comment);
152
- // 对新ZIP流重新签名
160
+ const newZipBuffer = yield ZipUtil_1.default.createZipBufferFromFileList(fileList, target.comment);
161
+ // 3
153
162
  const signedZipBuffer = SignUtil.doSign(newZipBuffer, fileDigestHash, privatekey, certificate);
154
163
  if (signedZipBuffer === false) {
155
164
  // 签名失败
@@ -23,7 +23,15 @@ class UxLoader {
23
23
  for (const file of files) {
24
24
  // 转换每个文件
25
25
  const { files: compiledFiles, logs } = yield UxLoaderUtils_1.default.compileUxToJavascript(file, this.context, false, this.compilerOption);
26
- shared_utils_1.CommonUtil.processingLogsInTerminal(logs.map((item) => (Object.assign(Object.assign({}, item), { filePath: item.filePath ? path_1.default.relative(projectPath, item.filePath) : '' }))));
26
+ // style报错中,@import导入的文件报错路径存储在item.position.source中
27
+ shared_utils_1.CommonUtil.processingLogsInTerminal(logs.map((item) => {
28
+ var _a;
29
+ return (Object.assign(Object.assign({}, item), { filePath: ((_a = item.position) === null || _a === void 0 ? void 0 : _a.source)
30
+ ? item.position.source
31
+ : item.filePath
32
+ ? path_1.default.relative(projectPath, item.filePath)
33
+ : '' }));
34
+ }));
27
35
  resultFiles.push(...compiledFiles);
28
36
  }
29
37
  return resultFiles;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiot-toolkit/aiotpack",
3
- "version": "2.0.2-beta.17",
3
+ "version": "2.0.2-beta.18",
4
4
  "description": "The process tool for packaging aiot projects.",
5
5
  "keywords": [
6
6
  "aiotpack"
@@ -19,16 +19,16 @@
19
19
  "test": "node ./__tests__/aiotpack.test.js"
20
20
  },
21
21
  "dependencies": {
22
- "@aiot-toolkit/generator": "2.0.2-beta.17",
23
- "@aiot-toolkit/parser": "2.0.2-beta.17",
24
- "@aiot-toolkit/shared-utils": "2.0.2-beta.17",
22
+ "@aiot-toolkit/generator": "2.0.2-beta.18",
23
+ "@aiot-toolkit/parser": "2.0.2-beta.18",
24
+ "@aiot-toolkit/shared-utils": "2.0.2-beta.18",
25
25
  "@hap-toolkit/aaptjs": "^2.0.0",
26
26
  "@rspack/core": "^1.0.0",
27
27
  "aiot-parse5": "^1.0.0",
28
28
  "archiver": "^7.0.1",
29
29
  "babel-loader": "^9.1.3",
30
30
  "fast-glob": "^3.3.2",
31
- "file-lane": "2.0.2-beta.17",
31
+ "file-lane": "2.0.2-beta.18",
32
32
  "file-loader": "^6.2.0",
33
33
  "fs-extra": "^11.2.0",
34
34
  "jsrsasign": "^11.1.0",
@@ -45,5 +45,5 @@
45
45
  "@types/jsrsasign": "^10.5.12",
46
46
  "@types/webpack-sources": "^3.2.3"
47
47
  },
48
- "gitHead": "4b2b3395e77e91b0c00a524dcf89b9dc0db689bf"
48
+ "gitHead": "b73a79ef04edac808f316bf8b8fb1718422daa1c"
49
49
  }