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.
@@ -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 && !hasOwnProperty.call(forceRequest, name))
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 (!/^on/.test(name) && window[name] !== null && window[name] !== void 0 && !hasOwnProperty.call(forceRequest, name)) {
516
- modules[name] = window[name]
517
- if (then) then(modules[name]);
518
- return modules[name];
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);
@@ -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, ...func);
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
- localStorage = window.localStorage || {
25
- setItem() {
26
- },
27
- getItem() {
28
- return null;
29
- },
30
- removeItem() {
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
- if (_sessionStorage.hasOwnProperty(k)) {
25
- var key = session_storage_prefix + k;
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
- length: 0,
32
- removeItem: function (key) {
33
- if (_sessionStorage.hasOwnProperty(key))
34
- sessionStorage.length--;
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: function (key, data) {
38
- if (!_sessionStorage.hasOwnProperty(key))
39
- sessionStorage.length++;
40
- _sessionStorage[key] = Object.prototype.toString.call(data);
41
- },
42
- getItem: function (key) {
43
- return _sessionStorage[key];
44
- },
45
- clear: function () {
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "4.0.25",
3
+ "version": "4.0.28",
4
4
  "description": "简化前端开发,优化web性能",
5
5
  "main": "public/efront.js",
6
6
  "directories": {