@aiot-toolkit/parser 2.0.5-widget-provider-beta.1 → 2.0.5
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 +11 -11
- package/lib/utils/ParserUtil.js +15 -15
- package/lib/ux/config/ExtensionConfig.js +2 -2
- package/lib/ux/config/FeatureConfig.js +19 -19
- package/lib/ux/config/vela/StyleAttributeConfig.js +134 -88
- package/lib/ux/enum/StyleSelectorType.js +6 -6
- package/lib/ux/enum/TemplateNodeType.js +2 -2
- package/lib/ux/enum/android/StyleSelectorName.js +2 -2
- package/lib/ux/interface/IUxAst.d.ts +2 -0
- package/lib/ux/parser/ScriptParser.js +2 -2
- package/lib/ux/parser/StyleParser.js +79 -72
- package/lib/ux/parser/TemplateValueParser.js +49 -49
- package/lib/ux/parser/UxParser.js +18 -12
- package/lib/ux/translate/android/StyleToTypescript.js +51 -51
- package/lib/ux/translate/android/TemplateToTypescript.js +51 -51
- package/lib/ux/translate/android/UxToTypescript.js +14 -14
- package/lib/ux/translate/android/attributeTranslate/ForTranslate.js +17 -17
- package/lib/ux/translate/android/attributeTranslate/IfTranslate.js +9 -9
- package/lib/ux/translate/vela/ScriptToTypescript.js +10 -10
- package/lib/ux/translate/vela/StyleToTypescript.js +10 -10
- package/lib/ux/translate/vela/TemplateToTypescript.js +74 -74
- package/lib/ux/translate/vela/TranslateCache.js +2 -2
- package/lib/ux/translate/vela/UxToTypescript.js +6 -6
- package/lib/ux/translate/vela/VelaContext.js +2 -2
- package/lib/ux/translate/vela/plugins/e2e.js +63 -62
- package/lib/ux/translate/vela/plugins/startPage.js +1 -1
- package/lib/ux/translate/vela/protobuf/BinaryPlugin.js +172 -172
- package/lib/ux/translate/vela/protobuf/protobuf.js +235 -235
- package/lib/ux/translate/vela/protobuf/protobufControl.js +159 -159
- package/lib/ux/translate/vela/protobuf/vdom_pb.js +2374 -2374
- package/lib/ux/translate/vela/runtime/velaTestLibrary.js +104 -104
- package/lib/ux/translate/vela/utils/AttributeConfig.js +15 -15
- package/lib/ux/translate/vela/utils/ExtendedBoxStyle.js +38 -38
- package/lib/ux/translate/vela/utils/SourceMapUtil.js +30 -30
- package/lib/ux/translate/vela/utils/TemplateUtil.js +180 -180
- package/lib/ux/translate/vela/wrap/CbTranslate.js +8 -8
- package/lib/ux/translate/vela/wrap/CfTranslate.js +14 -14
- package/lib/ux/translate/vela/wrap/CiTranslate.js +11 -11
- package/lib/ux/utils/BabelUtil.js +35 -35
- package/lib/ux/utils/ElementConfigUtil.js +24 -24
- package/lib/ux/utils/StyleMapUtil.js +15 -15
- package/lib/ux/utils/StyleUtil.d.ts +1 -1
- package/lib/ux/utils/StyleUtil.js +192 -248
- package/lib/ux/utils/UxUtil.js +32 -32
- package/lib/ux/validate/ElementValidate.js +2 -2
- package/lib/ux/validate/UxFileValidate.js +2 -2
- package/package.json +4 -4
|
@@ -15,8 +15,8 @@ var _AndroidContext = _interopRequireDefault(require("./AndroidContext"));
|
|
|
15
15
|
var _ForTranslate = _interopRequireDefault(require("./attributeTranslate/ForTranslate"));
|
|
16
16
|
var _IfTranslate = _interopRequireDefault(require("./attributeTranslate/IfTranslate"));
|
|
17
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
|
-
/**
|
|
19
|
-
* TemplateToTypescript
|
|
18
|
+
/**
|
|
19
|
+
* TemplateToTypescript
|
|
20
20
|
*/
|
|
21
21
|
class TemplateToTypescript {
|
|
22
22
|
_mapList = [];
|
|
@@ -47,13 +47,13 @@ class TemplateToTypescript {
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
/**
|
|
51
|
-
* 创建节点对象
|
|
52
|
-
*
|
|
53
|
-
* 1. 创建对象
|
|
54
|
-
* 2. 把对象的属性依次加到sourceFile中,并记录位置
|
|
55
|
-
* 3.
|
|
56
|
-
* @param node
|
|
50
|
+
/**
|
|
51
|
+
* 创建节点对象
|
|
52
|
+
*
|
|
53
|
+
* 1. 创建对象
|
|
54
|
+
* 2. 把对象的属性依次加到sourceFile中,并记录位置
|
|
55
|
+
* 3.
|
|
56
|
+
* @param node
|
|
57
57
|
*/
|
|
58
58
|
async translateNoe(node) {
|
|
59
59
|
if (_TemplateUtil.default.isElement(node)) {
|
|
@@ -62,36 +62,36 @@ class TemplateToTypescript {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
/**
|
|
66
|
-
* 产物节点添加到代码中,并记录位置映射关系
|
|
67
|
-
*
|
|
68
|
-
* 1. 循环非 children 的属性,依次添加到产物树,并记录位置映射关系
|
|
69
|
-
* 2. 如果 children有值,递归处理 children
|
|
70
|
-
*
|
|
71
|
-
* 此函数修改 this._target 和 this._mapList
|
|
72
|
-
* @param node
|
|
65
|
+
/**
|
|
66
|
+
* 产物节点添加到代码中,并记录位置映射关系
|
|
67
|
+
*
|
|
68
|
+
* 1. 循环非 children 的属性,依次添加到产物树,并记录位置映射关系
|
|
69
|
+
* 2. 如果 children有值,递归处理 children
|
|
70
|
+
*
|
|
71
|
+
* 此函数修改 this._target 和 this._mapList
|
|
72
|
+
* @param node
|
|
73
73
|
*/
|
|
74
74
|
addTargetNodeToCode(node) {
|
|
75
75
|
const str = _sharedUtils.StringUtil.objectToString(node);
|
|
76
76
|
this._target.addStatements(str);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
/**
|
|
80
|
-
* 创建节点(此函数生成节点,不修改产物树)
|
|
81
|
-
*
|
|
82
|
-
* 1. 元素处理
|
|
83
|
-
* a. 创建节点
|
|
84
|
-
* 2. 普通属性生成: **属性名需要转成驼峰**
|
|
85
|
-
* 3. 特殊属性处理
|
|
86
|
-
* a. classList、style、events, 单独赋值
|
|
87
|
-
* b. dataset 放到attr 中
|
|
88
|
-
* c. 如果有 id 属性,id在attr同级也要设置
|
|
89
|
-
* d. for if 单独处理
|
|
90
|
-
* e. models 属性转换后放到 events , attr 中
|
|
91
|
-
*
|
|
92
|
-
* 4. 递归子元素生成 children
|
|
93
|
-
* @param node 元素节点
|
|
94
|
-
* @param existingIdentifiers 已存在的标识符列表
|
|
79
|
+
/**
|
|
80
|
+
* 创建节点(此函数生成节点,不修改产物树)
|
|
81
|
+
*
|
|
82
|
+
* 1. 元素处理
|
|
83
|
+
* a. 创建节点
|
|
84
|
+
* 2. 普通属性生成: **属性名需要转成驼峰**
|
|
85
|
+
* 3. 特殊属性处理
|
|
86
|
+
* a. classList、style、events, 单独赋值
|
|
87
|
+
* b. dataset 放到attr 中
|
|
88
|
+
* c. 如果有 id 属性,id在attr同级也要设置
|
|
89
|
+
* d. for if 单独处理
|
|
90
|
+
* e. models 属性转换后放到 events , attr 中
|
|
91
|
+
*
|
|
92
|
+
* 4. 递归子元素生成 children
|
|
93
|
+
* @param node 元素节点
|
|
94
|
+
* @param existingIdentifiers 已存在的标识符列表
|
|
95
95
|
*/
|
|
96
96
|
async createTargetNode(node, existingIdentifiers) {
|
|
97
97
|
const {
|
|
@@ -180,16 +180,16 @@ class TemplateToTypescript {
|
|
|
180
180
|
return result;
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
/**
|
|
184
|
-
* 转换 model 数据
|
|
185
|
-
* 1. 自定义组件转换为
|
|
186
|
-
* events[update:NAME] = function(evt){ VALUE = evt.detail}
|
|
187
|
-
* attr[驼峰名称(NAME)] = function(){ return VALUE }
|
|
188
|
-
* 2. 普通组件转换为
|
|
189
|
-
* events['change'] = function(evt){ VALUE = evt.target.NAME}
|
|
190
|
-
* @param node
|
|
191
|
-
* @param models
|
|
192
|
-
* @returns
|
|
183
|
+
/**
|
|
184
|
+
* 转换 model 数据
|
|
185
|
+
* 1. 自定义组件转换为
|
|
186
|
+
* events[update:NAME] = function(evt){ VALUE = evt.detail}
|
|
187
|
+
* attr[驼峰名称(NAME)] = function(){ return VALUE }
|
|
188
|
+
* 2. 普通组件转换为
|
|
189
|
+
* events['change'] = function(evt){ VALUE = evt.target.NAME}
|
|
190
|
+
* @param node
|
|
191
|
+
* @param models
|
|
192
|
+
* @returns
|
|
193
193
|
*/
|
|
194
194
|
translateModels(node, models) {
|
|
195
195
|
const result = {
|
|
@@ -219,14 +219,14 @@ class TemplateToTypescript {
|
|
|
219
219
|
return result;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
-
/**
|
|
223
|
-
* 预处理属性
|
|
224
|
-
* 1. 特定元素和特定属性处理
|
|
225
|
-
* a. 特定元素:文本子元素做为 value 属性
|
|
226
|
-
* b. 特定元素的特定属性:如果是静态路径,加上 require
|
|
227
|
-
* 2. 去除特殊属性
|
|
228
|
-
* 3. 事件、逻辑属性强制设置为动态属性
|
|
229
|
-
* @param node
|
|
222
|
+
/**
|
|
223
|
+
* 预处理属性
|
|
224
|
+
* 1. 特定元素和特定属性处理
|
|
225
|
+
* a. 特定元素:文本子元素做为 value 属性
|
|
226
|
+
* b. 特定元素的特定属性:如果是静态路径,加上 require
|
|
227
|
+
* 2. 去除特殊属性
|
|
228
|
+
* 3. 事件、逻辑属性强制设置为动态属性
|
|
229
|
+
* @param node
|
|
230
230
|
*/
|
|
231
231
|
preprocessingProperties(node) {
|
|
232
232
|
const {
|
|
@@ -11,8 +11,8 @@ var _SourceMapUtil = _interopRequireDefault(require("../vela/utils/SourceMapUtil
|
|
|
11
11
|
var _StyleToTypescript = _interopRequireDefault(require("./StyleToTypescript"));
|
|
12
12
|
var _TemplateToTypescript = _interopRequireDefault(require("./TemplateToTypescript"));
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
/**
|
|
15
|
-
* UxToTypescript
|
|
14
|
+
/**
|
|
15
|
+
* UxToTypescript
|
|
16
16
|
*/
|
|
17
17
|
class UxToTypescript {
|
|
18
18
|
contenAccess = `\n
|
|
@@ -43,18 +43,18 @@ class UxToTypescript {
|
|
|
43
43
|
this.compilerOption = compilerOption;
|
|
44
44
|
this.contxt = contxt;
|
|
45
45
|
}
|
|
46
|
-
/**
|
|
47
|
-
*
|
|
48
|
-
* 转换过程
|
|
49
|
-
* 1. 源树分为 import template script style 4部分
|
|
50
|
-
* 2. 转换import: 此步骤使用 import
|
|
51
|
-
* 3. 转换template: 此步骤使用 template
|
|
52
|
-
* 4. 转换script: 此步骤使用 import script
|
|
53
|
-
* 5. 转换style: 此步骤使用 style
|
|
54
|
-
* 6. 添加包裹函数
|
|
55
|
-
* @param sourceTree
|
|
56
|
-
* @param offsetList
|
|
57
|
-
* @param param
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
* 转换过程
|
|
49
|
+
* 1. 源树分为 import template script style 4部分
|
|
50
|
+
* 2. 转换import: 此步骤使用 import
|
|
51
|
+
* 3. 转换template: 此步骤使用 template
|
|
52
|
+
* 4. 转换script: 此步骤使用 import script
|
|
53
|
+
* 5. 转换style: 此步骤使用 style
|
|
54
|
+
* 6. 添加包裹函数
|
|
55
|
+
* @param sourceTree
|
|
56
|
+
* @param offsetList
|
|
57
|
+
* @param param
|
|
58
58
|
*/
|
|
59
59
|
async translate(sourceTree, offsetList) {
|
|
60
60
|
const sourceFile = _ParserUtil.default.createSourceFile('', _path.default.basename(this.options.filePath));
|
|
@@ -11,8 +11,8 @@ var _TemplateUtil = _interopRequireDefault(require("../../vela/utils/TemplateUti
|
|
|
11
11
|
var _CfTranslate = _interopRequireDefault(require("../../vela/wrap/CfTranslate"));
|
|
12
12
|
var _AndroidContext = _interopRequireDefault(require("../AndroidContext"));
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
/**
|
|
15
|
-
* ForTranslate
|
|
14
|
+
/**
|
|
15
|
+
* ForTranslate
|
|
16
16
|
*/
|
|
17
17
|
class ForTranslate {
|
|
18
18
|
KEY = 'for';
|
|
@@ -25,21 +25,21 @@ class ForTranslate {
|
|
|
25
25
|
return Boolean(_TemplateUtil.default.getAttribute(node, this.KEY));
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
/**
|
|
29
|
-
* 转换 for 节点
|
|
30
|
-
* 1. 只有 list,生成
|
|
31
|
-
* ```
|
|
32
|
-
* { repeat:function }
|
|
33
|
-
* ```
|
|
34
|
-
* 2. 有index、 item中的任意一项,生成
|
|
35
|
-
* ```json
|
|
36
|
-
* repeat: {
|
|
37
|
-
* exp: function,
|
|
38
|
-
* key: index,
|
|
39
|
-
* value: item
|
|
40
|
-
* }
|
|
41
|
-
* ```
|
|
42
|
-
* @param node
|
|
28
|
+
/**
|
|
29
|
+
* 转换 for 节点
|
|
30
|
+
* 1. 只有 list,生成
|
|
31
|
+
* ```
|
|
32
|
+
* { repeat:function }
|
|
33
|
+
* ```
|
|
34
|
+
* 2. 有index、 item中的任意一项,生成
|
|
35
|
+
* ```json
|
|
36
|
+
* repeat: {
|
|
37
|
+
* exp: function,
|
|
38
|
+
* key: index,
|
|
39
|
+
* value: item
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
* @param node
|
|
43
43
|
*/
|
|
44
44
|
async translate(node) {
|
|
45
45
|
const {
|
|
@@ -9,8 +9,8 @@ var _ElementConfigUtil = _interopRequireDefault(require("../../../utils/ElementC
|
|
|
9
9
|
var _TemplateUtil = _interopRequireDefault(require("../../vela/utils/TemplateUtil"));
|
|
10
10
|
var _AndroidContext = _interopRequireDefault(require("../AndroidContext"));
|
|
11
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
/**
|
|
13
|
-
* IfTranslate
|
|
12
|
+
/**
|
|
13
|
+
* IfTranslate
|
|
14
14
|
*/
|
|
15
15
|
class IfTranslate {
|
|
16
16
|
KEY_LIST = ['if', 'elif', 'else'];
|
|
@@ -23,13 +23,13 @@ class IfTranslate {
|
|
|
23
23
|
return this.KEY_LIST.some(item => _TemplateUtil.default.getAttribute(node, item));
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* 1. 获取条件列表,节点的条件 = 前置条件取反 && 当前节点自身条件
|
|
30
|
-
* 2. 返回 {show:Function}
|
|
31
|
-
* @param node
|
|
32
|
-
* @param identifiers
|
|
26
|
+
/**
|
|
27
|
+
*
|
|
28
|
+
*
|
|
29
|
+
* 1. 获取条件列表,节点的条件 = 前置条件取反 && 当前节点自身条件
|
|
30
|
+
* 2. 返回 {show:Function}
|
|
31
|
+
* @param node
|
|
32
|
+
* @param identifiers
|
|
33
33
|
*/
|
|
34
34
|
async translate(node, identifiers) {
|
|
35
35
|
const conditions = this.templateUtil.getIfCoditionList(node);
|
|
@@ -15,8 +15,8 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
|
|
|
15
15
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
16
|
const BabelPreset = require('@babel/preset-env');
|
|
17
17
|
|
|
18
|
-
/**
|
|
19
|
-
* ScriptToTypescript
|
|
18
|
+
/**
|
|
19
|
+
* ScriptToTypescript
|
|
20
20
|
*/
|
|
21
21
|
class ScriptToTypescript {
|
|
22
22
|
_systemFeatures = (() => new Set())();
|
|
@@ -45,10 +45,10 @@ class ScriptToTypescript {
|
|
|
45
45
|
mapList: []
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
-
/**
|
|
49
|
-
* babel自定义插件实现替换
|
|
50
|
-
* @param sourceCode
|
|
51
|
-
* @returns
|
|
48
|
+
/**
|
|
49
|
+
* babel自定义插件实现替换
|
|
50
|
+
* @param sourceCode
|
|
51
|
+
* @returns
|
|
52
52
|
*/
|
|
53
53
|
babelScript(sourceTree) {
|
|
54
54
|
const sourceCode = sourceTree.content ? sourceTree.content : `""`;
|
|
@@ -132,8 +132,8 @@ class ScriptToTypescript {
|
|
|
132
132
|
return '';
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
/**
|
|
136
|
-
* 缓存并检查 feature
|
|
135
|
+
/**
|
|
136
|
+
* 缓存并检查 feature
|
|
137
137
|
*/
|
|
138
138
|
cacheAndCheckFeature() {
|
|
139
139
|
const {
|
|
@@ -160,8 +160,8 @@ class ScriptToTypescript {
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
/**
|
|
164
|
-
* 检查代码
|
|
163
|
+
/**
|
|
164
|
+
* 检查代码
|
|
165
165
|
*/
|
|
166
166
|
async checkCode(sourceTree) {
|
|
167
167
|
const code = sourceTree.content;
|
|
@@ -9,8 +9,8 @@ var _StyleSelectorType = require("../../enum/StyleSelectorType");
|
|
|
9
9
|
var _StyleUtil = _interopRequireDefault(require("../../utils/StyleUtil"));
|
|
10
10
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
-
/**
|
|
13
|
-
* StyleToTypescript
|
|
12
|
+
/**
|
|
13
|
+
* StyleToTypescript
|
|
14
14
|
*/
|
|
15
15
|
class StyleToTypescript {
|
|
16
16
|
constructor(options, compilerOption) {
|
|
@@ -125,10 +125,10 @@ class StyleToTypescript {
|
|
|
125
125
|
});
|
|
126
126
|
return targetNodeList;
|
|
127
127
|
}
|
|
128
|
-
/**
|
|
129
|
-
* 选择器类型报错,添加thorwLog
|
|
130
|
-
* @param type
|
|
131
|
-
* @param name
|
|
128
|
+
/**
|
|
129
|
+
* 选择器类型报错,添加thorwLog
|
|
130
|
+
* @param type
|
|
131
|
+
* @param name
|
|
132
132
|
*/
|
|
133
133
|
addThorwLog(type, name, position, info) {
|
|
134
134
|
const {
|
|
@@ -266,10 +266,10 @@ class StyleToTypescript {
|
|
|
266
266
|
}]);
|
|
267
267
|
return targetNodes;
|
|
268
268
|
}
|
|
269
|
-
/**
|
|
270
|
-
* vela快应用:按照运行时要求,只补全第一个MediaQuery节点缺少的媒体类型
|
|
271
|
-
* @param sourceNodes
|
|
272
|
-
* @returns
|
|
269
|
+
/**
|
|
270
|
+
* vela快应用:按照运行时要求,只补全第一个MediaQuery节点缺少的媒体类型
|
|
271
|
+
* @param sourceNodes
|
|
272
|
+
* @returns
|
|
273
273
|
*/
|
|
274
274
|
translateMediaPrelude(sourceNodes) {
|
|
275
275
|
const firstMediaQuery = sourceNodes[0];
|
|
@@ -17,8 +17,8 @@ var _CiTranslate = _interopRequireDefault(require("./wrap/CiTranslate"));
|
|
|
17
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
18
|
const STATIC_NAME = 'static';
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* TemplateToTypescript
|
|
20
|
+
/**
|
|
21
|
+
* TemplateToTypescript
|
|
22
22
|
*/
|
|
23
23
|
class TemplateToTypescript {
|
|
24
24
|
project = (() => new _tsMorph.Project({
|
|
@@ -29,9 +29,9 @@ class TemplateToTypescript {
|
|
|
29
29
|
}))();
|
|
30
30
|
_mapList = [];
|
|
31
31
|
elementConfigUtil = (() => new _ElementConfigUtil.default(_ElementConfig.default))();
|
|
32
|
-
/**
|
|
33
|
-
*
|
|
34
|
-
* @param importList 组件列表
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @param importList 组件列表
|
|
35
35
|
*/
|
|
36
36
|
constructor(options, compilerOption, importList) {
|
|
37
37
|
this.options = options;
|
|
@@ -40,13 +40,13 @@ class TemplateToTypescript {
|
|
|
40
40
|
this.templateUtil = new _TemplateUtil.default(_VelaContext.default, options, compilerOption, this.elementConfigUtil);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
/**
|
|
44
|
-
*
|
|
45
|
-
* @param sourceTree
|
|
46
|
-
* @param offsetList
|
|
47
|
-
* @returns
|
|
48
|
-
*
|
|
49
|
-
* @see [解析流程](../doc/ux解析流程.md)
|
|
43
|
+
/**
|
|
44
|
+
*
|
|
45
|
+
* @param sourceTree
|
|
46
|
+
* @param offsetList
|
|
47
|
+
* @returns
|
|
48
|
+
*
|
|
49
|
+
* @see [解析流程](../doc/ux解析流程.md)
|
|
50
50
|
*/
|
|
51
51
|
async translate(sourceTree,
|
|
52
52
|
// eslint-disable-next-line
|
|
@@ -74,10 +74,10 @@ class TemplateToTypescript {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
/**
|
|
78
|
-
* 生成节点表达式
|
|
79
|
-
* @param node
|
|
80
|
-
* @returns
|
|
77
|
+
/**
|
|
78
|
+
* 生成节点表达式
|
|
79
|
+
* @param node
|
|
80
|
+
* @returns
|
|
81
81
|
*/
|
|
82
82
|
async createNodeExpression(node, identifiers) {
|
|
83
83
|
// 1. 获取所有属性,并提取数据
|
|
@@ -88,21 +88,21 @@ class TemplateToTypescript {
|
|
|
88
88
|
return await this.createElementWrap(node, elementExpression, infomation, identifiers);
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
/**
|
|
92
|
-
* 预处理属性
|
|
93
|
-
* 1. 特定元素和特定属性处理
|
|
94
|
-
* a. 允许设置文字的元素:如果子元素无节点元素, “文本子元素”做为 value 属性. 例如 `<Text>这里全是文字,没有带 tag 的节点</Text>`
|
|
95
|
-
* b. 特定元素的特定属性:如果是静态路径,加上 require
|
|
96
|
-
* 2. 去除特殊属性
|
|
97
|
-
* 3. 添加特殊属性
|
|
98
|
-
* a. 添加static: 存在static属性 && 存在动态属性
|
|
99
|
-
* 4. 属性拆分为属性名和修饰符, 并提取修饰符
|
|
100
|
-
a. static 修饰符:如果元素存在 static 属性,则排除全部属性的 static 修饰符
|
|
101
|
-
b. 特殊属性不生成修饰符:[if elif else]--修饰符生成到 ci 中; for-修饰符生成到 cf 中
|
|
102
|
-
c. 其它情况:生成对象 {[属性名]:{修饰符名:true}}
|
|
103
|
-
* 5. 事件、逻辑属性强制设置为动态属性
|
|
104
|
-
* @param node
|
|
105
|
-
* @returns
|
|
91
|
+
/**
|
|
92
|
+
* 预处理属性
|
|
93
|
+
* 1. 特定元素和特定属性处理
|
|
94
|
+
* a. 允许设置文字的元素:如果子元素无节点元素, “文本子元素”做为 value 属性. 例如 `<Text>这里全是文字,没有带 tag 的节点</Text>`
|
|
95
|
+
* b. 特定元素的特定属性:如果是静态路径,加上 require
|
|
96
|
+
* 2. 去除特殊属性
|
|
97
|
+
* 3. 添加特殊属性
|
|
98
|
+
* a. 添加static: 存在static属性 && 存在动态属性
|
|
99
|
+
* 4. 属性拆分为属性名和修饰符, 并提取修饰符
|
|
100
|
+
a. static 修饰符:如果元素存在 static 属性,则排除全部属性的 static 修饰符
|
|
101
|
+
b. 特殊属性不生成修饰符:[if elif else]--修饰符生成到 ci 中; for-修饰符生成到 cf 中
|
|
102
|
+
c. 其它情况:生成对象 {[属性名]:{修饰符名:true}}
|
|
103
|
+
* 5. 事件、逻辑属性强制设置为动态属性
|
|
104
|
+
* @param node
|
|
105
|
+
* @returns
|
|
106
106
|
*/
|
|
107
107
|
preprocessingProperties(node, extractionInformation) {
|
|
108
108
|
const {
|
|
@@ -203,17 +203,17 @@ class TemplateToTypescript {
|
|
|
203
203
|
return result;
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
-
/**
|
|
207
|
-
* 创建元素表达式
|
|
208
|
-
*
|
|
209
|
-
* 此方法只创建节点本身的函数
|
|
210
|
-
*
|
|
211
|
-
* 示例:aiot.__ce__("div", {}, [children])
|
|
212
|
-
*
|
|
213
|
-
* 1. 如果是#text 节点,做为<span>文字内容</span> 返回
|
|
214
|
-
* 2. 其它按普通元素处理
|
|
215
|
-
* @param node
|
|
216
|
-
* @returns
|
|
206
|
+
/**
|
|
207
|
+
* 创建元素表达式
|
|
208
|
+
*
|
|
209
|
+
* 此方法只创建节点本身的函数
|
|
210
|
+
*
|
|
211
|
+
* 示例:aiot.__ce__("div", {}, [children])
|
|
212
|
+
*
|
|
213
|
+
* 1. 如果是#text 节点,做为<span>文字内容</span> 返回
|
|
214
|
+
* 2. 其它按普通元素处理
|
|
215
|
+
* @param node
|
|
216
|
+
* @returns
|
|
217
217
|
*/
|
|
218
218
|
async createElementExpression(node, extractionInformation, identifiers) {
|
|
219
219
|
const {
|
|
@@ -304,13 +304,13 @@ class TemplateToTypescript {
|
|
|
304
304
|
return result;
|
|
305
305
|
}
|
|
306
306
|
|
|
307
|
-
/**
|
|
308
|
-
* 从节点中提取标识符列表
|
|
309
|
-
*
|
|
310
|
-
* 例如从 <div for="(item, index) in data"/> 提取 item ,index
|
|
311
|
-
*
|
|
312
|
-
* 目前只有一种情况:for
|
|
313
|
-
* @param element
|
|
307
|
+
/**
|
|
308
|
+
* 从节点中提取标识符列表
|
|
309
|
+
*
|
|
310
|
+
* 例如从 <div for="(item, index) in data"/> 提取 item ,index
|
|
311
|
+
*
|
|
312
|
+
* 目前只有一种情况:for
|
|
313
|
+
* @param element
|
|
314
314
|
*/
|
|
315
315
|
getIdentifiersFromNode(node) {
|
|
316
316
|
const result = [];
|
|
@@ -334,13 +334,13 @@ class TemplateToTypescript {
|
|
|
334
334
|
return result;
|
|
335
335
|
}
|
|
336
336
|
|
|
337
|
-
/**
|
|
338
|
-
* 获取函数调用表达式的名称
|
|
339
|
-
* 1. 无:block**
|
|
340
|
-
* 1. ✓cc: 自定义组件
|
|
341
|
-
* 1. ✓cdc: (is/remotewidget) + component
|
|
342
|
-
* 1. ✓ ce: 一般情况
|
|
343
|
-
* @returns
|
|
337
|
+
/**
|
|
338
|
+
* 获取函数调用表达式的名称
|
|
339
|
+
* 1. 无:block**
|
|
340
|
+
* 1. ✓cc: 自定义组件
|
|
341
|
+
* 1. ✓cdc: (is/remotewidget) + component
|
|
342
|
+
* 1. ✓ ce: 一般情况
|
|
343
|
+
* @returns
|
|
344
344
|
*/
|
|
345
345
|
getCallExpressionName(node) {
|
|
346
346
|
const {
|
|
@@ -360,10 +360,10 @@ class TemplateToTypescript {
|
|
|
360
360
|
return result ? `__${result}__` : '';
|
|
361
361
|
}
|
|
362
362
|
|
|
363
|
-
/**
|
|
364
|
-
* 是否是自定义组件
|
|
365
|
-
* @param componentName 组件名称
|
|
366
|
-
* @returns
|
|
363
|
+
/**
|
|
364
|
+
* 是否是自定义组件
|
|
365
|
+
* @param componentName 组件名称
|
|
366
|
+
* @returns
|
|
367
367
|
*/
|
|
368
368
|
isCustomeComponent(componentName) {
|
|
369
369
|
const {
|
|
@@ -372,13 +372,13 @@ class TemplateToTypescript {
|
|
|
372
372
|
return importList?.map(item => item.toLowerCase()).includes(componentName.toLowerCase());
|
|
373
373
|
}
|
|
374
374
|
|
|
375
|
-
/**
|
|
376
|
-
* 生成包裹元素
|
|
377
|
-
* 1. 文字:无包裹内容
|
|
378
|
-
* 2. 通过block-cb, for-cf, if-ci 检查是否有包裹层
|
|
379
|
-
* @param node
|
|
380
|
-
* @param elementExpression
|
|
381
|
-
* @returns
|
|
375
|
+
/**
|
|
376
|
+
* 生成包裹元素
|
|
377
|
+
* 1. 文字:无包裹内容
|
|
378
|
+
* 2. 通过block-cb, for-cf, if-ci 检查是否有包裹层
|
|
379
|
+
* @param node
|
|
380
|
+
* @param elementExpression
|
|
381
|
+
* @returns
|
|
382
382
|
*/
|
|
383
383
|
async createElementWrap(node, elementExpression, infomation, identifiers) {
|
|
384
384
|
// 1
|
|
@@ -396,13 +396,13 @@ class TemplateToTypescript {
|
|
|
396
396
|
return result;
|
|
397
397
|
}
|
|
398
398
|
|
|
399
|
-
/**
|
|
400
|
-
* 提取节点属性信息
|
|
401
|
-
*
|
|
402
|
-
* 1. 根据属性提示属性信息
|
|
403
|
-
* 2. 对于文本类元素,是否有动态属性,还需要检查文本内容。 例如:<text>{{aa}}</text> 也应判定为有动态值
|
|
404
|
-
* @param node
|
|
405
|
-
* @returns
|
|
399
|
+
/**
|
|
400
|
+
* 提取节点属性信息
|
|
401
|
+
*
|
|
402
|
+
* 1. 根据属性提示属性信息
|
|
403
|
+
* 2. 对于文本类元素,是否有动态属性,还需要检查文本内容。 例如:<text>{{aa}}</text> 也应判定为有动态值
|
|
404
|
+
* @param node
|
|
405
|
+
* @returns
|
|
406
406
|
*/
|
|
407
407
|
extractionAttributeInfomation(node) {
|
|
408
408
|
const {
|
|
@@ -11,8 +11,8 @@ var _SourceMapUtil = _interopRequireDefault(require("./utils/SourceMapUtil"));
|
|
|
11
11
|
var _UxUtil = _interopRequireDefault(require("../../utils/UxUtil"));
|
|
12
12
|
var _ParserUtil = _interopRequireDefault(require("../../../utils/ParserUtil"));
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
/**
|
|
15
|
-
* UxToTypescript
|
|
14
|
+
/**
|
|
15
|
+
* UxToTypescript
|
|
16
16
|
*/
|
|
17
17
|
class UxToTypescript {
|
|
18
18
|
constructor(options, integratedFunction, compilerOption, context) {
|
|
@@ -54,10 +54,10 @@ class UxToTypescript {
|
|
|
54
54
|
sourceMap: newGenerator
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
-
/**
|
|
58
|
-
*
|
|
59
|
-
* @param importList
|
|
60
|
-
* @returns
|
|
57
|
+
/**
|
|
58
|
+
*
|
|
59
|
+
* @param importList
|
|
60
|
+
* @returns
|
|
61
61
|
*/
|
|
62
62
|
importToTypescript(importList) {
|
|
63
63
|
return _UxUtil.default.importToTypescript(importList, this.compilerOption);
|