efront 4.0.25 → 4.0.28
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 +56 -52
- package/coms/compile/common.js +2 -2
- 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,
|
|
@@ -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);
|
package/coms/compile/common.js
CHANGED
|
@@ -1028,7 +1028,7 @@ var createString = function (parsed) {
|
|
|
1028
1028
|
tmp = tmp.replace(/^\/[\/\*]\s*\<\!--\s*/, '');
|
|
1029
1029
|
cacheresult = [];
|
|
1030
1030
|
result = cacheresult;
|
|
1031
|
-
result.push("/*
|
|
1031
|
+
result.push("/* [[ 开发辅助代码: */");
|
|
1032
1032
|
}
|
|
1033
1033
|
if (/--\!?\>\s*(?:\*\/)?$/.test(tmp) && result !== finalresult) {
|
|
1034
1034
|
if (!opentmp) tmp = tmp.replace(/^\/[\/\*]\s*/, '');
|
|
@@ -1036,7 +1036,7 @@ var createString = function (parsed) {
|
|
|
1036
1036
|
if (tmp) {
|
|
1037
1037
|
result.push(tmp);
|
|
1038
1038
|
}
|
|
1039
|
-
result.push("/*
|
|
1039
|
+
result.push("/* ]] */");
|
|
1040
1040
|
opentmp = true;
|
|
1041
1041
|
if (helpcode && cacheresult) finalresult = finalresult.concat(cacheresult), cacheresult = [];
|
|
1042
1042
|
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);
|