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.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
- try {
224
- if (!window.Object)
234
+ var setGlobalObj = function (g) {
235
+ if (!g.Object)
225
236
  throw 0;
226
- names = getOwnNames(globalObj = window).filter(function (n) { return n !== 'webkitStorageInfo'; });
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
- if (!global.Object)
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
- globalObj.Object = Object;
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
- try {
368
- globalObj.Float32Array = Float32Array;
369
- }
370
- catch (err) { }
371
- try {
372
- globalObj.Float64Array = Float64Array;
373
- }
374
- catch (err) { }
375
- try {
376
- globalObj.Uint8ClampedArray = Uint8ClampedArray;
377
- }
378
- catch (err) { }
379
- try {
380
- globalObj.DataView = DataView;
381
- }
382
- catch (err) { }
383
- try {
384
- globalObj.Map = Map;
385
- }
386
- catch (err) { }
387
- try {
388
- globalObj.Set = Set;
389
- }
390
- catch (err) { }
391
- try {
392
- globalObj.WeakMap = WeakMap;
393
- }
394
- catch (err) { }
395
- try {
396
- globalObj.WeakSet = WeakSet;
397
- }
398
- catch (err) { }
399
- try {
400
- globalObj.Proxy = Proxy;
401
- }
402
- catch (err) { }
403
- try {
404
- globalObj.Reflect = Reflect;
405
- }
406
- catch (err) { }
407
- try {
408
- globalObj.BigInt = BigInt;
409
- }
410
- catch (err) { }
411
- try {
412
- globalObj.decodeURI = decodeURI;
413
- }
414
- catch (err) { }
415
- try {
416
- globalObj.decodeURIComponent = decodeURIComponent;
417
- }
418
- catch (err) { }
419
- try {
420
- globalObj.encodeURI = encodeURI;
421
- }
422
- catch (err) { }
423
- try {
424
- globalObj.encodeURIComponent = encodeURIComponent;
425
- }
426
- catch (err) { }
427
- try {
428
- globalObj.escape = escape;
429
- }
430
- catch (err) { }
431
- try {
432
- globalObj.unescape = unescape;
433
- }
434
- catch (err) { }
435
- try {
436
- globalObj.eval = eval;
437
- }
438
- catch (err) { }
439
- try {
440
- globalObj.isFinite = isFinite;
441
- }
442
- catch (err) { }
443
- try {
444
- globalObj.isNaN = isNaN;
445
- }
446
- catch (err) { }
447
- try {
448
- globalObj.SharedArrayBuffer = SharedArrayBuffer;
449
- }
450
- catch (err) { }
451
- try {
452
- globalObj.Atomics = Atomics;
453
- }
454
- catch (err) { }
455
- try {
456
- globalObj.WebAssembly = WebAssembly;
457
- }
458
- catch (err) { }
459
- try {
460
- globalObj.clearInterval = clearInterval;
461
- }
462
- catch (err) { }
463
- try {
464
- globalObj.clearTimeout = clearTimeout;
465
- }
466
- catch (err) { }
467
- try {
468
- globalObj.setInterval = setInterval;
469
- }
470
- catch (err) { }
471
- try {
472
- globalObj.setTimeout = setTimeout;
473
- }
474
- catch (err) { }
475
- try {
476
- globalObj.crypto = crypto;
477
- }
478
- catch (err) { }
479
- try {
480
- globalObj.URL = URL;
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.0";
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 && !superCall.get()) {
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
- superCall = scope.find(SUPERCALL);
1353
- if (superCall.get()) {
1354
- throw new ReferenceError('Super constructor may only be called once');
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 && !superCall.get()) {
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
- if (superCall.get()) {
3437
+ var construct = superCall.get();
3438
+ if (construct === true) {
3411
3439
  throw new ReferenceError('Super constructor may only be called once');
3412
3440
  }
3413
- else {
3414
- scope.find(SUPERCALL).set(true);
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.const('this', this);
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, false);
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
- construct(this);
4591
- if (superClass) {
4592
- superClass.apply(this);
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.const('this', this);
4887
+ subScope.let('this', this);
4856
4888
  subScope.let('arguments', arguments);
4857
4889
  subScope.const(NEWTARGET, _newTarget);
4858
- if (!construct) return [3, 2];
4859
- return [5, __values(construct(this))];
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
- _a.sent();
4862
- _a.label = 2;
4896
+ if (!construct) return [3, 3];
4897
+ return [5, __values(construct(this))];
4863
4898
  case 2:
4864
- if (superClass) {
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: return [5, __values(construct(this))];
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
- if (superClass) {
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 = {});