efront 4.0.25 → 4.0.29
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/coms/basic/#loader.js +57 -53
- package/coms/compile/Javascript.js +1 -1
- package/coms/compile/Program.js +1 -1
- package/coms/compile/common.js +6 -4
- package/coms/compile/downLevel.js +4 -2
- package/coms/zimoli/localStorage.js +43 -7
- package/coms/zimoli/sessionStorage.js +34 -22
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/basic/#loader.js
CHANGED
|
@@ -9,7 +9,6 @@ var {
|
|
|
9
9
|
Error,
|
|
10
10
|
Function,
|
|
11
11
|
Array,
|
|
12
|
-
localStorage,
|
|
13
12
|
Promise,
|
|
14
13
|
setTimeout,
|
|
15
14
|
clearTimeout,
|
|
@@ -164,7 +163,7 @@ var readFile = function (names, then) {
|
|
|
164
163
|
|
|
165
164
|
};
|
|
166
165
|
var createFunction = function (name, body, args, isAsync, isYield) {
|
|
167
|
-
return window.eval(`[${isAsync ? 'async ' : ''}function${isYield ? "*" : ""}/*${name}*/(${args || ''}){
|
|
166
|
+
return window.eval(`[${isAsync ? 'async ' : ''}function${isYield ? "*" : ""}/*${name}*/(${args || ''}){${body}\r\n}][0]`, name);
|
|
168
167
|
};
|
|
169
168
|
|
|
170
169
|
var FILE_NAME_REG = /^https?\:|\.(html?|css|asp|jsp|php)$/i;
|
|
@@ -248,7 +247,7 @@ var hasOwnProperty = {}.hasOwnProperty;
|
|
|
248
247
|
var loadModule = function (url, then, prebuilds = {}) {
|
|
249
248
|
var name = url.replace(/[\*~][\s\S]*$/, '');
|
|
250
249
|
if (/^(?:module|exports|define|require|window|global|undefined)$/.test(name)) return then();
|
|
251
|
-
if ((hasOwnProperty.call(prebuilds, url)) || hasOwnProperty.call(modules, url) || (!/^on/.test(name) && window[name] !== null && window[name] !== void 0
|
|
250
|
+
if ((hasOwnProperty.call(prebuilds, url)) || hasOwnProperty.call(modules, url) || (!hasOwnProperty.call(forceRequest, name) && !/^on/.test(name) && window[name] !== null && window[name] !== void 0)
|
|
252
251
|
) return then();
|
|
253
252
|
preLoad(url);
|
|
254
253
|
var key = keyprefix + url;
|
|
@@ -512,10 +511,17 @@ var init = function (url, then, prebuilds) {
|
|
|
512
511
|
return modules[url];
|
|
513
512
|
}
|
|
514
513
|
var name = url.replace(/[\*~][\s\S]*$/, '');
|
|
515
|
-
if (
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
514
|
+
if (!hasOwnProperty.call(forceRequest, name) && name in window && !/^on/.test(name)) {
|
|
515
|
+
try {
|
|
516
|
+
var value = window[name];
|
|
517
|
+
if (value !== null && value !== void 0) {
|
|
518
|
+
modules[name] = value;
|
|
519
|
+
if (then) then(value);
|
|
520
|
+
return value;
|
|
521
|
+
}
|
|
522
|
+
} catch {
|
|
523
|
+
window.alert(name);
|
|
524
|
+
}
|
|
519
525
|
}
|
|
520
526
|
var oks = [];
|
|
521
527
|
if (then) oks.push(then);
|
|
@@ -764,52 +770,6 @@ var initPixelDecoder = function () {
|
|
|
764
770
|
modules.pt2offset = modules.freeOffset;
|
|
765
771
|
|
|
766
772
|
};
|
|
767
|
-
var flush_to_storage_timer = 0,
|
|
768
|
-
responseTree_storageKey = "zimoliAutoSavedResponseTree" + location.pathname;
|
|
769
|
-
var saveResponseTreeToStorage = preventCodeStorage ? function () { } : function () {
|
|
770
|
-
var responseTextArray = [];
|
|
771
|
-
for (var k in versionTree) {
|
|
772
|
-
if (hasOwnProperty.call(responseTree, k)) responseTextArray.push(
|
|
773
|
-
k + ":" + versionTree[k] + ":" + responseTree[k]
|
|
774
|
-
);
|
|
775
|
-
}
|
|
776
|
-
var data = responseTextArray.join(",");
|
|
777
|
-
localStorage && localStorage.setItem(responseTree_storageKey, data);
|
|
778
|
-
};
|
|
779
|
-
var loadResponseTreeFromStorage = preventCodeStorage ? function () { } : function () {
|
|
780
|
-
"use ./crc.js";
|
|
781
|
-
var load = function (name) {
|
|
782
|
-
var data = localStorage.getItem(responseTree_storageKey);
|
|
783
|
-
if (!data) return;
|
|
784
|
-
var responseTextArray = data.split(",");
|
|
785
|
-
for (var cx = 0, dx = responseTextArray.length; cx < dx; cx++) {
|
|
786
|
-
var kv = responseTextArray[cx].split(":");
|
|
787
|
-
var [responseName, version, responseText] = kv;
|
|
788
|
-
preLoadVersionTree[responseName] = version;
|
|
789
|
-
preLoadResponseTree[responseName] = responseText;
|
|
790
|
-
}
|
|
791
|
-
};
|
|
792
|
-
var preLoadResponseTree = {};
|
|
793
|
-
var preLoadVersionTree = {};
|
|
794
|
-
if (localStorage) load();
|
|
795
|
-
else init("localStorage", function (_localStorage) {
|
|
796
|
-
localStorage = _localStorage;
|
|
797
|
-
load();
|
|
798
|
-
});
|
|
799
|
-
preLoad = function (responseName) {
|
|
800
|
-
if (hasOwnProperty.call(responseTree, responseName)) return;
|
|
801
|
-
var version = preLoadVersionTree[responseName];
|
|
802
|
-
if (!version) return;
|
|
803
|
-
var responseText = preLoadResponseTree[responseName];
|
|
804
|
-
var sum = [];
|
|
805
|
-
for (var i in responseText) sum[i] = responseText.charCodeAt(i);
|
|
806
|
-
var sum = crc(sum).toString(36);
|
|
807
|
-
if (sum + version.slice(sum.length) === versionTree[responseName])
|
|
808
|
-
responseTree[responseName] = responseText;
|
|
809
|
-
// else window.console.log(responseName, sum, version, versionTree[responseName]);
|
|
810
|
-
};
|
|
811
|
-
};
|
|
812
|
-
var preLoad = function () { };
|
|
813
773
|
var start_time = efront_time / 1000 | 0;
|
|
814
774
|
var errored = {};
|
|
815
775
|
// modules 的代码不可出现多层
|
|
@@ -871,8 +831,52 @@ var initIfNotDefined = function (defined, path, onload) {
|
|
|
871
831
|
if (defined === void 0) init(path, a => onload(a) | hook(--requires_count));
|
|
872
832
|
else hook(--requires_count);
|
|
873
833
|
};
|
|
834
|
+
try { var localStorage = window.localStorage; } catch { forceRequest.localStorage = forceRequest.sessionStorage = true }
|
|
835
|
+
var flush_to_storage_timer = 0,
|
|
836
|
+
responseTree_storageKey = "zimoliAutoSavedResponseTree" + location.pathname;
|
|
837
|
+
var loadResponseTreeFromStorage = preventCodeStorage ? function () { } : function () {
|
|
838
|
+
"use ./crc.js";
|
|
839
|
+
var load = function (name) {
|
|
840
|
+
var data = localStorage.getItem(responseTree_storageKey);
|
|
841
|
+
if (!data) return;
|
|
842
|
+
var responseTextArray = data.split(",");
|
|
843
|
+
for (var cx = 0, dx = responseTextArray.length; cx < dx; cx++) {
|
|
844
|
+
var kv = responseTextArray[cx].split(":");
|
|
845
|
+
var [responseName, version, responseText] = kv;
|
|
846
|
+
preLoadVersionTree[responseName] = version;
|
|
847
|
+
preLoadResponseTree[responseName] = responseText;
|
|
848
|
+
}
|
|
849
|
+
};
|
|
850
|
+
var preLoadResponseTree = {};
|
|
851
|
+
var preLoadVersionTree = {};
|
|
852
|
+
load();
|
|
853
|
+
preLoad = function (responseName) {
|
|
854
|
+
if (hasOwnProperty.call(responseTree, responseName)) return;
|
|
855
|
+
var version = preLoadVersionTree[responseName];
|
|
856
|
+
if (!version) return;
|
|
857
|
+
var responseText = preLoadResponseTree[responseName];
|
|
858
|
+
var sum = [];
|
|
859
|
+
for (var i in responseText) sum[i] = responseText.charCodeAt(i);
|
|
860
|
+
var sum = crc(sum).toString(36);
|
|
861
|
+
if (sum + version.slice(sum.length) === versionTree[responseName])
|
|
862
|
+
responseTree[responseName] = responseText;
|
|
863
|
+
// else window.console.log(responseName, sum, version, versionTree[responseName]);
|
|
864
|
+
};
|
|
865
|
+
};
|
|
866
|
+
var preLoad = function () { };
|
|
874
867
|
|
|
875
868
|
if (localStorage) loadResponseTreeFromStorage();
|
|
869
|
+
var saveResponseTreeToStorage = preventCodeStorage || !localStorage ? function () { } : function () {
|
|
870
|
+
var responseTextArray = [];
|
|
871
|
+
for (var k in versionTree) {
|
|
872
|
+
if (hasOwnProperty.call(responseTree, k)) responseTextArray.push(
|
|
873
|
+
k + ":" + versionTree[k] + ":" + responseTree[k]
|
|
874
|
+
);
|
|
875
|
+
}
|
|
876
|
+
var data = responseTextArray.join(",");
|
|
877
|
+
localStorage.setItem(responseTree_storageKey, data);
|
|
878
|
+
};
|
|
879
|
+
|
|
876
880
|
initIfNotDefined([].map, "[]map", map => map);
|
|
877
881
|
"use ../basic_/#checkPromise.js";
|
|
878
882
|
initIfNotDefined(Promise, "Promise", promise => Promise = promise);
|
|
@@ -613,7 +613,7 @@ var removeExport = function (c, i, code) {
|
|
|
613
613
|
var nn = n.next;
|
|
614
614
|
var d = nn.text;
|
|
615
615
|
if (used[d]) used[d].forEach(a => {
|
|
616
|
-
if (!a.kind) a.text = `exports
|
|
616
|
+
if (!a.kind) a.text = `exports.` + a.text;
|
|
617
617
|
});
|
|
618
618
|
delete used[d];
|
|
619
619
|
delete envs[d];
|
package/coms/compile/Program.js
CHANGED
|
@@ -535,7 +535,7 @@ class Program {
|
|
|
535
535
|
if (!this.classstrap_reg.test(m)) queue.inExpress = this.transive_reg.test(m);
|
|
536
536
|
else {
|
|
537
537
|
var last = queue.last;
|
|
538
|
-
if (!last)
|
|
538
|
+
if (!last);
|
|
539
539
|
else if (last.type === STAMP) {
|
|
540
540
|
queue.inExpress = !/^(;|\+\+|\-\-)$/.test(last.text);
|
|
541
541
|
}
|
package/coms/compile/common.js
CHANGED
|
@@ -344,11 +344,12 @@ var snapExpressHead = function (o) {
|
|
|
344
344
|
var snapExpressFoot = function (o) {
|
|
345
345
|
while (o && o.next) {
|
|
346
346
|
var n = null;
|
|
347
|
+
var isExpress = o.isExpress;
|
|
347
348
|
if (o.type & STRAP) {
|
|
348
349
|
n = o;
|
|
349
350
|
if (n.text === 'new') n = n.next;
|
|
350
351
|
if (n.text === 'function') {
|
|
351
|
-
while (n && n.type !== SCOPED || n.entry !== '{') n = n.next;
|
|
352
|
+
while (n && (n.type !== SCOPED || n.entry !== '{')) n = n.next;
|
|
352
353
|
}
|
|
353
354
|
else if (n.text === 'class') {
|
|
354
355
|
var n = o;
|
|
@@ -357,12 +358,13 @@ var snapExpressFoot = function (o) {
|
|
|
357
358
|
}
|
|
358
359
|
else break;
|
|
359
360
|
o = n;
|
|
361
|
+
n = o && o.next;
|
|
360
362
|
}
|
|
361
363
|
else if (o.type & (EXPRESS | QUOTED | VALUE | SCOPED)) {
|
|
362
364
|
n = o.next;
|
|
363
365
|
}
|
|
364
366
|
if (!n) break;
|
|
365
|
-
if (n.type === SCOPED && (o.entry !== '{' ||
|
|
367
|
+
if (n.type === SCOPED && (o.entry !== '{' || isExpress)
|
|
366
368
|
|| /\.$/.test(o.text) && !o.isdigit
|
|
367
369
|
|| n.type === EXPRESS && /^\??\.[^\.]/.test(n.text)
|
|
368
370
|
|| n.type === QUOTED && (n.length || /^\`/.test(n.text))
|
|
@@ -1028,7 +1030,7 @@ var createString = function (parsed) {
|
|
|
1028
1030
|
tmp = tmp.replace(/^\/[\/\*]\s*\<\!--\s*/, '');
|
|
1029
1031
|
cacheresult = [];
|
|
1030
1032
|
result = cacheresult;
|
|
1031
|
-
result.push("/*
|
|
1033
|
+
result.push("/* [[ 开发辅助代码: */");
|
|
1032
1034
|
}
|
|
1033
1035
|
if (/--\!?\>\s*(?:\*\/)?$/.test(tmp) && result !== finalresult) {
|
|
1034
1036
|
if (!opentmp) tmp = tmp.replace(/^\/[\/\*]\s*/, '');
|
|
@@ -1036,7 +1038,7 @@ var createString = function (parsed) {
|
|
|
1036
1038
|
if (tmp) {
|
|
1037
1039
|
result.push(tmp);
|
|
1038
1040
|
}
|
|
1039
|
-
result.push("/*
|
|
1041
|
+
result.push("/* ]] */");
|
|
1040
1042
|
opentmp = true;
|
|
1041
1043
|
if (helpcode && cacheresult) finalresult = finalresult.concat(cacheresult), cacheresult = [];
|
|
1042
1044
|
result = finalresult;
|
|
@@ -571,6 +571,7 @@ var killcls = function (body, i, getname_) {
|
|
|
571
571
|
var extends_ = [];
|
|
572
572
|
var o = body[i];
|
|
573
573
|
var ishalf = isHalfSentence(body, i - 1);
|
|
574
|
+
var hasnew = o.prev && o.prev.type === STRAP && o.prev.text === 'new';
|
|
574
575
|
var start = o;
|
|
575
576
|
var decName = !o.isExpress && o.next.type === EXPRESS && o.next.text;
|
|
576
577
|
var isExpress = o.isExpress;
|
|
@@ -592,7 +593,7 @@ var killcls = function (body, i, getname_) {
|
|
|
592
593
|
}
|
|
593
594
|
if (o.type !== STRAP || o.text !== 'class') break;
|
|
594
595
|
}
|
|
595
|
-
var func = scanner2("function(){}()");
|
|
596
|
+
var func = scanner2("(function(){}())")[0];
|
|
596
597
|
var [, head, defines, invokes] = func;
|
|
597
598
|
var foot = [];
|
|
598
599
|
var base = '';
|
|
@@ -699,7 +700,8 @@ var killcls = function (body, i, getname_) {
|
|
|
699
700
|
if (head.length > 1 || start.isExpress && (defines.length) || ishalf && defines.length) {
|
|
700
701
|
splice(defines, defines.length, 0, ...scanner2(`\r\nreturn ${clz.name}`))
|
|
701
702
|
if (decName) splice(func, 0, 0, ...scanner2(`var ${decName}=`));
|
|
702
|
-
splice(body, s, i - s,
|
|
703
|
+
if (hasnew) splice(body, s, i - s, func);
|
|
704
|
+
else splice(body, s, i - s, ...func);
|
|
703
705
|
}
|
|
704
706
|
else {
|
|
705
707
|
if (defines.length) {
|
|
@@ -21,13 +21,49 @@ if (globalStorage) {
|
|
|
21
21
|
};
|
|
22
22
|
documentElement.addBehavior('#default#userdata');
|
|
23
23
|
} else {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
try {
|
|
25
|
+
|
|
26
|
+
localStorage = window.localStorage
|
|
27
|
+
}
|
|
28
|
+
catch { }
|
|
29
|
+
var _localStorageKeys = [];
|
|
30
|
+
var _values = Object.create(null);
|
|
31
|
+
|
|
32
|
+
if (!localStorage) localStorage = new class Storage {
|
|
33
|
+
setItem(key, value) {
|
|
34
|
+
value = String(value);
|
|
35
|
+
key = String(key);
|
|
36
|
+
if (!(key in _values)) {
|
|
37
|
+
if (!(key in this)) Object.defineProperty(this, key, {
|
|
38
|
+
get() {
|
|
39
|
+
return _values[key];
|
|
40
|
+
}, configurable: true
|
|
41
|
+
});
|
|
42
|
+
_localStorageKeys.push(key);
|
|
43
|
+
}
|
|
44
|
+
_values[key] = value;
|
|
45
|
+
}
|
|
46
|
+
getItem(key) {
|
|
47
|
+
return key in _values ? _values[key] : null;
|
|
48
|
+
}
|
|
49
|
+
clear() {
|
|
50
|
+
_localStorageKeys.forEach(k => {
|
|
51
|
+
delete this[k];
|
|
52
|
+
delete _values[k];
|
|
53
|
+
});
|
|
54
|
+
_localStorageKeys.splice(0, _localStorageKeys.length);
|
|
55
|
+
}
|
|
56
|
+
key(i) {
|
|
57
|
+
return _localStorageKeys[i] || null;
|
|
58
|
+
}
|
|
59
|
+
get length() {
|
|
60
|
+
return _localStorageKeys.length;
|
|
61
|
+
}
|
|
62
|
+
removeItem(key) {
|
|
63
|
+
if (delete _values[key]) {
|
|
64
|
+
delete this[key];
|
|
65
|
+
removeFromList(_localStorageKeys, key);
|
|
66
|
+
}
|
|
31
67
|
}
|
|
32
68
|
};
|
|
33
69
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* ie5-7专享,不兼容多选项卡的浏览器
|
|
3
3
|
*/
|
|
4
4
|
var session_storage_prefix = "_zimoli_session_prefix";
|
|
5
|
-
var _sessionStorage =
|
|
5
|
+
var _sessionStorage = Object.create(null);
|
|
6
6
|
var clear = function () {
|
|
7
7
|
for (var cx = 0, dx = localStorage.length; cx < dx; cx++) {
|
|
8
8
|
var key = localStorage.key(cx);
|
|
@@ -21,28 +21,41 @@ var read = function () {
|
|
|
21
21
|
var save = function () {
|
|
22
22
|
clear();
|
|
23
23
|
for (var k in _sessionStorage) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
localStorage.setItem(key, _sessionStorage[key]);
|
|
27
|
-
}
|
|
24
|
+
var key = session_storage_prefix + k;
|
|
25
|
+
localStorage.setItem(key, _sessionStorage[key]);
|
|
28
26
|
}
|
|
29
27
|
};
|
|
30
|
-
var sessionStorage = window.sessionStorage
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
try { var sessionStorage = window.sessionStorage } catch { }
|
|
29
|
+
var _sessionStorageKeys = [];
|
|
30
|
+
if (!sessionStorage) sessionStorage = new class Storage {
|
|
31
|
+
get length() {
|
|
32
|
+
return _sessionStorageKeys.length;
|
|
33
|
+
};
|
|
34
|
+
removeItem(key) {
|
|
35
|
+
if (key in _sessionStorage) removeFromList(_sessionStorageKeys, key);
|
|
36
|
+
delete this[key];
|
|
35
37
|
delete _sessionStorage[key];
|
|
36
|
-
}
|
|
37
|
-
setItem
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
38
|
+
}
|
|
39
|
+
setItem(key, data) {
|
|
40
|
+
key = String(key);
|
|
41
|
+
data = String(data);
|
|
42
|
+
if (!(key in _sessionStorage)) {
|
|
43
|
+
_sessionStorageKeys.push(key);
|
|
44
|
+
Object.defineProperty(this, key, {
|
|
45
|
+
get() {
|
|
46
|
+
return _sessionStorage[key];
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
_sessionStorage[key] = data;
|
|
51
|
+
}
|
|
52
|
+
getItem(key) {
|
|
53
|
+
return key in _sessionStorage ? _sessionStorage[key] : null;
|
|
54
|
+
}
|
|
55
|
+
key(i) {
|
|
56
|
+
return _sessionStorageKeys[i];
|
|
57
|
+
}
|
|
58
|
+
clear() {
|
|
46
59
|
_sessionStorage = {};
|
|
47
60
|
}
|
|
48
61
|
};
|
|
@@ -51,5 +64,4 @@ if (!document.cookie) {
|
|
|
51
64
|
} else {
|
|
52
65
|
read();
|
|
53
66
|
}
|
|
54
|
-
|
|
55
|
-
window.onbeforeunload = save;
|
|
67
|
+
on("beforeunload")(window, save);
|