efront 4.25.2 → 4.25.3

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.
@@ -1,4 +1,14 @@
1
- var { SPACE, COMMENT, EXPRESS, STRAP, QUOTED, STAMP, SCOPED, VALUE, LABEL, canbeTemp: _canbeTemp, isEval, createString, skipAssignment, pickSentence, skipSentenceQueue, splice, relink, createExpressList, snapExpressHead, snapExpressFoot } = require("./common");
1
+ var {
2
+ SPACE, COMMENT, EXPRESS, STRAP, QUOTED, STAMP, SCOPED, VALUE, LABEL,
3
+ canbeTemp: _canbeTemp, isEval,
4
+ createString, createScoped,
5
+ skipAssignment,
6
+ pickSentence,
7
+ skipSentenceQueue,
8
+ splice, relink,
9
+ createExpressList,
10
+ snapExpressHead, snapExpressFoot
11
+ } = require("./common");
2
12
  var scanner2 = require("./scanner2");
3
13
  var returnText = function () { return this.text };
4
14
  var NodeNotClone = o => Object.assign(Object.create(null), o, { toString: returnText });
@@ -560,6 +570,7 @@ var _invoke = function (t, getname) {
560
570
  remove_end_comma(o);
561
571
  var iseval = o.iseval = isEval(o);
562
572
  var constStart = 0;
573
+ var constNames = Object.create(null);
563
574
  if (!iseval) {
564
575
  for (var cy = 0; cy < o.length; cy++) {
565
576
  while (cy < o.length && o[cy].type & (SPACE | COMMENT)) cy++;
@@ -567,10 +578,19 @@ var _invoke = function (t, getname) {
567
578
  cy = skipAssignment(o, cy);
568
579
  if (cy === ay || ay >= o.length) continue;
569
580
  var m = o[ay];
570
- if (cy === ay + 1 && (m.type === EXPRESS && (strip || !/[\.\[]/.test(m.text)) || m.type === VALUE || m.type === QUOTED && !m.length)) {
581
+ var isexp = m.type === EXPRESS && (strip || !/[\.\[]/.test(m.text));
582
+ if (cy === ay + 1 && (isexp || m.type === VALUE || m.type === QUOTED && !m.length)) {
583
+ if (isexp) constNames[m.text] = true;
571
584
  continue;
572
585
  }
573
- constStart = cy + 1;
586
+ var s = createScoped(cloneNode(o.slice(ay, cy)));
587
+ for (var k in s.used) {
588
+ if (k in constNames) {
589
+ constStart = cy + 1;
590
+ break;
591
+ }
592
+ constNames[k] = true;
593
+ }
574
594
  }
575
595
  }
576
596
  for (var cy = 0; cy < o.length; cy++) {
@@ -581,9 +601,13 @@ var _invoke = function (t, getname) {
581
601
  var ey = cy;
582
602
  if (ay === ey || ay >= o.length) continue;
583
603
  var m = o.slice(ay, ey);
584
- if (m.length === 1 && (m[0].type === EXPRESS && !/[\.\[]/.test(m[0].text) && ay >= constStart || m[0].type === VALUE || m[0].type === QUOTED && !m[0].length)) {
585
- continue;
586
- }
604
+ var isexp = m.length === 1 && (
605
+ m[0].type === EXPRESS && !/[\.\[]/.test(m[0].text)
606
+ && ay >= constStart// 防止变量的值被后文修改
607
+ || m[0].type === QUOTED && !m[0].length
608
+ || m[0].type === VALUE
609
+ );
610
+ if (isexp) continue;
587
611
  if (!iseval || m[m.length - 1] === o.last) {
588
612
  var q = toqueue(m, getdeepname, 1);
589
613
  if (q.length > 1 && queue.length) {
@@ -820,7 +844,7 @@ var ternary = function (body, getname, ret) {
820
844
  else if (ret === 1 && !equcount && canbeOnce(bd)) {
821
845
  var name = getnextname(0);
822
846
  var r = [{ type: EXPRESS, text: name }, { type: STAMP, text: '=' }, ...bd]
823
- r.name = name;
847
+ r.name = [r[0]];
824
848
  explist = [r];
825
849
  }
826
850
  else {
@@ -863,7 +887,7 @@ var ternary = function (body, getname, ret) {
863
887
  var punc = eq.text.slice(0, eq.text.length - 1);
864
888
  var bdtmp = [...ass.map(cloneNode), { type: STAMP, text: punc }, ...asn];
865
889
  relink(bdtmp);
866
- eqused++;
890
+ if (eqused) eqused++;
867
891
  var explist2 = _express(bdtmp, getnextname, true);
868
892
  if (isSimpleAssign) {
869
893
  [asn, an = cloneNode(ass)] = popexp(explist2);
@@ -165,9 +165,10 @@ test(`while (a && b);`, '_ = a; if (!_) return [1, 0]; _ = b;\r\n if (!_) return
165
165
  test(`while (a < b);`, '_ = a < b; if (!_) return [1, 0]; return [0, 0]', true);
166
166
  test(`if (a() > a+b);`, '_ = a(), _0 = a + b, _ = _ > _0; if (!_) return [1, 0]; return [1, 0]', true);
167
167
  test(`index > start && result.length < pageSize`, '_ = index > start; if (!_) return [1, 0]; _ = result.length, _ < pageSize', true);
168
- test(`menus[0][str_name] += [str__v_, version[0], str__v_1][str_join]("")`, `_ = menus[0]; _0 = str__v_; _1 = version[0]; _2 = str__v_1; _0 = [_0, _1, _2]; _0 = _0[str_join](""); _1 = _[str_name], _1 = _1 + _0; _[str_name] = _1`);
169
- test(`a.b.c += menus[0][str_name] += [str__v_, version[0], str__v_1][str_join]("")`, `_ = menus[0]; _0 = str__v_; _1 = version[0]; _2 = str__v_1; _0 = [_0, _1, _2]; _0 = _0[str_join](""); _1 = _[str_name], _1 = _1 + _0; _[str_name] = _1; _2 = a.b.c, _2 = _2 + _1; a.b.c = _2`);
170
- test(`menus[0].c += menus[0][str_name] += [str__v_, version[0], str__v_1][str_join]("")`, `_ = menus[0]; _0 = menus[0]; _1 = str__v_; _2 = version[0]; _3 = str__v_1; _1 = [_1, _2, _3]; _1 = _1[str_join](""); _2 = _0[str_name], _2 = _2 + _1; _0[str_name] = _2; _3 = _.c, _3 = _3 + _2; _.c = _3`);
171
- unstruct.debug = true; r++;
168
+ test(`menus[0][str_name] += [str__v_, version[0], str__v_1][str_join]("")`, `_ = menus[0]; _0 = version[0]; _0 = [str__v_, _0, str__v_1]; _0 = _0[str_join](""); _1 = _[str_name], _1 = _1 + _0; _[str_name] = _1`);
169
+ test(`a.b.c += menus[0][str_name] += [str__v_, version[0], str__v_1][str_join]("")`, `_ = menus[0]; _0 = version[0]; _0 = [str__v_, _0, str__v_1]; _0 = _0[str_join](""); _1 = _[str_name], _1 = _1 + _0; _[str_name] = _1; _2 = a.b.c, _2 = _2 + _1; a.b.c = _2`);
170
+ test(`menus[0].c += menus[0][str_name] += [str__v_, version[0], str__v_1][str_join]("")`, `_ = menus[0]; _0 = menus[0]; _1 = version[0]; _1 = [str__v_, _1, str__v_1]; _1 = _1[str_join](""); _2 = _0[str_name], _2 = _2 + _1; _0[str_name] = _2; _3 = _.c, _3 = _3 + _2; _.c = _3`);
172
171
  test(`new Array(2).join("") + 1`, `_0 = new Array(2); _ = _0.join(""), _ + 1`);
173
- test(`new window.Array(2).join("") + 1`, `_0 = new window.Array(2); _ = _0.join(""), _ + 1`);
172
+ test(`new window.Array(2).join("") + 1`, `_0 = new window.Array(2); _ = _0.join(""), _ + 1`);
173
+ unstruct.debug = true; r++;
174
+ test(`readbuff(h, offset += 2, length)`, `_ = offset + 2; offset = _; readbuff(h, _, length)`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "4.25.2",
3
+ "version": "4.25.3",
4
4
  "description": "一个开发环境,提供一种自由的前端开发模式,也可作为辅助工具使用。",
5
5
  "main": "public/efront.js",
6
6
  "directories": {