jseption 0.0.5 → 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.
- package/README.md +25 -4
- package/dist/atoms.d.ts +1 -0
- package/dist/atoms.js +2 -1
- package/dist/atoms.js.map +1 -1
- package/dist/builtins/base64.d.ts +14 -0
- package/dist/builtins/base64.js +219 -0
- package/dist/builtins/base64.js.map +1 -0
- package/dist/builtins/bigint.js +3 -3
- package/dist/builtins/bigint.js.map +1 -1
- package/dist/builtins/date.d.ts +1 -0
- package/dist/builtins/date.js +26 -12
- package/dist/builtins/date.js.map +1 -1
- package/dist/builtins/error.js +9 -0
- package/dist/builtins/error.js.map +1 -1
- package/dist/builtins/float16.d.ts +3 -0
- package/dist/builtins/float16.js +69 -0
- package/dist/builtins/float16.js.map +1 -0
- package/dist/builtins/function.js +2 -2
- package/dist/builtins/index.js +9 -6
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/iterator.d.ts +2 -0
- package/dist/builtins/iterator.js +624 -0
- package/dist/builtins/iterator.js.map +1 -0
- package/dist/builtins/json.d.ts +13 -1
- package/dist/builtins/json.js +283 -211
- package/dist/builtins/json.js.map +1 -1
- package/dist/builtins/mapset.js +365 -6
- package/dist/builtins/mapset.js.map +1 -1
- package/dist/builtins/math.js +203 -3
- package/dist/builtins/math.js.map +1 -1
- package/dist/builtins/native.js +6 -6
- package/dist/builtins/object.js +9 -2
- package/dist/builtins/object.js.map +1 -1
- package/dist/builtins/promise.js +31 -11
- package/dist/builtins/promise.js.map +1 -1
- package/dist/builtins/proxy.js +2 -2
- package/dist/builtins/reflect.js +6 -2
- package/dist/builtins/reflect.js.map +1 -1
- package/dist/builtins/regexp.js +74 -3
- package/dist/builtins/regexp.js.map +1 -1
- package/dist/builtins/string.js +1 -1
- package/dist/builtins/symbol.js +1 -1
- package/dist/builtins/symbol.js.map +1 -1
- package/dist/builtins/typedarray.d.ts +1 -0
- package/dist/builtins/typedarray.js +302 -32
- package/dist/builtins/typedarray.js.map +1 -1
- package/dist/builtins/weakref.js +7 -7
- package/dist/embed.js +3 -3
- package/dist/interpreter.js +15 -14
- package/dist/interpreter.js.map +1 -1
- package/dist/jit.d.ts +1 -0
- package/dist/jit.js +51 -13
- package/dist/jit.js.map +1 -1
- package/dist/jit_hook.d.ts +1 -0
- package/dist/jit_hook.js.map +1 -1
- package/dist/jit_runtime.d.ts +1 -1
- package/dist/jit_runtime.js +6 -6
- package/dist/jit_runtime.js.map +1 -1
- package/dist/jit_stack.d.ts +1 -0
- package/dist/jit_stack.js +2 -1
- package/dist/jit_stack.js.map +1 -1
- package/dist/jseption.d.ts +2 -0
- package/dist/jseption.js +1 -0
- package/dist/jseption.js.map +1 -1
- package/dist/membrane.js +1 -1
- package/dist/module.js +5 -3
- package/dist/module.js.map +1 -1
- package/dist/parser.js +26 -9
- package/dist/parser.js.map +1 -1
- package/dist/print.d.ts +12 -0
- package/dist/print.js +494 -0
- package/dist/print.js.map +1 -0
- package/dist/qjs.js +13 -10
- package/dist/qjs.js.map +1 -1
- package/dist/quickjs.d.ts +8 -0
- package/dist/quickjs.js +132 -53
- package/dist/quickjs.js.map +1 -1
- package/dist/std.d.ts +4 -2
- package/dist/std.js +42 -8
- package/dist/std.js.map +1 -1
- package/dist/values.d.ts +31 -27
- package/dist/values.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../src/builtins/bigint.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AACnC,OAAO,EACoC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EACnG,wBAAwB,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EACnG,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,YAAY,EACpG,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,0BAA0B,GACzF,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,0BAA0B;AAC1B,SAAS,oBAAoB,CAAC,GAAc,EAAE,GAAW;IACvD,MAAM,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,mBAAmB,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;IAC1E,OAAO,CAAC,CAAC;AACX,CAAC;AAED;6CAC6C;AAC7C,SAAS,mBAAmB,CAAC,GAAc,EAAE,GAAY;IACvD,SAAS,CAAC;QACR,QAAQ,OAAO,GAAG,EAAE,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,KAAK,QAAQ;gBACX,OAAO,GAAG,CAAC;YACb,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,CAAC,GAAG,GAAG,CAAC;gBACd,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAAE,OAAO,kBAAkB,CAAC,GAAG,EAAE,0CAA0C,CAAC,CAAC;gBACpG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;oBAAE,OAAO,kBAAkB,CAAC,GAAG,EAAE,0CAA0C,CAAC,CAAC;gBACpG,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;YACD,KAAK,QAAQ;gBACX,OAAO,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxC,KAAK,QAAQ;gBACX,OAAO,iBAAiB,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;YACnE,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU;gBACb,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,GAAG,CAAC;wBAAE,OAAO,GAAG,CAAC;oBACpC,SAAS;gBACX,CAAC;gBACD,OAAO,iBAAiB,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;YAC5D;gBACE,OAAO,iBAAiB,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAc,EAAE,UAAmB,EAAE,IAAe;IACjF,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QAAE,OAAO,
|
|
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"]}
|
package/dist/builtins/date.d.ts
CHANGED
|
@@ -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;
|
package/dist/builtins/date.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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 = (
|
|
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,
|
|
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
|
-
|
|
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"]}
|
package/dist/builtins/error.js
CHANGED
|
@@ -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
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/builtins/error.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Error objects (port of the Error part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSErrorEnum, JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsObject,\n JS_NewObjectProtoClass, JS_NewObjectProto, JS_NewCFunction3, JS_NewCFunctionMagic, JSCFunctionEnum,\n JS_DefinePropertyValue, JS_DefinePropertyValueStr, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_PROP_C_W_E,\n JS_GetProperty, JS_ToString, JS_ToStringInternal, JS_ThrowTypeError, JS_ThrowTypeErrorNotAnObject, JS_HasProperty,\n JS_ATOM_message, JS_ATOM_name, JS_ATOM_cause, JS_ATOM_stack, JS_ATOM_errors, JS_ATOM_prototype, JS_ATOM_constructor,\n JS_GetIterator, JS_IteratorNext, JS_IteratorClose, JS_NewArrayFrom, js_create_from_ctor, build_backtrace,\n JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_PROP_STRING_DEF, JS_CGETSET_DEF, JS_SetConstructor2, JS_NewAtom,\n JS_ToInt32Sat, JS_ThrowRangeError, JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL,\n} from '../quickjs.ts';\n\nconst native_error_name: string[] = [\n 'EvalError', 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError', 'InternalError', 'AggregateError',\n];\n\n/* AggregateError */\nfunction iterator_to_array(ctx: JSContext, items: JSValue): JSValue {\n const iter = JS_GetIterator(ctx, items, false);\n if (JS_IsException(iter)) return iter;\n const next_method = JS_GetProperty(ctx, iter, JS_NewAtom(ctx, 'next'));\n if (JS_IsException(next_method)) return next_method;\n const values: JSValue[] = [];\n const pdone = { done: 0 };\n for (;;) {\n const v = JS_IteratorNext(ctx, iter, next_method, [], pdone);\n if (JS_IsException(v)) return v;\n if (pdone.done) break;\n values.push(v);\n }\n return JS_NewArrayFrom(ctx, values);\n}\n\n/* Error constructor: magic is the error number (JSErrorEnum.PLAIN_ERROR for Error) */\nfunction js_error_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[], magic: number): JSValue {\n let proto: JSValue;\n let arg_index = (magic === JSErrorEnum.AGGREGATE_ERROR) ? 1 : 0;\n if (JS_IsUndefined(new_target)) new_target = ctx.rt.current_stack_frame?.cur_func ?? undefined;\n if (JS_IsUndefined(new_target)) {\n proto = magic < 0 ? ctx.class_proto[JSClassID.ERROR] : ctx.native_error_proto[magic];\n } else {\n proto = JS_GetProperty(ctx, new_target, JS_ATOM_prototype);\n if (JS_IsException(proto)) return proto;\n if (!JS_IsObject(proto)) {\n /* use the default prototype of the realm of new_target */\n if (magic < 0) proto = ctx.class_proto[JSClassID.ERROR];\n else proto = ctx.native_error_proto[magic];\n }\n }\n const obj = JS_NewObjectProtoClass(ctx, proto, JSClassID.ERROR);\n if (JS_IsException(obj)) return obj;\n const message = argv[arg_index];\n if (!JS_IsUndefined(message)) {\n const msg = JS_ToString(ctx, message);\n if (JS_IsException(msg)) return msg;\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_message, msg, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n }\n const options = argv[arg_index + 1];\n if (JS_IsObject(options)) {\n const present = JS_HasProperty(ctx, options, JS_ATOM_cause);\n if (present < 0) return JS_EXCEPTION;\n if (present) {\n const cause = JS_GetProperty(ctx, options, JS_ATOM_cause);\n if (JS_IsException(cause)) return cause;\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_cause, cause, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n }\n }\n if (magic === JSErrorEnum.AGGREGATE_ERROR) {\n const error_list = iterator_to_array(ctx, argv[0]);\n if (JS_IsException(error_list)) return error_list;\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_errors, error_list, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n }\n /* skip the Error() function in the backtrace */\n build_backtrace(ctx, obj, null, 0, 0, JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL);\n return obj;\n}\n\nfunction js_error_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsObject(this_val)) return JS_ThrowTypeErrorNotAnObject(ctx);\n let name = JS_GetProperty(ctx, this_val, JS_ATOM_name);\n if (JS_IsException(name)) return name;\n if (JS_IsUndefined(name)) name = 'Error';\n else { name = JS_ToString(ctx, name); if (JS_IsException(name)) return name; }\n let msg = JS_GetProperty(ctx, this_val, JS_ATOM_message);\n if (JS_IsException(msg)) return msg;\n if (JS_IsUndefined(msg)) msg = '';\n else { msg = JS_ToString(ctx, msg); if (JS_IsException(msg)) return msg; }\n if ((name as string).length === 0) return msg;\n if ((msg as string).length === 0) return name;\n return (name as string) + ': ' + (msg as string);\n}\n\nfunction js_error_get_prepareStackTrace(ctx: JSContext, this_val: JSValue): JSValue {\n return ctx.error_prepare_stack;\n}\nfunction js_error_set_prepareStackTrace(ctx: JSContext, this_val: JSValue, value: JSValue): JSValue {\n ctx.error_prepare_stack = value;\n return undefined;\n}\nfunction js_error_get_stackTraceLimit(ctx: JSContext, this_val: JSValue): JSValue {\n return ctx.error_stack_trace_limit;\n}\nfunction js_error_set_stackTraceLimit(ctx: JSContext, this_val: JSValue, value: JSValue): JSValue {\n const n = JS_ToInt32Sat(ctx, value);\n if (JS_IsException(n)) return n;\n ctx.error_stack_trace_limit = n as number;\n return undefined;\n}\n\nconst js_error_proto_funcs = [\n JS_CFUNC_DEF('toString', 0, js_error_toString),\n JS_PROP_STRING_DEF('name', 'Error', JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),\n JS_PROP_STRING_DEF('message', '', JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicError(ctx: JSContext): void {\n /* Error */\n const error_proto = JS_NewObjectProto(ctx, ctx.class_proto[JSClassID.OBJECT]) as JSObject;\n ctx.class_proto[JSClassID.ERROR] = error_proto;\n const obj1 = JS_NewCFunctionMagic(ctx, js_error_constructor as any, 'Error', 1, JSCFunctionEnum.constructor_or_func_magic, -1);\n JS_SetConstructor2(ctx, obj1, error_proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_SetPropertyFunctionList(ctx, error_proto, js_error_proto_funcs);\n JS_SetPropertyFunctionList(ctx, obj1, [\n JS_CGETSET_DEF('prepareStackTrace', js_error_get_prepareStackTrace, js_error_set_prepareStackTrace),\n JS_CGETSET_DEF('stackTraceLimit', js_error_get_stackTraceLimit, js_error_set_stackTraceLimit),\n ]);\n JS_DefinePropertyValueStr(ctx, ctx.global_obj, 'Error', obj1, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n ctx.error_ctor = obj1 as JSObject;\n\n for (let i = 0; i < JSErrorEnum.NATIVE_ERROR_COUNT; i++) {\n const proto = JS_NewObjectProto(ctx, error_proto) as JSObject;\n ctx.native_error_proto[i] = proto;\n const name = native_error_name[i];\n const n_args = (i === JSErrorEnum.AGGREGATE_ERROR) ? 2 : 1;\n const func_obj = JS_NewCFunction3(ctx, js_error_constructor, name, n_args, JSCFunctionEnum.constructor_or_func_magic, i, obj1);\n JS_SetConstructor2(ctx, func_obj, proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, proto, JS_ATOM_name, name, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, proto, JS_ATOM_message, '', JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValueStr(ctx, ctx.global_obj, name, func_obj, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/builtins/error.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Error objects (port of the Error part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSErrorEnum, JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsObject,\n JS_NewObjectProtoClass, JS_NewObjectProto, JS_NewCFunction3, JS_NewCFunctionMagic, JSCFunctionEnum,\n JS_DefinePropertyValue, JS_DefinePropertyValueStr, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_PROP_C_W_E,\n JS_GetProperty, JS_ToString, JS_ToStringInternal, JS_ThrowTypeError, JS_ThrowTypeErrorNotAnObject, JS_HasProperty,\n JS_ATOM_message, JS_ATOM_name, JS_ATOM_cause, JS_ATOM_stack, JS_ATOM_errors, JS_ATOM_prototype, JS_ATOM_constructor,\n JS_GetIterator, JS_IteratorNext, JS_IteratorClose, JS_NewArrayFrom, js_create_from_ctor, build_backtrace,\n JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_PROP_STRING_DEF, JS_CGETSET_DEF, JS_SetConstructor2, JS_NewAtom,\n JS_ToInt32Sat, JS_ThrowRangeError, JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL,\n} from '../quickjs.ts';\n\nconst native_error_name: string[] = [\n 'EvalError', 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError', 'InternalError', 'AggregateError',\n];\n\n/* AggregateError */\nfunction iterator_to_array(ctx: JSContext, items: JSValue): JSValue {\n const iter = JS_GetIterator(ctx, items, false);\n if (JS_IsException(iter)) return iter;\n const next_method = JS_GetProperty(ctx, iter, JS_NewAtom(ctx, 'next'));\n if (JS_IsException(next_method)) return next_method;\n const values: JSValue[] = [];\n const pdone = { done: 0 };\n for (;;) {\n const v = JS_IteratorNext(ctx, iter, next_method, [], pdone);\n if (JS_IsException(v)) return v;\n if (pdone.done) break;\n values.push(v);\n }\n return JS_NewArrayFrom(ctx, values);\n}\n\n/* Error constructor: magic is the error number (JSErrorEnum.PLAIN_ERROR for Error) */\nfunction js_error_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[], magic: number): JSValue {\n let proto: JSValue;\n let arg_index = (magic === JSErrorEnum.AGGREGATE_ERROR) ? 1 : 0;\n if (JS_IsUndefined(new_target)) new_target = ctx.rt.current_stack_frame?.cur_func ?? undefined;\n if (JS_IsUndefined(new_target)) {\n proto = magic < 0 ? ctx.class_proto[JSClassID.ERROR] : ctx.native_error_proto[magic];\n } else {\n proto = JS_GetProperty(ctx, new_target, JS_ATOM_prototype);\n if (JS_IsException(proto)) return proto;\n if (!JS_IsObject(proto)) {\n /* use the default prototype of the realm of new_target */\n if (magic < 0) proto = ctx.class_proto[JSClassID.ERROR];\n else proto = ctx.native_error_proto[magic];\n }\n }\n const obj = JS_NewObjectProtoClass(ctx, proto, JSClassID.ERROR);\n if (JS_IsException(obj)) return obj;\n const message = argv[arg_index];\n if (!JS_IsUndefined(message)) {\n const msg = JS_ToString(ctx, message);\n if (JS_IsException(msg)) return msg;\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_message, msg, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n }\n const options = argv[arg_index + 1];\n if (JS_IsObject(options)) {\n const present = JS_HasProperty(ctx, options, JS_ATOM_cause);\n if (present < 0) return JS_EXCEPTION;\n if (present) {\n const cause = JS_GetProperty(ctx, options, JS_ATOM_cause);\n if (JS_IsException(cause)) return cause;\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_cause, cause, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n }\n }\n if (magic === JSErrorEnum.AGGREGATE_ERROR) {\n const error_list = iterator_to_array(ctx, argv[0]);\n if (JS_IsException(error_list)) return error_list;\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_errors, error_list, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n }\n /* skip the Error() function in the backtrace */\n build_backtrace(ctx, obj, null, 0, 0, JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL);\n return obj;\n}\n\nfunction js_error_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsObject(this_val)) return JS_ThrowTypeErrorNotAnObject(ctx);\n let name = JS_GetProperty(ctx, this_val, JS_ATOM_name);\n if (JS_IsException(name)) return name;\n if (JS_IsUndefined(name)) name = 'Error';\n else { name = JS_ToString(ctx, name); if (JS_IsException(name)) return name; }\n let msg = JS_GetProperty(ctx, this_val, JS_ATOM_message);\n if (JS_IsException(msg)) return msg;\n if (JS_IsUndefined(msg)) msg = '';\n else { msg = JS_ToString(ctx, msg); if (JS_IsException(msg)) return msg; }\n if ((name as string).length === 0) return msg;\n if ((msg as string).length === 0) return name;\n return (name as string) + ': ' + (msg as string);\n}\n\nfunction js_error_get_prepareStackTrace(ctx: JSContext, this_val: JSValue): JSValue {\n return ctx.error_prepare_stack;\n}\nfunction js_error_set_prepareStackTrace(ctx: JSContext, this_val: JSValue, value: JSValue): JSValue {\n ctx.error_prepare_stack = value;\n return undefined;\n}\nfunction js_error_get_stackTraceLimit(ctx: JSContext, this_val: JSValue): JSValue {\n return ctx.error_stack_trace_limit;\n}\nfunction js_error_set_stackTraceLimit(ctx: JSContext, this_val: JSValue, value: JSValue): JSValue {\n const n = JS_ToInt32Sat(ctx, value);\n if (JS_IsException(n)) return n;\n ctx.error_stack_trace_limit = n as number;\n return undefined;\n}\n\n/* Error.isError(value) */\nfunction js_error_isError(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return Q.JS_IsError(ctx, argv[0]);\n}\n\nconst js_error_proto_funcs = [\n JS_CFUNC_DEF('toString', 0, js_error_toString),\n JS_PROP_STRING_DEF('name', 'Error', JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),\n JS_PROP_STRING_DEF('message', '', JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicError(ctx: JSContext): void {\n /* Error */\n const error_proto = JS_NewObjectProto(ctx, ctx.class_proto[JSClassID.OBJECT]) as JSObject;\n ctx.class_proto[JSClassID.ERROR] = error_proto;\n const obj1 = JS_NewCFunctionMagic(ctx, js_error_constructor as any, 'Error', 1, JSCFunctionEnum.constructor_or_func_magic, -1);\n JS_SetConstructor2(ctx, obj1, error_proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_SetPropertyFunctionList(ctx, error_proto, js_error_proto_funcs);\n JS_SetPropertyFunctionList(ctx, obj1, [\n JS_CFUNC_DEF('isError', 1, js_error_isError),\n JS_CGETSET_DEF('prepareStackTrace', js_error_get_prepareStackTrace, js_error_set_prepareStackTrace),\n JS_CGETSET_DEF('stackTraceLimit', js_error_get_stackTraceLimit, js_error_set_stackTraceLimit),\n ]);\n JS_DefinePropertyValueStr(ctx, ctx.global_obj, 'Error', obj1, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n ctx.error_ctor = obj1 as JSObject;\n\n for (let i = 0; i < JSErrorEnum.NATIVE_ERROR_COUNT; i++) {\n const proto = JS_NewObjectProto(ctx, error_proto) as JSObject;\n ctx.native_error_proto[i] = proto;\n const name = native_error_name[i];\n const n_args = (i === JSErrorEnum.AGGREGATE_ERROR) ? 2 : 1;\n const func_obj = JS_NewCFunction3(ctx, js_error_constructor, name, n_args, JSCFunctionEnum.constructor_or_func_magic, i, obj1);\n JS_SetConstructor2(ctx, func_obj, proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, proto, JS_ATOM_name, name, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, proto, JS_ATOM_message, '', JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValueStr(ctx, ctx.global_obj, name, func_obj, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n }\n}\n"]}
|