efront 4.15.3 → 4.16.0

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,10 +1,175 @@
1
1
  var notMatchLength = new Error("矩阵长度不一致");
2
+
3
+ function matrix2d(theta) {
4
+ var cosa = Math.cos(theta);
5
+ var sina = Math.sin(theta);
6
+ return new Matrix(
7
+ cosa, sina, 0,
8
+ -sina, cosa, 0,
9
+ 0, 0, 1
10
+ );
11
+ }
12
+
13
+ function matrix3d(factor) {
14
+ var n = norm(factor.slice(0, 3));
15
+ var theta = factor.length === 4 ? factor[3] : n;
16
+ var vec = times(factor, 1 / n);
17
+ var cosa = Math.cos(theta);
18
+ var sina = Math.sin(theta);
19
+ var vera = 1 - cosa;
20
+ var [x_u, y_u, z_u] = !n ? [0, 0, 1] : vec;
21
+ return new Matrix(
22
+ cosa + x_u * x_u * vera, x_u * y_u * vera - z_u * sina, x_u * z_u * vera + y_u * sina, 0,
23
+ x_u * y_u * vera + z_u * sina, cosa + y_u * y_u * vera, y_u * z_u * vera - x_u * sina, 0,
24
+ x_u * z_u * vera - y_u * sina, y_u * z_u * vera + x_u * sina, cosa + z_u * z_u * vera, 0,
25
+ 0, 0, 0, 1
26
+ );
27
+ }
28
+
29
+ function transform(B, dots) {
30
+ var dimention = Math.sqrt(B.length - 1) | 0;
31
+ if (dots.length % dimention !== 0) throw notMatchLength;
32
+ if (dots === B) B = B.slice(0);
33
+ var ds = dots.slice(0);
34
+ var dim2 = B.length % dimention !== 0 ? dimention + 1 : dimention;
35
+ for (var cx = 0, dx = dots.length; cx < dx; cx += dimention) {
36
+ for (var cy = 0, dy = dimention; cy < dy; cy++) {
37
+ var sum = 0;
38
+ for (var ct = 0, dt = dimention; ct < dt; ct++) {
39
+ sum += ds[cx + ct] * B[ct * dim2 + cy];
40
+ }
41
+ sum += B[dimention * dim2 + cy];
42
+ dots[cx + cy] = sum;
43
+ }
44
+ }
45
+ return dots;
46
+ }
47
+
48
+ function translate(A, delta) {
49
+ var [dim2, dim] = size(A);
50
+ var inc = 0;
51
+ for (var cx = dim * dim2, dx = cx + dim; cx < dx; cx++) {
52
+ A[cx] = (A[cx] || 0) + delta[inc++];
53
+ }
54
+ return A;
55
+ }
56
+
57
+ function 逆(A) {
58
+ var dim = Math.sqrt(A.length) | 0;
59
+ if (dim * dim !== A.length) throw notMatchLength;
60
+ var E = new Array(A.length).fill(0);
61
+ for (var cx = 0, dx = dim; cx < dx; cx++)E[cx * dim + cx] = 1;
62
+ var X = A.splice(0, A.length);
63
+ A.push.apply(A, E);
64
+ for (var cx = 0, dx = dim; cx < dx; cx++) {
65
+ var start = cx * dim + cx;
66
+ var max_ct, v = 0;
67
+ for (var ct = start, dt = X.length; ct < dt; ct += dim) {
68
+ var v0 = Math.abs(X[ct]);
69
+ if (v0 > v) {
70
+ max_ct = ct;
71
+ v = v0;
72
+ }
73
+ }
74
+ ct = max_ct;
75
+ if (ct !== start) {
76
+ var delta = ct - start;
77
+ var ratio = (1 - X[start]) / X[ct];
78
+ for (var cy = cx * dim, dy = cy + dim; cy < dy; cy++) {
79
+ X[cy] += X[cy + delta] * ratio;
80
+ A[cy] += A[cy + delta] * ratio;
81
+ }
82
+ }
83
+ if (X[start] !== 1) {
84
+ var ratio = 1 / X[start];
85
+ for (var cy = cx * dim, dy = cy + dim; cy < dy; cy++) {
86
+ X[cy] *= ratio;
87
+ A[cy] *= ratio;
88
+ }
89
+ }
90
+ for (var ct = start + dim, dt = X.length; ct < dt; ct += dim) {
91
+ if (X[ct] === 0) continue;
92
+ var ratio = -X[ct];
93
+ var delta = start - ct;
94
+ for (var cy = ct - cx, dy = cy + dim; cy < dy; cy++) {
95
+ X[cy] += X[cy + delta] * ratio;
96
+ A[cy] += A[cy + delta] * ratio;
97
+ }
98
+ }
99
+ }
100
+ for (var cx = dim - 1; cx > 0; cx--) {
101
+ var start = cx * dim + cx;
102
+ for (var ct = start - dim; ct >= 0; ct -= dim) {
103
+ if (X[ct] === 0) continue;
104
+ var ratio = -X[ct];
105
+ var delta = start - ct;
106
+ for (var cy = ct - cx, dy = cy + dim; cy < dy; cy++) {
107
+ X[cy] += X[cy + delta] * ratio;
108
+ A[cy] += A[cy + delta] * ratio;
109
+ }
110
+ }
111
+ }
112
+ return A;
113
+ };
114
+
115
+ function multiply(A, B) {
116
+ if (A.length !== B.length) throw notMatchLength;
117
+ var dim = Math.sqrt(A.length) | 0;
118
+ if (dim * dim !== A.length) throw notMatchLength;
119
+ var X = A.slice(0);
120
+ for (var cx = 0, dx = A.length; cx < dx; cx += dim) {
121
+ for (var cy = 0, dy = dim; cy < dy; cy++) {
122
+ var sum = 0;
123
+ for (var ct = 0, dt = dim; ct < dt; ct++) {
124
+ sum += X[cx + ct] * B[ct * dim + cy];
125
+ }
126
+ A[cx + cy] = sum;
127
+ }
128
+ }
129
+ return A;
130
+ }
131
+
132
+ function resolve(A, s) {
133
+ var dim = s.length;
134
+ if (dim * dim !== A.length) throw notMatchLength;
135
+ var r = [];
136
+ for (var cx = 0, cy = 0, dx = dim; cx < dx; cx++) {
137
+ var sum = 0;
138
+ for (var dy = cy + dim; cy < dy; cy++) {
139
+ sum += A[dy] * s[cx];
140
+ }
141
+ r[cx] = sum;
142
+ }
143
+ return r;
144
+ }
145
+
146
+ function transpose(A) {
147
+ var [size] = size(A);
148
+ for (var cx = 0, dx = size; cx < dx; cx++) {
149
+ for (var cy = cx + 1, dy = dx; cy < dy; cy++) {
150
+ var i = cx * size + cy;
151
+ var j = cy * size + cx;
152
+ var tmp = A[i];
153
+ A[i] = A[j];
154
+ A[j] = tmp;
155
+ }
156
+ }
157
+ return A;
158
+ }
159
+
2
160
  class Matrix extends Array {
161
+ static multiply = multiply;
162
+ static transform = transform;
163
+ static translate = translate;
164
+ static matrix2d = matrix2d;
165
+ static matrix3d = matrix3d;
166
+ static resolve = resolve;
167
+ static 逆 = 逆;
3
168
  static create2d(theta = 0) {
4
- return MathMatrix.matrix2d(theta);
169
+ return matrix2d(theta);
5
170
  }
6
171
  static create3d(factor = [0, 0, 0]) {
7
- return MathMatrix.matrix3d(factor);
172
+ return matrix3d(factor);
8
173
  }
9
174
  size() {
10
175
  return size(this);
@@ -18,41 +183,21 @@ class Matrix extends Array {
18
183
  return this._invert = this.slice().inverse();
19
184
  }
20
185
  transpose() {
21
- if (this.constructor === MathMatrix) {
22
- var m = new MatrixTransposed;
23
- }
24
- else {
25
- var m = new MathMatrix;
26
- }
27
- m.push.apply(m, this);
28
- m.transpose_();
29
- return m;
30
- }
31
- transpose_() {
32
- var [size] = this.size();
33
- for (var cx = 0, dx = size; cx < dx; cx++) {
34
- for (var cy = cx + 1, dy = dx; cy < dy; cy++) {
35
- var i = cx * size + cy;
36
- var j = cy * size + cx;
37
- var tmp = this[i];
38
- this[i] = this[j];
39
- this[j] = tmp;
40
- }
41
- }
42
- return this;
186
+ this.dirty();
187
+ return transpose(this);
43
188
  }
44
189
  inverse() {
45
190
  this.dirty();
46
- return this.constructor.逆(this);
191
+ return (this);
47
192
  }
48
193
  rotate(factor, center) {
49
194
  this.dirty();
50
195
  if (center) this.translate(center.map(负));
51
196
  if (factor.length) {
52
- this.multiply(this.constructor.matrix3d(factor));
197
+ this.multiply(matrix3d(factor));
53
198
  }
54
199
  else {
55
- this.multiply(this.constructor.matrix2d(factor));
200
+ this.multiply(matrix2d(factor));
56
201
  }
57
202
  if (center) this.translate(center);
58
203
  return this;
@@ -61,7 +206,7 @@ class Matrix extends Array {
61
206
  var v = vector;
62
207
  if (!isFinite(v.length)) v = arguments;
63
208
  this.dirty();
64
- return this.constructor.translate(this, v);
209
+ return translate(this, v);
65
210
  }
66
211
  scale(ratio, center) {
67
212
  this.dirty();
@@ -73,298 +218,27 @@ class Matrix extends Array {
73
218
  }
74
219
  multiply(a) {
75
220
  this.dirty();
76
- return this.constructor.multiply(this, a);
221
+ return multiply(this, a);
77
222
  }
78
223
  transform(dots) {
79
- if (dots instanceof Array) return this.constructor.transform(this, dots);
224
+ if (dots instanceof Array) return transform(this, dots);
80
225
  if (arguments.length > 1) {
81
226
  var a = Array.prototype.slice.apply(arguments, 0);
82
- return this.constructor.transform(this, a);
227
+ return transform(this, a);
83
228
  }
84
229
  return dots;
85
230
  }
86
- }
87
- class MathMatrix extends Matrix {
88
- getTransform() {
89
- return [this[0], this[1], this[3], this[4], this[6], this[7]];
231
+ resolve(s) {
232
+ var A = this.slice().inverse();
233
+ return resolve(A, s);
90
234
  }
91
235
  toDOMString() {
92
- if (this.size()[1] === 2) return `matrix(${this.getTransform()})`;
236
+ if (this.size()[1] === 2) return `matrix(${[this[0], this[1], this[3], this[4], this[6], this[7]]})`;
93
237
  return `matrix(${this})`;
94
238
  }
95
-
96
- static transform(B, dots) {
97
- var dimention = Math.sqrt(B.length - 1) | 0;
98
- if (dots.length % dimention !== 0) throw notMatchLength;
99
- if (dots === B) B = B.slice(0);
100
- var ds = dots.slice(0);
101
- var dim2 = B.length % dimention !== 0 ? dimention + 1 : dimention;
102
- for (var cx = 0, dx = dots.length; cx < dx; cx += dimention) {
103
- for (var cy = 0, dy = dimention; cy < dy; cy++) {
104
- var sum = 0;
105
- for (var ct = 0, dt = dimention; ct < dt; ct++) {
106
- sum += ds[cx + ct] * B[ct * dim2 + cy];
107
- }
108
- sum += B[dimention * dim2 + cy];
109
- dots[cx + cy] = sum;
110
- }
111
- }
112
- return dots;
113
- };
114
-
115
-
116
- static translate(A, delta) {
117
- var [dim2, dim] = size(A);
118
- var inc = 0;
119
- for (var cx = dim * dim2, dx = cx + dim; cx < dx; cx++) {
120
- A[cx] = (A[cx] || 0) + delta[inc++];
121
- }
122
- return A;
123
- }
124
-
125
- static multiply(A, B) {
126
- if (A.length !== B.length) throw notMatchLength;
127
- var dim = Math.sqrt(A.length) | 0;
128
- if (dim * dim !== A.length) throw notMatchLength;
129
- var X = A.slice(0);
130
- for (var cx = 0, dx = A.length; cx < dx; cx += dim) {
131
- for (var cy = 0, dy = dim; cy < dy; cy++) {
132
- var sum = 0;
133
- for (var ct = 0, dt = dim; ct < dt; ct++) {
134
- sum += X[cx + ct] * B[ct * dim + cy];
135
- }
136
- A[cx + cy] = sum;
137
- }
138
- }
139
- return A;
140
- }
141
-
142
-
143
- static matrix2d(theta) {
144
- var cosa = Math.cos(theta);
145
- var sina = Math.sin(theta);
146
- return new MathMatrix(
147
- cosa, sina, 0,
148
- -sina, cosa, 0,
149
- 0, 0, 1
150
- );
151
- };
152
-
153
- static matrix3d(factor) {
154
- var n = norm(factor.slice(0, 3));
155
- var theta = factor.length === 4 ? factor[3] : n;
156
- var vec = times(factor, 1 / n);
157
- var cosa = Math.cos(theta);
158
- var sina = Math.sin(theta);
159
- var vera = 1 - cosa;
160
- var [x_u, y_u, z_u] = !n ? [0, 0, 1] : vec;
161
- return new MathMatrix(
162
- cosa + x_u * x_u * vera, x_u * y_u * vera - z_u * sina, x_u * z_u * vera + y_u * sina, 0,
163
- x_u * y_u * vera + z_u * sina, cosa + y_u * y_u * vera, y_u * z_u * vera - x_u * sina, 0,
164
- x_u * z_u * vera - y_u * sina, y_u * z_u * vera + x_u * sina, cosa + z_u * z_u * vera, 0,
165
- 0, 0, 0, 1
166
- );
167
- }
168
-
169
- static 逆 = function (A) {
170
- var dim = Math.sqrt(A.length) | 0;
171
- if (dim * dim !== A.length) throw notMatchLength;
172
- var E = new Array(A.length).fill(0);
173
- for (var cx = 0, dx = dim; cx < dx; cx++)E[cx * dim + cx] = 1;
174
- var X = A.splice(0, A.length);
175
- A.push.apply(A, E);
176
- for (var cx = 0, dx = dim; cx < dx; cx++) {
177
- var start = cx * dim + cx;
178
- var max_ct, v = 0;
179
- for (var ct = start, dt = X.length; ct < dt; ct += dim) {
180
- var v0 = Math.abs(X[ct]);
181
- if (v0 > v) {
182
- max_ct = ct;
183
- v = v0;
184
- }
185
- }
186
- ct = max_ct;
187
- if (ct !== start) {
188
- var delta = ct - start;
189
- var ratio = (1 - X[start]) / X[ct];
190
- for (var cy = cx * dim, dy = cy + dim; cy < dy; cy++) {
191
- X[cy] += X[cy + delta] * ratio;
192
- A[cy] += A[cy + delta] * ratio;
193
- }
194
- }
195
- if (X[start] !== 1) {
196
- var ratio = 1 / X[start];
197
- for (var cy = cx * dim, dy = cy + dim; cy < dy; cy++) {
198
- X[cy] *= ratio;
199
- A[cy] *= ratio;
200
- }
201
- }
202
- for (var ct = start + dim, dt = X.length; ct < dt; ct += dim) {
203
- if (X[ct] === 0) continue;
204
- var ratio = -X[ct];
205
- var delta = start - ct;
206
- for (var cy = ct - cx, dy = cy + dim; cy < dy; cy++) {
207
- X[cy] += X[cy + delta] * ratio;
208
- A[cy] += A[cy + delta] * ratio;
209
- }
210
- }
211
- }
212
- for (var cx = dim - 1; cx > 0; cx--) {
213
- var start = cx * dim + cx;
214
- for (var ct = start - dim; ct >= 0; ct -= dim) {
215
- if (X[ct] === 0) continue;
216
- var ratio = -X[ct];
217
- var delta = start - ct;
218
- for (var cy = ct - cx, dy = cy + dim; cy < dy; cy++) {
219
- X[cy] += X[cy + delta] * ratio;
220
- A[cy] += A[cy + delta] * ratio;
221
- }
222
- }
223
- }
224
- return A;
225
- };
226
-
227
239
  }
228
- class MatrixTransposed extends Matrix {
229
- getTransform() {
230
- return [this[0], this[3], this[1], this[4], this[2], this[5]];
231
- }
232
- toDOMString() {
233
- if (this.size()[1] === 2) return `matrix(${this.getTransform()})`;
234
- return `matrix(${this.transpose()})`;
235
- }
236
- static transform(B, dots) {
237
- var dimention = Math.sqrt(B.length - 1) | 0;
238
- if (dots.length % dimention !== 0) throw notMatchLength;
239
- if (dots === B) B = B.slice(0);
240
- var ds = dots.slice(0);
241
- var dim2 = B.length % dimention !== 0 ? dimention + 1 : dimention;
242
- for (var cx = 0, dx = dots.length; cx < dx; cx += dimention) {
243
- for (var cy = 0, dy = dimention; cy < dy; cy++) {
244
- var sum = 0;
245
- var start = dim2 * cy;
246
- for (var ct = 0, dt = dimention; ct < dt; ct++) {
247
- sum += ds[cx + ct] * B[start + ct];
248
- }
249
- sum += B[start + dimention];
250
- dots[cx + cy] = sum;
251
- }
252
- }
253
- return dots;
254
- };
255
-
256
- static translate(A, delta) {
257
- var [dim2, dim] = size(A);
258
- var inc = 0;
259
- for (var cx = dim, dx = dim * dim2; cx < dx; cx += dim2) {
260
- A[cx] = (A[cx] || 0) + delta[inc++];
261
- }
262
- return A;
263
- }
264
-
265
- static multiply(A, B) {
266
- if (A.length !== B.length) throw notMatchLength;
267
- var dim = Math.sqrt(A.length) | 0;
268
- if (dim * dim !== A.length) throw notMatchLength;
269
- var X = A.slice(0);
270
- for (var cx = 0, dx = A.length; cx < dx; cx += dim) {
271
- for (var cy = 0, dy = dim; cy < dy; cy++) {
272
- var sum = 0;
273
- for (var ct = 0, dt = dim; ct < dt; ct++) {
274
- sum += B[cx + ct] * X[ct * dim + cy];
275
- }
276
- A[cx + cy] = sum;
277
- }
278
- }
279
- return A;
280
- }
281
240
 
282
- static matrix2d(theta) {
283
- var cosa = Math.cos(theta);
284
- var sina = Math.sin(theta);
285
- return new MatrixTransposed(
286
- cosa, -sina, 0,
287
- sina, cosa, 0,
288
- 0, 0, 1
289
- );
290
- }
291
-
292
- static matrix3d(factor) {
293
- var n = norm(factor.slice(0, 3));
294
- var theta = factor.length === 4 ? factor[3] : n;
295
- var vec = times(factor, 1 / n);
296
- var cosa = Math.cos(theta);
297
- var sina = Math.sin(theta);
298
- var vera = 1 - cosa;
299
- var [x_u, y_u, z_u] = !n ? [0, 0, 1] : vec;
300
- return new MatrixTransposed(
301
- cosa + x_u * x_u * vera, x_u * y_u * vera + z_u * sina, x_u * z_u * vera - y_u * sina, 0,
302
- x_u * y_u * vera - z_u * sina, cosa + y_u * y_u * vera, y_u * z_u * vera + x_u * sina, 0,
303
- x_u * z_u * vera + y_u * sina, y_u * z_u * vera - x_u * sina, cosa + z_u * z_u * vera, 0,
304
- 0, 0, 0, 1
305
- );
306
- }
307
- static 逆 = function (A) {
308
- var dim = Math.sqrt(A.length) | 0;
309
- if (dim * dim !== A.length) throw notMatchLength;
310
- var E = new Array(A.length).fill(0);
311
- for (var cx = 0, dx = dim; cx < dx; cx++)E[cx * dim + cx] = 1;
312
- var X = A.splice(0, A.length);
313
- A.push.apply(A, E);
314
- for (var cx = 0, dx = dim; cx < dx; cx++) {
315
- var start = cx * dim + cx;
316
- var max_ct, v = 0;
317
- for (var ct = start, dt = cx * dim + dim; ct < dt; ct++) {
318
- var v0 = Math.abs(X[ct]);
319
- if (v0 > v) {
320
- max_ct = ct;
321
- v = v0;
322
- }
323
- }
324
- ct = max_ct;
325
- if (ct !== start) {
326
- var delta = ct - start;
327
- var ratio = (1 - X[start]) / X[ct];
328
- for (var cy = cx, dy = X.length; cy < dy; cy += dim) {
329
- X[cy] += X[cy + delta] * ratio;
330
- A[cy] += A[cy + delta] * ratio;
331
- }
332
- }
333
- if (X[start] !== 1) {
334
- var ratio = 1 / X[start];
335
- for (var cy = cx, dy = X.length; cy < dy; cy += dim) {
336
- X[cy] *= ratio;
337
- A[cy] *= ratio;
338
- }
339
- }
340
- for (var ct = start + 1, dt = start + dim - cx; ct < dt; ct++) {
341
- if (X[ct] === 0) continue;
342
- var ratio = -X[ct];
343
- var delta = start - ct;
344
- for (var cy = cx + ct - start, dy = X.length; cy < dy; cy += dim) {
345
- X[cy] += X[cy + delta] * ratio;
346
- A[cy] += A[cy + delta] * ratio;
347
- }
348
- }
349
- }
350
- for (var cx = dim - 1; cx >= 0; cx--) {
351
- var start = cx * dim + cx;
352
- for (var ct = start - 1, dt = start - cx; ct >= dt; ct--) {
353
- if (X[ct] === 0) continue;
354
- var ratio = -X[ct];
355
- var delta = start - ct;
356
- for (var cy = cx + ct - start, dy = X.length; cy < dy; cy += dim) {
357
- X[cy] += X[cy + delta] * ratio;
358
- A[cy] += A[cy + delta] * ratio;
359
- }
360
- }
361
- }
362
- return A;
363
- };
364
-
365
- }
366
- Matrix.MathMatrix = MathMatrix;
367
- Matrix.MatrixTransposed = MatrixTransposed;
241
+ Matrix.MathMatrix = Matrix;
368
242
 
369
243
 
370
244
  function inner(vec1, vec2) {
@@ -131,7 +131,7 @@ var scan = function (text) {
131
131
  }
132
132
 
133
133
  if (/^\-(\s|$)/.test(row)) {
134
- if (data || span && span >= spacesize) push();
134
+ if (data || span && span > spacesize) push();
135
135
  if (!parents[spacesize]) {
136
136
  var obj = [];
137
137
  push(obj);
@@ -77,4 +77,29 @@ c: d
77
77
  test(`"@"`, "@")
78
78
  test(`"\\"@\\""`, "\"@\"")
79
79
  test(`@""@""`, "@\"@\"")
80
- test(`""@""`, "\"@\"")
80
+ test(`""@""`, "\"@\"")
81
+ test(` qd:
82
+ - name: 京东超市
83
+ price: 1399.00
84
+ link: https://item.jd.com/100098881049.html
85
+ - name: 拼多多
86
+ price: 1298.99
87
+ link: "#小程序://拼多多/L2JQT2d8vpO0HWC"
88
+ - name: 阿里1688
89
+ price: 1203.25
90
+ link: https://detail.1688.com/offer/819427383878.html
91
+ `, {
92
+ qd: [
93
+ {
94
+ name: '京东超市',
95
+ price: 1399,
96
+ link: 'https://item.jd.com/100098881049.html'
97
+ },
98
+ { name: '拼多多', price: 1298.99, link: '#小程序://拼多多/L2JQT2d8vpO0HWC' },
99
+ {
100
+ name: '阿里1688',
101
+ price: 1203.25,
102
+ link: 'https://detail.1688.com/offer/819427383878.html'
103
+ }
104
+ ]
105
+ })
@@ -9,11 +9,13 @@ class AsyncGenerator {
9
9
  };
10
10
  throw(e) {
11
11
  delete this.exec;
12
+ delete this.promise;
12
13
  this.state = "closed";
13
14
  this.reject(e);
14
15
  }
15
16
  return(v) {
16
17
  delete this.exec;
18
+ delete this.promise;
17
19
  this.state = "closed";
18
20
  this.value = v;
19
21
  this.resolve(v);
@@ -36,8 +38,10 @@ class AsyncGenerator {
36
38
  return this.promise;
37
39
  }
38
40
  else if (this.promise) {
41
+ var promise = this.promise;
42
+ delete this.promise;
39
43
  var next = () => this.next(a);
40
- return this.promise.then(next, next);
44
+ return promise.then(next, next);
41
45
  }
42
46
  return Promise.resolve({ value: this.value, done: true });
43
47
  }
@@ -137,7 +137,6 @@ var setStrapExpress = function (mark_type, mark_text, prop, o, default_type) {
137
137
  if (pp && pp.type === STAMP && pp.text === "*") pp = pp.prev;
138
138
  isfunc = pp && pp.type === STRAP && pp.text === 'function';
139
139
  if (isfunc) break;
140
-
141
140
  q = q.queue;
142
141
  }
143
142
  if (isfunc) {
@@ -211,6 +210,16 @@ var fixType = function (o) {
211
210
  type = EXPRESS;
212
211
  }
213
212
  }
213
+ else if (m === 'of') {
214
+ if (!last) {
215
+ type = EXPRESS;
216
+ break;
217
+ }
218
+ var qp = queue.prev;
219
+ if (qp?.type === STRAP && qp.text === 'await') qp = qp.prev;
220
+ if (qp?.type === STRAP && qp.text === 'for') type = STRAP;
221
+ else type = EXPRESS;
222
+ }
214
223
  break;
215
224
  }
216
225
  if (type === PROPERTY) o.isprop = true;
@@ -259,11 +268,10 @@ var setObject = function (o) {
259
268
  continue;
260
269
  }
261
270
  m.isprop = true;
262
- if (m.type === EXPRESS || m.type === QUOTED) {
271
+ if (m.type === EXPRESS || m.type === STRAP) {
263
272
  if (!/\./.test(m.text)) m.type = PROPERTY;
264
273
  }
265
274
  if (m.prev && m.prev.type === PROPERTY) {
266
-
267
275
  m.prev.type = STRAP;
268
276
  }
269
277
  }
@@ -378,7 +386,11 @@ Javascript.prototype.setType = function (o) {
378
386
  }
379
387
  if (o.type === STRAP) switch (o.text) {
380
388
  case "yield": setYieldExpress(o, this.defaultType); break;
381
- case "await": setAwaitExpress(o, this.defaultType); break;
389
+ case "await":
390
+ var p = o.prev;
391
+ if (p?.type === STRAP && p.text === 'for') break;
392
+ setAwaitExpress(o, this.defaultType);
393
+ break;
382
394
  }
383
395
  if (o.type === EXPRESS && last?.type === EXPRESS && !last.isend && /^(async|await|yield)$/.test(last.text)) {
384
396
  last.type = STRAP;
@@ -852,6 +852,10 @@ class Program {
852
852
  else queue.inExpress = scope.isObject = !/^(;|\+\+|\-\-|=>)$/.test(last.text);
853
853
  }
854
854
  else if (last.type === EXPRESS) a: {
855
+ if (last.text === '...') {
856
+ scope.isObject = true;
857
+ break a;
858
+ }
855
859
  var li = queue.length - 1;
856
860
  var lp = queue[li];
857
861
  while (lp !== last) {