efront 4.10.1 → 4.10.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.
@@ -30,7 +30,7 @@ var unslice = function (arr) {
30
30
  continue;
31
31
  }
32
32
  var p = o.prev;
33
- if (p && p.type === EXPRESS && p.text === '...') {
33
+ if (p && is3dots(p)) {
34
34
  var px = arr.lastIndexOf(p, cx);
35
35
  splice(arr, px, cx - px + 1, ...o);
36
36
  cx += o.length - 1;
@@ -370,13 +370,13 @@ var killdec = function (queue, i, getobjname, _var = 'var', killobj, islet) {
370
370
  // 键值对重组
371
371
  var killmap = function (body, i, _getobjname, _getnewname, killobj) {
372
372
  var o = body[i];
373
- if (!o.length) return indexof(body, o.next, i);
373
+ if (!o.length) return i + 1;
374
374
  var m = o.first;
375
375
  var s = m, p;
376
376
 
377
377
  loop: while (m) {
378
378
  s = m, p = m.prev;
379
- if (m.type === EXPRESS) break;
379
+ if (m.type === STAMP && m.text === '...' || m.type === EXPRESS) break;
380
380
  while (m && (m.type === STRAP || m.type === STAMP)) m = m.next;
381
381
  if (!m || m.type & (PROPERTY | QUOTED | EXPRESS) && /^\[/.test(m.text) || m.isprop && (m.type === SCOPED || m.short || m.next && m.next.type === SCOPED)) {
382
382
  break;
@@ -425,7 +425,7 @@ var killmap = function (body, i, _getobjname, _getnewname, killobj) {
425
425
  }
426
426
  if (m && m.type === STAMP && /^[,;]$/.test(m.text)) m = m.next;
427
427
  }
428
- if (!m) return indexof(body, o.next, i);
428
+ if (!m) return i + 1;
429
429
  m = s;
430
430
  if (p && p.type === STAMP && p.text === ',') {
431
431
  var mi = o.indexOf(m);
@@ -433,7 +433,6 @@ var killmap = function (body, i, _getobjname, _getnewname, killobj) {
433
433
  if (pi > 0) splice(o, pi, mi - pi);
434
434
  }
435
435
  var q;
436
- var next = o.next;
437
436
  var l = 1;
438
437
  var initq = function () {
439
438
  q = scanner2(`(${_getobjname()} =)`)[0];
@@ -445,7 +444,7 @@ var killmap = function (body, i, _getobjname, _getnewname, killobj) {
445
444
  var tempname = null;
446
445
  var t;
447
446
  while (m) {
448
- if (m.type === EXPRESS) {
447
+ if (m.type === EXPRESS || m.type === STAMP && m.text === '...') {
449
448
  var s = m;
450
449
  m = skipAssignment(m);
451
450
  if (/^\.\.\./.test(s.text)) {
@@ -501,7 +500,7 @@ var killmap = function (body, i, _getobjname, _getnewname, killobj) {
501
500
  q.push(...scanner2(_getobjname()));
502
501
  relink(q);
503
502
  }
504
- return indexof(body, next, i);
503
+ return i + 1;
505
504
  };
506
505
  var getprop = function (o, m) {
507
506
  var prop = {};
@@ -733,6 +732,9 @@ var indexof = function (list, o, i) {
733
732
  else i = list.length;
734
733
  return i;
735
734
  };
735
+ var is3dots = function (m) {
736
+ return m.type === STAMP && m.text === '...' || m.type === EXPRESS && /^\.\.\./.test(m.text);
737
+ };
736
738
  // 数组或参数展开
737
739
  var killspr = function (body, i, _getobjname, killobj) {
738
740
  var o = body[i];
@@ -747,6 +749,7 @@ var killspr = function (body, i, _getobjname, killobj) {
747
749
  m = skipAssignment(m);
748
750
  s.text = s.text.replace(/^\.\.\./, '');
749
751
  var v = splice2(o, s, m);
752
+ if (!s.text) v.shift();
750
753
  if (m) splice2(o, m, m = m.next);
751
754
  killobj(v);
752
755
  var q = scanner2(`slice_["call"]()`);
@@ -761,14 +764,13 @@ var killspr = function (body, i, _getobjname, killobj) {
761
764
  return m;
762
765
  }
763
766
  while (m) {
764
- if (m.type === EXPRESS && /^\.\.\./.test(m.text)) break;
767
+ if (is3dots(m)) break;
765
768
  m = killnext(m);
766
769
  if (m) m = m.next;
767
770
  index++;
768
771
  }
769
772
  if (!m) return i + 1;
770
773
  var c = scanner2('["concat"]()');
771
- var next = o.next;
772
774
  if (o.entry === '(') {
773
775
  var r = snapExpressHead(o);
774
776
  if (r.type === STRAP && r.text === "new") {
@@ -788,20 +790,37 @@ var killspr = function (body, i, _getobjname, killobj) {
788
790
  relink(qt)
789
791
  return b;
790
792
  }
791
- var rt = r.type === EXPRESS && r.text.replace(/^\.\.\./, '');
793
+ var rt = (r.type & (EXPRESS | STAMP)) && r.text.replace(/^\.\.\./, '');
792
794
  var p = o.prev;
793
- if (r === o);
794
- else if (
795
- r === o.prev && r.type === EXPRESS && !/\.[\s\S]*\./.test(rt) && !/\[[^\]]*\]\[[^\]]*\]/.test(rt)) {
796
- var p = r;
797
- var n = /\.|\[/.test(rt) ? rt.replace(/\.[^\.]*|\[[^\]]*\]$/, '') : "null";
798
- splice(o, 0, 0, ...scanner2(n + ","));
795
+ var pp = p?.prev;
796
+ var done = false;
797
+ var hasdot = false;
798
+ if (r === o) done = true;
799
+ else if (r === p) {
800
+ if (r.type === EXPRESS && !/\.[\s\S]*\./.test(rt) && !/\[[^\]]*\]\[[^\]]*\]/.test(rt)) {
801
+ var p = r;
802
+ hasdot = r.text.length !== rt.length;
803
+ var n = /\.|\[/.test(rt) ? rt.replace(/\.[^\.]*|\[[^\]]*\]$/, '') : "null";
804
+ splice(o, 0, 0, ...scanner2(n + ","));
805
+ done = true;
806
+ }
807
+ }
808
+ else if (r === pp) {
809
+ if (p.type === SCOPED && p.entry === "[" && !/[\.\[]/.test(rt)) {
810
+ splice(o, 0, 0, ...scanner2(rt + ","));
811
+ p = r;
812
+ done = true;
813
+ }
799
814
  }
800
- else if (p && r === p.prev && p.type === SCOPED && p.entry === "[" && !/[\.\[]/.test(rt)) {
801
- splice(o, 0, 0, ...scanner2(rt + ","));
802
- p = r;
815
+ else if (r === pp.prev) {
816
+ var ppp = pp.prev;
817
+ if (pp.text === '.' && p.type === EXPRESS && !/[\.\[]/.test(p.text) && ppp.type === EXPRESS && !/[\.\[]]/.test(ppp.text)) {
818
+ splice(o, 0, 0, ...scanner2(ppp.text + ','));
819
+ p = pp.prev;
820
+ done = true;
821
+ }
803
822
  }
804
- else {
823
+ if (!done) {
805
824
  var n = null, hasdot = false;
806
825
  var pt = p.type === EXPRESS && p.text.replace(/^\.\.\./, '');
807
826
  if (p.type === EXPRESS && (n = /^(?:[\s\S]*[^\.])?(\.[^\.]*|\[[^\]]*\])$/.exec(pt))) {
@@ -810,6 +829,9 @@ var killspr = function (body, i, _getobjname, killobj) {
810
829
  p.text = pt.slice(0, pt.length - n.length);
811
830
  splice(body, i++, 0, { type: EXPRESS, text: n });
812
831
  }
832
+ else if (pp && /\.$/.test(pp.text) && !/[\.\[]/.test(p.text)) {
833
+ p = pp.prev;
834
+ }
813
835
  else if (p.type === SCOPED && p.entry === '[') {
814
836
  p = p.prev;
815
837
  }
@@ -827,7 +849,7 @@ var killspr = function (body, i, _getobjname, killobj) {
827
849
  }
828
850
  splice(h1, h1.length, 0, ...splice(body, cx, dx - cx, ...h));
829
851
  i += cx - dx + h.length;
830
- if (p.type === EXPRESS && !p.text) {
852
+ if (p.type & (EXPRESS | STAMP) && !p.text) {
831
853
  var cx = h0.lastIndexOf(p);
832
854
  if (cx >= 0) splice(h1, cx, 1);
833
855
  }
@@ -840,11 +862,11 @@ var killspr = function (body, i, _getobjname, killobj) {
840
862
  splice(c[0], 0, 0, ...h);
841
863
  killobj(c);
842
864
  splice(o, o.length, 0, ...c);
843
- return indexof(body, next, i);
865
+ return i + 1;
844
866
  };
845
- killnext(m);
846
867
  m.text = m.text.replace(/^\.\.\./, '');
847
- return indexof(body, next, i);
868
+ if (!m.text) splice2(o, m, m.next);
869
+ return i + 1;
848
870
  }
849
871
  if (index > 0) {
850
872
  if (m) splice2(o, m.prev, m);
@@ -856,7 +878,7 @@ var killspr = function (body, i, _getobjname, killobj) {
856
878
  }
857
879
  var d;
858
880
  while (m) {
859
- if (m.type === EXPRESS && /^\.\.\./.test(m.text)) {
881
+ if (is3dots(m)) {
860
882
  if (c[1].length) insert1(c[1], null, { type: STAMP, text: "," });
861
883
  insert1(c[1], null, ...spr());
862
884
  d = null;
@@ -873,7 +895,7 @@ var killspr = function (body, i, _getobjname, killobj) {
873
895
  insert1(d[0], null, ...splice2(o, s, m));
874
896
  if (m) splice2(o, m, m = m.next);
875
897
  }
876
- return indexof(body, next, i);
898
+ return i + 1;
877
899
  };
878
900
 
879
901
  var killobj = function (body, getobjname, getletname, getname_, letname_, deep = 0) {
@@ -963,6 +985,14 @@ var killobj = function (body, getobjname, getletname, getname_, letname_, deep =
963
985
  case "async":
964
986
  splice(body, i, 1);
965
987
  break;
988
+ case "new":
989
+ if (o.next?.needle) {
990
+ o.text = 'undefined';
991
+ o = o.next;
992
+ var e = snapExpressFoot(o).next;
993
+ splice2(o.queue, o, e);
994
+ break;
995
+ }
966
996
  default:
967
997
  i++;
968
998
  }
@@ -982,6 +1012,7 @@ var killobj = function (body, getobjname, getletname, getname_, letname_, deep =
982
1012
  }
983
1013
  else if (o.entry === '[') {
984
1014
  var a = snapExpressHead(o);
1015
+
985
1016
  if (a === o && o.next && o.next.type === STAMP && o.next.text === '=' || o.next && o.next.type === STRAP && /^(in|of)$/.test(o.next.type) && body.entry === '(' && body.prev && body.prev.type === STRAP && body.prev.text === 'for') {
986
1017
  i = killdec(body, i, _getdeepname, '', deepkill);
987
1018
  }
@@ -1258,6 +1289,12 @@ var killarg = function (head, body, _getname, setarg = true) {
1258
1289
  var namemap = Object.create(null);
1259
1290
  while (o) {
1260
1291
  var aname = null;
1292
+ var is3darg = false;
1293
+ var a = o;
1294
+ if (o.type === STAMP && o.text === '...') {
1295
+ o = o.next;
1296
+ is3darg = true;
1297
+ }
1261
1298
  if (o.type === SCOPED) {
1262
1299
  aname = _getname(head.length > 1 ? 'arg' + index : 'arg');
1263
1300
  var dec = splice2(head, o, o = o.next, { type: EXPRESS, text: aname });
@@ -1266,10 +1303,11 @@ var killarg = function (head, body, _getname, setarg = true) {
1266
1303
  else argcodes.push(`var ` + dec);
1267
1304
  }
1268
1305
  else if (o.type & (EXPRESS | VALUE)) {
1306
+ if (!is3darg) is3darg = is3dots(o);
1269
1307
  aname = o.text;
1270
- if (/^\.\.\./.test(aname)) {
1308
+ if (is3darg) {
1271
1309
  cname = aname.replace(/^\.\.\./, '');
1272
- splice2(head, o.prev ? o.prev : o, o = o.next);
1310
+ splice2(head, a.prev || a, o = skipAssignment(o));
1273
1311
  collect = index + 1;
1274
1312
  }
1275
1313
  else {
@@ -1280,7 +1318,13 @@ var killarg = function (head, body, _getname, setarg = true) {
1280
1318
  index++;
1281
1319
  }
1282
1320
  }
1283
- else throw i18n`参数声明异常!`
1321
+ else if (is3darg) {
1322
+ splice2(head, a.prev || a, o = skipAssignment(o));
1323
+ aname = '...';
1324
+ cname = '';
1325
+ collect = index + 1;
1326
+ }
1327
+ else throw i18n`参数声明异常!`;
1284
1328
  if (o && o.type === STAMP) {
1285
1329
  if (o.text === ',') {
1286
1330
  o = o.next; continue;
@@ -1443,6 +1487,27 @@ var killret = function (body, labels = Object.create(null), gettmpname) {
1443
1487
  }
1444
1488
  return breakmap;
1445
1489
  }
1490
+ var puncLeft = function (o) {
1491
+ var s = snapExpressHead(o.prev);
1492
+ var p = Infinity;
1493
+ while (o && o.prev) {
1494
+ if (o.type !== STAMP || !(o.text in powermap) || powermap[o.text] < p) return s;
1495
+ s = snapExpressHead(o.prev);
1496
+ o = s.prev;
1497
+ }
1498
+ return s;
1499
+ }
1500
+ var puncRight = function (o) {
1501
+ var s = snapExpressFoot(o.next);
1502
+ var p = 0;
1503
+ while (o && o.next) {
1504
+ if (o.type !== STAMP || !(o.text in powermap) || powermap[o.text] <= p) return s;
1505
+ s = snapExpressFoot(o.next);
1506
+ o = s.next;
1507
+ }
1508
+ return s;
1509
+ }
1510
+
1446
1511
 
1447
1512
  var newpunc = function (body, i, newname) {
1448
1513
  var o = body[i];
@@ -1465,29 +1530,44 @@ var newpunc = function (body, i, newname) {
1465
1530
  if (!h) return;
1466
1531
  var rt = h.type === EXPRESS && h.text;
1467
1532
  var p = o.prev;
1533
+ var done = false;
1468
1534
  var hi = body.lastIndexOf(h, i);
1469
- if (
1470
- h === p && h.type === EXPRESS && !/\.[\s\S]*\./.test(rt) && !/\[[^\]]*\]\[[^\]]*\]/.test(rt)) {
1471
- splice(sentence, 0, 0, ...scanner2(rt + punc));
1472
- hi = i;
1473
- }
1474
- else if (p && h === p.prev && p.type === SCOPED && p.entry === "[" && !/[\.\[]/.test(rt)) {
1475
- if (canbeTemp(p)) {
1476
- var name = p.first.text;
1535
+ var pp = p?.prev;
1536
+ if (h === p) {
1537
+ if (h.type === EXPRESS && !/\.[\s\S]*\./.test(rt) && !/\[[^\]]*\]\[[^\]]*\]/.test(rt)) {
1538
+ splice(sentence, 0, 0, ...scanner2(rt + punc));
1539
+ hi = i;
1540
+ done = true;
1477
1541
  }
1478
- else {
1479
- var name = newname();
1480
- splice(p, 0, 0, ...scanner2(`${name}=`));
1542
+ }
1543
+ else if (h === pp) {
1544
+ if (p.type === SCOPED && p.entry === "[" && !/[\.\[]/.test(rt)) {
1545
+ if (canbeTemp(p)) {
1546
+ var name = p.first.text;
1547
+ }
1548
+ else {
1549
+ var name = newname();
1550
+ splice(p, 0, 0, ...scanner2(`${name}=`));
1551
+ }
1552
+ splice(sentence, 0, 0, ...scanner2(`${rt}[${name}]` + punc));
1553
+ hi = i;
1554
+ done = true;
1481
1555
  }
1482
- splice(sentence, 0, 0, ...scanner2(`${rt}[${name}]` + punc));
1483
- hi = i;
1484
1556
  }
1485
- else {
1557
+ else if (h === pp.prev) {
1558
+ var ppp = pp.prev;
1559
+ if (pp.text === '.' && p.type === EXPRESS && ppp.type === EXPRESS && !/[\.\[]/.test(p.text) && !/[\.\[]/.test(ppp.text)) {
1560
+ splice(sentence, 0, 0, ...scanner2(`${ppp.text}.${pp.text}+${punc}`));
1561
+ hi = i;
1562
+ done = true;
1563
+ }
1564
+ }
1565
+ if (!done) {
1486
1566
  var n = null;
1487
1567
  var name = newname();
1488
1568
  var pt = p.type === EXPRESS && p.text;
1489
1569
  var hp = h.prev;
1490
- splice(body, i - 1, 1);
1570
+ splice(body, i -= 1, 1);
1491
1571
  if (p.type === EXPRESS && (n = /^(?:[\s\S]*[^\.])?(\.[^\.]*|\[[^\]]*\])$/.exec(pt))) {
1492
1572
  var n = n[1];
1493
1573
  p.text = pt.slice(0, pt.length - n.length);
@@ -1501,14 +1581,17 @@ var newpunc = function (body, i, newname) {
1501
1581
  var name2 = newname();
1502
1582
  splice(p, 0, 0, ...scanner2(`${name2}=`));
1503
1583
  }
1504
- splice(body, i - 2, 1);
1584
+ splice(body, i -= 1, 1);
1505
1585
  splice(sentence, 0, 0, ...scanner2(`,${name}`), p, ...scanner2(`=${name}[${name2}]${punc}`));
1506
1586
  p = p.prev;
1507
1587
  }
1508
1588
  else {
1509
1589
  var n = p.text.replace(/^\./, '');
1510
1590
  var pp = p.prev;
1511
- if (pp.type === EXPRESS) pp.text = pp.text.replace(/\.$/, '');
1591
+ if (n === p.text) {
1592
+ if (pp.text === '.') pp = pp.prev, splice(body, i -= 2, 2);
1593
+ else if (pp.type & EXPRESS) pp.text = pp.text.replace(/\.$/, ''), splice(body, i -= 1, 1);
1594
+ }
1512
1595
  splice(sentence, 0, 0, ...scanner2(`,${name}.${n}=${name}.${n}${punc}`));
1513
1596
  }
1514
1597
  splice(sentence, 0, 0, ...scanner2(`${name}=`), ...splice(body, hi, i));
@@ -1524,8 +1607,8 @@ var newpunc = function (body, i, newname) {
1524
1607
  else {
1525
1608
  hi = i;
1526
1609
  if (/^(\?\?|\*\*)$/.test(t)) {
1527
- var l = powermap.puncLeft(o);
1528
- var r = powermap.puncRight(o);
1610
+ var l = puncLeft(o);
1611
+ var r = puncRight(o);
1529
1612
  var li = body.lastIndexOf(l, i);
1530
1613
  var ri = body.indexOf(r, i);
1531
1614
  var name = t === '??' ? 'nullish_' : "power_";
@@ -160,7 +160,7 @@ textSpan: highlightSpan.textSpan,
160
160
  isWriteAccess: highlightSpan.kind === "writtenReference" /* writtenReference */ }, highlightSpan.isInString && { isInString: true }, highlightSpan.contextSpan && { contextSpan: highlightSpan.contextSpan })) }`);
161
161
  assert(downLevel(`async()=>({ [argitem.sort ? argitem.sort : 'date']: "desc" })`), `function () { return async_(
162
162
  function () {
163
- _ = {}; if (!argitem.sort) return [1, 0]; _1 = argitem.sort; return [2, 0]
163
+ _ = {}; _1 = argitem.sort; if (!_1) return [1, 0]; _1 = argitem.sort; return [2, 0]
164
164
  },
165
165
  function () {
166
166
  _1 = 'date'; return [1, 0]
@@ -435,4 +435,10 @@ assert(downLevel(`function(a=b=>b,c){c}`), 'function (a, c) { if (a === undefine
435
435
  assert(downLevel(`Object.defineProperty(dis, f.key, {get() {}, set(v) {}})`), `Object.defineProperty(dis, f.key, (_ = {},
436
436
  _.get = function () {},
437
437
  _.set = function (v) {}, _))
438
- var _`)
438
+ var _`);
439
+ common.debug = true;
440
+ var c = scanner2(`\r\n if (search.length) return null;\r\n return path.join(...pathlist);\r\n`);
441
+ c.fix();
442
+ c.break();
443
+ assert(c.toString(), `\r\n if (search["length"]) return null;\r\n return path["join"](...pathlist);\r\n`)
444
+ assert(downLevel.code(c).toString(), `\r\n if (search["length"]) return null;\r\n return (_ = path)["join"]["apply"](_, pathlist);\r\n\r\nvar _`);
@@ -1,25 +1,4 @@
1
- var { STAMP, snapExpressHead, snapExpressFoot } = require("./common");
2
- var powermap = new class {
3
- puncLeft(o) {
4
- var s = snapExpressHead(o.prev);
5
- var p = Infinity;
6
- while (o && o.prev) {
7
- if (o.type !== STAMP || !(o.text in this) || this[o.text] < p) return s;
8
- s = snapExpressHead(o.prev);
9
- o = s.prev;
10
- }
11
- return s;
12
- }
13
- puncRight(o) {
14
- var s = snapExpressFoot(o.next);
15
- var p = 0;
16
- while (o && o.next) {
17
- if (o.type !== STAMP || !(o.text in this) || this[o.text] <= p) return s;
18
- s = snapExpressFoot(o.next);
19
- o = s.next;
20
- }
21
- return s;
22
- }
1
+ var powermap = {
23
2
  };
24
3
 
25
4
  [
@@ -27,9 +6,13 @@ var powermap = new class {
27
6
  '&&,||,^^,??'/* 4 */, '&,|,^'/* 5 */,
28
7
  'instanceof,in,==,>=,<=,>,<,!=,!==,===,!in,!instanceof'/* 6 */,
29
8
  '>>,>>>,<<'/* 7 */, '+,-'/* 8 */, '*,/,%'/* 9 */, '**'/* 10 */,
30
- 'typeof,await,yield,new,delete,void,!,~'/* 11 */, '++,--'/* 12 */,
9
+ '++,--'/* 11 */,
10
+ "typeof,await,yield,new,delete,void,..."/*12*/,
11
+ '!,~'/* 13 */,
12
+ "::,?.,->,."/*14*/,
31
13
  ].forEach((pp, i) => {
32
14
  pp.split(",").forEach(p => {
33
15
  powermap[p] = i + 1;
34
16
  })
35
17
  });
18
+ module.exports = powermap;
@@ -541,7 +541,6 @@ var _invoke = function (t, getname) {
541
541
  continue;
542
542
  }
543
543
  if (needbreak(o)) {
544
-
545
544
  var s = splice(t, bx, cx + 1 - bx);
546
545
  if (cx > 0) s.name = [cloneNode(s[0])];
547
546
  else s.name = qname;
@@ -642,8 +641,8 @@ var _invoke = function (t, getname) {
642
641
  else if (t.length) {
643
642
  if (!isAequalA(t)) {
644
643
  var t0 = t[0];
645
- if (t0.type === EXPRESS && /^[\.\[]/.test(t0.text) || t0.type & (STAMP | STRAP) && powermap[t0.text] < powermap.new) {
646
- t.unshift(...rescan(`${qname}=${qname}`));
644
+ if ((t0.type === EXPRESS && /^[\.\[]/.test(t0.text) || t0.type & (STAMP | STRAP) && powermap[t0.text] < powermap.new) && result.length) {
645
+ t.unshift(...rescan`${qname}=${qname}`);
647
646
  relink(t);
648
647
  }
649
648
  t = uncurve(t);
@@ -784,8 +783,7 @@ var ternary = function (body, getname, ret) {
784
783
  b = ternary(b, getnextname, true);
785
784
  for (var b of b) pushstep(explist, b);
786
785
  return b;
787
- }, true)
788
- }) return [1, 0]`);
786
+ }, true)}) return [1, 0]`);
789
787
  var q = explist[explist.length - 1];
790
788
  var qi = explist.length - 1;
791
789
  var qe = q[q.length - 1];
@@ -872,6 +870,7 @@ var ternary = function (body, getname, ret) {
872
870
  an = q2.name;
873
871
  asn = cloneNode(an);
874
872
  }
873
+
875
874
  for (var e of explist2) pushstep(explist, e);
876
875
  eq.text = "=";
877
876
  }
@@ -970,6 +969,10 @@ var _express = function (body, getname, ret) {
970
969
  continue;
971
970
  }
972
971
  if (o.type & (STRAP | STAMP)) {
972
+ if (o.needle) {
973
+ exps.push(o);
974
+ continue;
975
+ }
973
976
  var p = 0;
974
977
  if (o.unary) p = powermap["!"];
975
978
  else p = powermap[o.text];
@@ -96,9 +96,9 @@ test("if(1) function a(){}", 'if (false) return [1, 0]; a = function () {}; retu
96
96
  test("if(1) {function a(){}}", 'if (false) return [1, 0]; a = function () {}; return [1, 0]', true);
97
97
  test("if(a) a = 1;function a(){}", "a = function () {}; if (!a) return [1, 0]; a = 1; return [1, 0]", true);
98
98
  test("if(a) a = 1;async function a(){}", "a = async function () {}; if (!a) return [1, 0]; a = 1; return [1, 0]", true);
99
- test("if(a) a = 1;async function* a(){}", "a = async function* () {}; if (!a) return [1, 0]; a = 1; return [1, 0]", true);
99
+ test("if(a) a = 1;async function* a(){}", "a = async function *() {}; if (!a) return [1, 0]; a = 1; return [1, 0]", true);
100
100
  test("if(a) a = 1;class a{}", "a = class {}; if (!a) return [1, 0]; a = 1; return [1, 0]", true);
101
- test("if(a) a = 1;function* a(){}", "a = function* () {}; if (!a) return [1, 0]; a = 1; return [1, 0]", true);
101
+ test("if(a) a = 1;function* a(){}", "a = function *() {}; if (!a) return [1, 0]; a = 1; return [1, 0]", true);
102
102
  test("await new Promise(function(){})", '_ = function () {}; _ = new Promise(_); return [_, 1]', true);
103
103
  test(`onerror({ status: xhr.status, response: "Cookie解析异常!", toString: toResponse })`, '_ = { status: xhr.status, response: "Cookie解析异常!", toString: toResponse }; onerror(_)', true);
104
104
  test(`if (!/^https\\:\\/\\/|^s\\/\\//.test(url)) console.warn("请使用https访问如下路径:" + url)`, '_ = /^https\\:\\/\\/|^s\\/\\//.test(url); if (_) return [1, 0]; _ = "请使用https访问如下路径:" + url; _ = console.warn(_); return [1, 0]', true);
@@ -126,7 +126,7 @@ test(`switch(a){default: a;case 1:b;}`, 'if (a === 1) return [2, 0]; return [1,
126
126
  test("loop:{a=b;if(a) continue loop}", "a = b; if (a) return [0, 0]", true);
127
127
  test("if(a)try{}finally{}else a;", 'if (!a) return [4, 0]; return [1, 8];\r\n return [0, 9];\r\n return [1, 9];\r\n return [2, 0];\r\n a; return [1, 0]')
128
128
  test("b:while(t){switch(a){case c:break b;}}", 'if (!t) return [1, 0]; if (a === c) return [1, 0]; return [0, 0]');
129
- test("predef[key[1]](r.slice(key[0].length).trim())", '_ = key[1]; _0 = key[0].length; _0 = r.slice(_0); _0 = _0.trim(); predef[_](_0)');
129
+ test("predef[key[1]](r.slice(key[0].length).trim())", '_ = key[1]; _0 = key[0]; _0 = _0.length; _0 = r.slice(_0); _0 = _0.trim(); predef[_](_0)');
130
130
  test("predef[key[1]](r.slice())(r.slice())", '_ = key[1]; _0 = r.slice(); _ = predef[_](_0); _0 = r.slice(); _(_0)');
131
131
  test("predef[key[1]][key[2]][key[3]]", '_ = key[1]; _ = predef[_]; _0 = key[2]; _ = _[_0]; _0 = key[3]; _[_0]');
132
132
  test("[key[1]][key[2]][key[3]]", '_ = key[1]; _ = [_]; _0 = key[2]; _ = _[_0]; _0 = key[3]; _[_0]');
@@ -10,6 +10,26 @@ var codecolor = function (c, encode) {
10
10
  var envs = c.envs;
11
11
  var deep = 0;
12
12
  var used = c.used;
13
+ var scoped = c.scoped;
14
+ var setdefs = function (scoped) {
15
+ var { used } = scoped;
16
+ for (var k in used) {
17
+ var isdef = false;
18
+ for (var o of used[k]) {
19
+ if (o.next?.needle) {
20
+ isdef = true;
21
+ break;
22
+ }
23
+ }
24
+ if (isdef) {
25
+ for (var o of used[k]) {
26
+ o.isdef = true;
27
+ }
28
+ }
29
+ }
30
+ scoped.forEach(setdefs);
31
+ };
32
+ setdefs(scoped);
13
33
  var isConstValue = () => false;
14
34
  if (c.program) {
15
35
  var { strap_reg, value_reg } = c.program;
@@ -19,6 +39,7 @@ var codecolor = function (c, encode) {
19
39
  var o = o.next;
20
40
  if (o?.type === EXPRESS && needhead_reg.test(o.text)) o = o.next;
21
41
  if (o?.type === ELEMENT && o.istype) o = o.next;
42
+ if (o?.type === STAMP && o.needle) o = o.next;
22
43
  if (o?.type === SCOPED && o.entry === "(") return true;
23
44
  return false;
24
45
  }
@@ -30,7 +51,7 @@ var codecolor = function (c, encode) {
30
51
  }
31
52
  var [name] = keys;
32
53
  if (/^[\<\?]/.test(name) || !name);
33
- else if (!o.isprop && isConstValue(name)) name = `<strap>${name}</strap>`;
54
+ else if (!o.isprop && o.text !== name && isConstValue(name)) name = `<strap>${name}</strap>`;
34
55
  else name = `<${label}>${name}</${label}>`;
35
56
  keys[0] = name;
36
57
  o.text = keys.map(k => /^[\<\?]/.test(k) || !k ? k : `<express>${k}</express>`).join(".");
@@ -113,7 +134,7 @@ var codecolor = function (c, encode) {
113
134
 
114
135
  break;
115
136
  case EXPRESS:
116
- setExpress(o, o.istype ? 'predef' : 'express');
137
+ setExpress(o, o.istype || o.isdef || o.next?.needle ? 'predef' : 'express');
117
138
  break;
118
139
  case STRAP:
119
140
  if (control_reg?.test(text)) o.text = `<flow>${o.text}</flow>`;
@@ -11,6 +11,7 @@
11
11
  font-family: Consolas, "Courier New", monospace;
12
12
  vertical-align: top;
13
13
  text-decoration-line: none;
14
+ tab-size: 4;
14
15
  }
15
16
 
16
17
  stamp {
@@ -124,7 +125,11 @@
124
125
  "step", "smoothstep",
125
126
  "mix", "clamp"
126
127
  );
127
- var struct_reg = /^(while|do|for|with|switch|case|default|if|else|try|catch|finally)$/;
128
+ var rust = new compile$Javascript;
129
+ rust.powermap = Object.assign({}, rust.powermap);
130
+ rust.powermap["->"] = 0;
131
+ rust.straps = ["let", 'use', 'mut', 'fn', 'if', 'else', 'loop', 'while', 'for', 'in', 'break', 'true', 'false', 'struct', 'enum', 'impl', 'self', 'match', 'pub', 'mod', 'trait'];
132
+ var struct_reg = /^(while|do|for|with|switch|case|default|if|else|try|catch|finally|loop|import|export)$/;
128
133
 
129
134
  gl.setType = function (o) {
130
135
  var { type } = o;
@@ -160,6 +165,11 @@
160
165
  codecolor(c, encode);
161
166
  return c.toString();
162
167
  },
168
+ rs(a) {
169
+ var c = compile$scanner2(a, rust);
170
+ codecolor(c, encode);
171
+ return c.toString();
172
+ },
163
173
  glsl(a) {
164
174
  var c = compile$scanner2(a, gl);
165
175
  codecolor(c, encode);
@@ -200,7 +210,7 @@
200
210
  };
201
211
  codesupports.gl = codesupports.glsl;
202
212
  codesupports.cmd = codesupports.bat;
203
- codesupports.jsx = codesupports.js = codesupports.javascript;
213
+ codesupports.cjs = codesupports.mjs = codesupports.jsx = codesupports.js = codesupports.javascript;
204
214
  codesupports.tsx = codesupports.ts = codesupports.typescript;
205
215
  codesupports.jsp = codesupports.asp = codesupports.php = codesupports.xml = codesupports.html;
206
216
  var { SCOPED, QUOTED, SPACE, STRAP, EXPRESS, PROPERTY } = compile$common;
@@ -1,3 +1,3 @@
1
1
  return {
2
- url:'http://webst04.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}'
2
+ url:'http://webst0{1-4}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}'
3
3
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "4.10.1",
3
+ "version": "4.10.2",
4
4
  "description": "简化前端开发,优化web性能",
5
5
  "main": "public/efront.js",
6
6
  "directories": {