sval 0.6.0 → 0.6.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.
- package/dist/sval.es6.js +314 -281
- package/dist/sval.js +328 -292
- package/dist/sval.min.js +1 -1
- package/package.json +1 -1
package/dist/sval.js
CHANGED
|
@@ -206,6 +206,17 @@
|
|
|
206
206
|
}
|
|
207
207
|
});
|
|
208
208
|
}
|
|
209
|
+
function callSuper(target, superClass, args) {
|
|
210
|
+
if (args === void 0) { args = []; }
|
|
211
|
+
var supportReflect = false;
|
|
212
|
+
try {
|
|
213
|
+
supportReflect = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { }));
|
|
214
|
+
}
|
|
215
|
+
catch (err) { }
|
|
216
|
+
return supportReflect
|
|
217
|
+
? Reflect.construct(superClass, args, getProto(target).constructor)
|
|
218
|
+
: superClass.apply(target, args);
|
|
219
|
+
}
|
|
209
220
|
function _assign(target) {
|
|
210
221
|
for (var i = 1; i < arguments.length; ++i) {
|
|
211
222
|
var source = arguments[i];
|
|
@@ -220,267 +231,278 @@
|
|
|
220
231
|
var assign = Object.assign || _assign;
|
|
221
232
|
var names = [];
|
|
222
233
|
var globalObj = create(null);
|
|
223
|
-
|
|
224
|
-
if (!
|
|
234
|
+
var setGlobalObj = function (g) {
|
|
235
|
+
if (!g.Object)
|
|
225
236
|
throw 0;
|
|
226
|
-
names = getOwnNames(globalObj =
|
|
237
|
+
names = getOwnNames(globalObj = g).filter(function (n) { return ['webkitStorageInfo', 'GLOBAL', 'root'].indexOf(n) === -1; });
|
|
238
|
+
};
|
|
239
|
+
try {
|
|
240
|
+
setGlobalObj(window);
|
|
227
241
|
}
|
|
228
242
|
catch (err) {
|
|
229
243
|
try {
|
|
230
|
-
|
|
231
|
-
throw 0;
|
|
232
|
-
names = getOwnNames(globalObj = global).filter(function (n) { return n !== 'GLOBAL' && n !== 'root'; });
|
|
244
|
+
setGlobalObj(self);
|
|
233
245
|
}
|
|
234
246
|
catch (err) {
|
|
235
247
|
try {
|
|
236
|
-
|
|
237
|
-
}
|
|
238
|
-
catch (err) { }
|
|
239
|
-
try {
|
|
240
|
-
globalObj.Function = Function;
|
|
241
|
-
}
|
|
242
|
-
catch (err) { }
|
|
243
|
-
try {
|
|
244
|
-
globalObj.Array = Array;
|
|
245
|
-
}
|
|
246
|
-
catch (err) { }
|
|
247
|
-
try {
|
|
248
|
-
globalObj.Number = Number;
|
|
249
|
-
}
|
|
250
|
-
catch (err) { }
|
|
251
|
-
try {
|
|
252
|
-
globalObj.parseFloat = parseFloat;
|
|
253
|
-
}
|
|
254
|
-
catch (err) { }
|
|
255
|
-
try {
|
|
256
|
-
globalObj.parseInt = parseInt;
|
|
257
|
-
}
|
|
258
|
-
catch (err) { }
|
|
259
|
-
try {
|
|
260
|
-
globalObj.Infinity = Infinity;
|
|
261
|
-
}
|
|
262
|
-
catch (err) { }
|
|
263
|
-
try {
|
|
264
|
-
globalObj.NaN = NaN;
|
|
265
|
-
}
|
|
266
|
-
catch (err) { }
|
|
267
|
-
try {
|
|
268
|
-
globalObj.undefined = undefined;
|
|
269
|
-
}
|
|
270
|
-
catch (err) { }
|
|
271
|
-
try {
|
|
272
|
-
globalObj.Boolean = Boolean;
|
|
273
|
-
}
|
|
274
|
-
catch (err) { }
|
|
275
|
-
try {
|
|
276
|
-
globalObj.String = String;
|
|
277
|
-
}
|
|
278
|
-
catch (err) { }
|
|
279
|
-
try {
|
|
280
|
-
globalObj.Symbol = Symbol;
|
|
281
|
-
}
|
|
282
|
-
catch (err) { }
|
|
283
|
-
try {
|
|
284
|
-
globalObj.Date = Date;
|
|
285
|
-
}
|
|
286
|
-
catch (err) { }
|
|
287
|
-
try {
|
|
288
|
-
globalObj.Promise = Promise;
|
|
289
|
-
}
|
|
290
|
-
catch (err) { }
|
|
291
|
-
try {
|
|
292
|
-
globalObj.RegExp = RegExp;
|
|
293
|
-
}
|
|
294
|
-
catch (err) { }
|
|
295
|
-
try {
|
|
296
|
-
globalObj.Error = Error;
|
|
297
|
-
}
|
|
298
|
-
catch (err) { }
|
|
299
|
-
try {
|
|
300
|
-
globalObj.EvalError = EvalError;
|
|
301
|
-
}
|
|
302
|
-
catch (err) { }
|
|
303
|
-
try {
|
|
304
|
-
globalObj.RangeError = RangeError;
|
|
305
|
-
}
|
|
306
|
-
catch (err) { }
|
|
307
|
-
try {
|
|
308
|
-
globalObj.ReferenceError = ReferenceError;
|
|
309
|
-
}
|
|
310
|
-
catch (err) { }
|
|
311
|
-
try {
|
|
312
|
-
globalObj.SyntaxError = SyntaxError;
|
|
313
|
-
}
|
|
314
|
-
catch (err) { }
|
|
315
|
-
try {
|
|
316
|
-
globalObj.TypeError = TypeError;
|
|
317
|
-
}
|
|
318
|
-
catch (err) { }
|
|
319
|
-
try {
|
|
320
|
-
globalObj.URIError = URIError;
|
|
321
|
-
}
|
|
322
|
-
catch (err) { }
|
|
323
|
-
try {
|
|
324
|
-
globalObj.JSON = JSON;
|
|
325
|
-
}
|
|
326
|
-
catch (err) { }
|
|
327
|
-
try {
|
|
328
|
-
globalObj.Math = Math;
|
|
329
|
-
}
|
|
330
|
-
catch (err) { }
|
|
331
|
-
try {
|
|
332
|
-
globalObj.console = console;
|
|
333
|
-
}
|
|
334
|
-
catch (err) { }
|
|
335
|
-
try {
|
|
336
|
-
globalObj.Intl = Intl;
|
|
337
|
-
}
|
|
338
|
-
catch (err) { }
|
|
339
|
-
try {
|
|
340
|
-
globalObj.ArrayBuffer = ArrayBuffer;
|
|
341
|
-
}
|
|
342
|
-
catch (err) { }
|
|
343
|
-
try {
|
|
344
|
-
globalObj.Uint8Array = Uint8Array;
|
|
345
|
-
}
|
|
346
|
-
catch (err) { }
|
|
347
|
-
try {
|
|
348
|
-
globalObj.Int8Array = Int8Array;
|
|
349
|
-
}
|
|
350
|
-
catch (err) { }
|
|
351
|
-
try {
|
|
352
|
-
globalObj.Uint16Array = Uint16Array;
|
|
353
|
-
}
|
|
354
|
-
catch (err) { }
|
|
355
|
-
try {
|
|
356
|
-
globalObj.Int16Array = Int16Array;
|
|
357
|
-
}
|
|
358
|
-
catch (err) { }
|
|
359
|
-
try {
|
|
360
|
-
globalObj.Uint32Array = Uint32Array;
|
|
361
|
-
}
|
|
362
|
-
catch (err) { }
|
|
363
|
-
try {
|
|
364
|
-
globalObj.Int32Array = Int32Array;
|
|
248
|
+
setGlobalObj(global);
|
|
365
249
|
}
|
|
366
|
-
catch (err) {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
250
|
+
catch (err) {
|
|
251
|
+
try {
|
|
252
|
+
setGlobalObj(globalThis);
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
try {
|
|
256
|
+
globalObj.Object = Object;
|
|
257
|
+
}
|
|
258
|
+
catch (err) { }
|
|
259
|
+
try {
|
|
260
|
+
globalObj.Function = Function;
|
|
261
|
+
}
|
|
262
|
+
catch (err) { }
|
|
263
|
+
try {
|
|
264
|
+
globalObj.Array = Array;
|
|
265
|
+
}
|
|
266
|
+
catch (err) { }
|
|
267
|
+
try {
|
|
268
|
+
globalObj.Number = Number;
|
|
269
|
+
}
|
|
270
|
+
catch (err) { }
|
|
271
|
+
try {
|
|
272
|
+
globalObj.parseFloat = parseFloat;
|
|
273
|
+
}
|
|
274
|
+
catch (err) { }
|
|
275
|
+
try {
|
|
276
|
+
globalObj.parseInt = parseInt;
|
|
277
|
+
}
|
|
278
|
+
catch (err) { }
|
|
279
|
+
try {
|
|
280
|
+
globalObj.Infinity = Infinity;
|
|
281
|
+
}
|
|
282
|
+
catch (err) { }
|
|
283
|
+
try {
|
|
284
|
+
globalObj.NaN = NaN;
|
|
285
|
+
}
|
|
286
|
+
catch (err) { }
|
|
287
|
+
try {
|
|
288
|
+
globalObj.undefined = undefined;
|
|
289
|
+
}
|
|
290
|
+
catch (err) { }
|
|
291
|
+
try {
|
|
292
|
+
globalObj.Boolean = Boolean;
|
|
293
|
+
}
|
|
294
|
+
catch (err) { }
|
|
295
|
+
try {
|
|
296
|
+
globalObj.String = String;
|
|
297
|
+
}
|
|
298
|
+
catch (err) { }
|
|
299
|
+
try {
|
|
300
|
+
globalObj.Symbol = Symbol;
|
|
301
|
+
}
|
|
302
|
+
catch (err) { }
|
|
303
|
+
try {
|
|
304
|
+
globalObj.Date = Date;
|
|
305
|
+
}
|
|
306
|
+
catch (err) { }
|
|
307
|
+
try {
|
|
308
|
+
globalObj.Promise = Promise;
|
|
309
|
+
}
|
|
310
|
+
catch (err) { }
|
|
311
|
+
try {
|
|
312
|
+
globalObj.RegExp = RegExp;
|
|
313
|
+
}
|
|
314
|
+
catch (err) { }
|
|
315
|
+
try {
|
|
316
|
+
globalObj.Error = Error;
|
|
317
|
+
}
|
|
318
|
+
catch (err) { }
|
|
319
|
+
try {
|
|
320
|
+
globalObj.EvalError = EvalError;
|
|
321
|
+
}
|
|
322
|
+
catch (err) { }
|
|
323
|
+
try {
|
|
324
|
+
globalObj.RangeError = RangeError;
|
|
325
|
+
}
|
|
326
|
+
catch (err) { }
|
|
327
|
+
try {
|
|
328
|
+
globalObj.ReferenceError = ReferenceError;
|
|
329
|
+
}
|
|
330
|
+
catch (err) { }
|
|
331
|
+
try {
|
|
332
|
+
globalObj.SyntaxError = SyntaxError;
|
|
333
|
+
}
|
|
334
|
+
catch (err) { }
|
|
335
|
+
try {
|
|
336
|
+
globalObj.TypeError = TypeError;
|
|
337
|
+
}
|
|
338
|
+
catch (err) { }
|
|
339
|
+
try {
|
|
340
|
+
globalObj.URIError = URIError;
|
|
341
|
+
}
|
|
342
|
+
catch (err) { }
|
|
343
|
+
try {
|
|
344
|
+
globalObj.JSON = JSON;
|
|
345
|
+
}
|
|
346
|
+
catch (err) { }
|
|
347
|
+
try {
|
|
348
|
+
globalObj.Math = Math;
|
|
349
|
+
}
|
|
350
|
+
catch (err) { }
|
|
351
|
+
try {
|
|
352
|
+
globalObj.console = console;
|
|
353
|
+
}
|
|
354
|
+
catch (err) { }
|
|
355
|
+
try {
|
|
356
|
+
globalObj.Intl = Intl;
|
|
357
|
+
}
|
|
358
|
+
catch (err) { }
|
|
359
|
+
try {
|
|
360
|
+
globalObj.ArrayBuffer = ArrayBuffer;
|
|
361
|
+
}
|
|
362
|
+
catch (err) { }
|
|
363
|
+
try {
|
|
364
|
+
globalObj.Uint8Array = Uint8Array;
|
|
365
|
+
}
|
|
366
|
+
catch (err) { }
|
|
367
|
+
try {
|
|
368
|
+
globalObj.Int8Array = Int8Array;
|
|
369
|
+
}
|
|
370
|
+
catch (err) { }
|
|
371
|
+
try {
|
|
372
|
+
globalObj.Uint16Array = Uint16Array;
|
|
373
|
+
}
|
|
374
|
+
catch (err) { }
|
|
375
|
+
try {
|
|
376
|
+
globalObj.Int16Array = Int16Array;
|
|
377
|
+
}
|
|
378
|
+
catch (err) { }
|
|
379
|
+
try {
|
|
380
|
+
globalObj.Uint32Array = Uint32Array;
|
|
381
|
+
}
|
|
382
|
+
catch (err) { }
|
|
383
|
+
try {
|
|
384
|
+
globalObj.Int32Array = Int32Array;
|
|
385
|
+
}
|
|
386
|
+
catch (err) { }
|
|
387
|
+
try {
|
|
388
|
+
globalObj.Float32Array = Float32Array;
|
|
389
|
+
}
|
|
390
|
+
catch (err) { }
|
|
391
|
+
try {
|
|
392
|
+
globalObj.Float64Array = Float64Array;
|
|
393
|
+
}
|
|
394
|
+
catch (err) { }
|
|
395
|
+
try {
|
|
396
|
+
globalObj.Uint8ClampedArray = Uint8ClampedArray;
|
|
397
|
+
}
|
|
398
|
+
catch (err) { }
|
|
399
|
+
try {
|
|
400
|
+
globalObj.DataView = DataView;
|
|
401
|
+
}
|
|
402
|
+
catch (err) { }
|
|
403
|
+
try {
|
|
404
|
+
globalObj.Map = Map;
|
|
405
|
+
}
|
|
406
|
+
catch (err) { }
|
|
407
|
+
try {
|
|
408
|
+
globalObj.Set = Set;
|
|
409
|
+
}
|
|
410
|
+
catch (err) { }
|
|
411
|
+
try {
|
|
412
|
+
globalObj.WeakMap = WeakMap;
|
|
413
|
+
}
|
|
414
|
+
catch (err) { }
|
|
415
|
+
try {
|
|
416
|
+
globalObj.WeakSet = WeakSet;
|
|
417
|
+
}
|
|
418
|
+
catch (err) { }
|
|
419
|
+
try {
|
|
420
|
+
globalObj.Proxy = Proxy;
|
|
421
|
+
}
|
|
422
|
+
catch (err) { }
|
|
423
|
+
try {
|
|
424
|
+
globalObj.Reflect = Reflect;
|
|
425
|
+
}
|
|
426
|
+
catch (err) { }
|
|
427
|
+
try {
|
|
428
|
+
globalObj.BigInt = BigInt;
|
|
429
|
+
}
|
|
430
|
+
catch (err) { }
|
|
431
|
+
try {
|
|
432
|
+
globalObj.decodeURI = decodeURI;
|
|
433
|
+
}
|
|
434
|
+
catch (err) { }
|
|
435
|
+
try {
|
|
436
|
+
globalObj.decodeURIComponent = decodeURIComponent;
|
|
437
|
+
}
|
|
438
|
+
catch (err) { }
|
|
439
|
+
try {
|
|
440
|
+
globalObj.encodeURI = encodeURI;
|
|
441
|
+
}
|
|
442
|
+
catch (err) { }
|
|
443
|
+
try {
|
|
444
|
+
globalObj.encodeURIComponent = encodeURIComponent;
|
|
445
|
+
}
|
|
446
|
+
catch (err) { }
|
|
447
|
+
try {
|
|
448
|
+
globalObj.escape = escape;
|
|
449
|
+
}
|
|
450
|
+
catch (err) { }
|
|
451
|
+
try {
|
|
452
|
+
globalObj.unescape = unescape;
|
|
453
|
+
}
|
|
454
|
+
catch (err) { }
|
|
455
|
+
try {
|
|
456
|
+
globalObj.eval = eval;
|
|
457
|
+
}
|
|
458
|
+
catch (err) { }
|
|
459
|
+
try {
|
|
460
|
+
globalObj.isFinite = isFinite;
|
|
461
|
+
}
|
|
462
|
+
catch (err) { }
|
|
463
|
+
try {
|
|
464
|
+
globalObj.isNaN = isNaN;
|
|
465
|
+
}
|
|
466
|
+
catch (err) { }
|
|
467
|
+
try {
|
|
468
|
+
globalObj.SharedArrayBuffer = SharedArrayBuffer;
|
|
469
|
+
}
|
|
470
|
+
catch (err) { }
|
|
471
|
+
try {
|
|
472
|
+
globalObj.Atomics = Atomics;
|
|
473
|
+
}
|
|
474
|
+
catch (err) { }
|
|
475
|
+
try {
|
|
476
|
+
globalObj.WebAssembly = WebAssembly;
|
|
477
|
+
}
|
|
478
|
+
catch (err) { }
|
|
479
|
+
try {
|
|
480
|
+
globalObj.clearInterval = clearInterval;
|
|
481
|
+
}
|
|
482
|
+
catch (err) { }
|
|
483
|
+
try {
|
|
484
|
+
globalObj.clearTimeout = clearTimeout;
|
|
485
|
+
}
|
|
486
|
+
catch (err) { }
|
|
487
|
+
try {
|
|
488
|
+
globalObj.setInterval = setInterval;
|
|
489
|
+
}
|
|
490
|
+
catch (err) { }
|
|
491
|
+
try {
|
|
492
|
+
globalObj.setTimeout = setTimeout;
|
|
493
|
+
}
|
|
494
|
+
catch (err) { }
|
|
495
|
+
try {
|
|
496
|
+
globalObj.crypto = crypto;
|
|
497
|
+
}
|
|
498
|
+
catch (err) { }
|
|
499
|
+
try {
|
|
500
|
+
globalObj.URL = URL;
|
|
501
|
+
}
|
|
502
|
+
catch (err) { }
|
|
503
|
+
names = getOwnNames(globalObj);
|
|
504
|
+
}
|
|
481
505
|
}
|
|
482
|
-
catch (err) { }
|
|
483
|
-
names = getOwnNames(globalObj);
|
|
484
506
|
}
|
|
485
507
|
}
|
|
486
508
|
if (globalObj.Symbol) {
|
|
@@ -542,7 +564,7 @@
|
|
|
542
564
|
var IMPORT = createSymbol('import');
|
|
543
565
|
var EXPORTS = createSymbol('exports');
|
|
544
566
|
|
|
545
|
-
var version = "0.6.
|
|
567
|
+
var version = "0.6.1";
|
|
546
568
|
|
|
547
569
|
var Var = (function () {
|
|
548
570
|
function Var(kind, value) {
|
|
@@ -776,7 +798,7 @@
|
|
|
776
798
|
var superCall;
|
|
777
799
|
return __generator(this, function (_a) {
|
|
778
800
|
superCall = scope.find(SUPERCALL);
|
|
779
|
-
if (superCall &&
|
|
801
|
+
if (superCall && superCall.get() !== true) {
|
|
780
802
|
throw new ReferenceError('Must call super constructor in derived class '
|
|
781
803
|
+ 'before accessing \'this\' or returning from derived constructor');
|
|
782
804
|
}
|
|
@@ -1248,7 +1270,7 @@
|
|
|
1248
1270
|
});
|
|
1249
1271
|
}
|
|
1250
1272
|
function CallExpression$1(node, scope) {
|
|
1251
|
-
var func, object, key, priv, obj, thisObject, name_1, args, i, arg, _a, _b, _c, _d, superCall, win;
|
|
1273
|
+
var func, object, key, priv, obj, thisObject, name_1, args, i, arg, _a, _b, _c, _d, superCall, construct, inst, win;
|
|
1252
1274
|
return __generator(this, function (_e) {
|
|
1253
1275
|
switch (_e.label) {
|
|
1254
1276
|
case 0:
|
|
@@ -1348,15 +1370,20 @@
|
|
|
1348
1370
|
i++;
|
|
1349
1371
|
return [3, 8];
|
|
1350
1372
|
case 13:
|
|
1351
|
-
if (node.callee.type === 'Super')
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
else {
|
|
1357
|
-
scope.find(SUPERCALL).set(true);
|
|
1358
|
-
}
|
|
1373
|
+
if (!(node.callee.type === 'Super')) return [3, 15];
|
|
1374
|
+
superCall = scope.find(SUPERCALL);
|
|
1375
|
+
construct = superCall.get();
|
|
1376
|
+
if (construct === true) {
|
|
1377
|
+
throw new ReferenceError('Super constructor may only be called once');
|
|
1359
1378
|
}
|
|
1379
|
+
inst = callSuper(object, func, args);
|
|
1380
|
+
return [5, __values(construct(inst))];
|
|
1381
|
+
case 14:
|
|
1382
|
+
_e.sent();
|
|
1383
|
+
scope.find('this').set(inst);
|
|
1384
|
+
scope.find(SUPERCALL).set(true);
|
|
1385
|
+
return [2, inst];
|
|
1386
|
+
case 15:
|
|
1360
1387
|
try {
|
|
1361
1388
|
return [2, func.apply(object, args)];
|
|
1362
1389
|
}
|
|
@@ -3009,7 +3036,7 @@
|
|
|
3009
3036
|
|
|
3010
3037
|
function ThisExpression(node, scope) {
|
|
3011
3038
|
var superCall = scope.find(SUPERCALL);
|
|
3012
|
-
if (superCall &&
|
|
3039
|
+
if (superCall && superCall.get() !== true) {
|
|
3013
3040
|
throw new ReferenceError('Must call super constructor in derived class '
|
|
3014
3041
|
+ 'before accessing \'this\' or returning from derived constructor');
|
|
3015
3042
|
}
|
|
@@ -3407,12 +3434,15 @@
|
|
|
3407
3434
|
}
|
|
3408
3435
|
if (node.callee.type === 'Super') {
|
|
3409
3436
|
var superCall = scope.find(SUPERCALL);
|
|
3410
|
-
|
|
3437
|
+
var construct = superCall.get();
|
|
3438
|
+
if (construct === true) {
|
|
3411
3439
|
throw new ReferenceError('Super constructor may only be called once');
|
|
3412
3440
|
}
|
|
3413
|
-
|
|
3414
|
-
|
|
3415
|
-
|
|
3441
|
+
var inst = callSuper(object, func, args);
|
|
3442
|
+
construct(inst);
|
|
3443
|
+
scope.find('this').set(inst);
|
|
3444
|
+
scope.find(SUPERCALL).set(true);
|
|
3445
|
+
return inst;
|
|
3416
3446
|
}
|
|
3417
3447
|
try {
|
|
3418
3448
|
return func.apply(object, args);
|
|
@@ -4509,16 +4539,16 @@
|
|
|
4509
4539
|
}
|
|
4510
4540
|
var subScope = new Scope(scope, true);
|
|
4511
4541
|
if (node.type !== 'ArrowFunctionExpression') {
|
|
4512
|
-
subScope.
|
|
4542
|
+
subScope.let('this', this);
|
|
4513
4543
|
subScope.let('arguments', arguments);
|
|
4514
4544
|
subScope.const(NEWTARGET, _newTarget);
|
|
4515
|
-
if (construct) {
|
|
4516
|
-
construct(this);
|
|
4517
|
-
}
|
|
4518
4545
|
if (superClass) {
|
|
4519
4546
|
subScope.const(SUPER, superClass);
|
|
4520
4547
|
if (construct)
|
|
4521
|
-
subScope.let(SUPERCALL,
|
|
4548
|
+
subScope.let(SUPERCALL, construct);
|
|
4549
|
+
}
|
|
4550
|
+
else if (construct) {
|
|
4551
|
+
construct(this);
|
|
4522
4552
|
}
|
|
4523
4553
|
}
|
|
4524
4554
|
for (var i = 0; i < params.length; i++) {
|
|
@@ -4551,6 +4581,9 @@
|
|
|
4551
4581
|
if (result === RETURN) {
|
|
4552
4582
|
return result.RES;
|
|
4553
4583
|
}
|
|
4584
|
+
else if (_newTarget) {
|
|
4585
|
+
return subScope.find('this').get();
|
|
4586
|
+
}
|
|
4554
4587
|
};
|
|
4555
4588
|
var func = tmpFunc;
|
|
4556
4589
|
if (node.type === 'ArrowFunctionExpression') {
|
|
@@ -4587,10 +4620,9 @@
|
|
|
4587
4620
|
}
|
|
4588
4621
|
};
|
|
4589
4622
|
var klass = function () {
|
|
4590
|
-
|
|
4591
|
-
|
|
4592
|
-
|
|
4593
|
-
}
|
|
4623
|
+
var inst = superClass ? callSuper(this, superClass) : this;
|
|
4624
|
+
construct(inst);
|
|
4625
|
+
return inst;
|
|
4594
4626
|
};
|
|
4595
4627
|
for (var i = 0; i < methodBody.length; i++) {
|
|
4596
4628
|
var method = methodBody[i];
|
|
@@ -4852,20 +4884,19 @@
|
|
|
4852
4884
|
case 0:
|
|
4853
4885
|
subScope = new Scope(scope, true);
|
|
4854
4886
|
if (!(node.type !== 'ArrowFunctionExpression')) return [3, 3];
|
|
4855
|
-
subScope.
|
|
4887
|
+
subScope.let('this', this);
|
|
4856
4888
|
subScope.let('arguments', arguments);
|
|
4857
4889
|
subScope.const(NEWTARGET, _newTarget);
|
|
4858
|
-
if (!
|
|
4859
|
-
|
|
4890
|
+
if (!superClass) return [3, 1];
|
|
4891
|
+
subScope.const(SUPER, superClass);
|
|
4892
|
+
if (construct)
|
|
4893
|
+
subScope.let(SUPERCALL, construct);
|
|
4894
|
+
return [3, 3];
|
|
4860
4895
|
case 1:
|
|
4861
|
-
|
|
4862
|
-
|
|
4896
|
+
if (!construct) return [3, 3];
|
|
4897
|
+
return [5, __values(construct(this))];
|
|
4863
4898
|
case 2:
|
|
4864
|
-
|
|
4865
|
-
subScope.const(SUPER, superClass);
|
|
4866
|
-
if (construct)
|
|
4867
|
-
subScope.let(SUPERCALL, false);
|
|
4868
|
-
}
|
|
4899
|
+
_a.sent();
|
|
4869
4900
|
_a.label = 3;
|
|
4870
4901
|
case 3:
|
|
4871
4902
|
i = 0;
|
|
@@ -4913,6 +4944,9 @@
|
|
|
4913
4944
|
if (result === RETURN) {
|
|
4914
4945
|
return [2, result.RES];
|
|
4915
4946
|
}
|
|
4947
|
+
else if (_newTarget) {
|
|
4948
|
+
return [2, subScope.find('this').get()];
|
|
4949
|
+
}
|
|
4916
4950
|
return [2];
|
|
4917
4951
|
}
|
|
4918
4952
|
});
|
|
@@ -5001,15 +5035,15 @@
|
|
|
5001
5035
|
});
|
|
5002
5036
|
};
|
|
5003
5037
|
klass = function () {
|
|
5038
|
+
var inst;
|
|
5004
5039
|
return __generator(this, function (_a) {
|
|
5005
5040
|
switch (_a.label) {
|
|
5006
|
-
case 0:
|
|
5041
|
+
case 0:
|
|
5042
|
+
inst = superClass ? callSuper(this, superClass) : this;
|
|
5043
|
+
return [5, __values(construct(inst))];
|
|
5007
5044
|
case 1:
|
|
5008
5045
|
_a.sent();
|
|
5009
|
-
|
|
5010
|
-
superClass.apply(this);
|
|
5011
|
-
}
|
|
5012
|
-
return [2];
|
|
5046
|
+
return [2, inst];
|
|
5013
5047
|
}
|
|
5014
5048
|
});
|
|
5015
5049
|
};
|
|
@@ -5094,11 +5128,13 @@
|
|
|
5094
5128
|
var win = createSandBox();
|
|
5095
5129
|
this.scope.let('globalThis', win);
|
|
5096
5130
|
this.scope.let('window', win);
|
|
5131
|
+
this.scope.let('self', win);
|
|
5097
5132
|
this.scope.let('this', win);
|
|
5098
5133
|
}
|
|
5099
5134
|
else {
|
|
5100
5135
|
this.scope.let('globalThis', globalObj);
|
|
5101
5136
|
this.scope.let('window', globalObj);
|
|
5137
|
+
this.scope.let('self', globalObj);
|
|
5102
5138
|
this.scope.let('this', globalObj);
|
|
5103
5139
|
}
|
|
5104
5140
|
this.scope.const(sourceType === 'module' ? EXPORTS : 'exports', this.exports = {});
|