efront 4.0.6 → 4.0.7

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.
@@ -188,7 +188,7 @@ assert(downLevel(`function (a,...,c){}`), `function (a, c) { c = arguments["leng
188
188
  assert(downLevel(`(...a) => k`), `var slice_ = Array["prototype"]["slice"];\r\nfunction () { var a = slice_["call"](arguments, 0); return k }`)
189
189
  assert(downLevel(`for await(o of os) noSymbol`), `return async_(
190
190
  function () {
191
- _3 = Symbol["asyncIterator"]; _2 = os[_3]; if (_2) return [1, 0]; _3 = Symbol["iterator"]; _2 = os[_3]; if (_2) return [1, 0]; _3 = Symbol["iterator"]; _2 = Array["prototype"][_3]
191
+ _2 = Symbol["asyncIterator"]; _2 = os[_2]; if (_2) return [1, 0]; _2 = Symbol["iterator"]; _2 = os[_2]; if (_2) return [1, 0]; _2 = Symbol["iterator"]; _2 = Array["prototype"][_2]
192
192
  },
193
193
  function () {
194
194
  _0 = _2; _2 = _0["call"](os); _0 = _2; _2 = _0["next"](); return [_2, 1]
@@ -197,15 +197,15 @@ function (_1) {
197
197
  _2 = _1; _ = _2; return [1, 0]
198
198
  },
199
199
  function () {
200
- _2 = !_["done"]; if (!_2) return [1, 0]; _3 = _["value"]; o = _3; _2 = (true)
200
+ _2 = !_["done"]; if (!_2) return [1, 0]; o = _["value"]; _2 = (true)
201
201
  },
202
202
  function () {
203
203
  if (!_2) return [1, 0]; noSymbol; _2 = _0["next"](); _ = _2; return [-1, 0]
204
204
  })
205
- var _, _0, _2, _3`)
205
+ var _, _0, _2`)
206
206
  assert(downLevel(`for await(var [o,s] of os) noSymbol`), `return async_(
207
207
  function () {
208
- o; s; _4 = Symbol["asyncIterator"]; _3 = os[_4]; if (_3) return [1, 0]; _4 = Symbol["iterator"]; _3 = os[_4]; if (_3) return [1, 0]; _4 = Symbol["iterator"]; _3 = Array["prototype"][_4]
208
+ o; s; _3 = Symbol["asyncIterator"]; _3 = os[_3]; if (_3) return [1, 0]; _3 = Symbol["iterator"]; _3 = os[_3]; if (_3) return [1, 0]; _3 = Symbol["iterator"]; _3 = Array["prototype"][_3]
209
209
  },
210
210
  function () {
211
211
  _0 = _3; _3 = _0["call"](os); _0 = _3; _3 = _0["next"](); return [_3, 1]
@@ -214,12 +214,12 @@ function (_2) {
214
214
  _3 = _2; _ = _3; return [1, 0]
215
215
  },
216
216
  function () {
217
- _3 = !_["done"]; if (!_3) return [1, 0]; _4 = _["value"]; _1 = _4; _5 = _1[0]; o = _5; _6 = _1[1]; s = _6; _3 = (true)
217
+ _3 = !_["done"]; if (!_3) return [1, 0]; _1 = _["value"]; o = _1[0]; s = _1[1]; _3 = (true)
218
218
  },
219
219
  function () {
220
220
  if (!_3) return [1, 0]; noSymbol; _3 = _0["next"](); _ = _3; return [-1, 0]
221
221
  })
222
- var o, s, _, _0, _1, _3, _4, _5, _6`)
222
+ var o, s, _, _0, _1, _3`)
223
223
  assert(downLevel(`for(o of os) noSymbol`), `for (_ = 0, _0 = os["length"]; _ < _0 && (o = os[_], true); _++) noSymbol\r\nvar _, _0`)
224
224
  assert(downLevel(`for(var o of os) Symbol`), `for (var o, _0 = os[Symbol["iterator"]] || os[Symbol["asyncIterator"]] || Array["prototype"][Symbol["iterator"]], _0 = _0["call"](os), _ = _0["next"](); !_["done"] && (o = _["value"], true); _ = _0["next"]()) Symbol\r\nvar _, _0`)
225
225
  assert(downLevel(`for(var o of os) Symbol`), `for (var o, _0 = os[Symbol["iterator"]] || os[Symbol["asyncIterator"]] || Array["prototype"][Symbol["iterator"]], _0 = _0["call"](os), _ = _0["next"](); !_["done"] && (o = _["value"], true); _ = _0["next"]()) Symbol\r\nvar _, _0`)
@@ -245,7 +245,7 @@ function () {
245
245
  _; _0 = 0; _3 = a["length"]; _1 = _3; return [1, 0]
246
246
  },
247
247
  function () {
248
- _3 = _0 < _1; if (!_3) return [1, 0]; _4 = a[_0]; _ = _4; _3 = (true)
248
+ _3 = _0 < _1; if (!_3) return [1, 0]; _ = a[_0]; _3 = (true)
249
249
  },
250
250
  function () {
251
251
  if (!_3) return [2, 0]; return [_, 3]
@@ -253,22 +253,22 @@ if (!_3) return [2, 0]; return [_, 3]
253
253
  function () {
254
254
  _3 = _0++; return [-2, 0]
255
255
  })
256
- var _, _0, _1, _3, _4 }`)
256
+ var _, _0, _1, _3 }`)
257
257
  assert(downLevel(`async function(){}`), `function () { return async_() }`)
258
258
  assert(downLevel(`async function(){for(var a of b){Symbol}}`), `function () { return async_(
259
259
  function () {
260
- a; _3 = Symbol["iterator"]; _2 = b[_3]; if (_2) return [1, 0]; _3 = Symbol["asyncIterator"]; _2 = b[_3]; if (_2) return [1, 0]; _3 = Symbol["iterator"]; _2 = Array["prototype"][_3]
260
+ a; _2 = Symbol["iterator"]; _2 = b[_2]; if (_2) return [1, 0]; _2 = Symbol["asyncIterator"]; _2 = b[_2]; if (_2) return [1, 0]; _2 = Symbol["iterator"]; _2 = Array["prototype"][_2]
261
261
  },
262
262
  function () {
263
263
  _0 = _2; _2 = _0["call"](b); _0 = _2; _2 = _0["next"](); _ = _2; return [1, 0]
264
264
  },
265
265
  function () {
266
- _2 = !_["done"]; if (!_2) return [1, 0]; _3 = _["value"]; a = _3; _2 = (true)
266
+ _2 = !_["done"]; if (!_2) return [1, 0]; a = _["value"]; _2 = (true)
267
267
  },
268
268
  function () {
269
269
  if (!_2) return [1, 0]; Symbol; _2 = _0["next"](); _ = _2; return [-1, 0]
270
270
  })
271
- var a, _, _0, _2, _3 }`)
271
+ var a, _, _0, _2 }`)
272
272
  assert(downLevel(`a={async a(){var b =c;return 1}}`), `a = (_ = {},
273
273
  _.a = function () { return async_(\r\nfunction () {\r\nb = c; return [1, 2]\r\n})\r\nvar b }, _)\r\nvar _`)
274
274
  assert(downLevel(`async function(){return 1}`), `function () { return async_(\r\nfunction () {\r\nreturn [1, 2]\r\n}) }`)
@@ -466,6 +466,19 @@ var _invoke = function (t, getname) {
466
466
  var _nameindex = nameindex;
467
467
  remove_end_comma(o);
468
468
  var iseval = isEvalScope(o);
469
+ var constStart = 0;
470
+ if (!iseval) {
471
+ for (var cy = 0; cy < o.length; cy++) {
472
+ while (cy < o.length && o[cy].type & (SPACE | COMMENT)) cy++;
473
+ var ay = cy;
474
+ cy = skipAssignment(o, cy);
475
+ var m = o[ay];
476
+ if (cy === ay + 1 && (m.type === EXPRESS && !/[\.\[]/.test(m.text) || m.type === VALUE || m.type === QUOTED && !m.length)) {
477
+ continue;
478
+ }
479
+ constStart = cy + 1;
480
+ }
481
+ }
469
482
  for (var cy = 0; cy < o.length; cy++) {
470
483
  var by = cy;
471
484
  while (cy < o.length && o[cy].type & (SPACE | COMMENT)) cy++;
@@ -474,16 +487,17 @@ var _invoke = function (t, getname) {
474
487
  var ey = cy;
475
488
  if (ay === ey || ay >= o.length) continue;
476
489
  var m = o.slice(ay, ey);
477
- if (m.length === 1 && (m[0].type === EXPRESS && !/[\.\[]/.test(m[0].text) || m[0].type === VALUE || m[0].type === QUOTED && !m[0].length)) {
490
+ 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)) {
478
491
  continue;
479
492
  }
480
- var q = toqueue(m, getdeepname, true);
481
- var qe = q[q.length - 1];
482
493
  if (!iseval || m[m.length - 1] === o.last) {
494
+ var q = toqueue(m, getdeepname, 1);
495
+ var qe = q[q.length - 1];
483
496
  splice(o, by, ey - by, { text: qe.name, type: EXPRESS });
484
497
  cy = by + 1;
485
498
  }
486
499
  else {
500
+ var q = toqueue(m, getdeepname, false);
487
501
  while (cy < o.length && o[cy].type & (SPACE | COMMENT)) cy++;
488
502
  var c = o[cy];
489
503
  if (c && c.type & STAMP && /^[,;]$/.test(c.text)) cy++;
@@ -618,6 +632,12 @@ var ternary = function (body, getname, ret) {
618
632
  if (!ret && equcount === 1 && canbeOnce(bd)) {
619
633
  res = [bd];
620
634
  }
635
+ else if (ret === 1 && !equcount && canbeOnce(bd)) {
636
+ var name = getname(0);
637
+ var r = [{ type: EXPRESS, text: name }, { type: STAMP, text: '=' }, ...bd]
638
+ r.name = name;
639
+ res = [r];
640
+ }
621
641
  else {
622
642
  res = _express(bd, getname, equalsend > skip || ret);
623
643
  }
@@ -57,7 +57,7 @@ test("if(await a) await b", "_ = a; return [_, 1];\r\n if (!@) return [2, 0]; _
57
57
  test("for(a in b)", "for (a in b)", true);
58
58
  test("for(var a in b) a.push()", "for (var a in b) a.push()", true);
59
59
  test("for(;;)", "return [0, 0]", true);
60
- test("for(a = os[Symbol.iterator] || os[Symbol.asyncIterator] || Array.prototype[Symbol.iterator], a = a.call(os), b = a.next(); !b.done && (o = b.value, true); b = a.next())", "_ = Symbol.iterator; _ = os[_]; if (_) return [1, 0]; _ = Symbol.asyncIterator; _ = os[_]; if (_) return [1, 0]; _ = Symbol.iterator; _ = Array.prototype[_];\r\n a = _; _ = a.call(os); a = _; _ = a.next(); b = _; return [1, 0];\r\n _ = !b.done; if (!_) return [1, 0]; _ = b.value; o = _; _ = (true);\r\n if (!_) return [1, 0]; _ = a.next(); b = _; return [-1, 0]", true);
60
+ test("for(a = os[Symbol.iterator] || os[Symbol.asyncIterator] || Array.prototype[Symbol.iterator], a = a.call(os), b = a.next(); !b.done && (o = b.value, true); b = a.next())", "_ = Symbol.iterator; _ = os[_]; if (_) return [1, 0]; _ = Symbol.asyncIterator; _ = os[_]; if (_) return [1, 0]; _ = Symbol.iterator; _ = Array.prototype[_];\r\n a = _; _ = a.call(os); a = _; _ = a.next(); b = _; return [1, 0];\r\n _ = !b.done; if (!_) return [1, 0]; o = b.value; _ = (true);\r\n if (!_) return [1, 0]; _ = a.next(); b = _; return [-1, 0]", true);
61
61
  test("for(a=0;a<1;a++)if(a==0)continue\r\n else a=1", `a = 0; return [1, 0];\r\n _ = a < 1; if (!_) return [3, 0]; _ = a == 0; if (_) return [2, 0]; return [1, 0];\r\n a = 1; return [1, 0];\r\n _ = a++; return [-2, 0]`, true);
62
62
  test("for(a=0;a<1;a++)if(a==0){continue} else {a=1}", `a = 0; return [1, 0];\r\n _ = a < 1; if (!_) return [3, 0]; _ = a == 0; if (!_) return [1, 0]; return [2, 0];\r\n a = 1; return [1, 0];\r\n _ = a++; return [-2, 0]`, true);
63
63
  test("for(a=0;a<1;a++){if(a==0){a=2;continue} else if(b) {a=1;continue} c=3}", `a = 0; return [1, 0];\r\n _ = a < 1; if (!_) return [4, 0]; _ = a == 0; if (!_) return [1, 0]; a = 2; return [3, 0];\r\n if (!b) return [1, 0]; a = 1; return [2, 0];\r\n c = 3; return [1, 0];\r\n _ = a++; return [-3, 0]`, true);
@@ -93,4 +93,5 @@ test(`a=a+b*c+c*d`, `_ = b * c, _ = a + _, _0 = c * d, _ = _ + _0; a = _`, true)
93
93
  test(`cc.name += "<f test></f>"`, `_ = cc.name + "<f test></f>"; cc.name = _`, true);
94
94
  test("yield a", 'return [a, 3]', true);
95
95
  test("throw a", 'throw a', true);
96
- test("debugger", 'debugger', true);
96
+ test("debugger", 'debugger', true);
97
+ test("a(b,b+=1)", '_ = b; _0 = b + 1; b = _0; a(_, _0)', true);
@@ -8,4 +8,4 @@
8
8
 
9
9
  3.x版本 `efront`拥有自建的语法解析器,不再依赖`esprima`、`esmangle`、`escodegen`,自我编译耗时由原来的10分钟github工作流,逐步减少到2分钟左右。
10
10
 
11
- 4.0版本 不再依赖`typescipt`(近17万行源码)
11
+ 4.0版本 不再依赖`typescipt`(近17万行源码),编译速度再次提升4倍,占用内存减少到原来的1/8,github上自我编译时间也减少到15秒左右。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "4.0.6",
3
+ "version": "4.0.7",
4
4
  "description": "简化前端开发,优化web性能",
5
5
  "main": "public/efront.js",
6
6
  "directories": {