@aiot-toolkit/aiotpack 2.0.2-beta.17 → 2.0.2-beta.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -46
- package/lib/afterCompile/ux/UxAfterCompile.js +1 -1
- package/lib/afterCompile/xts/entryTemplate.js +61 -61
- package/lib/beforeCompile/ux/UxBeforeCompile.js +4 -1
- package/lib/compiler/javascript/JavascriptCompiler.js +9 -0
- package/lib/compiler/javascript/android/plugin/WrapPlugin.js +38 -38
- package/lib/compiler/javascript/vela/model/Package.d.ts +1 -0
- package/lib/compiler/javascript/vela/model/Package.js +3 -0
- package/lib/compiler/javascript/vela/plugin/WrapPlugin.js +31 -31
- package/lib/compiler/javascript/vela/utils/Jsc.d.ts +1 -1
- package/lib/compiler/javascript/vela/utils/Jsc.js +1 -0
- package/lib/compiler/javascript/vela/utils/UxCompileUtil.js +1 -1
- package/lib/compiler/javascript/vela/utils/ZipUtil.d.ts +4 -1
- package/lib/compiler/javascript/vela/utils/ZipUtil.js +7 -5
- package/lib/compiler/javascript/vela/utils/signature/SignUtil.d.ts +5 -5
- package/lib/compiler/javascript/vela/utils/signature/SignUtil.js +23 -14
- package/lib/compiler/javascript/vela/utils/signature/pem/certificate.pem +26 -26
- package/lib/compiler/javascript/vela/utils/signature/pem/private.pem +50 -50
- package/lib/config/UxConfig.d.ts +3 -3
- package/lib/config/UxConfig.js +4 -3
- package/lib/config/XtsConfig.d.ts +2 -2
- package/lib/config/XtsConfig.js +7 -1
- package/lib/loader/ux/vela/UxLoader.js +9 -1
- package/lib/utils/BeforeCompileUtils.js +1 -1
- package/lib/utils/ux/UxFileUtils.d.ts +5 -4
- package/lib/utils/ux/UxFileUtils.js +15 -15
- package/lib/utils/ux/UxLoaderUtils.js +50 -50
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
# `aiotpack`
|
|
2
|
-
|
|
3
|
-
最终打包工具,包含各类语言、各类平台的打包配置
|
|
4
|
-
|
|
5
|
-
## 目录结构
|
|
6
|
-
|
|
7
|
-
| 目录 | 描述 |
|
|
8
|
-
| -------- | ------------------------------------------------------------------------------- |
|
|
9
|
-
| config | FileLane 配置,基于此配置,可完成“源码项目-->目标代码项目-->应用程序”的完整流程 |
|
|
10
|
-
| compiler | 目标语言-->应用程序编译器 |
|
|
11
|
-
| loader | 源码语言-->目标代码语言 |
|
|
12
|
-
| utils | 语言、项目无关的辅助工具 |
|
|
13
|
-
|
|
14
|
-
## config
|
|
15
|
-
|
|
16
|
-
通过在 FileLane 中配置各项参数,可完成“**源码项目-->目标代码项目-->应用程序**”的完整流程
|
|
17
|
-
|
|
18
|
-
## compiler
|
|
19
|
-
|
|
20
|
-
#### 概述
|
|
21
|
-
|
|
22
|
-
源码已生成目标代码项目,此时需要生成**最终产物--应用程序**。compiler 目录中的代码即为完成此项工作而生。
|
|
23
|
-
|
|
24
|
-
#### 子目录
|
|
25
|
-
|
|
26
|
-
compiler 下的每个子目录,对应一种目标语言;每种目标语言在不同平台又可能有不同的生成方式。
|
|
27
|
-
|
|
28
|
-
因此结构为:`compiler/目标语言/目标平台`,例如:
|
|
29
|
-
|
|
30
|
-
- `compiler/javascript/vela`--javascript 语言在 vela 平台的生成
|
|
31
|
-
|
|
32
|
-
#### 添加编译器
|
|
33
|
-
|
|
34
|
-
1. 按上述目录结构,添加目录
|
|
35
|
-
2. 创建编译器`class XCompiler`, 建议实现实现`ICompiler` 接口,以便以后实现统一的用户端接口
|
|
36
|
-
3. 在需要的位置调用
|
|
37
|
-
|
|
38
|
-
```js
|
|
39
|
-
new XCompiler().compile({
|
|
40
|
-
projectPath: '',
|
|
41
|
-
mode: 'development',
|
|
42
|
-
platform: 'native'
|
|
43
|
-
})
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## loader--各类语言的转换器
|
|
1
|
+
# `aiotpack`
|
|
2
|
+
|
|
3
|
+
最终打包工具,包含各类语言、各类平台的打包配置
|
|
4
|
+
|
|
5
|
+
## 目录结构
|
|
6
|
+
|
|
7
|
+
| 目录 | 描述 |
|
|
8
|
+
| -------- | ------------------------------------------------------------------------------- |
|
|
9
|
+
| config | FileLane 配置,基于此配置,可完成“源码项目-->目标代码项目-->应用程序”的完整流程 |
|
|
10
|
+
| compiler | 目标语言-->应用程序编译器 |
|
|
11
|
+
| loader | 源码语言-->目标代码语言 |
|
|
12
|
+
| utils | 语言、项目无关的辅助工具 |
|
|
13
|
+
|
|
14
|
+
## config
|
|
15
|
+
|
|
16
|
+
通过在 FileLane 中配置各项参数,可完成“**源码项目-->目标代码项目-->应用程序**”的完整流程
|
|
17
|
+
|
|
18
|
+
## compiler
|
|
19
|
+
|
|
20
|
+
#### 概述
|
|
21
|
+
|
|
22
|
+
源码已生成目标代码项目,此时需要生成**最终产物--应用程序**。compiler 目录中的代码即为完成此项工作而生。
|
|
23
|
+
|
|
24
|
+
#### 子目录
|
|
25
|
+
|
|
26
|
+
compiler 下的每个子目录,对应一种目标语言;每种目标语言在不同平台又可能有不同的生成方式。
|
|
27
|
+
|
|
28
|
+
因此结构为:`compiler/目标语言/目标平台`,例如:
|
|
29
|
+
|
|
30
|
+
- `compiler/javascript/vela`--javascript 语言在 vela 平台的生成
|
|
31
|
+
|
|
32
|
+
#### 添加编译器
|
|
33
|
+
|
|
34
|
+
1. 按上述目录结构,添加目录
|
|
35
|
+
2. 创建编译器`class XCompiler`, 建议实现实现`ICompiler` 接口,以便以后实现统一的用户端接口
|
|
36
|
+
3. 在需要的位置调用
|
|
37
|
+
|
|
38
|
+
```js
|
|
39
|
+
new XCompiler().compile({
|
|
40
|
+
projectPath: '',
|
|
41
|
+
mode: 'development',
|
|
42
|
+
platform: 'native'
|
|
43
|
+
})
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## loader--各类语言的转换器
|
|
@@ -135,7 +135,7 @@ UxAfterCompile.copyResource = (params) => __awaiter(void 0, void 0, void 0, func
|
|
|
135
135
|
'DS_Store',
|
|
136
136
|
'map'
|
|
137
137
|
];
|
|
138
|
-
const excludeReg =
|
|
138
|
+
const excludeReg = `\\.(${excludeExtList.join('|')})$`;
|
|
139
139
|
shared_utils_1.FileUtil.copyFiles(path_1.default.join(projectPath, sourceRoot), path_1.default.join(projectPath, outputPath), new RegExp(excludeReg));
|
|
140
140
|
shared_utils_1.FileUtil.copyFiles(path_1.default.join(projectPath, sourceRoot), path_1.default.join(projectPath, outputPath), undefined, includeList);
|
|
141
141
|
};
|
|
@@ -39,76 +39,76 @@ const entryTemplate = (options) => {
|
|
|
39
39
|
for (let i = 0; i < aspects.length; i++) {
|
|
40
40
|
const aspect = aspects[i];
|
|
41
41
|
const { routes = [] } = aspect;
|
|
42
|
-
res += `
|
|
43
|
-
const aspectName_${i + 1} = '${aspect.name}'
|
|
42
|
+
res += `
|
|
43
|
+
const aspectName_${i + 1} = '${aspect.name}'
|
|
44
44
|
const pathPages_${i + 1} = new Map()`;
|
|
45
45
|
for (let r = 0; r < routes.length; r++) {
|
|
46
46
|
const route = routes[r];
|
|
47
|
-
res += `
|
|
48
|
-
pathPages_${i + 1}.set('${route.route}', function (params?: ${parser_1.HomeState.interface}${i + 1}_${r + 1}_): Page {
|
|
49
|
-
return new Page${i + 1}_${r + 1}(params)
|
|
50
|
-
})
|
|
47
|
+
res += `
|
|
48
|
+
pathPages_${i + 1}.set('${route.route}', function (params?: ${parser_1.HomeState.interface}${i + 1}_${r + 1}_): Page {
|
|
49
|
+
return new Page${i + 1}_${r + 1}(params)
|
|
50
|
+
})
|
|
51
51
|
`;
|
|
52
52
|
}
|
|
53
|
-
res += `
|
|
54
|
-
const aspectDef_${i + 1}: AspectDefinition = {
|
|
55
|
-
newFn: (): ViewAspect => new AspectClass${i + 1}(),
|
|
56
|
-
pathPages: pathPages_${i + 1}
|
|
57
|
-
}
|
|
58
|
-
aspectDefs.set(aspectName_${i + 1}, aspectDef_${i + 1})
|
|
53
|
+
res += `
|
|
54
|
+
const aspectDef_${i + 1}: AspectDefinition = {
|
|
55
|
+
newFn: (): ViewAspect => new AspectClass${i + 1}(),
|
|
56
|
+
pathPages: pathPages_${i + 1}
|
|
57
|
+
}
|
|
58
|
+
aspectDefs.set(aspectName_${i + 1}, aspectDef_${i + 1})
|
|
59
59
|
`;
|
|
60
60
|
}
|
|
61
61
|
return res;
|
|
62
62
|
}
|
|
63
|
-
return `import {
|
|
64
|
-
// class
|
|
65
|
-
App,
|
|
66
|
-
AppDefinition,
|
|
67
|
-
AppContainer,
|
|
68
|
-
AspectDefinition,
|
|
69
|
-
ViewAspect,
|
|
70
|
-
Page,
|
|
71
|
-
Route,
|
|
72
|
-
RouteInfo,
|
|
73
|
-
// framework
|
|
74
|
-
context,
|
|
75
|
-
getInfoFromRoute,
|
|
76
|
-
|
|
77
|
-
// export function
|
|
78
|
-
on
|
|
79
|
-
} from '../node_modules/${parser_1.tsFrameWork.name}/index'
|
|
80
|
-
|
|
81
|
-
// import app
|
|
82
|
-
import AppClass from './${options.appPath}'
|
|
83
|
-
${generatImportAspects()}
|
|
84
|
-
console.log('startApp-start timeEnd:', Date.now())
|
|
85
|
-
|
|
86
|
-
function getAspectDefs() {
|
|
87
|
-
const aspectDefs = new Map()
|
|
88
|
-
${generateDefs()}
|
|
89
|
-
return aspectDefs
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function entry(path: string): void {
|
|
93
|
-
console.log('~~~~~~~~~entry path', path)
|
|
94
|
-
const route: Route = { uri: path }
|
|
95
|
-
const routeInfo: RouteInfo = getInfoFromRoute(route)
|
|
96
|
-
// app
|
|
97
|
-
let appName: string = ''
|
|
98
|
-
if (routeInfo?.appName) appName = routeInfo.appName
|
|
99
|
-
let app = context.getApp(appName)
|
|
100
|
-
if (app === null) {
|
|
101
|
-
const appDef: AppDefinition = {
|
|
102
|
-
newFn: (): App => new AppClass()
|
|
103
|
-
}
|
|
104
|
-
const aspectDefs = getAspectDefs()
|
|
105
|
-
app = new AppContainer(appDef, aspectDefs)
|
|
106
|
-
}
|
|
107
|
-
context.openApp(app, routeInfo)
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// export api to native
|
|
111
|
-
export { entry, on }
|
|
63
|
+
return `import {
|
|
64
|
+
// class
|
|
65
|
+
App,
|
|
66
|
+
AppDefinition,
|
|
67
|
+
AppContainer,
|
|
68
|
+
AspectDefinition,
|
|
69
|
+
ViewAspect,
|
|
70
|
+
Page,
|
|
71
|
+
Route,
|
|
72
|
+
RouteInfo,
|
|
73
|
+
// framework
|
|
74
|
+
context,
|
|
75
|
+
getInfoFromRoute,
|
|
76
|
+
|
|
77
|
+
// export function
|
|
78
|
+
on
|
|
79
|
+
} from '../node_modules/${parser_1.tsFrameWork.name}/index'
|
|
80
|
+
|
|
81
|
+
// import app
|
|
82
|
+
import AppClass from './${options.appPath}'
|
|
83
|
+
${generatImportAspects()}
|
|
84
|
+
console.log('startApp-start timeEnd:', Date.now())
|
|
85
|
+
|
|
86
|
+
function getAspectDefs() {
|
|
87
|
+
const aspectDefs = new Map()
|
|
88
|
+
${generateDefs()}
|
|
89
|
+
return aspectDefs
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function entry(path: string): void {
|
|
93
|
+
console.log('~~~~~~~~~entry path', path)
|
|
94
|
+
const route: Route = { uri: path }
|
|
95
|
+
const routeInfo: RouteInfo = getInfoFromRoute(route)
|
|
96
|
+
// app
|
|
97
|
+
let appName: string = ''
|
|
98
|
+
if (routeInfo?.appName) appName = routeInfo.appName
|
|
99
|
+
let app = context.getApp(appName)
|
|
100
|
+
if (app === null) {
|
|
101
|
+
const appDef: AppDefinition = {
|
|
102
|
+
newFn: (): App => new AppClass()
|
|
103
|
+
}
|
|
104
|
+
const aspectDefs = getAspectDefs()
|
|
105
|
+
app = new AppContainer(appDef, aspectDefs)
|
|
106
|
+
}
|
|
107
|
+
context.openApp(app, routeInfo)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// export api to native
|
|
111
|
+
export { entry, on }
|
|
112
112
|
`;
|
|
113
113
|
};
|
|
114
114
|
exports.entryTemplate = entryTemplate;
|
|
@@ -22,7 +22,10 @@ class UxBeforeCompile {
|
|
|
22
22
|
_a = UxBeforeCompile;
|
|
23
23
|
UxBeforeCompile.validateManifest = (_b) => __awaiter(void 0, [_b], void 0, function* ({ context }) {
|
|
24
24
|
const { projectPath } = context;
|
|
25
|
-
|
|
25
|
+
const errors = yield UxFileUtils_1.default.validateManifest(projectPath);
|
|
26
|
+
if (errors === null || errors === void 0 ? void 0 : errors.length) {
|
|
27
|
+
return Promise.reject(errors);
|
|
28
|
+
}
|
|
26
29
|
});
|
|
27
30
|
UxBeforeCompile.validateSitemap = (_b) => __awaiter(void 0, [_b], void 0, function* ({ context }) {
|
|
28
31
|
const { projectPath } = context;
|
|
@@ -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
|
},
|
|
@@ -43,48 +43,48 @@ class WrapPlugin {
|
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
wrapPage(source) {
|
|
46
|
-
return new webpack_sources_1.ConcatSource(`
|
|
47
|
-
(function () {
|
|
48
|
-
var createPageHandler = function () {
|
|
49
|
-
// 转换动态 style 的函数
|
|
50
|
-
var $translateStyle$ = function (value) {
|
|
51
|
-
if (typeof value === 'string') {
|
|
52
|
-
return Object.fromEntries(value.split(';').filter(item => Boolean(item && item.trim())).map(
|
|
53
|
-
item => {
|
|
54
|
-
const matchs = item.match(/([^:]+):(.*)/)
|
|
55
|
-
if (matchs && matchs.lenth> 2) {
|
|
56
|
-
return [matchs[1].trim().replace(/-([a-z])/g, (_, match) => match.toUpperCase()), matchs[2].trim()]
|
|
57
|
-
}
|
|
58
|
-
return []
|
|
59
|
-
}))}
|
|
60
|
-
return value
|
|
61
|
-
}
|
|
62
|
-
return`, source, `;
|
|
63
|
-
};
|
|
64
|
-
if (typeof window === "undefined") {
|
|
65
|
-
return createPageHandler();
|
|
66
|
-
} else {
|
|
67
|
-
window.createPageHandler = createPageHandler;
|
|
68
|
-
}
|
|
46
|
+
return new webpack_sources_1.ConcatSource(`
|
|
47
|
+
(function () {
|
|
48
|
+
var createPageHandler = function () {
|
|
49
|
+
// 转换动态 style 的函数
|
|
50
|
+
var $translateStyle$ = function (value) {
|
|
51
|
+
if (typeof value === 'string') {
|
|
52
|
+
return Object.fromEntries(value.split(';').filter(item => Boolean(item && item.trim())).map(
|
|
53
|
+
item => {
|
|
54
|
+
const matchs = item.match(/([^:]+):(.*)/)
|
|
55
|
+
if (matchs && matchs.lenth> 2) {
|
|
56
|
+
return [matchs[1].trim().replace(/-([a-z])/g, (_, match) => match.toUpperCase()), matchs[2].trim()]
|
|
57
|
+
}
|
|
58
|
+
return []
|
|
59
|
+
}))}
|
|
60
|
+
return value
|
|
61
|
+
}
|
|
62
|
+
return`, source, `;
|
|
63
|
+
};
|
|
64
|
+
if (typeof window === "undefined") {
|
|
65
|
+
return createPageHandler();
|
|
66
|
+
} else {
|
|
67
|
+
window.createPageHandler = createPageHandler;
|
|
68
|
+
}
|
|
69
69
|
})();`);
|
|
70
70
|
}
|
|
71
71
|
wrapApp(source) {
|
|
72
72
|
const { projectPath, sourceRoot } = this.param;
|
|
73
|
-
return new webpack_sources_1.ConcatSource(`
|
|
74
|
-
(function () {
|
|
75
|
-
var $app_define_wrap$ = $app_define_wrap$ || function () {};
|
|
76
|
-
var manifestJson =${JSON.stringify(UxFileUtils_1.default.getMainfestInfo(projectPath, sourceRoot))}
|
|
77
|
-
var createAppHandler = function () {
|
|
78
|
-
`, source, `
|
|
79
|
-
}
|
|
80
|
-
if (typeof window === "undefined") {
|
|
81
|
-
return createAppHandler();
|
|
82
|
-
} else {
|
|
83
|
-
window.createAppHandler = createAppHandler;
|
|
84
|
-
// H5注入manifest以获取features
|
|
85
|
-
global.manifest = manifestJson;
|
|
86
|
-
}
|
|
87
|
-
})();
|
|
73
|
+
return new webpack_sources_1.ConcatSource(`
|
|
74
|
+
(function () {
|
|
75
|
+
var $app_define_wrap$ = $app_define_wrap$ || function () {};
|
|
76
|
+
var manifestJson =${JSON.stringify(UxFileUtils_1.default.getMainfestInfo(projectPath, sourceRoot))}
|
|
77
|
+
var createAppHandler = function () {
|
|
78
|
+
`, source, `
|
|
79
|
+
}
|
|
80
|
+
if (typeof window === "undefined") {
|
|
81
|
+
return createAppHandler();
|
|
82
|
+
} else {
|
|
83
|
+
window.createAppHandler = createAppHandler;
|
|
84
|
+
// H5注入manifest以获取features
|
|
85
|
+
global.manifest = manifestJson;
|
|
86
|
+
}
|
|
87
|
+
})();
|
|
88
88
|
`);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -21,37 +21,37 @@ class WrapPlugin {
|
|
|
21
21
|
entrys.forEach((entry) => {
|
|
22
22
|
if (compilation.assets[entry]) {
|
|
23
23
|
const source = compilation.assets[entry];
|
|
24
|
-
compilation.assets[entry] = new webpack_sources_1.ConcatSource(`
|
|
25
|
-
export default function(global, globalThis, window, $app_exports$, $app_evaluate$){
|
|
26
|
-
var org_app_require = $app_require$;
|
|
27
|
-
|
|
28
|
-
(function(global, globalThis, window, $app_exports$, $app_evaluate$){
|
|
29
|
-
var setTimeout = global.setTimeout;
|
|
30
|
-
var setInterval = global.setInterval;
|
|
31
|
-
var clearTimeout = global.clearTimeout;
|
|
32
|
-
var clearInterval = global.clearInterval;
|
|
33
|
-
var $app_require$ = global.$app_require$ || org_app_require
|
|
34
|
-
|
|
35
|
-
// 转换动态 style 的函数
|
|
36
|
-
var $translateStyle$ = function (value) {
|
|
37
|
-
if (typeof value === 'string') {
|
|
38
|
-
return Object.fromEntries(value.split(';').filter(item => Boolean(item && item.trim())).map(
|
|
39
|
-
item => {
|
|
40
|
-
const matchs = item.match(/([^:]+):(.*)/)
|
|
41
|
-
if (matchs && matchs.lenth> 2) {
|
|
42
|
-
return [matchs[1].trim().replace(/-([a-z])/g, (_, match) => match.toUpperCase()), matchs[2].trim()]
|
|
43
|
-
}
|
|
44
|
-
return []
|
|
45
|
-
}))}
|
|
46
|
-
return value
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
var createPageHandler = function() {
|
|
50
|
-
return `, source, `
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return createPageHandler();
|
|
54
|
-
})(global, globalThis, window, $app_exports$, $app_evaluate$)
|
|
24
|
+
compilation.assets[entry] = new webpack_sources_1.ConcatSource(`
|
|
25
|
+
export default function(global, globalThis, window, $app_exports$, $app_evaluate$){
|
|
26
|
+
var org_app_require = $app_require$;
|
|
27
|
+
|
|
28
|
+
(function(global, globalThis, window, $app_exports$, $app_evaluate$){
|
|
29
|
+
var setTimeout = global.setTimeout;
|
|
30
|
+
var setInterval = global.setInterval;
|
|
31
|
+
var clearTimeout = global.clearTimeout;
|
|
32
|
+
var clearInterval = global.clearInterval;
|
|
33
|
+
var $app_require$ = global.$app_require$ || org_app_require
|
|
34
|
+
|
|
35
|
+
// 转换动态 style 的函数
|
|
36
|
+
var $translateStyle$ = function (value) {
|
|
37
|
+
if (typeof value === 'string') {
|
|
38
|
+
return Object.fromEntries(value.split(';').filter(item => Boolean(item && item.trim())).map(
|
|
39
|
+
item => {
|
|
40
|
+
const matchs = item.match(/([^:]+):(.*)/)
|
|
41
|
+
if (matchs && matchs.lenth> 2) {
|
|
42
|
+
return [matchs[1].trim().replace(/-([a-z])/g, (_, match) => match.toUpperCase()), matchs[2].trim()]
|
|
43
|
+
}
|
|
44
|
+
return []
|
|
45
|
+
}))}
|
|
46
|
+
return value
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
var createPageHandler = function() {
|
|
50
|
+
return `, source, `
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return createPageHandler();
|
|
54
|
+
})(global, globalThis, window, $app_exports$, $app_evaluate$)
|
|
55
55
|
}`);
|
|
56
56
|
}
|
|
57
57
|
});
|
|
@@ -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
|
-
|
|
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(
|
|
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(
|
|
243
|
+
static buildProjectAndOutput(target, signConfig) {
|
|
245
244
|
return __awaiter(this, void 0, void 0, function* () {
|
|
246
|
-
let result
|
|
245
|
+
let result;
|
|
247
246
|
if (signConfig) {
|
|
248
247
|
const { privatekey, certificate } = signConfig;
|
|
249
|
-
const fullPackageBuffer = yield SignUtil_1.default.
|
|
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.
|
|
19
|
-
* 2.
|
|
20
|
-
* 3.
|
|
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
|
|
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.
|
|
103
|
-
* 2.
|
|
104
|
-
* 3.
|
|
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
|
|
110
|
+
static signPackage(target, privatekey, certificate) {
|
|
112
111
|
return __awaiter(this, void 0, void 0, function* () {
|
|
113
|
-
|
|
114
|
-
const
|
|
112
|
+
var _a;
|
|
113
|
+
const getFileBuffer = (path) => {
|
|
114
|
+
return target.getResource(path);
|
|
115
|
+
};
|
|
115
116
|
// 摘要 和 文件列表
|
|
116
117
|
const fileDigestHash = [];
|
|
117
118
|
const fileList = [];
|
|
118
|
-
//
|
|
119
|
-
const metaBuffer =
|
|
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
|
|
142
|
-
const files =
|
|
143
|
-
files
|
|
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,
|
|
152
|
-
//
|
|
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
|
// 签名失败
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
MIIEpDCCAowCCQC0eMZYkbPqvzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
|
|
3
|
-
b2NhbGhvc3QwHhcNMjEwNDA3MDc0MTI2WhcNMzEwNDA1MDc0MTI2WjAUMRIwEAYD
|
|
4
|
-
VQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDR
|
|
5
|
-
fEK1e8OxPAmtBc/bkz+Vy1T0EcRgHjA+UzYNj1kzBFb7CW9V7DIesXJ5mAwR1HOm
|
|
6
|
-
D32Ijou2oSDaHKunnM576PgSCeoRUJkycUSXS0mK2+opuqXTywayTVmcNoqUuE+T
|
|
7
|
-
/XjUJZ+MXsl0zxC5pv0HyMG2sInpIuahj2QrRim7u8IEJugSQLCdw53EVrAQ51s9
|
|
8
|
-
AsSyL/IvdqtYK5kNAz+cIVdn4Vx88YOteqbeMSIg1ICqDc3IgD0sCjQesqIpsJBV
|
|
9
|
-
LJZfWQsRMFt0tUyZQCqjYOSdy0tbrIOL2QjtwSXOPB8bUptvScxevrHAML3qNDz+
|
|
10
|
-
oPdJRMCLK3DOaRorfGPqA0mjlxE6cVXKnkvQlM6Kf8QItYlLMspvv+TFx3VdakbI
|
|
11
|
-
SzP058PEyf2A7IWSzWvFlpigtGuBCtrq8liyFXAsTxMwIB/TwF/G0A1AANg8aK6Z
|
|
12
|
-
td/gHWqcOEbGDwEDCmTn4ockpKWbkrM3kqt75fl8yjeaDz1qN15cz/5YKz8aZnuC
|
|
13
|
-
3Pe4VT+QbCeflcIjLJbmKBCJ7sbbDQJOWPiq2QLjqrvG3rUTXF2xlUa3piWpxyHF
|
|
14
|
-
VICuCaojUgl80eb/9kfVUXdDVB8oJIJE/hLEnt90lXUIo7roz4hwFKPuqVhw8368
|
|
15
|
-
FOQvrQW/ogILoSFuPrCSrRbaBOqlefoHiaDZsSpwvwIDAQABMA0GCSqGSIb3DQEB
|
|
16
|
-
CwUAA4ICAQAYb0jECnfZxdIbbCQyRaIMHitZctUlhM48edNX8Jhj+3fMX4rgaua7
|
|
17
|
-
+QMlEhWSaXRZzN5VPA1ifFWaDjndde72iihYgtoTXRaHWquUKw1DkRizdzg7zH9k
|
|
18
|
-
6pi9QNBSDJ1+Pbpf+2ZDcIfTf+YsqmRDNgtmGEQmvad87eIW415ggvRnb0i2fm7v
|
|
19
|
-
0nCqMHSjTkkp9XHBXQ1jnz4zWNr1s+pEEIjy4+oOr7vjuBe/JTUKiQxyqQXWb4MQ
|
|
20
|
-
KhKvPaHsyMpa733/3BVaPrIYM9Y+cR6hVD5DdYsmhFA7oTk7oBpysDREAoXlTuDf
|
|
21
|
-
X+lCVRwek7jDIi1JgOjCroTFRF003V7pul67coGKj2mBTESb+B5FwXuDDDgkti1f
|
|
22
|
-
62FXQQFaBslY8N+tq3YQiZ4CZzREsZVDuRTJWC7nV6+wnOorgeGtmFBjCB11CvuR
|
|
23
|
-
av6rT4TA9Cp30EfWNYSJhmHNRHTSoFAUfbMpjUJ/ZoUfYN0QukFxBmDhy6sg5ZFg
|
|
24
|
-
RibPbqnSXmq9O2n+eHhJsIzrufkt9SSrs2VE2Xzzjfyshqajp92/UJYvyPVFCNKk
|
|
25
|
-
ja34I+m9g7BsgJ83CDcVIZG6QEBGvXHVNuN/5AmH4ZbVAjhcVLUB2FWKxnQJzI8g
|
|
26
|
-
lfWndbecBeyMfWktqudmF/RH/PpRSscmSFEYBt4Y38HI53xfIp74zQ==
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEpDCCAowCCQC0eMZYkbPqvzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
|
|
3
|
+
b2NhbGhvc3QwHhcNMjEwNDA3MDc0MTI2WhcNMzEwNDA1MDc0MTI2WjAUMRIwEAYD
|
|
4
|
+
VQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDR
|
|
5
|
+
fEK1e8OxPAmtBc/bkz+Vy1T0EcRgHjA+UzYNj1kzBFb7CW9V7DIesXJ5mAwR1HOm
|
|
6
|
+
D32Ijou2oSDaHKunnM576PgSCeoRUJkycUSXS0mK2+opuqXTywayTVmcNoqUuE+T
|
|
7
|
+
/XjUJZ+MXsl0zxC5pv0HyMG2sInpIuahj2QrRim7u8IEJugSQLCdw53EVrAQ51s9
|
|
8
|
+
AsSyL/IvdqtYK5kNAz+cIVdn4Vx88YOteqbeMSIg1ICqDc3IgD0sCjQesqIpsJBV
|
|
9
|
+
LJZfWQsRMFt0tUyZQCqjYOSdy0tbrIOL2QjtwSXOPB8bUptvScxevrHAML3qNDz+
|
|
10
|
+
oPdJRMCLK3DOaRorfGPqA0mjlxE6cVXKnkvQlM6Kf8QItYlLMspvv+TFx3VdakbI
|
|
11
|
+
SzP058PEyf2A7IWSzWvFlpigtGuBCtrq8liyFXAsTxMwIB/TwF/G0A1AANg8aK6Z
|
|
12
|
+
td/gHWqcOEbGDwEDCmTn4ockpKWbkrM3kqt75fl8yjeaDz1qN15cz/5YKz8aZnuC
|
|
13
|
+
3Pe4VT+QbCeflcIjLJbmKBCJ7sbbDQJOWPiq2QLjqrvG3rUTXF2xlUa3piWpxyHF
|
|
14
|
+
VICuCaojUgl80eb/9kfVUXdDVB8oJIJE/hLEnt90lXUIo7roz4hwFKPuqVhw8368
|
|
15
|
+
FOQvrQW/ogILoSFuPrCSrRbaBOqlefoHiaDZsSpwvwIDAQABMA0GCSqGSIb3DQEB
|
|
16
|
+
CwUAA4ICAQAYb0jECnfZxdIbbCQyRaIMHitZctUlhM48edNX8Jhj+3fMX4rgaua7
|
|
17
|
+
+QMlEhWSaXRZzN5VPA1ifFWaDjndde72iihYgtoTXRaHWquUKw1DkRizdzg7zH9k
|
|
18
|
+
6pi9QNBSDJ1+Pbpf+2ZDcIfTf+YsqmRDNgtmGEQmvad87eIW415ggvRnb0i2fm7v
|
|
19
|
+
0nCqMHSjTkkp9XHBXQ1jnz4zWNr1s+pEEIjy4+oOr7vjuBe/JTUKiQxyqQXWb4MQ
|
|
20
|
+
KhKvPaHsyMpa733/3BVaPrIYM9Y+cR6hVD5DdYsmhFA7oTk7oBpysDREAoXlTuDf
|
|
21
|
+
X+lCVRwek7jDIi1JgOjCroTFRF003V7pul67coGKj2mBTESb+B5FwXuDDDgkti1f
|
|
22
|
+
62FXQQFaBslY8N+tq3YQiZ4CZzREsZVDuRTJWC7nV6+wnOorgeGtmFBjCB11CvuR
|
|
23
|
+
av6rT4TA9Cp30EfWNYSJhmHNRHTSoFAUfbMpjUJ/ZoUfYN0QukFxBmDhy6sg5ZFg
|
|
24
|
+
RibPbqnSXmq9O2n+eHhJsIzrufkt9SSrs2VE2Xzzjfyshqajp92/UJYvyPVFCNKk
|
|
25
|
+
ja34I+m9g7BsgJ83CDcVIZG6QEBGvXHVNuN/5AmH4ZbVAjhcVLUB2FWKxnQJzI8g
|
|
26
|
+
lfWndbecBeyMfWktqudmF/RH/PpRSscmSFEYBt4Y38HI53xfIp74zQ==
|
|
27
27
|
-----END CERTIFICATE-----
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
-
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
-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
-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
-
EkCwncOdxFawEOdbPQLEsi/yL3arWCuZDQM/nCFXZ+FcfPGDrXqm3jEiINSAqg3N
|
|
6
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
Dn/be5+dIC1nvRsmQM7tBJsuoamtiSnaRXmsQ8rHQ23p2bJToJUSludWxvQDqtlO
|
|
20
|
-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
-
mvlxRHrIxg5e5eIdRW70pzdH1fWzKZuu7qRZZuK7fTFmhEoWl7mjyGsCzwOxfq1J
|
|
22
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
PzU/gbG+Da46qkXLA30asIrfwrYtSP+LR5R7nsDYaSuVeoiKkXtj8pFwaUVGBi5s
|
|
49
|
-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
-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
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
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
|
|
51
51
|
-----END RSA PRIVATE KEY-----
|
package/lib/config/UxConfig.d.ts
CHANGED
|
@@ -22,12 +22,12 @@ declare class UxConfig implements IFileLaneConfig<IJavascriptCompileOption> {
|
|
|
22
22
|
* @returns
|
|
23
23
|
*/
|
|
24
24
|
collectFile: (entryFileList?: IChangedFile[]) => string[];
|
|
25
|
-
exclude: (
|
|
25
|
+
exclude: (string | ((filePath: string) => boolean))[];
|
|
26
26
|
get output(): string;
|
|
27
27
|
beforeWorks: (typeof UxBeforeWorks.cleanOutput)[];
|
|
28
|
-
beforeCompile: import("file-lane").PreWork<IJavascriptCompileOption>[];
|
|
28
|
+
beforeCompile: import("../../../file-lane/lib").PreWork<IJavascriptCompileOption>[];
|
|
29
29
|
afterCompile: {
|
|
30
|
-
worker: import("file-lane").FollowWork<IJavascriptCompileOption>;
|
|
30
|
+
worker: import("../../../file-lane/lib").FollowWork<IJavascriptCompileOption>;
|
|
31
31
|
workerDescribe: string;
|
|
32
32
|
}[];
|
|
33
33
|
afterWorks: (typeof UxAfterWorks.cleanOutput)[];
|
package/lib/config/UxConfig.js
CHANGED
|
@@ -52,9 +52,10 @@ class UxConfig {
|
|
|
52
52
|
return getProjectFiles();
|
|
53
53
|
};
|
|
54
54
|
this.exclude = [
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
'**/node_modules{,/**}',
|
|
56
|
+
'**/dist{,/**}',
|
|
57
|
+
'**/build{,/**}',
|
|
58
|
+
'**/.git{,/**}',
|
|
58
59
|
(filePath) => {
|
|
59
60
|
// 如果 是 script, style文件,且同路径下存在同名 hml,则忽略
|
|
60
61
|
const { ext, name } = path_1.default.parse(filePath);
|
|
@@ -4,7 +4,7 @@ import XtsLoader from '../loader/xts/XtsLoader';
|
|
|
4
4
|
* XtsConfig
|
|
5
5
|
*/
|
|
6
6
|
declare class XtsConfig implements IFileLaneConfig {
|
|
7
|
-
exclude:
|
|
7
|
+
exclude: string[];
|
|
8
8
|
output: string;
|
|
9
9
|
module: {
|
|
10
10
|
rules: {
|
|
@@ -14,7 +14,7 @@ declare class XtsConfig implements IFileLaneConfig {
|
|
|
14
14
|
};
|
|
15
15
|
beforeCompile: PreWork[];
|
|
16
16
|
afterCompile: {
|
|
17
|
-
worker: import("file-lane").FollowWork<import("..").IXtsCompileOptions>;
|
|
17
|
+
worker: import("../../../file-lane/lib").FollowWork<import("..").IXtsCompileOptions>;
|
|
18
18
|
}[];
|
|
19
19
|
}
|
|
20
20
|
export default XtsConfig;
|
package/lib/config/XtsConfig.js
CHANGED
|
@@ -12,7 +12,13 @@ const XtsLoader_1 = __importDefault(require("../loader/xts/XtsLoader"));
|
|
|
12
12
|
*/
|
|
13
13
|
class XtsConfig {
|
|
14
14
|
constructor() {
|
|
15
|
-
this.exclude = [
|
|
15
|
+
this.exclude = [
|
|
16
|
+
'**/node_modules{,/**}',
|
|
17
|
+
'**/dist{,/**}',
|
|
18
|
+
'**/build{,/**}',
|
|
19
|
+
'**/.git{,/**}',
|
|
20
|
+
'**/.wasmUnpacked{,/**}'
|
|
21
|
+
];
|
|
16
22
|
this.output = 'build';
|
|
17
23
|
this.module = {
|
|
18
24
|
rules: [
|
|
@@ -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
|
-
|
|
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;
|
|
@@ -54,7 +54,7 @@ BeforeCompileUtils.getEntries = (params) => {
|
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
56
56
|
// 路径不存在
|
|
57
|
-
shared_utils_1.ColorConsole.throw(`### manifest ### path '${entryDir
|
|
57
|
+
shared_utils_1.ColorConsole.throw(`### manifest ### path '${path_1.default.join(entryDir, entryPages.join(' | '))}' does not exist`);
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import IManifest from '../../compiler/javascript/vela/interface/IManifest';
|
|
2
1
|
import FileLaneCompilation from 'file-lane/lib/FileLaneCompilation';
|
|
2
|
+
import IManifest from '../../compiler/javascript/vela/interface/IManifest';
|
|
3
3
|
export declare class UxFileUtils {
|
|
4
4
|
static readonly CONFIG_FILE_NAME = "manifest.json";
|
|
5
5
|
/**
|
|
@@ -19,9 +19,10 @@ export declare class UxFileUtils {
|
|
|
19
19
|
/**
|
|
20
20
|
* 检查 manifest文件,并显示错误信息
|
|
21
21
|
*
|
|
22
|
-
* 1.
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* 1. 使用ManifestSchema 校验
|
|
23
|
+
* 1. TypeError: Error
|
|
24
|
+
* 2. 其它: Warn
|
|
25
|
+
* 2. 检查 router.entry 是否存在于 router.pages
|
|
25
26
|
*
|
|
26
27
|
* @param projectPath 项目路径
|
|
27
28
|
* @param sourceRoot 源码路径--相对项目根目录
|
|
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.UxFileUtils = void 0;
|
|
7
7
|
const ColorConsole_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/ColorConsole"));
|
|
8
|
-
const CommonUtil_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/utils/CommonUtil"));
|
|
9
8
|
const ILog_1 = require("@aiot-toolkit/shared-utils/lib/interface/ILog");
|
|
9
|
+
const CommonUtil_1 = __importDefault(require("@aiot-toolkit/shared-utils/lib/utils/CommonUtil"));
|
|
10
10
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
11
11
|
const path_1 = __importDefault(require("path"));
|
|
12
12
|
const ManifestSchema_1 = __importDefault(require("./ManifestSchema"));
|
|
@@ -32,9 +32,10 @@ class UxFileUtils {
|
|
|
32
32
|
/**
|
|
33
33
|
* 检查 manifest文件,并显示错误信息
|
|
34
34
|
*
|
|
35
|
-
* 1.
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
* 1. 使用ManifestSchema 校验
|
|
36
|
+
* 1. TypeError: Error
|
|
37
|
+
* 2. 其它: Warn
|
|
38
|
+
* 2. 检查 router.entry 是否存在于 router.pages
|
|
38
39
|
*
|
|
39
40
|
* @param projectPath 项目路径
|
|
40
41
|
* @param sourceRoot 源码路径--相对项目根目录
|
|
@@ -48,27 +49,26 @@ class UxFileUtils {
|
|
|
48
49
|
style: ColorConsole_1.default.getStyle(ILog_1.Loglevel.THROW)
|
|
49
50
|
});
|
|
50
51
|
}
|
|
52
|
+
// 1
|
|
51
53
|
const jsonData = this.getMainfestInfo(projectPath, sourceRoot);
|
|
52
54
|
const schema = ManifestSchema_1.default;
|
|
53
|
-
const errors = CommonUtil_1.default.validateJson(jsonData, schema);
|
|
54
|
-
|
|
55
|
+
const errors = CommonUtil_1.default.validateJson(jsonData, schema) || [];
|
|
56
|
+
// 2
|
|
57
|
+
const { entry, pages } = jsonData.router;
|
|
58
|
+
if (!pages[entry]) {
|
|
59
|
+
errors.push(new TypeError(`router.entry content: ${entry}, is missing in router.pages`));
|
|
60
|
+
}
|
|
61
|
+
if (errors === null || errors === void 0 ? void 0 : errors.length) {
|
|
55
62
|
ColorConsole_1.default.warn(`Manefest.json error: `, ...errors.map((item, index) => {
|
|
56
63
|
return {
|
|
57
|
-
word: `\r\n${index + 1}
|
|
64
|
+
word: `\r\n${index + 1}. ${item.message}`,
|
|
58
65
|
style: item instanceof TypeError
|
|
59
66
|
? ColorConsole_1.default.getStyle(ILog_1.Loglevel.ERROR)
|
|
60
67
|
: ColorConsole_1.default.getStyle(ILog_1.Loglevel.WARN)
|
|
61
68
|
};
|
|
62
69
|
}));
|
|
63
|
-
const stop = Boolean(errors.find((item) => item instanceof TypeError));
|
|
64
|
-
if (stop) {
|
|
65
|
-
ColorConsole_1.default.throw({
|
|
66
|
-
word: `missing required content, program stoped`,
|
|
67
|
-
style: ColorConsole_1.default.getStyle(ILog_1.Loglevel.THROW)
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
70
|
}
|
|
71
|
-
return errors;
|
|
71
|
+
return errors.length ? errors : undefined;
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
74
|
* 检查 sitemap.json 文件,并显示错误信息
|
|
@@ -219,19 +219,19 @@ class UxLoaderUtils {
|
|
|
219
219
|
// 如果aiotfor存在,需要把函数体替换为aiotfor.funcArr
|
|
220
220
|
if (aiotfor) {
|
|
221
221
|
const { funcArr = [], key, value } = aiotfor;
|
|
222
|
-
const forFun = `function(${key || '$idx'}, ${value || '$item'}) {
|
|
223
|
-
return [
|
|
224
|
-
${funcArr.map((item) => funToString(item)).join(',\r\n')}
|
|
225
|
-
]
|
|
222
|
+
const forFun = `function(${key || '$idx'}, ${value || '$item'}) {
|
|
223
|
+
return [
|
|
224
|
+
${funcArr.map((item) => funToString(item)).join(',\r\n')}
|
|
225
|
+
]
|
|
226
226
|
}`;
|
|
227
227
|
return forFun;
|
|
228
228
|
}
|
|
229
229
|
if (aiotcb) {
|
|
230
230
|
const { funcArr = [] } = aiotcb;
|
|
231
|
-
const cbFun = `function($data){
|
|
232
|
-
return [
|
|
233
|
-
${funcArr.map((item) => funToString(item)).join(',\r\n')}
|
|
234
|
-
]
|
|
231
|
+
const cbFun = `function($data){
|
|
232
|
+
return [
|
|
233
|
+
${funcArr.map((item) => funToString(item)).join(',\r\n')}
|
|
234
|
+
]
|
|
235
235
|
}`;
|
|
236
236
|
return cbFun;
|
|
237
237
|
}
|
|
@@ -252,8 +252,8 @@ class UxLoaderUtils {
|
|
|
252
252
|
const entries = Object.entries(obj).map(([key, value]) => {
|
|
253
253
|
return `"${key}": ${processValue(value)}`;
|
|
254
254
|
});
|
|
255
|
-
return `{
|
|
256
|
-
${entries.join(',\r\n ')}
|
|
255
|
+
return `{
|
|
256
|
+
${entries.join(',\r\n ')}
|
|
257
257
|
}`;
|
|
258
258
|
};
|
|
259
259
|
const { path } = file;
|
|
@@ -261,21 +261,21 @@ class UxLoaderUtils {
|
|
|
261
261
|
const { funcArr = [], optArr } = aiot;
|
|
262
262
|
const templateResult = BinaryPlugin.addTemplate(path, path, code);
|
|
263
263
|
BinaryPlugin.addTagName(path, path);
|
|
264
|
-
const result = `function (vm) {
|
|
265
|
-
const _vm_ = vm || this
|
|
266
|
-
return aiot.__cv__(
|
|
267
|
-
"${templateResult.name}",
|
|
268
|
-
${templateResult.index},
|
|
269
|
-
{
|
|
270
|
-
__vm__:_vm_,
|
|
271
|
-
__func__:[
|
|
272
|
-
${funcArr.map((item) => funToString(item)).join(',\r\n')}
|
|
273
|
-
],
|
|
274
|
-
__optsArr__:[
|
|
275
|
-
${optArr.map((item) => stringifyObjectWithFunctions(item))},
|
|
276
|
-
]
|
|
277
|
-
}
|
|
278
|
-
)
|
|
264
|
+
const result = `function (vm) {
|
|
265
|
+
const _vm_ = vm || this
|
|
266
|
+
return aiot.__cv__(
|
|
267
|
+
"${templateResult.name}",
|
|
268
|
+
${templateResult.index},
|
|
269
|
+
{
|
|
270
|
+
__vm__:_vm_,
|
|
271
|
+
__func__:[
|
|
272
|
+
${funcArr.map((item) => funToString(item)).join(',\r\n')}
|
|
273
|
+
],
|
|
274
|
+
__optsArr__:[
|
|
275
|
+
${optArr.map((item) => stringifyObjectWithFunctions(item))},
|
|
276
|
+
]
|
|
277
|
+
}
|
|
278
|
+
)
|
|
279
279
|
}`;
|
|
280
280
|
return result;
|
|
281
281
|
}
|
|
@@ -285,9 +285,9 @@ class UxLoaderUtils {
|
|
|
285
285
|
* @returns
|
|
286
286
|
*/
|
|
287
287
|
static wrapTempalte(templateTree, file, compilerOption) {
|
|
288
|
-
const result = `function (vm) {
|
|
289
|
-
const _vm_ = vm || this
|
|
290
|
-
return ${templateTree.getFullText()}
|
|
288
|
+
const result = `function (vm) {
|
|
289
|
+
const _vm_ = vm || this
|
|
290
|
+
return ${templateTree.getFullText()}
|
|
291
291
|
}`;
|
|
292
292
|
if (compilerOption.enableProtobuf) {
|
|
293
293
|
return this.addTemplateProtobuf(file, result);
|
|
@@ -319,27 +319,27 @@ class UxLoaderUtils {
|
|
|
319
319
|
}
|
|
320
320
|
}
|
|
321
321
|
// 页面组件需要添加ViewModel数据校验和处理代码
|
|
322
|
-
UxLoaderUtils.contenAccess = `\n
|
|
323
|
-
const moduleOwn = exports.default || module.exports
|
|
324
|
-
const accessors = ['public', 'protected', 'private']
|
|
325
|
-
|
|
326
|
-
if (moduleOwn.data && accessors.some(function (acc) { return moduleOwn[acc] })) {
|
|
327
|
-
throw new Error('页面VM对象中的属性data不可与"' + accessors.join(',') + '"同时存在,请使用private替换data名称')
|
|
328
|
-
}
|
|
329
|
-
else if (!moduleOwn.data) {
|
|
330
|
-
moduleOwn.data = {}
|
|
331
|
-
moduleOwn._descriptor = {}
|
|
332
|
-
accessors.forEach(function (acc) {
|
|
333
|
-
const accType = typeof moduleOwn[acc]
|
|
334
|
-
if (accType === 'object') {
|
|
335
|
-
moduleOwn.data = Object.assign(moduleOwn.data, moduleOwn[acc])
|
|
336
|
-
for (const name in moduleOwn[acc]) {
|
|
337
|
-
moduleOwn._descriptor[name] = { access: acc }
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
else if (accType === 'function') {
|
|
341
|
-
console.warn('页面VM对象中的属性' + acc + '的值不能是函数,请使用对象')
|
|
342
|
-
}
|
|
343
|
-
})
|
|
322
|
+
UxLoaderUtils.contenAccess = `\n
|
|
323
|
+
const moduleOwn = exports.default || module.exports
|
|
324
|
+
const accessors = ['public', 'protected', 'private']
|
|
325
|
+
|
|
326
|
+
if (moduleOwn.data && accessors.some(function (acc) { return moduleOwn[acc] })) {
|
|
327
|
+
throw new Error('页面VM对象中的属性data不可与"' + accessors.join(',') + '"同时存在,请使用private替换data名称')
|
|
328
|
+
}
|
|
329
|
+
else if (!moduleOwn.data) {
|
|
330
|
+
moduleOwn.data = {}
|
|
331
|
+
moduleOwn._descriptor = {}
|
|
332
|
+
accessors.forEach(function (acc) {
|
|
333
|
+
const accType = typeof moduleOwn[acc]
|
|
334
|
+
if (accType === 'object') {
|
|
335
|
+
moduleOwn.data = Object.assign(moduleOwn.data, moduleOwn[acc])
|
|
336
|
+
for (const name in moduleOwn[acc]) {
|
|
337
|
+
moduleOwn._descriptor[name] = { access: acc }
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
else if (accType === 'function') {
|
|
341
|
+
console.warn('页面VM对象中的属性' + acc + '的值不能是函数,请使用对象')
|
|
342
|
+
}
|
|
343
|
+
})
|
|
344
344
|
}`;
|
|
345
345
|
exports.default = UxLoaderUtils;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiot-toolkit/aiotpack",
|
|
3
|
-
"version": "2.0.2-beta.
|
|
3
|
+
"version": "2.0.2-beta.19",
|
|
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.
|
|
23
|
-
"@aiot-toolkit/parser": "2.0.2-beta.
|
|
24
|
-
"@aiot-toolkit/shared-utils": "2.0.2-beta.
|
|
22
|
+
"@aiot-toolkit/generator": "2.0.2-beta.19",
|
|
23
|
+
"@aiot-toolkit/parser": "2.0.2-beta.19",
|
|
24
|
+
"@aiot-toolkit/shared-utils": "2.0.2-beta.19",
|
|
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.
|
|
31
|
+
"file-lane": "2.0.2-beta.19",
|
|
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": "
|
|
48
|
+
"gitHead": "7c6ed600fe84ee9de9b00c6e95dfabf3bfb3ad65"
|
|
49
49
|
}
|