efront 4.14.3 → 4.15.2
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/#/345/233/275/351/231/205/345/214/226.yml +15 -0
- package/coms/basic/#loader.js +12 -8
- package/coms/basic/Table.js +1 -0
- package/coms/basic/cross_.js +3 -3
- package/coms/basic/enrich.js +27 -38
- package/coms/basic/mark.js +3 -1
- package/coms/basic/parseCSV.js +1 -0
- package/coms/basic_/JSON.js +37 -12
- package/coms/basic_/JSON_test.js +9 -0
- package/coms/compile/Javascript.js +81 -21
- package/coms/compile/Javascript_test.js +2 -0
- package/coms/compile/Program.js +2 -1
- package/coms/compile/common.js +6 -2
- package/coms/compile/downLevel.js +6 -6
- package/coms/compile/downLevel_test.js +3 -2
- package/coms/reptile/detectWithExtension.js +1 -1
- package/coms/zimoli/slider.js +5 -1
- package/coms/zimoli/user.js +44 -44
- package/coms/zimoli/zimoli.js +2 -6
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/coms/zimoli/writeFile.js +0 -1
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
- zh-CN: 无法找到可用的$1支持库
|
|
2
|
+
en: Unable to find available $1 support library
|
|
3
|
+
|
|
4
|
+
- zh-CN: 无扩展名的
|
|
5
|
+
en: without an extension
|
|
6
|
+
|
|
7
|
+
- zh-CN: 扩展名为$1的
|
|
8
|
+
en: whose extension is $1
|
|
9
|
+
|
|
10
|
+
- zh-CN: 不支持编译$1文件
|
|
11
|
+
en: Does not support compiling files $1
|
|
12
|
+
|
|
13
|
+
- zh-CN: 文件$1使用了不存在的模块$2
|
|
14
|
+
en: File $1 used a non-existent module $2
|
|
15
|
+
|
|
1
16
|
- zh-CN: 未知错误!
|
|
2
17
|
en: Unknown error!
|
|
3
18
|
|
package/coms/basic/#loader.js
CHANGED
|
@@ -243,6 +243,7 @@ var killCircle = function () {
|
|
|
243
243
|
for (var k of module_keys) flushTree(tree, k);
|
|
244
244
|
}
|
|
245
245
|
};
|
|
246
|
+
var multiModules = Object.create(null);
|
|
246
247
|
// -->
|
|
247
248
|
var hasOwnProperty = {}.hasOwnProperty;
|
|
248
249
|
var loadModule = function (url, then, prebuilds = {}) {
|
|
@@ -509,7 +510,7 @@ var createModule = function (exec, originNames, compiledNames, prebuilds = {}) {
|
|
|
509
510
|
});
|
|
510
511
|
};
|
|
511
512
|
|
|
512
|
-
var init = function (url, then, prebuilds) {
|
|
513
|
+
var init = function (url, then, prebuilds, keeppage) {
|
|
513
514
|
// then = bindthen(then);
|
|
514
515
|
var key = keyprefix + url;
|
|
515
516
|
if (prebuilds) {
|
|
@@ -626,7 +627,16 @@ var init = function (url, then, prebuilds) {
|
|
|
626
627
|
}
|
|
627
628
|
var filteredArgs = prebuilds ? args.filter(a => !hasOwnProperty.call(prebuilds, a)) : args;
|
|
628
629
|
|
|
629
|
-
var saveAsModule = filteredArgs.length === args.length;
|
|
630
|
+
var saveAsModule = keeppage || filteredArgs.length === args.length;
|
|
631
|
+
if (saveAsModule) {
|
|
632
|
+
if (penddings[key]) {
|
|
633
|
+
penddings[key].then(then);
|
|
634
|
+
return;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
//<!--
|
|
638
|
+
else if (!multiModules[key]) multiModules[key] = args.filter(k => hasOwnProperty.call(prebuilds, k)).join("、"), console.info(`${key}%c引用了非单例的%c${multiModules[key]}%c,无法存储为单例`, 'color:gray', 'color:green', 'color:gray')
|
|
639
|
+
//-->
|
|
630
640
|
if (!filteredArgs.length) {
|
|
631
641
|
var argValues = args.map(a => prebuilds[a]).concat(module.strs);
|
|
632
642
|
argValues.push(module.argNames || []);
|
|
@@ -634,12 +644,6 @@ var init = function (url, then, prebuilds) {
|
|
|
634
644
|
then(created);
|
|
635
645
|
return;
|
|
636
646
|
}
|
|
637
|
-
if (saveAsModule) {
|
|
638
|
-
if (penddings[key]) {
|
|
639
|
-
penddings[key].then(then);
|
|
640
|
-
return;
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
647
|
var created = createModule(module, args, module.argNames, prebuilds);
|
|
644
648
|
if (isThenable(created)) {
|
|
645
649
|
if (saveAsModule) {
|
package/coms/basic/Table.js
CHANGED
package/coms/basic/cross_.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var { File } = this;
|
|
1
|
+
var { File, location } = this;
|
|
2
2
|
function hasFile(o) {
|
|
3
3
|
if (!File) return false;
|
|
4
4
|
for (var k in o) {
|
|
@@ -151,13 +151,13 @@ function cross_(jsonp, digest = noop, method, url, headers) {
|
|
|
151
151
|
digest();
|
|
152
152
|
};
|
|
153
153
|
var getErrorSystem = function () {
|
|
154
|
-
if (!/^(\w+\:|\/\/)/.test(url) && /^file\:/i.test(location.href) || /^file\:/i.test(url)) return i18n`文件系统`;
|
|
154
|
+
if (location && !/^(\w+\:|\/\/)/.test(url) && /^file\:/i.test(location.href) || /^file\:/i.test(url)) return i18n`文件系统`;
|
|
155
155
|
if (navigator.onLine) return i18n`网络`;
|
|
156
156
|
return i18n`服务器`;
|
|
157
157
|
};
|
|
158
158
|
|
|
159
159
|
var onerror = async function (e) {
|
|
160
|
-
if (e.type === 'error') {
|
|
160
|
+
if (!e || e.type === 'error') {
|
|
161
161
|
e = createResponse(i18n`无法访问${getErrorSystem()}`);
|
|
162
162
|
}
|
|
163
163
|
headers = extend({}, _headers);
|
package/coms/basic/enrich.js
CHANGED
|
@@ -1,47 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var bindObjK = function (obj, k, resolve, _object) {
|
|
3
|
+
Object.defineProperty(_object, k, {
|
|
4
|
+
get() {
|
|
5
|
+
var method = obj[k];
|
|
6
|
+
if (typeof method === 'function') {
|
|
7
|
+
return function () {
|
|
8
|
+
var r = method.apply(obj, arguments);
|
|
9
|
+
return resolve(r);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
return method;
|
|
13
|
+
},
|
|
14
|
+
set(v) {
|
|
15
|
+
obj[k] = v;
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
};
|
|
2
19
|
var enrich = function enrich(obj) {
|
|
3
20
|
var _promise = Promise.resolve();
|
|
4
|
-
var
|
|
5
|
-
};
|
|
6
|
-
Base.prototype = obj;
|
|
7
|
-
var _object = new Base;
|
|
8
|
-
for (var k in obj) {
|
|
9
|
-
if (obj[k] instanceof Function) {
|
|
10
|
-
_promise[k] = function () {
|
|
11
|
-
var method = obj[k];
|
|
12
|
-
var caller = function () {
|
|
13
|
-
"use strict";
|
|
14
|
-
var args = arguments;
|
|
15
|
-
return this.then(function () {
|
|
16
|
-
return method.apply(_object, args);
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
|
-
_object[k] = function () {
|
|
20
|
-
return caller.apply(_promise, arguments);
|
|
21
|
-
};
|
|
22
|
-
return caller;
|
|
23
|
-
}();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
_promise._enrich = function (promise) {
|
|
27
|
-
if (!promise._enrich) {
|
|
28
|
-
for (var k in _promise) promise[k] = _promise[k];
|
|
29
|
-
}
|
|
30
|
-
return promise;
|
|
31
|
-
};
|
|
21
|
+
var _object = Object.create(null);
|
|
32
22
|
var _then = _promise.then;
|
|
33
|
-
var
|
|
34
|
-
_promise.then = function () {
|
|
23
|
+
var pthen = function () {
|
|
35
24
|
var promise = _then.apply(this, arguments);
|
|
36
|
-
return
|
|
25
|
+
return resolve(promise);
|
|
26
|
+
};
|
|
27
|
+
var resolve = function (result) {
|
|
28
|
+
var _promise = Promise.resolve(result);
|
|
29
|
+
for (var k in obj) if (k !== 'then') bindObjK(obj, k, resolve, _promise);
|
|
30
|
+
_promise.then = pthen;
|
|
31
|
+
return _promise;
|
|
37
32
|
};
|
|
38
|
-
|
|
39
|
-
var promise = _catch.apply(this, arguments);
|
|
40
|
-
return this._enrich(promise);
|
|
41
|
-
}
|
|
33
|
+
for (var k in obj) bindObjK(obj, k, resolve, _object);
|
|
42
34
|
return _object;
|
|
43
35
|
};
|
|
44
36
|
module.exports = enrich;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// var Promise = new Function(require("fs").readFileSync("coms/zimoli/promise.js").toString()+"\r\nreturn Promise;").apply(global);
|
package/coms/basic/mark.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
var _pinyin = null;
|
|
2
|
-
Promise.resolve(init("pinyin")).then(py => _pinyin = py);
|
|
3
2
|
var isABC = a => /^[a-zA-Z]$/.test(a);
|
|
4
3
|
var couple = function (source, marker, pinyin) {
|
|
5
4
|
var isLike = function () {
|
|
@@ -213,6 +212,9 @@ mark.setTag1 = setTag1;
|
|
|
213
212
|
mark.setTag2 = setTag2;
|
|
214
213
|
mark.power = power;
|
|
215
214
|
mark.power2 = power2;
|
|
215
|
+
mark.setPinyin = function (py) {
|
|
216
|
+
_pinyin = py;
|
|
217
|
+
};
|
|
216
218
|
mark.compare = function (a, b) {
|
|
217
219
|
var c = compare(a, b);
|
|
218
220
|
c.power = c.pop();
|
package/coms/basic/parseCSV.js
CHANGED
package/coms/basic_/JSON.js
CHANGED
|
@@ -11,32 +11,46 @@ var scan_string = function (str, start) {
|
|
|
11
11
|
return false;
|
|
12
12
|
if (match[0] === "\"") break;
|
|
13
13
|
}
|
|
14
|
+
data = strings.decode(str.slice(start, reg.lastIndex));
|
|
14
15
|
return reg.lastIndex;
|
|
15
16
|
};
|
|
16
17
|
var scan_number = function (str, start) {
|
|
17
|
-
|
|
18
|
-
start++;
|
|
19
|
-
var reg = /(?:0|[1-9]\d*)(?:\.\d*)?(e\-?\d+)?/g;
|
|
18
|
+
var reg = /[\+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(e[\-\+]?\d+)?/g;
|
|
20
19
|
reg.lastIndex = start;
|
|
21
20
|
var match = reg.exec(str);
|
|
22
|
-
if (
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
if (match && match.index === start) {
|
|
22
|
+
data = +match[0];
|
|
23
|
+
return reg.lastIndex;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
25
26
|
};
|
|
26
27
|
var scan_null = function (str, start) {
|
|
27
28
|
var reg = /null|false|true/g;
|
|
28
29
|
reg.lastIndex = start;
|
|
29
30
|
var match = reg.exec(str);
|
|
30
|
-
if (match && match.index === start)
|
|
31
|
+
if (match && match.index === start) {
|
|
32
|
+
switch (match[0].charAt(0)) {
|
|
33
|
+
case "n":
|
|
34
|
+
data = null;
|
|
35
|
+
break;
|
|
36
|
+
case "f":
|
|
37
|
+
data = false;
|
|
38
|
+
break;
|
|
39
|
+
case "t":
|
|
40
|
+
data = true;
|
|
41
|
+
}
|
|
31
42
|
return reg.lastIndex;
|
|
43
|
+
}
|
|
32
44
|
return false;
|
|
33
45
|
};
|
|
34
46
|
var scan_blank = function (str, start) {
|
|
35
|
-
var reg =
|
|
47
|
+
var reg = /\/\/[\s\S]*?([\r\n\u2028\u2029]|$)|\/\*[\s\S]*?\*\/|[^\s]/g;
|
|
36
48
|
reg.lastIndex = start;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return
|
|
49
|
+
while (reg.lastIndex < str.length) {
|
|
50
|
+
var match = reg.exec(str);
|
|
51
|
+
if (!match) return str.length;
|
|
52
|
+
if (match[0].length === 1) return match.index;
|
|
53
|
+
}
|
|
40
54
|
return str.length;
|
|
41
55
|
};
|
|
42
56
|
var _safeparse = function (str, start) {
|
|
@@ -52,6 +66,8 @@ var _safeparse = function (str, start) {
|
|
|
52
66
|
var end = str.length;
|
|
53
67
|
start++;
|
|
54
68
|
if (start >= end) return false;
|
|
69
|
+
var prop;
|
|
70
|
+
var data1 = {};
|
|
55
71
|
while (start < end) {
|
|
56
72
|
start = _safeparse(str, start);
|
|
57
73
|
if (start === false)
|
|
@@ -61,10 +77,12 @@ var _safeparse = function (str, start) {
|
|
|
61
77
|
if (str.charAt(start) !== ":")
|
|
62
78
|
return false;
|
|
63
79
|
start++;
|
|
80
|
+
prop = data;
|
|
64
81
|
start = _safeparse(str, start);
|
|
65
82
|
if (start === false)
|
|
66
83
|
return start;
|
|
67
84
|
start = scan_blank(str, start);
|
|
85
|
+
data1[prop] = data;
|
|
68
86
|
if (str.charAt(start) === ",") {
|
|
69
87
|
start++;
|
|
70
88
|
continue;
|
|
@@ -75,16 +93,19 @@ var _safeparse = function (str, start) {
|
|
|
75
93
|
start++;
|
|
76
94
|
break;
|
|
77
95
|
}
|
|
96
|
+
data = data1;
|
|
78
97
|
break;
|
|
79
98
|
case "[":
|
|
80
99
|
var end = str.length;
|
|
81
100
|
start++;
|
|
82
101
|
if (start >= end) return false;
|
|
102
|
+
var data1 = [];
|
|
83
103
|
while (start < end) {
|
|
84
104
|
start = _safeparse(str, start);
|
|
85
105
|
if (start === false)
|
|
86
106
|
return start;
|
|
87
107
|
start = scan_blank(str, start);
|
|
108
|
+
data1.push(data);
|
|
88
109
|
if (str.charAt(start) === ",") {
|
|
89
110
|
start++;
|
|
90
111
|
continue;
|
|
@@ -95,6 +116,7 @@ var _safeparse = function (str, start) {
|
|
|
95
116
|
start++;
|
|
96
117
|
break;
|
|
97
118
|
}
|
|
119
|
+
data = data1;
|
|
98
120
|
break;
|
|
99
121
|
case "n":
|
|
100
122
|
case "f":
|
|
@@ -108,11 +130,14 @@ var _safeparse = function (str, start) {
|
|
|
108
130
|
return start;
|
|
109
131
|
return scan_blank(str, start);
|
|
110
132
|
};
|
|
133
|
+
var data = null;
|
|
111
134
|
var parse = function (string) {
|
|
112
135
|
string = String(string);
|
|
113
136
|
var parsed = _safeparse(string, 0);
|
|
114
137
|
if (parsed === string.length) {
|
|
115
|
-
|
|
138
|
+
var result = data;
|
|
139
|
+
data = null;
|
|
140
|
+
return result;
|
|
116
141
|
} else {
|
|
117
142
|
throw parse_failed_error_message;
|
|
118
143
|
}
|
package/coms/basic_/JSON_test.js
CHANGED
|
@@ -162,6 +162,15 @@ var test2 = function (JSON) {
|
|
|
162
162
|
return { name: o.name };
|
|
163
163
|
}
|
|
164
164
|
assert(unicode(JSON.stringify(data, filter, 4)), JSON0.stringify(data, filter, 4));
|
|
165
|
+
assert(unicode(JSON.stringify(JSON.parse(JSON.stringify(data)))), unicode(JSON0.stringify(data)))
|
|
166
|
+
assert(JSON.parse(`/**/1`), 1)
|
|
167
|
+
assert(JSON.parse(`/**/"1"`), "1")
|
|
168
|
+
assert(JSON.parse(`"1"//`), "1")
|
|
169
|
+
assert(JSON.parse(`["1"//\r\n,2]`), ["1", 2])
|
|
170
|
+
assert(JSON.parse(`{"1"/*a*/:\r\n2}`), { "1": 2 })
|
|
171
|
+
assert(JSON.parse(`{"1":\r\n/*a*/2}`), { "1": 2 })
|
|
172
|
+
assert(JSON.parse(`{/*a*/"1":\r\n2}`), { "1": 2 })
|
|
173
|
+
assert(JSON.parse(`{"1/*a*/":\r\n2}`), { "1/*a*/": 2 })
|
|
165
174
|
}
|
|
166
175
|
function JSON_test() {
|
|
167
176
|
window.JSON0 = JSON0;
|
|
@@ -204,7 +204,9 @@ var fixType = function (o) {
|
|
|
204
204
|
break;
|
|
205
205
|
}
|
|
206
206
|
if (last.type & (PROPERTY | EXPRESS | VALUE)
|
|
207
|
+
|| last.type === STRAP && last.text === 'default'
|
|
207
208
|
|| last.type === STAMP && last.text === "*" && last.prev && (STRAP | STAMP) & last.prev.type) {
|
|
209
|
+
type = STRAP;
|
|
208
210
|
} else {
|
|
209
211
|
type = EXPRESS;
|
|
210
212
|
}
|
|
@@ -303,7 +305,8 @@ var detectLabel = function (o) {
|
|
|
303
305
|
case ",":
|
|
304
306
|
if (queue.isObject) {
|
|
305
307
|
if (last.type === PROPERTY) {
|
|
306
|
-
|
|
308
|
+
var lp = last.prev;
|
|
309
|
+
if (!lp || lp.type === STAMP && lp.text === ',') last.short = true;
|
|
307
310
|
}
|
|
308
311
|
}
|
|
309
312
|
inExpress = true;
|
|
@@ -760,16 +763,8 @@ var removeImport = function (c, i, code) {
|
|
|
760
763
|
}
|
|
761
764
|
}
|
|
762
765
|
if (!n || n.type !== QUOTED) throw new Error(i18n`缺少导入路径!`);
|
|
763
|
-
var
|
|
764
|
-
var nsi = ns ? code.indexOf(ns, i) : code.length;
|
|
765
|
-
var q = scan(`require()`);
|
|
766
|
-
if (!used.require) used.require = [], envs.require = true;
|
|
767
|
-
used.require.push(q[0]);
|
|
766
|
+
var q = wrapRequire(n, i, code);
|
|
768
767
|
Object.assign(q[0], t);
|
|
769
|
-
var cs = code.splice(oi + 1, nsi - oi - 1, ...q);
|
|
770
|
-
q[1].push.apply(q[1], cs);
|
|
771
|
-
relink(q[1]);
|
|
772
|
-
setqueue(q[1]);
|
|
773
768
|
if (!dec) return;
|
|
774
769
|
var name = null;
|
|
775
770
|
var na = dec.attributes[0];
|
|
@@ -795,16 +790,7 @@ var removeImport = function (c, i, code) {
|
|
|
795
790
|
}
|
|
796
791
|
})
|
|
797
792
|
if (!name) {
|
|
798
|
-
name =
|
|
799
|
-
.replace(/\.[^\.\/\\]+$/, '')
|
|
800
|
-
.split(/[\/\\\:\{\}\[\]\.\+\-\*\/\!\~\|\:;,'"`\(\)\>\<\?\^%&\s]+/)
|
|
801
|
-
.filter(a => !!a).pop();
|
|
802
|
-
if (!this.express_reg.test(name)) name = "imported";
|
|
803
|
-
var id = 0;
|
|
804
|
-
while (this.strap_reg.test(name) || name in used) {
|
|
805
|
-
name = name.replace(/\d+$/, '') + ++id;
|
|
806
|
-
}
|
|
807
|
-
used[name] = [];
|
|
793
|
+
name = this.newVar(used, q[1].last.text);
|
|
808
794
|
}
|
|
809
795
|
dec.forEach(function (d) {
|
|
810
796
|
if (d instanceof Array) d.forEach((dn, i) => {
|
|
@@ -834,10 +820,27 @@ var removeExport = function (c, i, code) {
|
|
|
834
820
|
return;
|
|
835
821
|
}
|
|
836
822
|
if (n.type === SCOPED) {
|
|
823
|
+
var m = n.next;
|
|
824
|
+
var from = m?.type === STRAP && m.text === 'from';
|
|
825
|
+
if (from) {
|
|
826
|
+
var q = wrapRequire(m.next, i, code);
|
|
827
|
+
m.type = STAMP;
|
|
828
|
+
m.text = '=';
|
|
829
|
+
c.text = 'var';
|
|
830
|
+
from = this.newVar(used, q[1].last.text);
|
|
831
|
+
}
|
|
837
832
|
var o = n.first;
|
|
838
833
|
var allexports = [];
|
|
839
834
|
while (o) {
|
|
840
835
|
var name = o, prop = o.text;
|
|
836
|
+
if (from) {
|
|
837
|
+
var tack = o.tack || o.text;
|
|
838
|
+
if (used[tack]) {
|
|
839
|
+
removeFromList(used[tack], o);
|
|
840
|
+
if (!used[tack].length) delete envs[tack];
|
|
841
|
+
}
|
|
842
|
+
name.text = from + '.' + name.text, used[from].push(o), o.tack = from;
|
|
843
|
+
}
|
|
841
844
|
var n = o.next;
|
|
842
845
|
if (n && n.type === STRAP && n.text === 'as') {
|
|
843
846
|
var nn = n.next;
|
|
@@ -853,10 +856,17 @@ var removeExport = function (c, i, code) {
|
|
|
853
856
|
allexports.push(exp);
|
|
854
857
|
}
|
|
855
858
|
var ni = skipAssignment(code, i);
|
|
856
|
-
|
|
859
|
+
if (from) {
|
|
860
|
+
replace(m.prev, { type: EXPRESS, text: from })
|
|
861
|
+
i = ni;
|
|
862
|
+
}
|
|
863
|
+
else {
|
|
864
|
+
code.splice(i, ni - i);
|
|
865
|
+
}
|
|
857
866
|
for (var exp of allexports) {
|
|
858
867
|
code.splice(i, 0, ...exp);
|
|
859
868
|
}
|
|
869
|
+
if (!allexports.length) code.exportEmpty = true;
|
|
860
870
|
return;
|
|
861
871
|
}
|
|
862
872
|
if (n.type !== STRAP) throw new Error(i18n`代码结构异常!`);
|
|
@@ -871,6 +881,10 @@ var removeExport = function (c, i, code) {
|
|
|
871
881
|
}
|
|
872
882
|
var [dec, map, o] = getDeclared(n.next, 'export');
|
|
873
883
|
if (/^(class|function)$/.test(n.text)) {
|
|
884
|
+
var exports = used.exports;
|
|
885
|
+
if (!exports) {
|
|
886
|
+
exports = used.exports = [];
|
|
887
|
+
}
|
|
874
888
|
var e = skipAssignment(code, i + 1);
|
|
875
889
|
if (code[e] && code[e].type !== STAMP) {
|
|
876
890
|
code.splice(e, 0, { type: STAMP, text: ';' });
|
|
@@ -883,6 +897,8 @@ var removeExport = function (c, i, code) {
|
|
|
883
897
|
var d = nn.text;
|
|
884
898
|
if (used[d]) used[d].forEach(a => {
|
|
885
899
|
if (!a.kind) {
|
|
900
|
+
a.tack = 'exports';
|
|
901
|
+
exports.push(a);
|
|
886
902
|
patchname('exports.', a);
|
|
887
903
|
}
|
|
888
904
|
});
|
|
@@ -914,6 +930,36 @@ var removeExport = function (c, i, code) {
|
|
|
914
930
|
code.splice(i, oi - i);
|
|
915
931
|
};
|
|
916
932
|
|
|
933
|
+
var wrapRequire = function (n, i, code) {
|
|
934
|
+
var used = code.used;
|
|
935
|
+
var envs = code.envs;
|
|
936
|
+
var ni = code.indexOf(n, i);
|
|
937
|
+
var ns = skipAssignment(n);
|
|
938
|
+
var nsi = ns ? code.indexOf(ns, ni) : code.length;
|
|
939
|
+
var q = scan(`require()`);
|
|
940
|
+
if (!used.require) used.require = [], envs.require = true;
|
|
941
|
+
used.require.push(q[0]);
|
|
942
|
+
var cs = code.splice(ni, nsi - ni, ...q);
|
|
943
|
+
q[1].push.apply(q[1], cs);
|
|
944
|
+
relink(q[1]);
|
|
945
|
+
setqueue(q[1]);
|
|
946
|
+
return q;
|
|
947
|
+
};
|
|
948
|
+
|
|
949
|
+
Javascript.prototype.newVar = function (used, string_template) {
|
|
950
|
+
var name = strings.decode(string_template)
|
|
951
|
+
.replace(/\.[^\.\/\\]+$/, '')
|
|
952
|
+
.replace(/[\-\s]+([\s\S])/, (_, a) => a.toUpperCase())
|
|
953
|
+
.split(/[\/\\\:\{\}\[\]\.\+\-\*\/\!\~\|\:;,'"`\(\)\>\<\?\^%&\s]+/)
|
|
954
|
+
.filter(a => !!a).pop();
|
|
955
|
+
if (!this.express_reg.test(name)) name = "imported";
|
|
956
|
+
var id = 0;
|
|
957
|
+
while (this.strap_reg.test(name) || name in used) {
|
|
958
|
+
name = name.replace(/\d+$/, '') + ++id;
|
|
959
|
+
}
|
|
960
|
+
used[name] = [];
|
|
961
|
+
return name;
|
|
962
|
+
}
|
|
917
963
|
Javascript.prototype.fix = function (code) {
|
|
918
964
|
backEach(code, function (o, i) {
|
|
919
965
|
if (o.type !== STRAP) return;
|
|
@@ -962,8 +1008,22 @@ Javascript.prototype.fix = function (code) {
|
|
|
962
1008
|
if (code.exportDecs) {
|
|
963
1009
|
var exportDecs = code.exportDecs;
|
|
964
1010
|
delete code.exportDecs;
|
|
1011
|
+
var exports = code.used.exports;
|
|
1012
|
+
var used = code.used;
|
|
1013
|
+
var envs = code.envs;
|
|
1014
|
+
if (!exports) {
|
|
1015
|
+
exports = code.used.exports = [];
|
|
1016
|
+
}
|
|
965
1017
|
exportDecs.forEach(e => {
|
|
966
1018
|
e.text = 'exports.' + e.text;
|
|
1019
|
+
exports.push(e);
|
|
1020
|
+
removeFromList(used[e.tack], e);
|
|
1021
|
+
if (!used[e.tack].length) {
|
|
1022
|
+
delete used[e.tack];
|
|
1023
|
+
delete envs[e.tack];
|
|
1024
|
+
}
|
|
1025
|
+
e.origin = e.tack;
|
|
1026
|
+
e.tack = 'exports';
|
|
967
1027
|
if (e.needEqual) {
|
|
968
1028
|
var n = e.next;
|
|
969
1029
|
if (!n || n.type !== STAMP || n.text !== '=') {
|
|
@@ -7,6 +7,8 @@ var testFix = function (a, e) {
|
|
|
7
7
|
}
|
|
8
8
|
js.debug = true;
|
|
9
9
|
assert(scanner2("/a/g", js)[0].type, common.QUOTED);
|
|
10
|
+
testFix(`export * from "a";`, 'var a = require("a");\r\nexports.default = undefined\r\nextendIfNeeded(exports, a)');
|
|
11
|
+
testFix(`export {A} from "a";`, 'var a = require("a")\r\nexports.A = a.A;');
|
|
10
12
|
testFix(`import a from "a";console.log(a)`, 'var a = require("a"); console.log(a.default)');
|
|
11
13
|
testFix(`import {a} from "a";console.log(a)`, 'var a1 = require("a"); console.log(a1.a)');
|
|
12
14
|
testFix(`import a,{a as b} from "a";console.log(a,b)`, 'var a = require("a"); console.log(a.default, a.a)');
|
package/coms/compile/Program.js
CHANGED
|
@@ -891,7 +891,8 @@ class Program {
|
|
|
891
891
|
}
|
|
892
892
|
if (this.scope_leave[m] && queue.entry === this.scope_leave[m]) {
|
|
893
893
|
if (last?.type === PROPERTY) {
|
|
894
|
-
|
|
894
|
+
var lp = last.prev;
|
|
895
|
+
if (!lp || lp.type === STAMP && lp.text === ',') last.short = true;
|
|
895
896
|
}
|
|
896
897
|
|
|
897
898
|
queue.end = end;
|
package/coms/compile/common.js
CHANGED
|
@@ -567,7 +567,7 @@ var createScoped = function (parsed, wash) {
|
|
|
567
567
|
else if (p.type & (EXPRESS | VALUE)) {
|
|
568
568
|
p.equal = o;
|
|
569
569
|
}
|
|
570
|
-
else if (o.text === '=' && p.type === SCOPED) {
|
|
570
|
+
else if (o.text === '=' && p.type === SCOPED && !p.isprop) {
|
|
571
571
|
if (!p.kind) {
|
|
572
572
|
var pp = p.prev;
|
|
573
573
|
if (!pp || pp.type === STAMP || pp.type === STRAP) {
|
|
@@ -1078,7 +1078,7 @@ var getDeclared = function (o, kind, queue) {
|
|
|
1078
1078
|
o = f.next;
|
|
1079
1079
|
break;
|
|
1080
1080
|
default:
|
|
1081
|
-
console.log(
|
|
1081
|
+
console.log(createString(pickSentence(queue)));
|
|
1082
1082
|
throw new Error(i18n`代码结构异常`);
|
|
1083
1083
|
}
|
|
1084
1084
|
if (!o) break;
|
|
@@ -1103,6 +1103,10 @@ var getDeclared = function (o, kind, queue) {
|
|
|
1103
1103
|
o = o0;
|
|
1104
1104
|
break;
|
|
1105
1105
|
}
|
|
1106
|
+
if (o.text === '*') {
|
|
1107
|
+
o = o.next;
|
|
1108
|
+
break;
|
|
1109
|
+
}
|
|
1106
1110
|
break;
|
|
1107
1111
|
case EXPRESS:
|
|
1108
1112
|
if (o.text === '?') o = o.next;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
var scanner2 = require("./scanner2");
|
|
2
2
|
var strings = require("../basic/strings");
|
|
3
3
|
var Program = scanner2.Program;
|
|
4
|
-
var { STAMP, SCOPED, STRAP, EXPRESS, pickAssignment, COMMENT, SPACE, PROPERTY, VALUE, LABEL, QUOTED, snapExpressFoot, isEval, canbeTemp, rename, isHalfSentence, skipFunction, getDeclared, skipAssignment, skipSentenceQueue, createScoped, createString, splice, relink, snapExpressHead, needBreakBetween } = require("./common");
|
|
4
|
+
var { STAMP, SCOPED, STRAP, EXPRESS, pickAssignment, COMMENT, SPACE, PROPERTY, VALUE, LABEL, QUOTED, snapExpressFoot, isEval, canbeTemp, rename, isHalfSentence, skipFunction, getDeclared, skipAssignment, skipSentenceQueue, createScoped, createString, splice, relink, pickSentence, snapExpressHead, needBreakBetween } = require("./common");
|
|
5
5
|
var splice2 = function (q, from, to, ...a) {
|
|
6
6
|
var cx = q.indexOf(from);
|
|
7
|
-
if (cx < 0) throw console.log(splice2.caller, console.format(`\r\n<red2>${i18n`自`}</red2>`), from && createString([from]), console.format(`\r\n<yellow>${i18n`至`}</yellow>`), to && createString([to]), console.format(`\r\n<cyan>${i18n`码列`}</cyan>`), createString(
|
|
7
|
+
if (cx < 0) throw console.log(splice2.caller, console.format(`\r\n<red2>${i18n`自`}</red2>`), from && createString([from]), console.format(`\r\n<yellow>${i18n`至`}</yellow>`), to && createString([to]), console.format(`\r\n<cyan>${i18n`码列`}</cyan>`), createString(pickSentence(from))), i18n`结构异常`;
|
|
8
8
|
var dx = to ? q.indexOf(to, cx) : q.length;
|
|
9
|
-
if (dx < 0) throw console.log(splice2.caller, console.format(`\r\n<yellow>${i18n`自`}</yellow>`), from && createString([from]), console.format(`\r\n<red2>${i18n`至`}</red2>`), to && createString([to]), console.format(`\r\n<cyan>${i18n`码列`}</cyan>`), createString(
|
|
9
|
+
if (dx < 0) throw console.log(splice2.caller, console.format(`\r\n<yellow>${i18n`自`}</yellow>`), from && createString([from]), console.format(`\r\n<red2>${i18n`至`}</red2>`), to && createString([to]), console.format(`\r\n<cyan>${i18n`码列`}</cyan>`), createString(pickSentence(from))), i18n`结构异常`;
|
|
10
10
|
return splice(q, cx, dx - cx, ...a);
|
|
11
11
|
};
|
|
12
12
|
var insert1 = function (q, r, ...a) {
|
|
@@ -295,7 +295,7 @@ var killdec = function (queue, i, getobjname, _var = 'var', killobj, islet) {
|
|
|
295
295
|
}
|
|
296
296
|
break;
|
|
297
297
|
}
|
|
298
|
-
if (o.type === SCOPED) {
|
|
298
|
+
if (o.type === SCOPED && o.entry !== '(') {
|
|
299
299
|
var n = indexof(queue, next.next, i);
|
|
300
300
|
var prev = o.prev;
|
|
301
301
|
if (prev && prev.type === STAMP && prev.text === ',') i = queue.lastIndexOf(prev, i), index = 1;
|
|
@@ -720,8 +720,8 @@ var killcls = function (body, i, letname_, getname_) {
|
|
|
720
720
|
splice(invokes, invokes.length, 0, { text: ';', type: STAMP }, ...defines);
|
|
721
721
|
}
|
|
722
722
|
splice(body, s, i - s, ...invokes);
|
|
723
|
-
if (o && o.type & ~(SPACE | STAMP) && invokes.length) insert1(body, o, { type: SPACE, text: '\r\n' });
|
|
724
723
|
}
|
|
724
|
+
if (o && needBreakBetween(o.prev, o)) insert1(o.queue, o, { type: SPACE, text: '\r\n' });
|
|
725
725
|
return i;
|
|
726
726
|
};
|
|
727
727
|
var indexof = function (list, o, i) {
|
|
@@ -1184,7 +1184,7 @@ var unforof = function (o, getnewname, used, killobj) {
|
|
|
1184
1184
|
var gname = getnewname();
|
|
1185
1185
|
var oname;
|
|
1186
1186
|
var useSimpleLoop = !(rootHyper || used.Symbol) && !hasawait;
|
|
1187
|
-
if (!f.next && f.type === EXPRESS && !/\./.test(f.text) && used[f.origin || f.
|
|
1187
|
+
if (!f.next && f.type === EXPRESS && !/\./.test(f.text) && used[f.origin || f.tack].length === 1) {
|
|
1188
1188
|
splice2(o, m);
|
|
1189
1189
|
oname = f.text;
|
|
1190
1190
|
}
|
|
@@ -435,11 +435,12 @@ assert(downLevel(`Object.defineProperty(dis, f.key, {get() {}, set(v) {}})`), `O
|
|
|
435
435
|
_.get = function () {},
|
|
436
436
|
_.set = function (v) {}, _))
|
|
437
437
|
var _`);
|
|
438
|
-
downLevel.debug = true; i++;
|
|
439
438
|
assert(downLevel(`var restq = splice(queue, i, i2 - i, ...a[1], { type: STAMP, text: "=" });`), `var slice_ = Array["prototype"]["slice"];
|
|
440
439
|
var restq = splice["apply"](null, [queue, i, i2 - i]["concat"](slice_["call"](a[1]), [{ type: STAMP, text: "=" }]));`)
|
|
441
440
|
var c = scanner2(`\r\n if (search.length) return null;\r\n return path.join(...pathlist);\r\n`);
|
|
442
441
|
c.fix();
|
|
443
442
|
c.break();
|
|
444
443
|
assert(c.toString(), `\r\n if (search["length"]) return null;\r\n return path["join"](...pathlist);\r\n`)
|
|
445
|
-
assert(downLevel.code(c).toString(), `\r\n if (search["length"]) return null;\r\n return path["join"]["apply"](path, pathlist);\r\n`);
|
|
444
|
+
assert(downLevel.code(c).toString(), `\r\n if (search["length"]) return null;\r\n return path["join"]["apply"](path, pathlist);\r\n`);
|
|
445
|
+
downLevel.debug = true; i++;
|
|
446
|
+
assert(downLevel(`Symbol;var c = (a.data || (a.data = {})).transition = no(this);`), 'Symbol; var c = (a.data || (a.data = {})).transition = no(this);', true);
|
|
@@ -29,7 +29,7 @@ async function detectWithExtension(filenames, extensions = [""], folders = [""])
|
|
|
29
29
|
f = await fs.realpath(f);
|
|
30
30
|
return f + params;
|
|
31
31
|
}
|
|
32
|
-
if (!findedFolder) findedFolder = f + params;
|
|
32
|
+
if (!findedFolder) findedFolder = f + path.sep + params;
|
|
33
33
|
} catch { }
|
|
34
34
|
}
|
|
35
35
|
if (!findedFolder) throw new Error(`路径${filenames.map(f => colors.FgYellow + f[0] + colors.Reset).join(', ')}不存在`);
|
package/coms/zimoli/slider.js
CHANGED
|
@@ -67,6 +67,7 @@ function slider() {
|
|
|
67
67
|
moving = 0,
|
|
68
68
|
direction,
|
|
69
69
|
_speed = speed(1);
|
|
70
|
+
var origin_index = null;
|
|
70
71
|
var reshape = function (index, ising, emit) {
|
|
71
72
|
if (!isFinite(index)) return;
|
|
72
73
|
index = +index;
|
|
@@ -92,7 +93,10 @@ function slider() {
|
|
|
92
93
|
generator(indexLeft + 2, 1);
|
|
93
94
|
generator(indexLeft + 3, 1);
|
|
94
95
|
generator(indexLeft + 4, 1);
|
|
95
|
-
if (
|
|
96
|
+
if (origin_index !== index) {
|
|
97
|
+
origin_index = index;
|
|
98
|
+
if (emit !== false) dispatch(outter, 'changed');
|
|
99
|
+
}
|
|
96
100
|
}
|
|
97
101
|
var childNodes = outter.childNodes;
|
|
98
102
|
for (var dx = childNodes.length - 1; dx >= 0; dx--) {
|