jseption 0.0.4 → 0.0.6

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.
Files changed (90) hide show
  1. package/README.md +56 -4
  2. package/dist/atoms.d.ts +1 -0
  3. package/dist/atoms.js +2 -1
  4. package/dist/atoms.js.map +1 -1
  5. package/dist/builtins/base64.d.ts +14 -0
  6. package/dist/builtins/base64.js +219 -0
  7. package/dist/builtins/base64.js.map +1 -0
  8. package/dist/builtins/bigint.js +3 -3
  9. package/dist/builtins/bigint.js.map +1 -1
  10. package/dist/builtins/date.d.ts +1 -0
  11. package/dist/builtins/date.js +26 -12
  12. package/dist/builtins/date.js.map +1 -1
  13. package/dist/builtins/error.js +9 -0
  14. package/dist/builtins/error.js.map +1 -1
  15. package/dist/builtins/float16.d.ts +3 -0
  16. package/dist/builtins/float16.js +69 -0
  17. package/dist/builtins/float16.js.map +1 -0
  18. package/dist/builtins/function.js +2 -2
  19. package/dist/builtins/index.js +9 -6
  20. package/dist/builtins/index.js.map +1 -1
  21. package/dist/builtins/iterator.d.ts +2 -0
  22. package/dist/builtins/iterator.js +624 -0
  23. package/dist/builtins/iterator.js.map +1 -0
  24. package/dist/builtins/json.d.ts +13 -1
  25. package/dist/builtins/json.js +283 -211
  26. package/dist/builtins/json.js.map +1 -1
  27. package/dist/builtins/mapset.js +365 -6
  28. package/dist/builtins/mapset.js.map +1 -1
  29. package/dist/builtins/math.js +203 -3
  30. package/dist/builtins/math.js.map +1 -1
  31. package/dist/builtins/native.js +6 -6
  32. package/dist/builtins/object.js +9 -2
  33. package/dist/builtins/object.js.map +1 -1
  34. package/dist/builtins/promise.js +31 -11
  35. package/dist/builtins/promise.js.map +1 -1
  36. package/dist/builtins/proxy.js +2 -2
  37. package/dist/builtins/reflect.js +6 -2
  38. package/dist/builtins/reflect.js.map +1 -1
  39. package/dist/builtins/regexp.js +74 -3
  40. package/dist/builtins/regexp.js.map +1 -1
  41. package/dist/builtins/string.js +1 -1
  42. package/dist/builtins/symbol.js +1 -1
  43. package/dist/builtins/symbol.js.map +1 -1
  44. package/dist/builtins/typedarray.d.ts +1 -0
  45. package/dist/builtins/typedarray.js +302 -32
  46. package/dist/builtins/typedarray.js.map +1 -1
  47. package/dist/builtins/weakref.js +7 -7
  48. package/dist/embed.d.ts +5 -0
  49. package/dist/embed.js +47 -15
  50. package/dist/embed.js.map +1 -1
  51. package/dist/interpreter.js +15 -14
  52. package/dist/interpreter.js.map +1 -1
  53. package/dist/jit.d.ts +1 -0
  54. package/dist/jit.js +51 -13
  55. package/dist/jit.js.map +1 -1
  56. package/dist/jit_hook.d.ts +1 -0
  57. package/dist/jit_hook.js.map +1 -1
  58. package/dist/jit_runtime.d.ts +1 -1
  59. package/dist/jit_runtime.js +6 -6
  60. package/dist/jit_runtime.js.map +1 -1
  61. package/dist/jit_stack.d.ts +1 -0
  62. package/dist/jit_stack.js +2 -1
  63. package/dist/jit_stack.js.map +1 -1
  64. package/dist/jseption.d.ts +4 -0
  65. package/dist/jseption.js +2 -0
  66. package/dist/jseption.js.map +1 -1
  67. package/dist/membrane.d.ts +16 -0
  68. package/dist/membrane.js +576 -0
  69. package/dist/membrane.js.map +1 -0
  70. package/dist/module.js +5 -3
  71. package/dist/module.js.map +1 -1
  72. package/dist/parser.js +26 -9
  73. package/dist/parser.js.map +1 -1
  74. package/dist/print.d.ts +12 -0
  75. package/dist/print.js +494 -0
  76. package/dist/print.js.map +1 -0
  77. package/dist/qjs.js +13 -10
  78. package/dist/qjs.js.map +1 -1
  79. package/dist/quickjs.d.ts +8 -0
  80. package/dist/quickjs.js +132 -53
  81. package/dist/quickjs.js.map +1 -1
  82. package/dist/std.d.ts +4 -2
  83. package/dist/std.js +42 -8
  84. package/dist/std.js.map +1 -1
  85. package/dist/values.d.ts +31 -27
  86. package/dist/values.js.map +1 -1
  87. package/dist/version.d.ts +1 -1
  88. package/dist/version.js +1 -1
  89. package/dist/version.js.map +1 -1
  90. package/package.json +1 -1
@@ -48,13 +48,13 @@ function JS_ToBigIntCtorFree(ctx, val) {
48
48
  }
49
49
  function js_bigint_constructor(ctx, new_target, argv) {
50
50
  if (!JS_IsUndefined(new_target))
51
- return JS_ThrowTypeError(ctx, 'not a constructor');
51
+ return Q.JS_ThrowTypeErrorNotAConstructor(ctx, new_target);
52
52
  return JS_ToBigIntCtorFree(ctx, argv[0]);
53
53
  }
54
54
  function js_thisBigIntValue(ctx, this_val) {
55
55
  if (typeof this_val === 'bigint')
56
56
  return this_val;
57
- if (Q.JS_IsObject(this_val) && Q.JS_GetClassID(this_val) === 33 /* JSClassID.BIG_INT */) {
57
+ if (Q.JS_IsObject(this_val) && Q.JS_GetClassID(this_val) === 34 /* JSClassID.BIG_INT */) {
58
58
  if (typeof Q.JS_GetAnyOpaque(this_val) === 'bigint')
59
59
  return Q.JS_GetAnyOpaque(this_val);
60
60
  }
@@ -114,7 +114,7 @@ const js_bigint_proto_funcs = [
114
114
  ];
115
115
  export function JS_AddIntrinsicBigInt(ctx) {
116
116
  const proto = JS_NewObject(ctx);
117
- ctx.class_proto[33 /* JSClassID.BIG_INT */] = proto;
117
+ ctx.class_proto[34 /* JSClassID.BIG_INT */] = proto;
118
118
  JS_SetPropertyFunctionList(ctx, proto, js_bigint_proto_funcs);
119
119
  const obj1 = JS_NewGlobalCConstructor(ctx, 'BigInt', js_bigint_constructor, 1, proto);
120
120
  JS_SetPropertyFunctionList(ctx, obj1, js_bigint_funcs);
@@ -1 +1 @@
1
- {"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../src/builtins/bigint.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * BigInt objects (port of the BigInt part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_NewObject,\n JS_NewGlobalCConstructor, JS_ToPrimitive, HINT_NUMBER, JS_ToBigInt, JS_ToIndex, js_string_to_bigint,\n JS_ThrowTypeError, JS_ThrowRangeError, JS_ThrowSyntaxError, JS_SetPropertyFunctionList, JS_CFUNC_DEF,\n JS_CFUNC_MAGIC_DEF, JS_PROP_STRING_DEF, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag,\n} from '../quickjs.ts';\nimport { js_get_radix } from './number.ts';\n\n/* JS_StringToBigIntErr */\nfunction JS_StringToBigIntErr(ctx: JSContext, str: string): JSValue {\n const r = js_string_to_bigint(str);\n if (r === null) return JS_ThrowSyntaxError(ctx, 'invalid bigint literal');\n return r;\n}\n\n/* ToBigInt as used by the BigInt() function: numbers are accepted when\n they are integers (JS_ToBigIntCtorFree) */\nfunction JS_ToBigIntCtorFree(ctx: JSContext, val: JSValue): JSValue {\n for (;;) {\n switch (typeof val) {\n case 'boolean':\n return val ? 1n : 0n;\n case 'bigint':\n return val;\n case 'number': {\n const d = val;\n if (!Number.isFinite(d)) return JS_ThrowRangeError(ctx, 'cannot convert NaN or Infinity to BigInt');\n if (Math.trunc(d) !== d) return JS_ThrowRangeError(ctx, 'cannot convert to BigInt: not an integer');\n return BigInt(d);\n }\n case 'string':\n return JS_StringToBigIntErr(ctx, val);\n case 'symbol':\n return JS_ThrowTypeError(ctx, 'cannot convert symbol to bigint');\n case 'object':\n case 'function':\n if (Q.JS_IsObject(val)) {\n val = JS_ToPrimitive(ctx, val, HINT_NUMBER);\n if (JS_IsException(val)) return val;\n continue;\n }\n return JS_ThrowTypeError(ctx, 'cannot convert to BigInt');\n default:\n return JS_ThrowTypeError(ctx, 'cannot convert to BigInt');\n }\n }\n}\n\nfunction js_bigint_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsUndefined(new_target)) return JS_ThrowTypeError(ctx, 'not a constructor');\n return JS_ToBigIntCtorFree(ctx, argv[0]);\n}\n\nfunction js_thisBigIntValue(ctx: JSContext, this_val: JSValue): JSValue {\n if (typeof this_val === 'bigint') return this_val;\n if (Q.JS_IsObject(this_val) && Q.JS_GetClassID(this_val) === JSClassID.BIG_INT) {\n if (typeof Q.JS_GetAnyOpaque(this_val) === 'bigint') return Q.JS_GetAnyOpaque(this_val);\n }\n return JS_ThrowTypeError(ctx, 'not a BigInt');\n}\n\n/* js_bigint_to_string1 */\nexport function js_bigint_to_string1(ctx: JSContext, val: bigint, radix: number): string {\n return val.toString(radix);\n}\n\nfunction js_bigint_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const val = js_thisBigIntValue(ctx, this_val);\n if (JS_IsException(val)) return val;\n let base: number;\n if (JS_IsUndefined(argv[0])) {\n base = 10;\n } else {\n base = js_get_radix(ctx, argv[0]);\n if (base < 0) return JS_EXCEPTION;\n }\n return js_bigint_to_string1(ctx, val as bigint, base);\n}\n\n/* not in quickjs.c (which has no BigInt.prototype.toLocaleString): same as toString() */\nfunction js_bigint_toLocaleString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const val = js_thisBigIntValue(ctx, this_val);\n if (JS_IsException(val)) return val;\n return js_bigint_to_string1(ctx, val as bigint, 10);\n}\n\nfunction js_bigint_valueOf(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return js_thisBigIntValue(ctx, this_val);\n}\n\nfunction js_bigint_asUintN(ctx: JSContext, this_val: JSValue, argv: JSValue[], asIntN: number): JSValue {\n const bits = JS_ToIndex(ctx, argv[0]);\n if (bits < 0) return JS_EXCEPTION;\n const a = JS_ToBigInt(ctx, argv[1]);\n if (JS_IsException(a)) return JS_EXCEPTION;\n if (bits === 0) return 0n;\n if (asIntN) return BigInt.asIntN(bits, a as bigint);\n return BigInt.asUintN(bits, a as bigint);\n}\n\nconst js_bigint_funcs = [\n JS_CFUNC_MAGIC_DEF('asUintN', 2, js_bigint_asUintN, 0),\n JS_CFUNC_MAGIC_DEF('asIntN', 2, js_bigint_asUintN, 1),\n];\n\nconst js_bigint_proto_funcs = [\n JS_CFUNC_DEF('toString', 0, js_bigint_toString),\n JS_CFUNC_DEF('valueOf', 0, js_bigint_valueOf),\n JS_CFUNC_DEF('toLocaleString', 0, js_bigint_toLocaleString),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'BigInt', JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicBigInt(ctx: JSContext): void {\n const proto = JS_NewObject(ctx) as JSObject;\n ctx.class_proto[JSClassID.BIG_INT] = proto;\n JS_SetPropertyFunctionList(ctx, proto, js_bigint_proto_funcs);\n const obj1 = JS_NewGlobalCConstructor(ctx, 'BigInt', js_bigint_constructor, 1, proto);\n JS_SetPropertyFunctionList(ctx, obj1, js_bigint_funcs);\n}\n"]}
1
+ {"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../src/builtins/bigint.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * BigInt objects (port of the BigInt part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_NewObject,\n JS_NewGlobalCConstructor, JS_ToPrimitive, HINT_NUMBER, JS_ToBigInt, JS_ToIndex, js_string_to_bigint,\n JS_ThrowTypeError, JS_ThrowRangeError, JS_ThrowSyntaxError, JS_SetPropertyFunctionList, JS_CFUNC_DEF,\n JS_CFUNC_MAGIC_DEF, JS_PROP_STRING_DEF, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag,\n} from '../quickjs.ts';\nimport { js_get_radix } from './number.ts';\n\n/* JS_StringToBigIntErr */\nfunction JS_StringToBigIntErr(ctx: JSContext, str: string): JSValue {\n const r = js_string_to_bigint(str);\n if (r === null) return JS_ThrowSyntaxError(ctx, 'invalid bigint literal');\n return r;\n}\n\n/* ToBigInt as used by the BigInt() function: numbers are accepted when\n they are integers (JS_ToBigIntCtorFree) */\nfunction JS_ToBigIntCtorFree(ctx: JSContext, val: JSValue): JSValue {\n for (;;) {\n switch (typeof val) {\n case 'boolean':\n return val ? 1n : 0n;\n case 'bigint':\n return val;\n case 'number': {\n const d = val;\n if (!Number.isFinite(d)) return JS_ThrowRangeError(ctx, 'cannot convert NaN or Infinity to BigInt');\n if (Math.trunc(d) !== d) return JS_ThrowRangeError(ctx, 'cannot convert to BigInt: not an integer');\n return BigInt(d);\n }\n case 'string':\n return JS_StringToBigIntErr(ctx, val);\n case 'symbol':\n return JS_ThrowTypeError(ctx, 'cannot convert symbol to bigint');\n case 'object':\n case 'function':\n if (Q.JS_IsObject(val)) {\n val = JS_ToPrimitive(ctx, val, HINT_NUMBER);\n if (JS_IsException(val)) return val;\n continue;\n }\n return JS_ThrowTypeError(ctx, 'cannot convert to BigInt');\n default:\n return JS_ThrowTypeError(ctx, 'cannot convert to BigInt');\n }\n }\n}\n\nfunction js_bigint_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsUndefined(new_target)) return Q.JS_ThrowTypeErrorNotAConstructor(ctx, new_target);\n return JS_ToBigIntCtorFree(ctx, argv[0]);\n}\n\nfunction js_thisBigIntValue(ctx: JSContext, this_val: JSValue): JSValue {\n if (typeof this_val === 'bigint') return this_val;\n if (Q.JS_IsObject(this_val) && Q.JS_GetClassID(this_val) === JSClassID.BIG_INT) {\n if (typeof Q.JS_GetAnyOpaque(this_val) === 'bigint') return Q.JS_GetAnyOpaque(this_val);\n }\n return JS_ThrowTypeError(ctx, 'not a BigInt');\n}\n\n/* js_bigint_to_string1 */\nexport function js_bigint_to_string1(ctx: JSContext, val: bigint, radix: number): string {\n return val.toString(radix);\n}\n\nfunction js_bigint_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const val = js_thisBigIntValue(ctx, this_val);\n if (JS_IsException(val)) return val;\n let base: number;\n if (JS_IsUndefined(argv[0])) {\n base = 10;\n } else {\n base = js_get_radix(ctx, argv[0]);\n if (base < 0) return JS_EXCEPTION;\n }\n return js_bigint_to_string1(ctx, val as bigint, base);\n}\n\n/* not in quickjs.c (which has no BigInt.prototype.toLocaleString): same as toString() */\nfunction js_bigint_toLocaleString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const val = js_thisBigIntValue(ctx, this_val);\n if (JS_IsException(val)) return val;\n return js_bigint_to_string1(ctx, val as bigint, 10);\n}\n\nfunction js_bigint_valueOf(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return js_thisBigIntValue(ctx, this_val);\n}\n\nfunction js_bigint_asUintN(ctx: JSContext, this_val: JSValue, argv: JSValue[], asIntN: number): JSValue {\n const bits = JS_ToIndex(ctx, argv[0]);\n if (bits < 0) return JS_EXCEPTION;\n const a = JS_ToBigInt(ctx, argv[1]);\n if (JS_IsException(a)) return JS_EXCEPTION;\n if (bits === 0) return 0n;\n if (asIntN) return BigInt.asIntN(bits, a as bigint);\n return BigInt.asUintN(bits, a as bigint);\n}\n\nconst js_bigint_funcs = [\n JS_CFUNC_MAGIC_DEF('asUintN', 2, js_bigint_asUintN, 0),\n JS_CFUNC_MAGIC_DEF('asIntN', 2, js_bigint_asUintN, 1),\n];\n\nconst js_bigint_proto_funcs = [\n JS_CFUNC_DEF('toString', 0, js_bigint_toString),\n JS_CFUNC_DEF('valueOf', 0, js_bigint_valueOf),\n JS_CFUNC_DEF('toLocaleString', 0, js_bigint_toLocaleString),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'BigInt', JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicBigInt(ctx: JSContext): void {\n const proto = JS_NewObject(ctx) as JSObject;\n ctx.class_proto[JSClassID.BIG_INT] = proto;\n JS_SetPropertyFunctionList(ctx, proto, js_bigint_proto_funcs);\n const obj1 = JS_NewGlobalCConstructor(ctx, 'BigInt', js_bigint_constructor, 1, proto);\n JS_SetPropertyFunctionList(ctx, obj1, js_bigint_funcs);\n}\n"]}
@@ -1,3 +1,4 @@
1
1
  import { JSContext, JSValue } from '../quickjs.ts';
2
+ export declare function get_date_string(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue;
2
3
  export declare function JS_NewDate(ctx: JSContext, epoch_ms: number): JSValue;
3
4
  export declare function JS_AddIntrinsicDate(ctx: JSContext): void;
@@ -247,7 +247,7 @@ function fmt_year(y) {
247
247
  part: 1=date, 2=time 3=all
248
248
  XXX: should use a variant of strftime().
249
249
  */
250
- function get_date_string(ctx, this_val, argv, magic) {
250
+ export function get_date_string(ctx, this_val, argv, magic) {
251
251
  // _string(obj, fmt, part)
252
252
  const fields = new Array(9).fill(0);
253
253
  const fmt = (magic >> 4) & 0x0f;
@@ -376,18 +376,14 @@ function js_date_constructor(ctx, new_target, argv) {
376
376
  const fields = [0, 0, 1, 0, 0, 0, 0];
377
377
  if (n > 7)
378
378
  n = 7;
379
- let i;
380
- for (i = 0; i < n; i++) {
379
+ /* all the arguments are converted before checking them (7fb994c) */
380
+ for (let i = 0; i < n; i++) {
381
381
  const a = JS_ToFloat64(ctx, argv[i]);
382
382
  if (JS_IsException(a))
383
383
  return JS_EXCEPTION;
384
- if (!Number.isFinite(a))
385
- break;
386
- fields[i] = Math.trunc(a);
387
- if (i === 0 && fields[0] >= 0 && fields[0] < 100)
388
- fields[0] += 1900;
384
+ fields[i] = a;
389
385
  }
390
- val = (i === n) ? set_date_fields(fields, true) : NaN;
386
+ val = set_date_fields_checked(fields, true);
391
387
  }
392
388
  let rv = js_create_from_ctor(ctx, new_target, 10 /* JSClassID.DATE */);
393
389
  if (JS_IsException(rv))
@@ -411,13 +407,20 @@ function js_Date_UTC(ctx, this_val, argv) {
411
407
  const a = JS_ToFloat64(ctx, argv[i]);
412
408
  if (JS_IsException(a))
413
409
  return JS_EXCEPTION;
410
+ fields[i] = a;
411
+ }
412
+ return set_date_fields_checked(fields, false);
413
+ }
414
+ function set_date_fields_checked(fields, is_local) {
415
+ for (let i = 0; i < 7; i++) {
416
+ const a = fields[i];
414
417
  if (!Number.isFinite(a))
415
418
  return NaN;
416
419
  fields[i] = Math.trunc(a);
417
420
  if (i === 0 && fields[0] >= 0 && fields[0] < 100)
418
421
  fields[0] += 1900;
419
422
  }
420
- return set_date_fields(fields, false);
423
+ return set_date_fields(fields, is_local);
421
424
  }
422
425
  /* ---------------------------------------------------------------------
423
426
  Date string parsing
@@ -541,6 +544,9 @@ function string_get_tzoffset(s, tzp, strict) {
541
544
  return false;
542
545
  mm = r2.v;
543
546
  }
547
+ else if (strict) {
548
+ return false; /* [+-]HH is not accepted in strict mode */
549
+ }
544
550
  p = sub.p;
545
551
  }
546
552
  if (hh > 23 || mm > 59)
@@ -743,13 +749,21 @@ function js_date_parse_otherstring(sp, fields, pis_local) {
743
749
  fields[6] = rms.v;
744
750
  }
745
751
  has_time = true;
752
+ /* a time zone offset right after the time (0060876) */
753
+ const c1 = s.cur();
754
+ const rtz = { v: 0 };
755
+ if ((c1 === 43 || c1 === 45) && string_get_tzoffset(s, rtz, false)) {
756
+ fields[8] = rtz.v;
757
+ pis_local.v = false;
758
+ }
746
759
  }
747
760
  else {
748
- if (s.p - p_start > 2) {
761
+ /* a second year-like number is not a year (2161640) */
762
+ if (s.p - p_start > 2 && !has_year) {
749
763
  fields[0] = val;
750
764
  has_year = true;
751
765
  }
752
- else if (val < 1 || val > 31) {
766
+ else if ((val < 1 || val > 31) && !has_year) {
753
767
  fields[0] = val + (val < 100 ? 1900 : 0) + (val < 50 ? 100 : 0);
754
768
  has_year = true;
755
769
  }
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/builtins/date.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Date objects (port of the Date part of quickjs.c)\n *\n * The calendar computations (get_date_fields / set_date_fields / string\n * parsing) are ported from the C version; the host Date is only used to\n * obtain the current time and the local time zone offset.\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSSpecial, JSClassID, JSAtom, JS_EXCEPTION, JS_IsException, JS_IsUndefined,\n JS_IsObject, JS_IsFunction, JS_NewObject, js_create_from_ctor, JS_ThrowTypeError, JS_ThrowTypeErrorNotAnObject,\n JS_ThrowRangeError, JS_GetPropertyStr, JS_Call, JS_ToFloat64, JS_ToString, JS_ToObject, JS_ToPrimitive,\n JS_ValueToAtom, HINT_NUMBER, HINT_STRING, HINT_NONE, HINT_FORCE_ORDINARY, JS_ATOM_NULL, JS_ATOM_number,\n JS_ATOM_integer, JS_ATOM_string, JS_ATOM_default, JS_ATOM_Symbol_toPrimitive, JS_SetPropertyFunctionList,\n JS_NewGlobalCConstructor, JS_CFUNC_DEF, JS_CFUNC_MAGIC_DEF, JS_ALIAS_DEF,\n} from '../quickjs.ts';\n\n/* ---------------------------------------------------------------------\n helpers\n --------------------------------------------------------------------- */\n\n/* the C functions receive the real argument count: argv is not padded\n (missing arguments read as undefined) */\nfunction js_argc(ctx: JSContext, argv: JSValue[], fn: Function): number {\n return argv.length;\n}\n\nfunction math_mod(a: number, b: number): number {\n /* return positive modulo */\n const m = a % b;\n return m + (m < 0 ? b : 0);\n}\n\nfunction floor_div(a: number, b: number): number {\n /* integer division rounding toward -Infinity */\n const m = a % b;\n return (a - (m + (m < 0 ? b : 0))) / b;\n}\n\n/* OS dependent: return the local time zone offset in minutes (positive\n west of GMT) for the UTC time 'time' in ms */\nfunction getTimezoneOffset(time: number): number {\n const d = new Date(time);\n const off = d.getTimezoneOffset();\n if (Number.isNaN(off)) {\n /* out of the host range: use the offset of the clamped time */\n const t = Math.max(-8.64e15, Math.min(8.64e15, time));\n const off2 = new Date(t).getTimezoneOffset();\n return Number.isNaN(off2) ? 0 : off2;\n }\n return off;\n}\n\nfunction JS_ThisTimeValue(ctx: JSContext, this_val: JSValue): number | JSSpecial {\n if (Q.JS_IsObject(this_val)) {\n if (Q.JS_GetClassID(this_val) === JSClassID.DATE && typeof Q.JS_GetAnyOpaque(this_val) === 'number') return Q.JS_GetAnyOpaque(this_val);\n }\n return JS_ThrowTypeError(ctx, 'not a Date object') as JSSpecial;\n}\n\nfunction JS_SetThisTimeValue(ctx: JSContext, this_val: JSValue, v: number): JSValue {\n if (Q.JS_IsObject(this_val)) {\n if (Q.JS_GetClassID(this_val) === JSClassID.DATE) {\n Q.JS_SetOpaque(this_val, v);\n return v;\n }\n }\n return JS_ThrowTypeError(ctx, 'not a Date object');\n}\n\nfunction days_from_year(y: number): number {\n return 365 * (y - 1970) + floor_div(y - 1969, 4) - floor_div(y - 1901, 100) + floor_div(y - 1601, 400);\n}\n\nfunction days_in_year(y: number): number {\n return 365 + (y % 4 === 0 ? 1 : 0) - (y % 100 === 0 ? 1 : 0) + (y % 400 === 0 ? 1 : 0);\n}\n\n/* return the year, update days */\nfunction year_from_days(pdays: { days: number }): number {\n let d = pdays.days;\n let y = floor_div(d * 10000, 3652425) + 1970;\n /* the initial approximation is very good, so only a few\n iterations are necessary */\n let d1: number;\n for (;;) {\n d1 = d - days_from_year(y);\n if (d1 < 0) {\n y--;\n d1 += days_in_year(y);\n } else {\n const nd = days_in_year(y);\n if (d1 < nd) break;\n d1 -= nd;\n y++;\n }\n }\n pdays.days = d1;\n return y;\n}\n\nconst month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst month_names = 'JanFebMarAprMayJunJulAugSepOctNovDec';\nconst day_names = 'SunMonTueWedThuFriSat';\n\n/* fields: [year, month, day, hours, minutes, seconds, ms, weekday, tz]\n returns -1 if exception, 0 if NaN (and !force), 1 otherwise */\nfunction get_date_fields(ctx: JSContext, obj: JSValue, fields: number[], is_local: boolean, force: boolean): number {\n const dval = JS_ThisTimeValue(ctx, obj);\n if (JS_IsException(dval)) return -1;\n let d: number;\n let tz = 0;\n if (Number.isNaN(dval)) {\n if (!force) return 0; /* NaN */\n d = 0; /* initialize all fields to 0 */\n } else {\n d = dval as number; /* assuming -8.64e15 <= dval <= -8.64e15 */\n if (is_local) {\n tz = -getTimezoneOffset(d);\n d += tz * 60000;\n }\n }\n\n /* result is >= 0, we can use % */\n let h = math_mod(d, 86400000);\n const pdays = { days: (d - h) / 86400000 };\n const ms = h % 1000;\n h = (h - ms) / 1000;\n const s = h % 60;\n h = (h - s) / 60;\n const m = h % 60;\n h = (h - m) / 60;\n const wd = math_mod(pdays.days + 4, 7); /* week day */\n const y = year_from_days(pdays);\n\n let i: number;\n for (i = 0; i < 11; i++) {\n let md = month_days[i];\n if (i === 1) md += days_in_year(y) - 365;\n if (pdays.days < md) break;\n pdays.days -= md;\n }\n fields[0] = y;\n fields[1] = i;\n fields[2] = pdays.days + 1;\n fields[3] = h;\n fields[4] = m;\n fields[5] = s;\n fields[6] = ms;\n fields[7] = wd;\n fields[8] = tz;\n return 1;\n}\n\nfunction time_clip(t: number): number {\n if (t >= -8.64e15 && t <= 8.64e15) return Math.trunc(t) + 0; /* convert -0 to +0 */\n return NaN;\n}\n\n/* The spec mandates the use of 'double' and it specifies the order\n of the operations */\nfunction set_date_fields(fields: number[], is_local: boolean): number {\n /* emulate 21.4.1.15 MakeDay ( year, month, date ) */\n const y = fields[0];\n let m = fields[1];\n const dt = fields[2];\n const ym = y + Math.floor(m / 12);\n let mn = m % 12;\n if (mn < 0) mn += 12;\n if (ym < -271821 || ym > 275760) return NaN;\n\n const yi = ym;\n const mi = mn;\n let days = days_from_year(yi);\n for (let i = 0; i < mi; i++) {\n days += month_days[i];\n if (i === 1) days += days_in_year(yi) - 365;\n }\n const day = days + dt - 1;\n\n /* emulate 21.4.1.14 MakeTime ( hour, min, sec, ms ) */\n const h = fields[3];\n m = fields[4];\n const s = fields[5];\n const milli = fields[6];\n let time = h * 3600000;\n time += m * 60000;\n time += s * 1000;\n time += milli;\n\n /* emulate 21.4.1.16 MakeDate ( day, time ) */\n let tv = (day * 86400000) + time;\n if (!Number.isFinite(tv)) return NaN;\n\n /* adjust for local time and clip */\n if (is_local) {\n tv += getTimezoneOffset(tv) * 60000;\n }\n return time_clip(tv);\n}\n\nfunction get_date_field(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n // get_date_field(obj, n, is_local)\n const fields: number[] = new Array(9).fill(0);\n const is_local = (magic & 0x0f) !== 0;\n const n = (magic >> 4) & 0x0f;\n const res = get_date_fields(ctx, this_val, fields, is_local, false);\n if (res < 0) return JS_EXCEPTION;\n if (!res) return NaN;\n if (magic & 0x100) { // getYear\n fields[0] -= 1900;\n }\n return fields[n];\n}\n\nfunction set_date_field(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n // _field(obj, first_field, end_field, args, is_local)\n return set_date_field_argc(ctx, this_val, argv, js_argc(ctx, argv, set_date_field), magic);\n}\n\n/* set_date_field with an explicit argument count */\nfunction set_date_field_argc(ctx: JSContext, this_val: JSValue, argv: JSValue[], argc: number, magic: number): JSValue {\n const fields: number[] = new Array(9).fill(0);\n let d = NaN;\n const first_field = (magic >> 8) & 0x0f;\n const end_field = (magic >> 4) & 0x0f;\n const is_local = (magic & 0x0f) !== 0;\n\n let res = get_date_fields(ctx, this_val, fields, is_local, first_field === 0);\n if (res < 0) return JS_EXCEPTION;\n const res1 = res;\n\n // Argument coercion is observable and must be done unconditionally.\n const n = Math.min(argc, end_field - first_field);\n for (let i = 0; i < n; i++) {\n const a = JS_ToFloat64(ctx, argv[i]);\n if (JS_IsException(a)) return JS_EXCEPTION;\n if (!Number.isFinite(a as number)) res = 0;\n fields[first_field + i] = Math.trunc(a as number);\n }\n\n if (!res1) return NaN; /* thisTimeValue is NaN */\n\n if (res && argc > 0) d = set_date_fields(fields, is_local);\n\n return JS_SetThisTimeValue(ctx, this_val, d);\n}\n\nfunction pad(n: number, width: number): string {\n return String(n).padStart(width, '0');\n}\n\n/* %0*d with width 4 + (y < 0): the sign is included in the width */\nfunction fmt_year(y: number): string {\n if (y < 0) return '-' + pad(-y, 4);\n return pad(y, 4);\n}\n\n/* fmt:\n 0: toUTCString: \"Tue, 02 Jan 2018 23:04:46 GMT\"\n 1: toString: \"Wed Jan 03 2018 00:05:22 GMT+0100 (CET)\"\n 2: toISOString: \"2018-01-02T23:02:56.927Z\"\n 3: toLocaleString: \"1/2/2018, 11:40:40 PM\"\n part: 1=date, 2=time 3=all\n XXX: should use a variant of strftime().\n */\nfunction get_date_string(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n // _string(obj, fmt, part)\n const fields: number[] = new Array(9).fill(0);\n const fmt = (magic >> 4) & 0x0f;\n const part = magic & 0x0f;\n\n const res = get_date_fields(ctx, this_val, fields, (fmt & 1) !== 0, false);\n if (res < 0) return JS_EXCEPTION;\n if (!res) {\n if (fmt === 2) return JS_ThrowRangeError(ctx, 'Date value is NaN');\n return 'Invalid Date';\n }\n\n const y = fields[0];\n const mon = fields[1];\n const d = fields[2];\n const h = fields[3];\n const m = fields[4];\n const s = fields[5];\n const ms = fields[6];\n const wd = fields[7];\n let tz = fields[8];\n\n let buf = '';\n\n if (part & 1) { /* date part */\n switch (fmt) {\n case 0:\n buf += `${day_names.substring(wd * 3, wd * 3 + 3)}, ${pad(d, 2)} ${month_names.substring(mon * 3, mon * 3 + 3)} ${fmt_year(y)} `;\n break;\n case 1:\n buf += `${day_names.substring(wd * 3, wd * 3 + 3)} ${month_names.substring(mon * 3, mon * 3 + 3)} ${pad(d, 2)} ${fmt_year(y)}`;\n if (part === 3) buf += ' ';\n break;\n case 2:\n if (y >= 0 && y <= 9999) {\n buf += pad(y, 4);\n } else {\n buf += (y < 0 ? '-' : '+') + pad(Math.abs(y), 6);\n }\n buf += `-${pad(mon + 1, 2)}-${pad(d, 2)}T`;\n break;\n case 3:\n buf += `${pad(mon + 1, 2)}/${pad(d, 2)}/${fmt_year(y)}`;\n if (part === 3) buf += ', ';\n break;\n }\n }\n if (part & 2) { /* time part */\n switch (fmt) {\n case 0:\n buf += `${pad(h, 2)}:${pad(m, 2)}:${pad(s, 2)} GMT`;\n break;\n case 1:\n buf += `${pad(h, 2)}:${pad(m, 2)}:${pad(s, 2)} GMT`;\n if (tz < 0) {\n buf += '-';\n tz = -tz;\n } else {\n buf += '+';\n }\n /* tz is >= 0, can use % */\n buf += `${pad(Math.trunc(tz / 60), 2)}${pad(tz % 60, 2)}`;\n /* XXX: tack the time zone code? */\n break;\n case 2:\n buf += `${pad(h, 2)}:${pad(m, 2)}:${pad(s, 2)}.${pad(ms, 3)}Z`;\n break;\n case 3:\n buf += `${pad((h + 11) % 12 + 1, 2)}:${pad(m, 2)}:${pad(s, 2)} ${h < 12 ? 'A' : 'P'}M`;\n break;\n }\n }\n return buf;\n}\n\n/* OS dependent: return the UTC time in ms since 1970. */\nfunction date_now(): number {\n return Date.now();\n}\n\nfunction js_date_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n // Date(y, mon, d, h, m, s, ms)\n let argc = js_argc(ctx, argv, js_date_constructor);\n let val: number;\n\n if (JS_IsUndefined(new_target)) {\n /* invoked as function */\n argc = 0;\n }\n let n = argc;\n if (n === 0) {\n val = date_now();\n } else if (n === 1) {\n let has_val = false;\n val = NaN;\n if (Q.JS_IsObject(argv[0])) {\n const p = argv[0];\n if (Q.JS_GetClassID(p) === JSClassID.DATE && typeof Q.JS_GetAnyOpaque(p) === 'number') {\n val = time_clip(Q.JS_GetAnyOpaque(p));\n has_val = true;\n }\n }\n if (!has_val) {\n const v = JS_ToPrimitive(ctx, argv[0], HINT_NONE);\n if (JS_IsException(v)) return JS_EXCEPTION;\n if (typeof v === 'string') {\n const dv = js_Date_parse(ctx, undefined, [v]);\n if (JS_IsException(dv)) return JS_EXCEPTION;\n const r = JS_ToFloat64(ctx, dv);\n if (JS_IsException(r)) return JS_EXCEPTION;\n val = r as number;\n } else {\n const r = JS_ToFloat64(ctx, v);\n if (JS_IsException(r)) return JS_EXCEPTION;\n val = r as number;\n }\n val = time_clip(val);\n }\n } else {\n const fields = [0, 0, 1, 0, 0, 0, 0];\n if (n > 7) n = 7;\n let i: number;\n for (i = 0; i < n; i++) {\n const a = JS_ToFloat64(ctx, argv[i]);\n if (JS_IsException(a)) return JS_EXCEPTION;\n if (!Number.isFinite(a as number)) break;\n fields[i] = Math.trunc(a as number);\n if (i === 0 && fields[0] >= 0 && fields[0] < 100) fields[0] += 1900;\n }\n val = (i === n) ? set_date_fields(fields, true) : NaN;\n }\n let rv = js_create_from_ctor(ctx, new_target, JSClassID.DATE);\n if (JS_IsException(rv)) return rv;\n Q.JS_SetOpaque(rv, val);\n if (JS_IsUndefined(new_target)) {\n /* invoked as a function, return (new Date()).toString(); */\n rv = get_date_string(ctx, rv, [], 0x13);\n }\n return rv;\n}\n\nfunction js_Date_UTC(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // UTC(y, mon, d, h, m, s, ms)\n const fields = [0, 0, 1, 0, 0, 0, 0];\n let n = js_argc(ctx, argv, js_Date_UTC);\n if (n === 0) return NaN;\n if (n > 7) n = 7;\n for (let i = 0; i < n; i++) {\n const a = JS_ToFloat64(ctx, argv[i]);\n if (JS_IsException(a)) return JS_EXCEPTION;\n if (!Number.isFinite(a as number)) return NaN;\n fields[i] = Math.trunc(a as number);\n if (i === 0 && fields[0] >= 0 && fields[0] < 100) fields[0] += 1900;\n }\n return set_date_fields(fields, false);\n}\n\n/* ---------------------------------------------------------------------\n Date string parsing\n --------------------------------------------------------------------- */\n\n/* the string is converted to a NUL terminated byte array like in the C\n version: 'sp' has a trailing 0 and reads past the end return 0 */\nclass DateParser {\n sp: Uint8Array;\n p = 0;\n constructor(sp: Uint8Array) { this.sp = sp; }\n at(i: number): number { return i < this.sp.length ? this.sp[i] : 0; }\n cur(): number { return this.at(this.p); }\n}\n\nfunction string_skip_char(s: DateParser, c: number): boolean {\n if (s.cur() === c) {\n s.p += 1;\n return true;\n }\n return false;\n}\n\n/* skip spaces, update offset, return next char */\nfunction string_skip_spaces(s: DateParser): number {\n let c: number;\n while ((c = s.cur()) === 32) s.p += 1;\n return c;\n}\n\n/* skip dashes dots and commas */\nfunction string_skip_separators(s: DateParser): number {\n let c: number;\n while ((c = s.cur()) === 45 /* - */ || c === 47 /* / */ || c === 46 /* . */ || c === 44 /* , */) s.p += 1;\n return c;\n}\n\n/* skip a word, stop on spaces, digits and separators, update offset\n (strchr matches the NUL terminator, so the end of string stops too) */\nfunction string_skip_until(s: DateParser, stoplist: string): number {\n let c: number;\n while ((c = s.cur()) !== 0 && stoplist.indexOf(String.fromCharCode(c)) < 0) s.p += 1;\n return c;\n}\n\n/* parse a numeric field (max_digits = 0 -> no maximum) */\nfunction string_get_digits(s: DateParser, pval: { v: number }, min_digits: number, max_digits: number): boolean {\n let v = 0;\n let c: number;\n let p = s.p;\n const p_start = p;\n while ((c = s.at(p)) >= 48 && c <= 57) {\n /* arbitrary limit to 9 digits */\n if (v >= 100000000) return false;\n v = v * 10 + c - 48;\n p++;\n if (p - p_start === max_digits) break;\n }\n if (p - p_start < min_digits) return false;\n pval.v = v;\n s.p = p;\n return true;\n}\n\nfunction string_get_milliseconds(s: DateParser, pval: { v: number }): boolean {\n /* parse optional fractional part as milliseconds and truncate. */\n /* spec does not indicate which rounding should be used */\n let mul = 100, ms = 0, c: number;\n let p = s.p;\n c = s.at(p);\n if (c === 46 /* . */ || c === 44 /* , */) {\n p++;\n const p_start = p;\n while ((c = s.at(p)) >= 48 && c <= 57) {\n ms += (c - 48) * mul;\n mul = Math.trunc(mul / 10);\n p++;\n if (p - p_start === 9) break;\n }\n if (p > p_start) {\n /* only consume the separator if digits are present */\n pval.v = ms;\n s.p = p;\n }\n }\n return true;\n}\n\nfunction upper_ascii(c: number): number {\n return c >= 97 && c <= 122 ? c - 97 + 65 : c;\n}\n\nfunction string_get_tzoffset(s: DateParser, tzp: { v: number }, strict: boolean): boolean {\n let tz = 0, hh: number, mm: number;\n let p = s.p;\n const sgn = s.at(p++);\n if (sgn === 43 /* + */ || sgn === 45 /* - */) {\n const sub = new DateParser(s.sp);\n sub.p = p;\n let n = p;\n const r = { v: 0 };\n if (!string_get_digits(sub, r, 1, 0)) return false;\n p = sub.p;\n hh = r.v;\n n = p - n;\n if (strict && n !== 2 && n !== 4) return false;\n while (n > 4) {\n n -= 2;\n hh = Math.trunc(hh / 100);\n }\n if (n > 2) {\n mm = hh % 100;\n hh = Math.trunc(hh / 100);\n } else {\n mm = 0;\n sub.p = p;\n if (string_skip_char(sub, 58 /* : */)) { /* optional separator */\n const r2 = { v: 0 };\n if (!string_get_digits(sub, r2, 2, 2)) return false;\n mm = r2.v;\n }\n p = sub.p;\n }\n if (hh > 23 || mm > 59) return false;\n tz = hh * 60 + mm;\n if (sgn !== 43) tz = -tz;\n } else if (sgn !== 90 /* Z */) {\n return false;\n }\n s.p = p;\n tzp.v = tz;\n return true;\n}\n\nfunction string_match(s: DateParser, str: string): boolean {\n let p = s.p;\n for (let i = 0; i < str.length; i++) {\n if (upper_ascii(s.at(p)) !== upper_ascii(str.charCodeAt(i))) return false;\n p++;\n }\n s.p = p;\n return true;\n}\n\nfunction find_abbrev(s: DateParser, p: number, list: string, count: number): number {\n for (let n = 0; n < count; n++) {\n for (let i = 0; ; i++) {\n if (upper_ascii(s.at(p + i)) !== upper_ascii(list.charCodeAt(n * 3 + i))) break;\n if (i === 2) return n;\n }\n }\n return -1;\n}\n\nfunction string_get_month(s: DateParser, pval: { v: number }): boolean {\n const n = find_abbrev(s, s.p, month_names, 12);\n if (n < 0) return false;\n pval.v = n + 1;\n s.p += 3;\n return true;\n}\n\n/* parse toISOString format */\nfunction js_date_parse_isostring(sp: Uint8Array, fields: number[], pis_local: { v: boolean }): boolean {\n const s = new DateParser(sp);\n const r = { v: 0 };\n\n /* initialize fields to the beginning of the Epoch */\n for (let i = 0; i < 9; i++) fields[i] = (i === 2) ? 1 : 0;\n pis_local.v = false;\n\n /* year is either yyyy digits or [+-]yyyyyy */\n const sgn = s.cur();\n if (sgn === 45 /* - */ || sgn === 43 /* + */) {\n s.p++;\n if (!string_get_digits(s, r, 6, 6)) return false;\n fields[0] = r.v;\n if (sgn === 45) {\n if (fields[0] === 0) return false; // reject -000000\n fields[0] = -fields[0];\n }\n } else {\n if (!string_get_digits(s, r, 4, 4)) return false;\n fields[0] = r.v;\n }\n if (string_skip_char(s, 45 /* - */)) {\n if (!string_get_digits(s, r, 2, 2)) return false; /* month */\n fields[1] = r.v;\n if (fields[1] < 1) return false;\n fields[1] -= 1;\n if (string_skip_char(s, 45)) {\n if (!string_get_digits(s, r, 2, 2)) return false; /* day */\n fields[2] = r.v;\n if (fields[2] < 1) return false;\n }\n }\n if (string_skip_char(s, 84 /* T */)) {\n pis_local.v = true;\n if (!string_get_digits(s, r, 2, 2)) { /* hour */\n fields[3] = 100; // reject unconditionally\n return true;\n }\n fields[3] = r.v;\n if (!string_skip_char(s, 58 /* : */) || !string_get_digits(s, r, 2, 2)) { /* minute */\n fields[3] = 100; // reject unconditionally\n return true;\n }\n fields[4] = r.v;\n if (string_skip_char(s, 58)) {\n if (!string_get_digits(s, r, 2, 2)) return false; /* second */\n fields[5] = r.v;\n const rms = { v: fields[6] };\n string_get_milliseconds(s, rms);\n fields[6] = rms.v;\n }\n }\n /* parse the time zone offset if present: [+-]HH:mm or [+-]HHmm */\n if (s.cur()) {\n pis_local.v = false;\n const rtz = { v: 0 };\n if (!string_get_tzoffset(s, rtz, true)) return false;\n fields[8] = rtz.v;\n }\n /* error if extraneous characters */\n return s.cur() === 0;\n}\n\nconst js_tzabbr: [string, number][] = [\n ['GMT', 0], // Greenwich Mean Time\n ['UTC', 0], // Coordinated Universal Time\n ['UT', 0], // Universal Time\n ['Z', 0], // Zulu Time\n ['EDT', -4 * 60], // Eastern Daylight Time\n ['EST', -5 * 60], // Eastern Standard Time\n ['CDT', -5 * 60], // Central Daylight Time\n ['CST', -6 * 60], // Central Standard Time\n ['MDT', -6 * 60], // Mountain Daylight Time\n ['MST', -7 * 60], // Mountain Standard Time\n ['PDT', -7 * 60], // Pacific Daylight Time\n ['PST', -8 * 60], // Pacific Standard Time\n ['WET', +0 * 60], // Western European Time\n ['WEST', +1 * 60], // Western European Summer Time\n ['CET', +1 * 60], // Central European Time\n ['CEST', +2 * 60], // Central European Summer Time\n ['EET', +2 * 60], // Eastern European Time\n ['EEST', +3 * 60], // Eastern European Summer Time\n];\n\nfunction string_get_tzabbr(s: DateParser, offset: { v: number }): boolean {\n for (const [name, off] of js_tzabbr) {\n if (string_match(s, name)) {\n offset.v = off;\n return true;\n }\n }\n return false;\n}\n\n/* parse toString, toUTCString and other formats */\nfunction js_date_parse_otherstring(sp: Uint8Array, fields: number[], pis_local: { v: boolean }): boolean {\n const s = new DateParser(sp);\n let c: number;\n const num = [0, 0, 0];\n let has_year = false;\n let has_mon = false;\n let has_time = false;\n let num_index = 0;\n const r = { v: 0 };\n\n /* initialize fields to the beginning of 2001-01-01 */\n fields[0] = 2001;\n fields[1] = 1;\n fields[2] = 1;\n for (let i = 3; i < 9; i++) fields[i] = 0;\n pis_local.v = true;\n\n while (string_skip_spaces(s)) {\n const p_start = s.p;\n if ((c = s.cur()) === 43 /* + */ || c === 45 /* - */) {\n const rtz = { v: 0 };\n if (has_time && string_get_tzoffset(s, rtz, false)) {\n fields[8] = rtz.v;\n pis_local.v = false;\n } else {\n s.p++;\n if (string_get_digits(s, r, 1, 0)) {\n let val = r.v;\n if (c === 45) {\n if (val === 0) return false;\n val = -val;\n }\n fields[0] = val;\n has_year = true;\n }\n }\n } else if (string_get_digits(s, r, 1, 0)) {\n const val = r.v;\n if (string_skip_char(s, 58 /* : */)) {\n /* time part */\n fields[3] = val;\n if (!string_get_digits(s, r, 1, 2)) return false;\n fields[4] = r.v;\n if (string_skip_char(s, 58)) {\n if (!string_get_digits(s, r, 1, 2)) return false;\n fields[5] = r.v;\n const rms = { v: fields[6] };\n string_get_milliseconds(s, rms);\n fields[6] = rms.v;\n }\n has_time = true;\n } else {\n if (s.p - p_start > 2) {\n fields[0] = val;\n has_year = true;\n } else if (val < 1 || val > 31) {\n fields[0] = val + (val < 100 ? 1900 : 0) + (val < 50 ? 100 : 0);\n has_year = true;\n } else {\n if (num_index === 3) return false;\n num[num_index++] = val;\n }\n }\n } else if (string_get_month(s, r)) {\n fields[1] = r.v;\n has_mon = true;\n string_skip_until(s, '0123456789 -/(');\n } else if (has_time && string_match(s, 'PM')) {\n if (fields[3] < 12) fields[3] += 12;\n continue;\n } else if (has_time && string_match(s, 'AM')) {\n if (fields[3] === 12) fields[3] -= 12;\n continue;\n } else if (string_get_tzabbr(s, r)) {\n fields[8] = r.v;\n pis_local.v = false;\n continue;\n } else if (c === 40 /* ( */) { /* skip parenthesized phrase */\n let level = 0;\n while ((c = s.cur()) !== 0) {\n s.p++;\n level += (c === 40) ? 1 : 0;\n level -= (c === 41) ? 1 : 0;\n if (!level) break;\n }\n if (level > 0) return false;\n } else if (c === 41 /* ) */) {\n return false;\n } else {\n if ((has_year ? 1 : 0) + (has_mon ? 1 : 0) + (has_time ? 1 : 0) + num_index) return false;\n /* skip a word */\n string_skip_until(s, ' -/(');\n }\n string_skip_separators(s);\n }\n if (num_index + (has_year ? 1 : 0) + (has_mon ? 1 : 0) > 3) return false;\n\n switch (num_index) {\n case 0:\n if (!has_year) return false;\n break;\n case 1:\n if (has_mon) fields[2] = num[0];\n else fields[1] = num[0];\n break;\n case 2:\n if (has_year) {\n fields[1] = num[0];\n fields[2] = num[1];\n } else if (has_mon) {\n fields[0] = num[1] + (num[1] < 100 ? 1900 : 0) + (num[1] < 50 ? 100 : 0);\n fields[2] = num[0];\n } else {\n fields[1] = num[0];\n fields[2] = num[1];\n }\n break;\n case 3:\n fields[0] = num[2] + (num[2] < 100 ? 1900 : 0) + (num[2] < 50 ? 100 : 0);\n fields[1] = num[0];\n fields[2] = num[1];\n break;\n default:\n return false;\n }\n if (fields[1] < 1 || fields[2] < 1) return false;\n fields[1] -= 1;\n return true;\n}\n\nfunction js_Date_parse(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n let rv: JSValue = NaN;\n const s = JS_ToString(ctx, argv[0]);\n if (JS_IsException(s)) return JS_EXCEPTION;\n const str = s as string;\n /* convert the string as a byte array */\n const n = Math.min(str.length, 127);\n const buf = new Uint8Array(n + 1);\n for (let i = 0; i < n; i++) {\n let c = str.charCodeAt(i);\n if (c > 255) c = (c === 0x2212) ? 45 /* - */ : 120 /* x */;\n buf[i] = c;\n }\n buf[n] = 0;\n const fields: number[] = new Array(9).fill(0);\n const is_local = { v: false };\n if (js_date_parse_isostring(buf, fields, is_local) || js_date_parse_otherstring(buf, fields, is_local)) {\n const field_max = [0, 11, 31, 24, 59, 59];\n let valid = true;\n /* check field maximum values */\n for (let i = 1; i < 6; i++) {\n if (fields[i] > field_max[i]) valid = false;\n }\n /* special case 24:00:00.000 */\n if (fields[3] === 24 && (fields[4] | fields[5] | fields[6])) valid = false;\n if (valid) {\n const fields1: number[] = [];\n for (let i = 0; i < 7; i++) fields1[i] = fields[i];\n rv = set_date_fields(fields1, is_local.v) - fields[8] * 60000;\n }\n }\n return rv;\n}\n\nfunction js_Date_now(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // now()\n return date_now();\n}\n\nfunction js_date_Symbol_toPrimitive(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // Symbol_toPrimitive(hint)\n const obj = this_val;\n let hint: JSAtom = JS_ATOM_NULL;\n let hint_num: number;\n\n if (!JS_IsObject(obj)) return JS_ThrowTypeErrorNotAnObject(ctx);\n\n if (typeof argv[0] === 'string') {\n hint = JS_ValueToAtom(ctx, argv[0]);\n if (hint === JS_ATOM_NULL) return JS_EXCEPTION;\n }\n switch (hint) {\n case JS_ATOM_number:\n case JS_ATOM_integer:\n hint_num = HINT_NUMBER;\n break;\n case JS_ATOM_string:\n case JS_ATOM_default:\n hint_num = HINT_STRING;\n break;\n default:\n return JS_ThrowTypeError(ctx, 'invalid hint');\n }\n return JS_ToPrimitive(ctx, obj, hint_num | HINT_FORCE_ORDINARY);\n}\n\nfunction js_date_getTimezoneOffset(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // getTimezoneOffset()\n const v = JS_ThisTimeValue(ctx, this_val);\n if (JS_IsException(v)) return JS_EXCEPTION;\n if (Number.isNaN(v as number)) return NaN;\n /* assuming -8.64e15 <= v <= -8.64e15 */\n return getTimezoneOffset(Math.trunc(v as number));\n}\n\nfunction js_date_getTime(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // getTime()\n const v = JS_ThisTimeValue(ctx, this_val);\n if (JS_IsException(v)) return JS_EXCEPTION;\n return v;\n}\n\nfunction js_date_setTime(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // setTime(v)\n const tv = JS_ThisTimeValue(ctx, this_val);\n if (JS_IsException(tv)) return JS_EXCEPTION;\n const v = JS_ToFloat64(ctx, argv[0]);\n if (JS_IsException(v)) return JS_EXCEPTION;\n return JS_SetThisTimeValue(ctx, this_val, time_clip(v as number));\n}\n\nfunction js_date_setYear(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // setYear(y)\n const tv = JS_ThisTimeValue(ctx, this_val);\n if (JS_IsException(tv)) return JS_EXCEPTION;\n const r = JS_ToFloat64(ctx, argv[0]);\n if (JS_IsException(r)) return JS_EXCEPTION;\n let y = +(r as number);\n if (Number.isFinite(y)) {\n y = Math.trunc(y);\n if (y >= 0 && y < 100) y += 1900;\n }\n return set_date_field_argc(ctx, this_val, [y], 1, 0x011);\n}\n\nfunction js_date_toJSON(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // toJSON(key)\n const obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const tv = JS_ToPrimitive(ctx, obj, HINT_NUMBER);\n if (JS_IsException(tv)) return JS_EXCEPTION;\n if (typeof tv === 'number') {\n if (!Number.isFinite(tv)) return null;\n }\n const method = JS_GetPropertyStr(ctx, obj, 'toISOString');\n if (JS_IsException(method)) return JS_EXCEPTION;\n if (!JS_IsFunction(ctx, method)) {\n return JS_ThrowTypeError(ctx, 'object needs toISOString method');\n }\n return JS_Call(ctx, method, obj, []);\n}\n\nconst js_date_funcs = [\n JS_CFUNC_DEF('now', 0, js_Date_now),\n JS_CFUNC_DEF('parse', 1, js_Date_parse),\n JS_CFUNC_DEF('UTC', 7, js_Date_UTC),\n];\n\nconst js_date_proto_funcs = [\n JS_CFUNC_DEF('valueOf', 0, js_date_getTime),\n JS_CFUNC_MAGIC_DEF('toString', 0, get_date_string, 0x13),\n JS_CFUNC_DEF(JS_ATOM_Symbol_toPrimitive, 1, js_date_Symbol_toPrimitive),\n JS_CFUNC_MAGIC_DEF('toUTCString', 0, get_date_string, 0x03),\n JS_ALIAS_DEF('toGMTString', 'toUTCString'),\n JS_CFUNC_MAGIC_DEF('toISOString', 0, get_date_string, 0x23),\n JS_CFUNC_MAGIC_DEF('toDateString', 0, get_date_string, 0x11),\n JS_CFUNC_MAGIC_DEF('toTimeString', 0, get_date_string, 0x12),\n JS_CFUNC_MAGIC_DEF('toLocaleString', 0, get_date_string, 0x33),\n JS_CFUNC_MAGIC_DEF('toLocaleDateString', 0, get_date_string, 0x31),\n JS_CFUNC_MAGIC_DEF('toLocaleTimeString', 0, get_date_string, 0x32),\n JS_CFUNC_DEF('getTimezoneOffset', 0, js_date_getTimezoneOffset),\n JS_CFUNC_DEF('getTime', 0, js_date_getTime),\n JS_CFUNC_MAGIC_DEF('getYear', 0, get_date_field, 0x101),\n JS_CFUNC_MAGIC_DEF('getFullYear', 0, get_date_field, 0x01),\n JS_CFUNC_MAGIC_DEF('getUTCFullYear', 0, get_date_field, 0x00),\n JS_CFUNC_MAGIC_DEF('getMonth', 0, get_date_field, 0x11),\n JS_CFUNC_MAGIC_DEF('getUTCMonth', 0, get_date_field, 0x10),\n JS_CFUNC_MAGIC_DEF('getDate', 0, get_date_field, 0x21),\n JS_CFUNC_MAGIC_DEF('getUTCDate', 0, get_date_field, 0x20),\n JS_CFUNC_MAGIC_DEF('getHours', 0, get_date_field, 0x31),\n JS_CFUNC_MAGIC_DEF('getUTCHours', 0, get_date_field, 0x30),\n JS_CFUNC_MAGIC_DEF('getMinutes', 0, get_date_field, 0x41),\n JS_CFUNC_MAGIC_DEF('getUTCMinutes', 0, get_date_field, 0x40),\n JS_CFUNC_MAGIC_DEF('getSeconds', 0, get_date_field, 0x51),\n JS_CFUNC_MAGIC_DEF('getUTCSeconds', 0, get_date_field, 0x50),\n JS_CFUNC_MAGIC_DEF('getMilliseconds', 0, get_date_field, 0x61),\n JS_CFUNC_MAGIC_DEF('getUTCMilliseconds', 0, get_date_field, 0x60),\n JS_CFUNC_MAGIC_DEF('getDay', 0, get_date_field, 0x71),\n JS_CFUNC_MAGIC_DEF('getUTCDay', 0, get_date_field, 0x70),\n JS_CFUNC_DEF('setTime', 1, js_date_setTime),\n JS_CFUNC_MAGIC_DEF('setMilliseconds', 1, set_date_field, 0x671),\n JS_CFUNC_MAGIC_DEF('setUTCMilliseconds', 1, set_date_field, 0x670),\n JS_CFUNC_MAGIC_DEF('setSeconds', 2, set_date_field, 0x571),\n JS_CFUNC_MAGIC_DEF('setUTCSeconds', 2, set_date_field, 0x570),\n JS_CFUNC_MAGIC_DEF('setMinutes', 3, set_date_field, 0x471),\n JS_CFUNC_MAGIC_DEF('setUTCMinutes', 3, set_date_field, 0x470),\n JS_CFUNC_MAGIC_DEF('setHours', 4, set_date_field, 0x371),\n JS_CFUNC_MAGIC_DEF('setUTCHours', 4, set_date_field, 0x370),\n JS_CFUNC_MAGIC_DEF('setDate', 1, set_date_field, 0x231),\n JS_CFUNC_MAGIC_DEF('setUTCDate', 1, set_date_field, 0x230),\n JS_CFUNC_MAGIC_DEF('setMonth', 2, set_date_field, 0x131),\n JS_CFUNC_MAGIC_DEF('setUTCMonth', 2, set_date_field, 0x130),\n JS_CFUNC_DEF('setYear', 1, js_date_setYear),\n JS_CFUNC_MAGIC_DEF('setFullYear', 3, set_date_field, 0x031),\n JS_CFUNC_MAGIC_DEF('setUTCFullYear', 3, set_date_field, 0x030),\n JS_CFUNC_DEF('toJSON', 1, js_date_toJSON),\n];\n\nexport function JS_NewDate(ctx: JSContext, epoch_ms: number): JSValue {\n const obj = js_create_from_ctor(ctx, undefined, JSClassID.DATE);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n Q.JS_SetOpaque(obj, time_clip(epoch_ms));\n return obj;\n}\n\nexport function JS_AddIntrinsicDate(ctx: JSContext): void {\n /* Date */\n const proto = JS_NewObject(ctx) as JSObject;\n ctx.class_proto[JSClassID.DATE] = proto;\n JS_SetPropertyFunctionList(ctx, proto, js_date_proto_funcs);\n const obj = JS_NewGlobalCConstructor(ctx, 'Date', js_date_constructor, 7, proto);\n JS_SetPropertyFunctionList(ctx, obj, js_date_funcs);\n}\n"]}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/builtins/date.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Date objects (port of the Date part of quickjs.c)\n *\n * The calendar computations (get_date_fields / set_date_fields / string\n * parsing) are ported from the C version; the host Date is only used to\n * obtain the current time and the local time zone offset.\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSSpecial, JSClassID, JSAtom, JS_EXCEPTION, JS_IsException, JS_IsUndefined,\n JS_IsObject, JS_IsFunction, JS_NewObject, js_create_from_ctor, JS_ThrowTypeError, JS_ThrowTypeErrorNotAnObject,\n JS_ThrowRangeError, JS_GetPropertyStr, JS_Call, JS_ToFloat64, JS_ToString, JS_ToObject, JS_ToPrimitive,\n JS_ValueToAtom, HINT_NUMBER, HINT_STRING, HINT_NONE, HINT_FORCE_ORDINARY, JS_ATOM_NULL, JS_ATOM_number,\n JS_ATOM_integer, JS_ATOM_string, JS_ATOM_default, JS_ATOM_Symbol_toPrimitive, JS_SetPropertyFunctionList,\n JS_NewGlobalCConstructor, JS_CFUNC_DEF, JS_CFUNC_MAGIC_DEF, JS_ALIAS_DEF,\n} from '../quickjs.ts';\n\n/* ---------------------------------------------------------------------\n helpers\n --------------------------------------------------------------------- */\n\n/* the C functions receive the real argument count: argv is not padded\n (missing arguments read as undefined) */\nfunction js_argc(ctx: JSContext, argv: JSValue[], fn: Function): number {\n return argv.length;\n}\n\nfunction math_mod(a: number, b: number): number {\n /* return positive modulo */\n const m = a % b;\n return m + (m < 0 ? b : 0);\n}\n\nfunction floor_div(a: number, b: number): number {\n /* integer division rounding toward -Infinity */\n const m = a % b;\n return (a - (m + (m < 0 ? b : 0))) / b;\n}\n\n/* OS dependent: return the local time zone offset in minutes (positive\n west of GMT) for the UTC time 'time' in ms */\nfunction getTimezoneOffset(time: number): number {\n const d = new Date(time);\n const off = d.getTimezoneOffset();\n if (Number.isNaN(off)) {\n /* out of the host range: use the offset of the clamped time */\n const t = Math.max(-8.64e15, Math.min(8.64e15, time));\n const off2 = new Date(t).getTimezoneOffset();\n return Number.isNaN(off2) ? 0 : off2;\n }\n return off;\n}\n\nfunction JS_ThisTimeValue(ctx: JSContext, this_val: JSValue): number | JSSpecial {\n if (Q.JS_IsObject(this_val)) {\n if (Q.JS_GetClassID(this_val) === JSClassID.DATE && typeof Q.JS_GetAnyOpaque(this_val) === 'number') return Q.JS_GetAnyOpaque(this_val);\n }\n return JS_ThrowTypeError(ctx, 'not a Date object') as JSSpecial;\n}\n\nfunction JS_SetThisTimeValue(ctx: JSContext, this_val: JSValue, v: number): JSValue {\n if (Q.JS_IsObject(this_val)) {\n if (Q.JS_GetClassID(this_val) === JSClassID.DATE) {\n Q.JS_SetOpaque(this_val, v);\n return v;\n }\n }\n return JS_ThrowTypeError(ctx, 'not a Date object');\n}\n\nfunction days_from_year(y: number): number {\n return 365 * (y - 1970) + floor_div(y - 1969, 4) - floor_div(y - 1901, 100) + floor_div(y - 1601, 400);\n}\n\nfunction days_in_year(y: number): number {\n return 365 + (y % 4 === 0 ? 1 : 0) - (y % 100 === 0 ? 1 : 0) + (y % 400 === 0 ? 1 : 0);\n}\n\n/* return the year, update days */\nfunction year_from_days(pdays: { days: number }): number {\n let d = pdays.days;\n let y = floor_div(d * 10000, 3652425) + 1970;\n /* the initial approximation is very good, so only a few\n iterations are necessary */\n let d1: number;\n for (;;) {\n d1 = d - days_from_year(y);\n if (d1 < 0) {\n y--;\n d1 += days_in_year(y);\n } else {\n const nd = days_in_year(y);\n if (d1 < nd) break;\n d1 -= nd;\n y++;\n }\n }\n pdays.days = d1;\n return y;\n}\n\nconst month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst month_names = 'JanFebMarAprMayJunJulAugSepOctNovDec';\nconst day_names = 'SunMonTueWedThuFriSat';\n\n/* fields: [year, month, day, hours, minutes, seconds, ms, weekday, tz]\n returns -1 if exception, 0 if NaN (and !force), 1 otherwise */\nfunction get_date_fields(ctx: JSContext, obj: JSValue, fields: number[], is_local: boolean, force: boolean): number {\n const dval = JS_ThisTimeValue(ctx, obj);\n if (JS_IsException(dval)) return -1;\n let d: number;\n let tz = 0;\n if (Number.isNaN(dval)) {\n if (!force) return 0; /* NaN */\n d = 0; /* initialize all fields to 0 */\n } else {\n d = dval as number; /* assuming -8.64e15 <= dval <= -8.64e15 */\n if (is_local) {\n tz = -getTimezoneOffset(d);\n d += tz * 60000;\n }\n }\n\n /* result is >= 0, we can use % */\n let h = math_mod(d, 86400000);\n const pdays = { days: (d - h) / 86400000 };\n const ms = h % 1000;\n h = (h - ms) / 1000;\n const s = h % 60;\n h = (h - s) / 60;\n const m = h % 60;\n h = (h - m) / 60;\n const wd = math_mod(pdays.days + 4, 7); /* week day */\n const y = year_from_days(pdays);\n\n let i: number;\n for (i = 0; i < 11; i++) {\n let md = month_days[i];\n if (i === 1) md += days_in_year(y) - 365;\n if (pdays.days < md) break;\n pdays.days -= md;\n }\n fields[0] = y;\n fields[1] = i;\n fields[2] = pdays.days + 1;\n fields[3] = h;\n fields[4] = m;\n fields[5] = s;\n fields[6] = ms;\n fields[7] = wd;\n fields[8] = tz;\n return 1;\n}\n\nfunction time_clip(t: number): number {\n if (t >= -8.64e15 && t <= 8.64e15) return Math.trunc(t) + 0; /* convert -0 to +0 */\n return NaN;\n}\n\n/* The spec mandates the use of 'double' and it specifies the order\n of the operations */\nfunction set_date_fields(fields: number[], is_local: boolean): number {\n /* emulate 21.4.1.15 MakeDay ( year, month, date ) */\n const y = fields[0];\n let m = fields[1];\n const dt = fields[2];\n const ym = y + Math.floor(m / 12);\n let mn = m % 12;\n if (mn < 0) mn += 12;\n if (ym < -271821 || ym > 275760) return NaN;\n\n const yi = ym;\n const mi = mn;\n let days = days_from_year(yi);\n for (let i = 0; i < mi; i++) {\n days += month_days[i];\n if (i === 1) days += days_in_year(yi) - 365;\n }\n const day = days + dt - 1;\n\n /* emulate 21.4.1.14 MakeTime ( hour, min, sec, ms ) */\n const h = fields[3];\n m = fields[4];\n const s = fields[5];\n const milli = fields[6];\n let time = h * 3600000;\n time += m * 60000;\n time += s * 1000;\n time += milli;\n\n /* emulate 21.4.1.16 MakeDate ( day, time ) */\n let tv = (day * 86400000) + time;\n if (!Number.isFinite(tv)) return NaN;\n\n /* adjust for local time and clip */\n if (is_local) {\n tv += getTimezoneOffset(tv) * 60000;\n }\n return time_clip(tv);\n}\n\nfunction get_date_field(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n // get_date_field(obj, n, is_local)\n const fields: number[] = new Array(9).fill(0);\n const is_local = (magic & 0x0f) !== 0;\n const n = (magic >> 4) & 0x0f;\n const res = get_date_fields(ctx, this_val, fields, is_local, false);\n if (res < 0) return JS_EXCEPTION;\n if (!res) return NaN;\n if (magic & 0x100) { // getYear\n fields[0] -= 1900;\n }\n return fields[n];\n}\n\nfunction set_date_field(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n // _field(obj, first_field, end_field, args, is_local)\n return set_date_field_argc(ctx, this_val, argv, js_argc(ctx, argv, set_date_field), magic);\n}\n\n/* set_date_field with an explicit argument count */\nfunction set_date_field_argc(ctx: JSContext, this_val: JSValue, argv: JSValue[], argc: number, magic: number): JSValue {\n const fields: number[] = new Array(9).fill(0);\n let d = NaN;\n const first_field = (magic >> 8) & 0x0f;\n const end_field = (magic >> 4) & 0x0f;\n const is_local = (magic & 0x0f) !== 0;\n\n let res = get_date_fields(ctx, this_val, fields, is_local, first_field === 0);\n if (res < 0) return JS_EXCEPTION;\n const res1 = res;\n\n // Argument coercion is observable and must be done unconditionally.\n const n = Math.min(argc, end_field - first_field);\n for (let i = 0; i < n; i++) {\n const a = JS_ToFloat64(ctx, argv[i]);\n if (JS_IsException(a)) return JS_EXCEPTION;\n if (!Number.isFinite(a as number)) res = 0;\n fields[first_field + i] = Math.trunc(a as number);\n }\n\n if (!res1) return NaN; /* thisTimeValue is NaN */\n\n if (res && argc > 0) d = set_date_fields(fields, is_local);\n\n return JS_SetThisTimeValue(ctx, this_val, d);\n}\n\nfunction pad(n: number, width: number): string {\n return String(n).padStart(width, '0');\n}\n\n/* %0*d with width 4 + (y < 0): the sign is included in the width */\nfunction fmt_year(y: number): string {\n if (y < 0) return '-' + pad(-y, 4);\n return pad(y, 4);\n}\n\n/* fmt:\n 0: toUTCString: \"Tue, 02 Jan 2018 23:04:46 GMT\"\n 1: toString: \"Wed Jan 03 2018 00:05:22 GMT+0100 (CET)\"\n 2: toISOString: \"2018-01-02T23:02:56.927Z\"\n 3: toLocaleString: \"1/2/2018, 11:40:40 PM\"\n part: 1=date, 2=time 3=all\n XXX: should use a variant of strftime().\n */\nexport function get_date_string(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n // _string(obj, fmt, part)\n const fields: number[] = new Array(9).fill(0);\n const fmt = (magic >> 4) & 0x0f;\n const part = magic & 0x0f;\n\n const res = get_date_fields(ctx, this_val, fields, (fmt & 1) !== 0, false);\n if (res < 0) return JS_EXCEPTION;\n if (!res) {\n if (fmt === 2) return JS_ThrowRangeError(ctx, 'Date value is NaN');\n return 'Invalid Date';\n }\n\n const y = fields[0];\n const mon = fields[1];\n const d = fields[2];\n const h = fields[3];\n const m = fields[4];\n const s = fields[5];\n const ms = fields[6];\n const wd = fields[7];\n let tz = fields[8];\n\n let buf = '';\n\n if (part & 1) { /* date part */\n switch (fmt) {\n case 0:\n buf += `${day_names.substring(wd * 3, wd * 3 + 3)}, ${pad(d, 2)} ${month_names.substring(mon * 3, mon * 3 + 3)} ${fmt_year(y)} `;\n break;\n case 1:\n buf += `${day_names.substring(wd * 3, wd * 3 + 3)} ${month_names.substring(mon * 3, mon * 3 + 3)} ${pad(d, 2)} ${fmt_year(y)}`;\n if (part === 3) buf += ' ';\n break;\n case 2:\n if (y >= 0 && y <= 9999) {\n buf += pad(y, 4);\n } else {\n buf += (y < 0 ? '-' : '+') + pad(Math.abs(y), 6);\n }\n buf += `-${pad(mon + 1, 2)}-${pad(d, 2)}T`;\n break;\n case 3:\n buf += `${pad(mon + 1, 2)}/${pad(d, 2)}/${fmt_year(y)}`;\n if (part === 3) buf += ', ';\n break;\n }\n }\n if (part & 2) { /* time part */\n switch (fmt) {\n case 0:\n buf += `${pad(h, 2)}:${pad(m, 2)}:${pad(s, 2)} GMT`;\n break;\n case 1:\n buf += `${pad(h, 2)}:${pad(m, 2)}:${pad(s, 2)} GMT`;\n if (tz < 0) {\n buf += '-';\n tz = -tz;\n } else {\n buf += '+';\n }\n /* tz is >= 0, can use % */\n buf += `${pad(Math.trunc(tz / 60), 2)}${pad(tz % 60, 2)}`;\n /* XXX: tack the time zone code? */\n break;\n case 2:\n buf += `${pad(h, 2)}:${pad(m, 2)}:${pad(s, 2)}.${pad(ms, 3)}Z`;\n break;\n case 3:\n buf += `${pad((h + 11) % 12 + 1, 2)}:${pad(m, 2)}:${pad(s, 2)} ${h < 12 ? 'A' : 'P'}M`;\n break;\n }\n }\n return buf;\n}\n\n/* OS dependent: return the UTC time in ms since 1970. */\nfunction date_now(): number {\n return Date.now();\n}\n\nfunction js_date_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n // Date(y, mon, d, h, m, s, ms)\n let argc = js_argc(ctx, argv, js_date_constructor);\n let val: number;\n\n if (JS_IsUndefined(new_target)) {\n /* invoked as function */\n argc = 0;\n }\n let n = argc;\n if (n === 0) {\n val = date_now();\n } else if (n === 1) {\n let has_val = false;\n val = NaN;\n if (Q.JS_IsObject(argv[0])) {\n const p = argv[0];\n if (Q.JS_GetClassID(p) === JSClassID.DATE && typeof Q.JS_GetAnyOpaque(p) === 'number') {\n val = time_clip(Q.JS_GetAnyOpaque(p));\n has_val = true;\n }\n }\n if (!has_val) {\n const v = JS_ToPrimitive(ctx, argv[0], HINT_NONE);\n if (JS_IsException(v)) return JS_EXCEPTION;\n if (typeof v === 'string') {\n const dv = js_Date_parse(ctx, undefined, [v]);\n if (JS_IsException(dv)) return JS_EXCEPTION;\n const r = JS_ToFloat64(ctx, dv);\n if (JS_IsException(r)) return JS_EXCEPTION;\n val = r as number;\n } else {\n const r = JS_ToFloat64(ctx, v);\n if (JS_IsException(r)) return JS_EXCEPTION;\n val = r as number;\n }\n val = time_clip(val);\n }\n } else {\n const fields = [0, 0, 1, 0, 0, 0, 0];\n if (n > 7) n = 7;\n /* all the arguments are converted before checking them (7fb994c) */\n for (let i = 0; i < n; i++) {\n const a = JS_ToFloat64(ctx, argv[i]);\n if (JS_IsException(a)) return JS_EXCEPTION;\n fields[i] = a as number;\n }\n val = set_date_fields_checked(fields, true);\n }\n let rv = js_create_from_ctor(ctx, new_target, JSClassID.DATE);\n if (JS_IsException(rv)) return rv;\n Q.JS_SetOpaque(rv, val);\n if (JS_IsUndefined(new_target)) {\n /* invoked as a function, return (new Date()).toString(); */\n rv = get_date_string(ctx, rv, [], 0x13);\n }\n return rv;\n}\n\nfunction js_Date_UTC(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // UTC(y, mon, d, h, m, s, ms)\n const fields = [0, 0, 1, 0, 0, 0, 0];\n let n = js_argc(ctx, argv, js_Date_UTC);\n if (n === 0) return NaN;\n if (n > 7) n = 7;\n for (let i = 0; i < n; i++) {\n const a = JS_ToFloat64(ctx, argv[i]);\n if (JS_IsException(a)) return JS_EXCEPTION;\n fields[i] = a as number;\n }\n return set_date_fields_checked(fields, false);\n}\n\nfunction set_date_fields_checked(fields: number[], is_local: boolean): number {\n for (let i = 0; i < 7; i++) {\n const a = fields[i];\n if (!Number.isFinite(a)) return NaN;\n fields[i] = Math.trunc(a);\n if (i === 0 && fields[0] >= 0 && fields[0] < 100) fields[0] += 1900;\n }\n return set_date_fields(fields, is_local);\n}\n\n/* ---------------------------------------------------------------------\n Date string parsing\n --------------------------------------------------------------------- */\n\n/* the string is converted to a NUL terminated byte array like in the C\n version: 'sp' has a trailing 0 and reads past the end return 0 */\nclass DateParser {\n sp: Uint8Array;\n p = 0;\n constructor(sp: Uint8Array) { this.sp = sp; }\n at(i: number): number { return i < this.sp.length ? this.sp[i] : 0; }\n cur(): number { return this.at(this.p); }\n}\n\nfunction string_skip_char(s: DateParser, c: number): boolean {\n if (s.cur() === c) {\n s.p += 1;\n return true;\n }\n return false;\n}\n\n/* skip spaces, update offset, return next char */\nfunction string_skip_spaces(s: DateParser): number {\n let c: number;\n while ((c = s.cur()) === 32) s.p += 1;\n return c;\n}\n\n/* skip dashes dots and commas */\nfunction string_skip_separators(s: DateParser): number {\n let c: number;\n while ((c = s.cur()) === 45 /* - */ || c === 47 /* / */ || c === 46 /* . */ || c === 44 /* , */) s.p += 1;\n return c;\n}\n\n/* skip a word, stop on spaces, digits and separators, update offset\n (strchr matches the NUL terminator, so the end of string stops too) */\nfunction string_skip_until(s: DateParser, stoplist: string): number {\n let c: number;\n while ((c = s.cur()) !== 0 && stoplist.indexOf(String.fromCharCode(c)) < 0) s.p += 1;\n return c;\n}\n\n/* parse a numeric field (max_digits = 0 -> no maximum) */\nfunction string_get_digits(s: DateParser, pval: { v: number }, min_digits: number, max_digits: number): boolean {\n let v = 0;\n let c: number;\n let p = s.p;\n const p_start = p;\n while ((c = s.at(p)) >= 48 && c <= 57) {\n /* arbitrary limit to 9 digits */\n if (v >= 100000000) return false;\n v = v * 10 + c - 48;\n p++;\n if (p - p_start === max_digits) break;\n }\n if (p - p_start < min_digits) return false;\n pval.v = v;\n s.p = p;\n return true;\n}\n\nfunction string_get_milliseconds(s: DateParser, pval: { v: number }): boolean {\n /* parse optional fractional part as milliseconds and truncate. */\n /* spec does not indicate which rounding should be used */\n let mul = 100, ms = 0, c: number;\n let p = s.p;\n c = s.at(p);\n if (c === 46 /* . */ || c === 44 /* , */) {\n p++;\n const p_start = p;\n while ((c = s.at(p)) >= 48 && c <= 57) {\n ms += (c - 48) * mul;\n mul = Math.trunc(mul / 10);\n p++;\n if (p - p_start === 9) break;\n }\n if (p > p_start) {\n /* only consume the separator if digits are present */\n pval.v = ms;\n s.p = p;\n }\n }\n return true;\n}\n\nfunction upper_ascii(c: number): number {\n return c >= 97 && c <= 122 ? c - 97 + 65 : c;\n}\n\nfunction string_get_tzoffset(s: DateParser, tzp: { v: number }, strict: boolean): boolean {\n let tz = 0, hh: number, mm: number;\n let p = s.p;\n const sgn = s.at(p++);\n if (sgn === 43 /* + */ || sgn === 45 /* - */) {\n const sub = new DateParser(s.sp);\n sub.p = p;\n let n = p;\n const r = { v: 0 };\n if (!string_get_digits(sub, r, 1, 0)) return false;\n p = sub.p;\n hh = r.v;\n n = p - n;\n if (strict && n !== 2 && n !== 4) return false;\n while (n > 4) {\n n -= 2;\n hh = Math.trunc(hh / 100);\n }\n if (n > 2) {\n mm = hh % 100;\n hh = Math.trunc(hh / 100);\n } else {\n mm = 0;\n sub.p = p;\n if (string_skip_char(sub, 58 /* : */)) { /* optional separator */\n const r2 = { v: 0 };\n if (!string_get_digits(sub, r2, 2, 2)) return false;\n mm = r2.v;\n } else if (strict) {\n return false; /* [+-]HH is not accepted in strict mode */\n }\n p = sub.p;\n }\n if (hh > 23 || mm > 59) return false;\n tz = hh * 60 + mm;\n if (sgn !== 43) tz = -tz;\n } else if (sgn !== 90 /* Z */) {\n return false;\n }\n s.p = p;\n tzp.v = tz;\n return true;\n}\n\nfunction string_match(s: DateParser, str: string): boolean {\n let p = s.p;\n for (let i = 0; i < str.length; i++) {\n if (upper_ascii(s.at(p)) !== upper_ascii(str.charCodeAt(i))) return false;\n p++;\n }\n s.p = p;\n return true;\n}\n\nfunction find_abbrev(s: DateParser, p: number, list: string, count: number): number {\n for (let n = 0; n < count; n++) {\n for (let i = 0; ; i++) {\n if (upper_ascii(s.at(p + i)) !== upper_ascii(list.charCodeAt(n * 3 + i))) break;\n if (i === 2) return n;\n }\n }\n return -1;\n}\n\nfunction string_get_month(s: DateParser, pval: { v: number }): boolean {\n const n = find_abbrev(s, s.p, month_names, 12);\n if (n < 0) return false;\n pval.v = n + 1;\n s.p += 3;\n return true;\n}\n\n/* parse toISOString format */\nfunction js_date_parse_isostring(sp: Uint8Array, fields: number[], pis_local: { v: boolean }): boolean {\n const s = new DateParser(sp);\n const r = { v: 0 };\n\n /* initialize fields to the beginning of the Epoch */\n for (let i = 0; i < 9; i++) fields[i] = (i === 2) ? 1 : 0;\n pis_local.v = false;\n\n /* year is either yyyy digits or [+-]yyyyyy */\n const sgn = s.cur();\n if (sgn === 45 /* - */ || sgn === 43 /* + */) {\n s.p++;\n if (!string_get_digits(s, r, 6, 6)) return false;\n fields[0] = r.v;\n if (sgn === 45) {\n if (fields[0] === 0) return false; // reject -000000\n fields[0] = -fields[0];\n }\n } else {\n if (!string_get_digits(s, r, 4, 4)) return false;\n fields[0] = r.v;\n }\n if (string_skip_char(s, 45 /* - */)) {\n if (!string_get_digits(s, r, 2, 2)) return false; /* month */\n fields[1] = r.v;\n if (fields[1] < 1) return false;\n fields[1] -= 1;\n if (string_skip_char(s, 45)) {\n if (!string_get_digits(s, r, 2, 2)) return false; /* day */\n fields[2] = r.v;\n if (fields[2] < 1) return false;\n }\n }\n if (string_skip_char(s, 84 /* T */)) {\n pis_local.v = true;\n if (!string_get_digits(s, r, 2, 2)) { /* hour */\n fields[3] = 100; // reject unconditionally\n return true;\n }\n fields[3] = r.v;\n if (!string_skip_char(s, 58 /* : */) || !string_get_digits(s, r, 2, 2)) { /* minute */\n fields[3] = 100; // reject unconditionally\n return true;\n }\n fields[4] = r.v;\n if (string_skip_char(s, 58)) {\n if (!string_get_digits(s, r, 2, 2)) return false; /* second */\n fields[5] = r.v;\n const rms = { v: fields[6] };\n string_get_milliseconds(s, rms);\n fields[6] = rms.v;\n }\n }\n /* parse the time zone offset if present: [+-]HH:mm or [+-]HHmm */\n if (s.cur()) {\n pis_local.v = false;\n const rtz = { v: 0 };\n if (!string_get_tzoffset(s, rtz, true)) return false;\n fields[8] = rtz.v;\n }\n /* error if extraneous characters */\n return s.cur() === 0;\n}\n\nconst js_tzabbr: [string, number][] = [\n ['GMT', 0], // Greenwich Mean Time\n ['UTC', 0], // Coordinated Universal Time\n ['UT', 0], // Universal Time\n ['Z', 0], // Zulu Time\n ['EDT', -4 * 60], // Eastern Daylight Time\n ['EST', -5 * 60], // Eastern Standard Time\n ['CDT', -5 * 60], // Central Daylight Time\n ['CST', -6 * 60], // Central Standard Time\n ['MDT', -6 * 60], // Mountain Daylight Time\n ['MST', -7 * 60], // Mountain Standard Time\n ['PDT', -7 * 60], // Pacific Daylight Time\n ['PST', -8 * 60], // Pacific Standard Time\n ['WET', +0 * 60], // Western European Time\n ['WEST', +1 * 60], // Western European Summer Time\n ['CET', +1 * 60], // Central European Time\n ['CEST', +2 * 60], // Central European Summer Time\n ['EET', +2 * 60], // Eastern European Time\n ['EEST', +3 * 60], // Eastern European Summer Time\n];\n\nfunction string_get_tzabbr(s: DateParser, offset: { v: number }): boolean {\n for (const [name, off] of js_tzabbr) {\n if (string_match(s, name)) {\n offset.v = off;\n return true;\n }\n }\n return false;\n}\n\n/* parse toString, toUTCString and other formats */\nfunction js_date_parse_otherstring(sp: Uint8Array, fields: number[], pis_local: { v: boolean }): boolean {\n const s = new DateParser(sp);\n let c: number;\n const num = [0, 0, 0];\n let has_year = false;\n let has_mon = false;\n let has_time = false;\n let num_index = 0;\n const r = { v: 0 };\n\n /* initialize fields to the beginning of 2001-01-01 */\n fields[0] = 2001;\n fields[1] = 1;\n fields[2] = 1;\n for (let i = 3; i < 9; i++) fields[i] = 0;\n pis_local.v = true;\n\n while (string_skip_spaces(s)) {\n const p_start = s.p;\n if ((c = s.cur()) === 43 /* + */ || c === 45 /* - */) {\n const rtz = { v: 0 };\n if (has_time && string_get_tzoffset(s, rtz, false)) {\n fields[8] = rtz.v;\n pis_local.v = false;\n } else {\n s.p++;\n if (string_get_digits(s, r, 1, 0)) {\n let val = r.v;\n if (c === 45) {\n if (val === 0) return false;\n val = -val;\n }\n fields[0] = val;\n has_year = true;\n }\n }\n } else if (string_get_digits(s, r, 1, 0)) {\n const val = r.v;\n if (string_skip_char(s, 58 /* : */)) {\n /* time part */\n fields[3] = val;\n if (!string_get_digits(s, r, 1, 2)) return false;\n fields[4] = r.v;\n if (string_skip_char(s, 58)) {\n if (!string_get_digits(s, r, 1, 2)) return false;\n fields[5] = r.v;\n const rms = { v: fields[6] };\n string_get_milliseconds(s, rms);\n fields[6] = rms.v;\n }\n has_time = true;\n /* a time zone offset right after the time (0060876) */\n const c1 = s.cur();\n const rtz = { v: 0 };\n if ((c1 === 43 || c1 === 45) && string_get_tzoffset(s, rtz, false)) {\n fields[8] = rtz.v;\n pis_local.v = false;\n }\n } else {\n /* a second year-like number is not a year (2161640) */\n if (s.p - p_start > 2 && !has_year) {\n fields[0] = val;\n has_year = true;\n } else if ((val < 1 || val > 31) && !has_year) {\n fields[0] = val + (val < 100 ? 1900 : 0) + (val < 50 ? 100 : 0);\n has_year = true;\n } else {\n if (num_index === 3) return false;\n num[num_index++] = val;\n }\n }\n } else if (string_get_month(s, r)) {\n fields[1] = r.v;\n has_mon = true;\n string_skip_until(s, '0123456789 -/(');\n } else if (has_time && string_match(s, 'PM')) {\n if (fields[3] < 12) fields[3] += 12;\n continue;\n } else if (has_time && string_match(s, 'AM')) {\n if (fields[3] === 12) fields[3] -= 12;\n continue;\n } else if (string_get_tzabbr(s, r)) {\n fields[8] = r.v;\n pis_local.v = false;\n continue;\n } else if (c === 40 /* ( */) { /* skip parenthesized phrase */\n let level = 0;\n while ((c = s.cur()) !== 0) {\n s.p++;\n level += (c === 40) ? 1 : 0;\n level -= (c === 41) ? 1 : 0;\n if (!level) break;\n }\n if (level > 0) return false;\n } else if (c === 41 /* ) */) {\n return false;\n } else {\n if ((has_year ? 1 : 0) + (has_mon ? 1 : 0) + (has_time ? 1 : 0) + num_index) return false;\n /* skip a word */\n string_skip_until(s, ' -/(');\n }\n string_skip_separators(s);\n }\n if (num_index + (has_year ? 1 : 0) + (has_mon ? 1 : 0) > 3) return false;\n\n switch (num_index) {\n case 0:\n if (!has_year) return false;\n break;\n case 1:\n if (has_mon) fields[2] = num[0];\n else fields[1] = num[0];\n break;\n case 2:\n if (has_year) {\n fields[1] = num[0];\n fields[2] = num[1];\n } else if (has_mon) {\n fields[0] = num[1] + (num[1] < 100 ? 1900 : 0) + (num[1] < 50 ? 100 : 0);\n fields[2] = num[0];\n } else {\n fields[1] = num[0];\n fields[2] = num[1];\n }\n break;\n case 3:\n fields[0] = num[2] + (num[2] < 100 ? 1900 : 0) + (num[2] < 50 ? 100 : 0);\n fields[1] = num[0];\n fields[2] = num[1];\n break;\n default:\n return false;\n }\n if (fields[1] < 1 || fields[2] < 1) return false;\n fields[1] -= 1;\n return true;\n}\n\nfunction js_Date_parse(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n let rv: JSValue = NaN;\n const s = JS_ToString(ctx, argv[0]);\n if (JS_IsException(s)) return JS_EXCEPTION;\n const str = s as string;\n /* convert the string as a byte array */\n const n = Math.min(str.length, 127);\n const buf = new Uint8Array(n + 1);\n for (let i = 0; i < n; i++) {\n let c = str.charCodeAt(i);\n if (c > 255) c = (c === 0x2212) ? 45 /* - */ : 120 /* x */;\n buf[i] = c;\n }\n buf[n] = 0;\n const fields: number[] = new Array(9).fill(0);\n const is_local = { v: false };\n if (js_date_parse_isostring(buf, fields, is_local) || js_date_parse_otherstring(buf, fields, is_local)) {\n const field_max = [0, 11, 31, 24, 59, 59];\n let valid = true;\n /* check field maximum values */\n for (let i = 1; i < 6; i++) {\n if (fields[i] > field_max[i]) valid = false;\n }\n /* special case 24:00:00.000 */\n if (fields[3] === 24 && (fields[4] | fields[5] | fields[6])) valid = false;\n if (valid) {\n const fields1: number[] = [];\n for (let i = 0; i < 7; i++) fields1[i] = fields[i];\n rv = set_date_fields(fields1, is_local.v) - fields[8] * 60000;\n }\n }\n return rv;\n}\n\nfunction js_Date_now(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // now()\n return date_now();\n}\n\nfunction js_date_Symbol_toPrimitive(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // Symbol_toPrimitive(hint)\n const obj = this_val;\n let hint: JSAtom = JS_ATOM_NULL;\n let hint_num: number;\n\n if (!JS_IsObject(obj)) return JS_ThrowTypeErrorNotAnObject(ctx);\n\n if (typeof argv[0] === 'string') {\n hint = JS_ValueToAtom(ctx, argv[0]);\n if (hint === JS_ATOM_NULL) return JS_EXCEPTION;\n }\n switch (hint) {\n case JS_ATOM_number:\n case JS_ATOM_integer:\n hint_num = HINT_NUMBER;\n break;\n case JS_ATOM_string:\n case JS_ATOM_default:\n hint_num = HINT_STRING;\n break;\n default:\n return JS_ThrowTypeError(ctx, 'invalid hint');\n }\n return JS_ToPrimitive(ctx, obj, hint_num | HINT_FORCE_ORDINARY);\n}\n\nfunction js_date_getTimezoneOffset(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // getTimezoneOffset()\n const v = JS_ThisTimeValue(ctx, this_val);\n if (JS_IsException(v)) return JS_EXCEPTION;\n if (Number.isNaN(v as number)) return NaN;\n /* assuming -8.64e15 <= v <= -8.64e15 */\n return getTimezoneOffset(Math.trunc(v as number));\n}\n\nfunction js_date_getTime(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // getTime()\n const v = JS_ThisTimeValue(ctx, this_val);\n if (JS_IsException(v)) return JS_EXCEPTION;\n return v;\n}\n\nfunction js_date_setTime(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // setTime(v)\n const tv = JS_ThisTimeValue(ctx, this_val);\n if (JS_IsException(tv)) return JS_EXCEPTION;\n const v = JS_ToFloat64(ctx, argv[0]);\n if (JS_IsException(v)) return JS_EXCEPTION;\n return JS_SetThisTimeValue(ctx, this_val, time_clip(v as number));\n}\n\nfunction js_date_setYear(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // setYear(y)\n const tv = JS_ThisTimeValue(ctx, this_val);\n if (JS_IsException(tv)) return JS_EXCEPTION;\n const r = JS_ToFloat64(ctx, argv[0]);\n if (JS_IsException(r)) return JS_EXCEPTION;\n let y = +(r as number);\n if (Number.isFinite(y)) {\n y = Math.trunc(y);\n if (y >= 0 && y < 100) y += 1900;\n }\n return set_date_field_argc(ctx, this_val, [y], 1, 0x011);\n}\n\nfunction js_date_toJSON(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // toJSON(key)\n const obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const tv = JS_ToPrimitive(ctx, obj, HINT_NUMBER);\n if (JS_IsException(tv)) return JS_EXCEPTION;\n if (typeof tv === 'number') {\n if (!Number.isFinite(tv)) return null;\n }\n const method = JS_GetPropertyStr(ctx, obj, 'toISOString');\n if (JS_IsException(method)) return JS_EXCEPTION;\n if (!JS_IsFunction(ctx, method)) {\n return JS_ThrowTypeError(ctx, 'object needs toISOString method');\n }\n return JS_Call(ctx, method, obj, []);\n}\n\nconst js_date_funcs = [\n JS_CFUNC_DEF('now', 0, js_Date_now),\n JS_CFUNC_DEF('parse', 1, js_Date_parse),\n JS_CFUNC_DEF('UTC', 7, js_Date_UTC),\n];\n\nconst js_date_proto_funcs = [\n JS_CFUNC_DEF('valueOf', 0, js_date_getTime),\n JS_CFUNC_MAGIC_DEF('toString', 0, get_date_string, 0x13),\n JS_CFUNC_DEF(JS_ATOM_Symbol_toPrimitive, 1, js_date_Symbol_toPrimitive),\n JS_CFUNC_MAGIC_DEF('toUTCString', 0, get_date_string, 0x03),\n JS_ALIAS_DEF('toGMTString', 'toUTCString'),\n JS_CFUNC_MAGIC_DEF('toISOString', 0, get_date_string, 0x23),\n JS_CFUNC_MAGIC_DEF('toDateString', 0, get_date_string, 0x11),\n JS_CFUNC_MAGIC_DEF('toTimeString', 0, get_date_string, 0x12),\n JS_CFUNC_MAGIC_DEF('toLocaleString', 0, get_date_string, 0x33),\n JS_CFUNC_MAGIC_DEF('toLocaleDateString', 0, get_date_string, 0x31),\n JS_CFUNC_MAGIC_DEF('toLocaleTimeString', 0, get_date_string, 0x32),\n JS_CFUNC_DEF('getTimezoneOffset', 0, js_date_getTimezoneOffset),\n JS_CFUNC_DEF('getTime', 0, js_date_getTime),\n JS_CFUNC_MAGIC_DEF('getYear', 0, get_date_field, 0x101),\n JS_CFUNC_MAGIC_DEF('getFullYear', 0, get_date_field, 0x01),\n JS_CFUNC_MAGIC_DEF('getUTCFullYear', 0, get_date_field, 0x00),\n JS_CFUNC_MAGIC_DEF('getMonth', 0, get_date_field, 0x11),\n JS_CFUNC_MAGIC_DEF('getUTCMonth', 0, get_date_field, 0x10),\n JS_CFUNC_MAGIC_DEF('getDate', 0, get_date_field, 0x21),\n JS_CFUNC_MAGIC_DEF('getUTCDate', 0, get_date_field, 0x20),\n JS_CFUNC_MAGIC_DEF('getHours', 0, get_date_field, 0x31),\n JS_CFUNC_MAGIC_DEF('getUTCHours', 0, get_date_field, 0x30),\n JS_CFUNC_MAGIC_DEF('getMinutes', 0, get_date_field, 0x41),\n JS_CFUNC_MAGIC_DEF('getUTCMinutes', 0, get_date_field, 0x40),\n JS_CFUNC_MAGIC_DEF('getSeconds', 0, get_date_field, 0x51),\n JS_CFUNC_MAGIC_DEF('getUTCSeconds', 0, get_date_field, 0x50),\n JS_CFUNC_MAGIC_DEF('getMilliseconds', 0, get_date_field, 0x61),\n JS_CFUNC_MAGIC_DEF('getUTCMilliseconds', 0, get_date_field, 0x60),\n JS_CFUNC_MAGIC_DEF('getDay', 0, get_date_field, 0x71),\n JS_CFUNC_MAGIC_DEF('getUTCDay', 0, get_date_field, 0x70),\n JS_CFUNC_DEF('setTime', 1, js_date_setTime),\n JS_CFUNC_MAGIC_DEF('setMilliseconds', 1, set_date_field, 0x671),\n JS_CFUNC_MAGIC_DEF('setUTCMilliseconds', 1, set_date_field, 0x670),\n JS_CFUNC_MAGIC_DEF('setSeconds', 2, set_date_field, 0x571),\n JS_CFUNC_MAGIC_DEF('setUTCSeconds', 2, set_date_field, 0x570),\n JS_CFUNC_MAGIC_DEF('setMinutes', 3, set_date_field, 0x471),\n JS_CFUNC_MAGIC_DEF('setUTCMinutes', 3, set_date_field, 0x470),\n JS_CFUNC_MAGIC_DEF('setHours', 4, set_date_field, 0x371),\n JS_CFUNC_MAGIC_DEF('setUTCHours', 4, set_date_field, 0x370),\n JS_CFUNC_MAGIC_DEF('setDate', 1, set_date_field, 0x231),\n JS_CFUNC_MAGIC_DEF('setUTCDate', 1, set_date_field, 0x230),\n JS_CFUNC_MAGIC_DEF('setMonth', 2, set_date_field, 0x131),\n JS_CFUNC_MAGIC_DEF('setUTCMonth', 2, set_date_field, 0x130),\n JS_CFUNC_DEF('setYear', 1, js_date_setYear),\n JS_CFUNC_MAGIC_DEF('setFullYear', 3, set_date_field, 0x031),\n JS_CFUNC_MAGIC_DEF('setUTCFullYear', 3, set_date_field, 0x030),\n JS_CFUNC_DEF('toJSON', 1, js_date_toJSON),\n];\n\nexport function JS_NewDate(ctx: JSContext, epoch_ms: number): JSValue {\n const obj = js_create_from_ctor(ctx, undefined, JSClassID.DATE);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n Q.JS_SetOpaque(obj, time_clip(epoch_ms));\n return obj;\n}\n\nexport function JS_AddIntrinsicDate(ctx: JSContext): void {\n /* Date */\n const proto = JS_NewObject(ctx) as JSObject;\n ctx.class_proto[JSClassID.DATE] = proto;\n JS_SetPropertyFunctionList(ctx, proto, js_date_proto_funcs);\n const obj = JS_NewGlobalCConstructor(ctx, 'Date', js_date_constructor, 7, proto);\n JS_SetPropertyFunctionList(ctx, obj, js_date_funcs);\n}\n"]}
@@ -1,3 +1,7 @@
1
+ /*
2
+ * Error objects (port of the Error part of quickjs.c)
3
+ */
4
+ import * as Q from "../quickjs.js";
1
5
  import { JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsObject, JS_NewObjectProtoClass, JS_NewObjectProto, JS_NewCFunction3, JS_NewCFunctionMagic, JS_DefinePropertyValue, JS_DefinePropertyValueStr, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_GetProperty, JS_ToString, JS_ThrowTypeErrorNotAnObject, JS_HasProperty, JS_ATOM_message, JS_ATOM_name, JS_ATOM_cause, JS_ATOM_errors, JS_ATOM_prototype, JS_GetIterator, JS_IteratorNext, JS_NewArrayFrom, build_backtrace, JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_PROP_STRING_DEF, JS_CGETSET_DEF, JS_SetConstructor2, JS_NewAtom, JS_ToInt32Sat, JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL, } from "../quickjs.js";
2
6
  const native_error_name = [
3
7
  'EvalError', 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError', 'InternalError', 'AggregateError',
@@ -121,6 +125,10 @@ function js_error_set_stackTraceLimit(ctx, this_val, value) {
121
125
  ctx.error_stack_trace_limit = n;
122
126
  return undefined;
123
127
  }
128
+ /* Error.isError(value) */
129
+ function js_error_isError(ctx, this_val, argv) {
130
+ return Q.JS_IsError(ctx, argv[0]);
131
+ }
124
132
  const js_error_proto_funcs = [
125
133
  JS_CFUNC_DEF('toString', 0, js_error_toString),
126
134
  JS_PROP_STRING_DEF('name', 'Error', JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),
@@ -134,6 +142,7 @@ export function JS_AddIntrinsicError(ctx) {
134
142
  JS_SetConstructor2(ctx, obj1, error_proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
135
143
  JS_SetPropertyFunctionList(ctx, error_proto, js_error_proto_funcs);
136
144
  JS_SetPropertyFunctionList(ctx, obj1, [
145
+ JS_CFUNC_DEF('isError', 1, js_error_isError),
137
146
  JS_CGETSET_DEF('prepareStackTrace', js_error_get_prepareStackTrace, js_error_set_prepareStackTrace),
138
147
  JS_CGETSET_DEF('stackTraceLimit', js_error_get_stackTraceLimit, js_error_set_stackTraceLimit),
139
148
  ]);