jseption 0.0.0-stage → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +191 -2
  3. package/dist/atoms.d.ts +255 -0
  4. package/dist/atoms.js +445 -0
  5. package/dist/atoms.js.map +1 -0
  6. package/dist/builtins/array.d.ts +3 -0
  7. package/dist/builtins/array.js +116 -0
  8. package/dist/builtins/array.js.map +1 -0
  9. package/dist/builtins/bigint.d.ts +3 -0
  10. package/dist/builtins/bigint.js +122 -0
  11. package/dist/builtins/bigint.js.map +1 -0
  12. package/dist/builtins/boolean.d.ts +2 -0
  13. package/dist/builtins/boolean.js +26 -0
  14. package/dist/builtins/boolean.js.map +1 -0
  15. package/dist/builtins/date.d.ts +3 -0
  16. package/dist/builtins/date.js +1046 -0
  17. package/dist/builtins/date.js.map +1 -0
  18. package/dist/builtins/error.d.ts +2 -0
  19. package/dist/builtins/error.js +154 -0
  20. package/dist/builtins/error.js.map +1 -0
  21. package/dist/builtins/function.d.ts +5 -0
  22. package/dist/builtins/function.js +164 -0
  23. package/dist/builtins/function.js.map +1 -0
  24. package/dist/builtins/global.d.ts +2 -0
  25. package/dist/builtins/global.js +29 -0
  26. package/dist/builtins/global.js.map +1 -0
  27. package/dist/builtins/index.d.ts +3 -0
  28. package/dist/builtins/index.js +139 -0
  29. package/dist/builtins/index.js.map +1 -0
  30. package/dist/builtins/json.d.ts +6 -0
  31. package/dist/builtins/json.js +984 -0
  32. package/dist/builtins/json.js.map +1 -0
  33. package/dist/builtins/mapset.d.ts +4 -0
  34. package/dist/builtins/mapset.js +234 -0
  35. package/dist/builtins/mapset.js.map +1 -0
  36. package/dist/builtins/math.d.ts +2 -0
  37. package/dist/builtins/math.js +62 -0
  38. package/dist/builtins/math.js.map +1 -0
  39. package/dist/builtins/native.d.ts +22 -0
  40. package/dist/builtins/native.js +250 -0
  41. package/dist/builtins/native.js.map +1 -0
  42. package/dist/builtins/number.d.ts +4 -0
  43. package/dist/builtins/number.js +76 -0
  44. package/dist/builtins/number.js.map +1 -0
  45. package/dist/builtins/object.d.ts +12 -0
  46. package/dist/builtins/object.js +575 -0
  47. package/dist/builtins/object.js.map +1 -0
  48. package/dist/builtins/promise.d.ts +13 -0
  49. package/dist/builtins/promise.js +582 -0
  50. package/dist/builtins/promise.js.map +1 -0
  51. package/dist/builtins/proxy.d.ts +3 -0
  52. package/dist/builtins/proxy.js +226 -0
  53. package/dist/builtins/proxy.js.map +1 -0
  54. package/dist/builtins/reflect.d.ts +2 -0
  55. package/dist/builtins/reflect.js +109 -0
  56. package/dist/builtins/reflect.js.map +1 -0
  57. package/dist/builtins/regexp.d.ts +2 -0
  58. package/dist/builtins/regexp.js +203 -0
  59. package/dist/builtins/regexp.js.map +1 -0
  60. package/dist/builtins/string.d.ts +4 -0
  61. package/dist/builtins/string.js +135 -0
  62. package/dist/builtins/string.js.map +1 -0
  63. package/dist/builtins/symbol.d.ts +3 -0
  64. package/dist/builtins/symbol.js +98 -0
  65. package/dist/builtins/symbol.js.map +1 -0
  66. package/dist/builtins/typedarray.d.ts +15 -0
  67. package/dist/builtins/typedarray.js +1838 -0
  68. package/dist/builtins/typedarray.js.map +1 -0
  69. package/dist/builtins/weakref.d.ts +18 -0
  70. package/dist/builtins/weakref.js +130 -0
  71. package/dist/builtins/weakref.js.map +1 -0
  72. package/dist/dump.d.ts +2 -0
  73. package/dist/dump.js +124 -0
  74. package/dist/dump.js.map +1 -0
  75. package/dist/embed.d.ts +18 -0
  76. package/dist/embed.js +286 -0
  77. package/dist/embed.js.map +1 -0
  78. package/dist/interpreter.d.ts +81 -0
  79. package/dist/interpreter.js +3768 -0
  80. package/dist/interpreter.js.map +1 -0
  81. package/dist/jit.d.ts +59 -0
  82. package/dist/jit.js +3440 -0
  83. package/dist/jit.js.map +1 -0
  84. package/dist/jit_hook.d.ts +21 -0
  85. package/dist/jit_hook.js +4 -0
  86. package/dist/jit_hook.js.map +1 -0
  87. package/dist/jit_runtime.d.ts +104 -0
  88. package/dist/jit_runtime.js +721 -0
  89. package/dist/jit_runtime.js.map +1 -0
  90. package/dist/jit_stack.d.ts +24 -0
  91. package/dist/jit_stack.js +227 -0
  92. package/dist/jit_stack.js.map +1 -0
  93. package/dist/jseption.d.ts +15 -0
  94. package/dist/jseption.js +61 -0
  95. package/dist/jseption.js.map +1 -0
  96. package/dist/opcodes.d.ts +347 -0
  97. package/dist/opcodes.js +322 -0
  98. package/dist/opcodes.js.map +1 -0
  99. package/dist/parser.d.ts +283 -0
  100. package/dist/parser.js +9752 -0
  101. package/dist/parser.js.map +1 -0
  102. package/dist/qjs.d.ts +2 -0
  103. package/dist/qjs.js +122 -0
  104. package/dist/qjs.js.map +1 -0
  105. package/dist/quickjs.d.ts +460 -0
  106. package/dist/quickjs.js +3408 -0
  107. package/dist/quickjs.js.map +1 -0
  108. package/dist/std.d.ts +4 -0
  109. package/dist/std.js +273 -0
  110. package/dist/std.js.map +1 -0
  111. package/dist/values.d.ts +447 -0
  112. package/dist/values.js +461 -0
  113. package/dist/values.js.map +1 -0
  114. package/package.json +59 -4
@@ -0,0 +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"]}
@@ -0,0 +1,2 @@
1
+ import { JSContext } from '../quickjs.ts';
2
+ export declare function JS_AddIntrinsicError(ctx: JSContext): void;
@@ -0,0 +1,154 @@
1
+ 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
+ const native_error_name = [
3
+ 'EvalError', 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError', 'InternalError', 'AggregateError',
4
+ ];
5
+ /* AggregateError */
6
+ function iterator_to_array(ctx, items) {
7
+ const iter = JS_GetIterator(ctx, items, false);
8
+ if (JS_IsException(iter))
9
+ return iter;
10
+ const next_method = JS_GetProperty(ctx, iter, JS_NewAtom(ctx, 'next'));
11
+ if (JS_IsException(next_method))
12
+ return next_method;
13
+ const values = [];
14
+ const pdone = { done: 0 };
15
+ for (;;) {
16
+ const v = JS_IteratorNext(ctx, iter, next_method, [], pdone);
17
+ if (JS_IsException(v))
18
+ return v;
19
+ if (pdone.done)
20
+ break;
21
+ values.push(v);
22
+ }
23
+ return JS_NewArrayFrom(ctx, values);
24
+ }
25
+ /* Error constructor: magic is the error number (JSErrorEnum.PLAIN_ERROR for Error) */
26
+ function js_error_constructor(ctx, new_target, argv, magic) {
27
+ let proto;
28
+ let arg_index = (magic === 7 /* JSErrorEnum.AGGREGATE_ERROR */) ? 1 : 0;
29
+ if (JS_IsUndefined(new_target))
30
+ new_target = ctx.rt.current_stack_frame?.cur_func ?? undefined;
31
+ if (JS_IsUndefined(new_target)) {
32
+ proto = magic < 0 ? ctx.class_proto[3 /* JSClassID.ERROR */] : ctx.native_error_proto[magic];
33
+ }
34
+ else {
35
+ proto = JS_GetProperty(ctx, new_target, JS_ATOM_prototype);
36
+ if (JS_IsException(proto))
37
+ return proto;
38
+ if (!JS_IsObject(proto)) {
39
+ /* use the default prototype of the realm of new_target */
40
+ if (magic < 0)
41
+ proto = ctx.class_proto[3 /* JSClassID.ERROR */];
42
+ else
43
+ proto = ctx.native_error_proto[magic];
44
+ }
45
+ }
46
+ const obj = JS_NewObjectProtoClass(ctx, proto, 3 /* JSClassID.ERROR */);
47
+ if (JS_IsException(obj))
48
+ return obj;
49
+ const message = argv[arg_index];
50
+ if (!JS_IsUndefined(message)) {
51
+ const msg = JS_ToString(ctx, message);
52
+ if (JS_IsException(msg))
53
+ return msg;
54
+ JS_DefinePropertyValue(ctx, obj, JS_ATOM_message, msg, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
55
+ }
56
+ const options = argv[arg_index + 1];
57
+ if (JS_IsObject(options)) {
58
+ const present = JS_HasProperty(ctx, options, JS_ATOM_cause);
59
+ if (present < 0)
60
+ return JS_EXCEPTION;
61
+ if (present) {
62
+ const cause = JS_GetProperty(ctx, options, JS_ATOM_cause);
63
+ if (JS_IsException(cause))
64
+ return cause;
65
+ JS_DefinePropertyValue(ctx, obj, JS_ATOM_cause, cause, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
66
+ }
67
+ }
68
+ if (magic === 7 /* JSErrorEnum.AGGREGATE_ERROR */) {
69
+ const error_list = iterator_to_array(ctx, argv[0]);
70
+ if (JS_IsException(error_list))
71
+ return error_list;
72
+ JS_DefinePropertyValue(ctx, obj, JS_ATOM_errors, error_list, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
73
+ }
74
+ /* skip the Error() function in the backtrace */
75
+ build_backtrace(ctx, obj, null, 0, 0, JS_BACKTRACE_FLAG_SKIP_FIRST_LEVEL);
76
+ return obj;
77
+ }
78
+ function js_error_toString(ctx, this_val, argv) {
79
+ if (!JS_IsObject(this_val))
80
+ return JS_ThrowTypeErrorNotAnObject(ctx);
81
+ let name = JS_GetProperty(ctx, this_val, JS_ATOM_name);
82
+ if (JS_IsException(name))
83
+ return name;
84
+ if (JS_IsUndefined(name))
85
+ name = 'Error';
86
+ else {
87
+ name = JS_ToString(ctx, name);
88
+ if (JS_IsException(name))
89
+ return name;
90
+ }
91
+ let msg = JS_GetProperty(ctx, this_val, JS_ATOM_message);
92
+ if (JS_IsException(msg))
93
+ return msg;
94
+ if (JS_IsUndefined(msg))
95
+ msg = '';
96
+ else {
97
+ msg = JS_ToString(ctx, msg);
98
+ if (JS_IsException(msg))
99
+ return msg;
100
+ }
101
+ if (name.length === 0)
102
+ return msg;
103
+ if (msg.length === 0)
104
+ return name;
105
+ return name + ': ' + msg;
106
+ }
107
+ function js_error_get_prepareStackTrace(ctx, this_val) {
108
+ return ctx.error_prepare_stack;
109
+ }
110
+ function js_error_set_prepareStackTrace(ctx, this_val, value) {
111
+ ctx.error_prepare_stack = value;
112
+ return undefined;
113
+ }
114
+ function js_error_get_stackTraceLimit(ctx, this_val) {
115
+ return ctx.error_stack_trace_limit;
116
+ }
117
+ function js_error_set_stackTraceLimit(ctx, this_val, value) {
118
+ const n = JS_ToInt32Sat(ctx, value);
119
+ if (JS_IsException(n))
120
+ return n;
121
+ ctx.error_stack_trace_limit = n;
122
+ return undefined;
123
+ }
124
+ const js_error_proto_funcs = [
125
+ JS_CFUNC_DEF('toString', 0, js_error_toString),
126
+ JS_PROP_STRING_DEF('name', 'Error', JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),
127
+ JS_PROP_STRING_DEF('message', '', JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),
128
+ ];
129
+ export function JS_AddIntrinsicError(ctx) {
130
+ /* Error */
131
+ const error_proto = JS_NewObjectProto(ctx, ctx.class_proto[1 /* JSClassID.OBJECT */]);
132
+ ctx.class_proto[3 /* JSClassID.ERROR */] = error_proto;
133
+ const obj1 = JS_NewCFunctionMagic(ctx, js_error_constructor, 'Error', 1, 5 /* JSCFunctionEnum.constructor_or_func_magic */, -1);
134
+ JS_SetConstructor2(ctx, obj1, error_proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
135
+ JS_SetPropertyFunctionList(ctx, error_proto, js_error_proto_funcs);
136
+ JS_SetPropertyFunctionList(ctx, obj1, [
137
+ JS_CGETSET_DEF('prepareStackTrace', js_error_get_prepareStackTrace, js_error_set_prepareStackTrace),
138
+ JS_CGETSET_DEF('stackTraceLimit', js_error_get_stackTraceLimit, js_error_set_stackTraceLimit),
139
+ ]);
140
+ JS_DefinePropertyValueStr(ctx, ctx.global_obj, 'Error', obj1, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
141
+ ctx.error_ctor = obj1;
142
+ for (let i = 0; i < 8 /* JSErrorEnum.NATIVE_ERROR_COUNT */; i++) {
143
+ const proto = JS_NewObjectProto(ctx, error_proto);
144
+ ctx.native_error_proto[i] = proto;
145
+ const name = native_error_name[i];
146
+ const n_args = (i === 7 /* JSErrorEnum.AGGREGATE_ERROR */) ? 2 : 1;
147
+ const func_obj = JS_NewCFunction3(ctx, js_error_constructor, name, n_args, 5 /* JSCFunctionEnum.constructor_or_func_magic */, i, obj1);
148
+ JS_SetConstructor2(ctx, func_obj, proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
149
+ JS_DefinePropertyValue(ctx, proto, JS_ATOM_name, name, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
150
+ JS_DefinePropertyValue(ctx, proto, JS_ATOM_message, '', JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
151
+ JS_DefinePropertyValueStr(ctx, ctx.global_obj, name, func_obj, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
152
+ }
153
+ }
154
+ //# sourceMappingURL=error.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,5 @@
1
+ import { JSContext, JSValue } from '../quickjs.ts';
2
+ export declare function js_function_proto(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue;
3
+ export declare function js_function_proto_caller(ctx: JSContext, this_val: JSValue): JSValue;
4
+ export declare function js_function_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[], magic: number): JSValue;
5
+ export declare function JS_AddIntrinsicFunction(ctx: JSContext): void;
@@ -0,0 +1,164 @@
1
+ /*
2
+ * Function objects (port of the Function part of quickjs.c)
3
+ */
4
+ import * as Q from "../quickjs.js";
5
+ import { JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsObject, JS_IsFunction, JS_IsConstructor, JS_NewCFunction3, JSBoundFunctionData, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_GetProperty, JS_ToString, JS_ThrowTypeError, JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_CFUNC_MAGIC_DEF, JS_ATOM_name, JS_ATOM_prototype, JS_ATOM_Symbol_hasInstance, JS_OrdinaryIsInstanceOf, JS_Call, JS_Eval, JS_EVAL_TYPE_INDIRECT, JS_DefinePropertyValueStr, JS_SetConstructor2, JS_AtomToString, JS_GetFunctionRealm, JS_CGETSET_DEF, JS_CGETSET_MAGIC_DEF, find_line_num, } from "../quickjs.js";
6
+ import { js_function_apply } from "../interpreter.js";
7
+ /* Function.prototype is a function returning undefined */
8
+ export function js_function_proto(ctx, this_val, argv) {
9
+ return undefined;
10
+ }
11
+ export function js_function_proto_caller(ctx, this_val) {
12
+ return JS_ThrowTypeError(ctx, "'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them");
13
+ }
14
+ /* Function constructor: magic = JSFunctionKind */
15
+ export function js_function_constructor(ctx, new_target, argv, magic) {
16
+ let s = '(';
17
+ const func_kind = magic;
18
+ if (func_kind & 2 /* JSFunctionKind.ASYNC */)
19
+ s += 'async ';
20
+ s += 'function';
21
+ if (func_kind & 1 /* JSFunctionKind.GENERATOR */)
22
+ s += '*';
23
+ s += ' anonymous(';
24
+ const argc = argv.length;
25
+ for (let i = 0; i < argc - 1; i++) {
26
+ if (i !== 0)
27
+ s += ',';
28
+ const str = JS_ToString(ctx, argv[i]);
29
+ if (JS_IsException(str))
30
+ return str;
31
+ s += str;
32
+ }
33
+ s += '\n) {\n';
34
+ if (argc > 0) {
35
+ const body = JS_ToString(ctx, argv[argc - 1]);
36
+ if (JS_IsException(body))
37
+ return body;
38
+ s += body;
39
+ }
40
+ s += '\n})';
41
+ const obj = JS_Eval(ctx, s, '<input>', JS_EVAL_TYPE_INDIRECT);
42
+ if (JS_IsException(obj))
43
+ return obj;
44
+ if (!JS_IsUndefined(new_target)) {
45
+ /* set the prototype from new_target */
46
+ const proto = JS_GetProperty(ctx, new_target, JS_ATOM_prototype);
47
+ if (JS_IsException(proto))
48
+ return proto;
49
+ if (!JS_IsObject(proto)) {
50
+ const realm = JS_GetFunctionRealm(ctx, new_target);
51
+ let class_id;
52
+ switch (func_kind) {
53
+ case 1 /* JSFunctionKind.GENERATOR */:
54
+ class_id = 16 /* JSClassID.GENERATOR_FUNCTION */;
55
+ break;
56
+ case 2 /* JSFunctionKind.ASYNC */:
57
+ class_id = 48 /* JSClassID.ASYNC_FUNCTION */;
58
+ break;
59
+ case 3 /* JSFunctionKind.ASYNC_GENERATOR */:
60
+ class_id = 52 /* JSClassID.ASYNC_GENERATOR_FUNCTION */;
61
+ break;
62
+ default:
63
+ class_id = 13 /* JSClassID.BYTECODE_FUNCTION */;
64
+ break;
65
+ }
66
+ Object.setPrototypeOf(obj, (realm.class_proto[class_id] ?? realm.function_proto));
67
+ }
68
+ else {
69
+ Object.setPrototypeOf(obj, proto);
70
+ }
71
+ }
72
+ return obj;
73
+ }
74
+ function js_function_toString(ctx, this_val, argv) {
75
+ if (!JS_IsFunction(ctx, this_val))
76
+ return JS_ThrowTypeError(ctx, 'not a function');
77
+ const fd = Q.JS_GetFunctionData(this_val);
78
+ if (fd) {
79
+ const b = fd.function_bytecode;
80
+ if (b.has_debug && b.debug.source !== null)
81
+ return b.debug.source;
82
+ }
83
+ const name = JS_GetProperty(ctx, this_val, JS_ATOM_name);
84
+ if (JS_IsException(name))
85
+ return name;
86
+ let str = '';
87
+ if (typeof name === 'string')
88
+ str = name;
89
+ return `function ${str}() {\n [native code]\n}`;
90
+ }
91
+ function js_function_hasInstance(ctx, this_val, argv) {
92
+ const ret = JS_OrdinaryIsInstanceOf(ctx, argv[0], this_val);
93
+ if (ret < 0)
94
+ return JS_EXCEPTION;
95
+ return ret !== 0;
96
+ }
97
+ function js_function_bind(ctx, this_val, argv) {
98
+ if (!JS_IsFunction(ctx, this_val))
99
+ return JS_ThrowTypeError(ctx, 'not a function');
100
+ const func = this_val;
101
+ const bound_this = argv.length > 0 ? argv[0] : undefined;
102
+ const bound_args = argv.slice(1);
103
+ /* the host bound function implements [[Call]]/[[Construct]] (with the
104
+ new.target substitution), 'name', 'length' and the prototype */
105
+ let p;
106
+ try {
107
+ p = Function.prototype.bind.call(func, bound_this, ...bound_args);
108
+ }
109
+ catch (e) {
110
+ return Q.js_host_exception_to_guest(ctx, e);
111
+ }
112
+ const m = Q.js_ensure_meta(p, 14 /* JSClassID.BOUND_FUNCTION */);
113
+ m.is_constructor = JS_IsConstructor(ctx, func);
114
+ m.realm = ctx;
115
+ m.u = new JSBoundFunctionData(func, bound_this, bound_args);
116
+ return p;
117
+ }
118
+ function js_function_call(ctx, this_val, argv) {
119
+ if (argv.length <= 0)
120
+ return JS_Call(ctx, this_val, undefined, []);
121
+ return JS_Call(ctx, this_val, argv[0], argv.slice(1));
122
+ }
123
+ function js_function_proto_fileName(ctx, this_val) {
124
+ const fd = Q.JS_GetFunctionData(this_val);
125
+ if (fd) {
126
+ const b = fd.function_bytecode;
127
+ if (b.has_debug)
128
+ return JS_AtomToString(ctx, b.debug.filename);
129
+ }
130
+ return undefined;
131
+ }
132
+ function js_function_proto_lineNumber(ctx, this_val, is_col) {
133
+ const fd = Q.JS_GetFunctionData(this_val);
134
+ if (fd) {
135
+ const b = fd.function_bytecode;
136
+ if (b.has_debug) {
137
+ const [line, col] = find_line_num(ctx, b, -1);
138
+ return is_col ? col : line;
139
+ }
140
+ }
141
+ return undefined;
142
+ }
143
+ const js_function_proto_funcs = [
144
+ JS_CGETSET_DEF('fileName', js_function_proto_fileName, null),
145
+ JS_CGETSET_MAGIC_DEF('lineNumber', js_function_proto_lineNumber, null, 0),
146
+ JS_CGETSET_MAGIC_DEF('columnNumber', js_function_proto_lineNumber, null, 1),
147
+ JS_CFUNC_DEF('call', 1, js_function_call),
148
+ JS_CFUNC_MAGIC_DEF('apply', 2, js_function_apply, 0),
149
+ JS_CFUNC_DEF('bind', 1, js_function_bind),
150
+ JS_CFUNC_DEF('toString', 0, js_function_toString),
151
+ JS_CFUNC_DEF(JS_ATOM_Symbol_hasInstance, 1, js_function_hasInstance),
152
+ ];
153
+ export function JS_AddIntrinsicFunction(ctx) {
154
+ const proto = ctx.function_proto;
155
+ JS_SetPropertyFunctionList(ctx, proto, js_function_proto_funcs);
156
+ /* Function.prototype[Symbol.hasInstance] is not writable */
157
+ Reflect.defineProperty(proto, Symbol.hasInstance, { writable: false, configurable: false });
158
+ /* Function constructor */
159
+ const obj1 = JS_NewCFunction3(ctx, js_function_constructor, 'Function', 1, 5 /* JSCFunctionEnum.constructor_or_func_magic */, 0 /* JSFunctionKind.NORMAL */, proto);
160
+ JS_SetConstructor2(ctx, obj1, proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
161
+ JS_DefinePropertyValueStr(ctx, ctx.global_obj, 'Function', obj1, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
162
+ ctx.function_ctor = obj1;
163
+ }
164
+ //# sourceMappingURL=function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/builtins/function.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Function objects (port of the Function part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSFunctionKind, JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsObject,\n JS_IsFunction, JS_IsConstructor, JS_NewObjectProtoClass, JS_NewCFunction3, JSCFunctionEnum, JSBoundFunctionData,\n JS_DefinePropertyValue, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_GetProperty, JS_ToString, JS_ThrowTypeError,\n JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_CFUNC_MAGIC_DEF, JS_CFUNC_SPECIAL_DEF, JS_ATOM_length, JS_ATOM_name,\n JS_ATOM_prototype, JS_ATOM_Symbol_hasInstance, JS_OrdinaryIsInstanceOf, JS_Call, JS_GetPrototype, JS_GetOwnPropertyInternal,\n new_desc, JS_PROP_GETSET, JS_ToInt32Sat, JS_Eval, JS_EVAL_TYPE_INDIRECT, JS_DefinePropertyValueStr, JS_SetConstructor2,\n JS_NewAtom, JS_ThrowTypeErrorNotAFunction, JS_AtomToString, JS_GetFunctionRealm, hooks, JSCFunctionRecord,\n JS_CGETSET_DEF, JS_CGETSET_MAGIC_DEF, find_line_num,\n} from '../quickjs.ts';\nimport { js_function_apply } from '../interpreter.ts';\n\n/* Function.prototype is a function returning undefined */\nexport function js_function_proto(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return undefined;\n}\n\nexport function js_function_proto_caller(ctx: JSContext, this_val: JSValue): JSValue {\n return JS_ThrowTypeError(ctx, \"'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them\");\n}\n\n/* Function constructor: magic = JSFunctionKind */\nexport function js_function_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[], magic: number): JSValue {\n let s = '(';\n const func_kind: JSFunctionKind = magic;\n if (func_kind & JSFunctionKind.ASYNC) s += 'async ';\n s += 'function';\n if (func_kind & JSFunctionKind.GENERATOR) s += '*';\n s += ' anonymous(';\n const argc = argv.length;\n for (let i = 0; i < argc - 1; i++) {\n if (i !== 0) s += ',';\n const str = JS_ToString(ctx, argv[i]);\n if (JS_IsException(str)) return str;\n s += str as string;\n }\n s += '\\n) {\\n';\n if (argc > 0) {\n const body = JS_ToString(ctx, argv[argc - 1]);\n if (JS_IsException(body)) return body;\n s += body as string;\n }\n s += '\\n})';\n const obj = JS_Eval(ctx, s, '<input>', JS_EVAL_TYPE_INDIRECT);\n if (JS_IsException(obj)) return obj;\n if (!JS_IsUndefined(new_target)) {\n /* set the prototype from new_target */\n const proto = JS_GetProperty(ctx, new_target, JS_ATOM_prototype);\n if (JS_IsException(proto)) return proto;\n if (!JS_IsObject(proto)) {\n const realm = JS_GetFunctionRealm(ctx, new_target);\n let class_id: JSClassID;\n switch (func_kind) {\n case JSFunctionKind.GENERATOR: class_id = JSClassID.GENERATOR_FUNCTION; break;\n case JSFunctionKind.ASYNC: class_id = JSClassID.ASYNC_FUNCTION; break;\n case JSFunctionKind.ASYNC_GENERATOR: class_id = JSClassID.ASYNC_GENERATOR_FUNCTION; break;\n default: class_id = JSClassID.BYTECODE_FUNCTION; break;\n }\n Object.setPrototypeOf(obj as object, (realm.class_proto[class_id] ?? realm.function_proto) as object);\n } else {\n Object.setPrototypeOf(obj as object, proto as object);\n }\n }\n return obj;\n}\n\nfunction js_function_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsFunction(ctx, this_val)) return JS_ThrowTypeError(ctx, 'not a function');\n const fd = Q.JS_GetFunctionData(this_val);\n if (fd) {\n const b = fd.function_bytecode;\n if (b.has_debug && b.debug.source !== null) return b.debug.source;\n }\n const name = JS_GetProperty(ctx, this_val, JS_ATOM_name);\n if (JS_IsException(name)) return name;\n let str = '';\n if (typeof name === 'string') str = name;\n return `function ${str}() {\\n [native code]\\n}`;\n}\n\nfunction js_function_hasInstance(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const ret = JS_OrdinaryIsInstanceOf(ctx, argv[0], this_val);\n if (ret < 0) return JS_EXCEPTION;\n return ret !== 0;\n}\n\nfunction js_function_bind(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsFunction(ctx, this_val)) return JS_ThrowTypeError(ctx, 'not a function');\n const func = this_val as Function;\n const bound_this = argv.length > 0 ? argv[0] : undefined;\n const bound_args = argv.slice(1);\n /* the host bound function implements [[Call]]/[[Construct]] (with the\n new.target substitution), 'name', 'length' and the prototype */\n let p: Function;\n try {\n p = Function.prototype.bind.call(func, bound_this, ...bound_args);\n } catch (e) {\n return Q.js_host_exception_to_guest(ctx, e);\n }\n const m = Q.js_ensure_meta(p, JSClassID.BOUND_FUNCTION);\n m.is_constructor = JS_IsConstructor(ctx, func);\n m.realm = ctx;\n m.u = new JSBoundFunctionData(func, bound_this, bound_args);\n return p;\n}\n\nfunction js_function_call(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n if (argv.length <= 0) return JS_Call(ctx, this_val, undefined, []);\n return JS_Call(ctx, this_val, argv[0], argv.slice(1));\n}\n\nfunction js_function_proto_fileName(ctx: JSContext, this_val: JSValue): JSValue {\n const fd = Q.JS_GetFunctionData(this_val);\n if (fd) {\n const b = fd.function_bytecode;\n if (b.has_debug) return JS_AtomToString(ctx, b.debug.filename);\n }\n return undefined;\n}\n\nfunction js_function_proto_lineNumber(ctx: JSContext, this_val: JSValue, is_col: number): JSValue {\n const fd = Q.JS_GetFunctionData(this_val);\n if (fd) {\n const b = fd.function_bytecode;\n if (b.has_debug) {\n const [line, col] = find_line_num(ctx, b, -1);\n return is_col ? col : line;\n }\n }\n return undefined;\n}\n\nconst js_function_proto_funcs = [\n JS_CGETSET_DEF('fileName', js_function_proto_fileName, null),\n JS_CGETSET_MAGIC_DEF('lineNumber', js_function_proto_lineNumber, null, 0),\n JS_CGETSET_MAGIC_DEF('columnNumber', js_function_proto_lineNumber, null, 1),\n JS_CFUNC_DEF('call', 1, js_function_call),\n JS_CFUNC_MAGIC_DEF('apply', 2, js_function_apply, 0),\n JS_CFUNC_DEF('bind', 1, js_function_bind),\n JS_CFUNC_DEF('toString', 0, js_function_toString),\n JS_CFUNC_DEF(JS_ATOM_Symbol_hasInstance, 1, js_function_hasInstance),\n];\n\nexport function JS_AddIntrinsicFunction(ctx: JSContext): void {\n const proto = ctx.function_proto!;\n JS_SetPropertyFunctionList(ctx, proto, js_function_proto_funcs);\n /* Function.prototype[Symbol.hasInstance] is not writable */\n Reflect.defineProperty(proto, Symbol.hasInstance, { writable: false, configurable: false });\n /* Function constructor */\n const obj1 = JS_NewCFunction3(ctx, js_function_constructor, 'Function', 1, JSCFunctionEnum.constructor_or_func_magic, JSFunctionKind.NORMAL, proto);\n JS_SetConstructor2(ctx, obj1, proto, 0, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValueStr(ctx, ctx.global_obj, 'Function', obj1, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n ctx.function_ctor = obj1 as JSObject;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { JSContext } from '../quickjs.ts';
2
+ export declare function JS_AddIntrinsicGlobal(ctx: JSContext): void;
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Global functions (port of the global object part of quickjs.c):
3
+ * parseInt, parseFloat, isNaN, isFinite, the URI functions, escape/unescape.
4
+ *
5
+ * All of them map strings and numbers to primitives, so they are borrowed
6
+ * host natives (builtins/native.ts).
7
+ */
8
+ import { JS_SetPropertyFunctionList, JS_NATIVE_DEF, JS_PROP_DOUBLE_DEF, JS_PROP_UNDEFINED_DEF, JS_PROP_STRING_DEF, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag, } from "../quickjs.js";
9
+ const G = globalThis;
10
+ const js_global_funcs = [
11
+ JS_NATIVE_DEF('parseInt', 2, parseInt),
12
+ JS_NATIVE_DEF('parseFloat', 1, parseFloat),
13
+ JS_NATIVE_DEF('isNaN', 1, isNaN),
14
+ JS_NATIVE_DEF('isFinite', 1, isFinite),
15
+ JS_NATIVE_DEF('decodeURI', 1, decodeURI),
16
+ JS_NATIVE_DEF('decodeURIComponent', 1, decodeURIComponent),
17
+ JS_NATIVE_DEF('encodeURI', 1, encodeURI),
18
+ JS_NATIVE_DEF('encodeURIComponent', 1, encodeURIComponent),
19
+ JS_NATIVE_DEF('escape', 1, G.escape),
20
+ JS_NATIVE_DEF('unescape', 1, G.unescape),
21
+ JS_PROP_DOUBLE_DEF('Infinity', 1.0 / 0.0, 0),
22
+ JS_PROP_DOUBLE_DEF('NaN', NaN, 0),
23
+ JS_PROP_UNDEFINED_DEF('undefined', 0),
24
+ JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'global', JS_PROP_CONFIGURABLE),
25
+ ];
26
+ export function JS_AddIntrinsicGlobal(ctx) {
27
+ JS_SetPropertyFunctionList(ctx, ctx.global_obj, js_global_funcs);
28
+ }
29
+ //# sourceMappingURL=global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/builtins/global.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACM,0BAA0B,EAAE,aAAa,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,kBAAkB,EACnH,oBAAoB,EAAE,0BAA0B,GACjD,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,GAAQ,UAAU,CAAC;AAE1B,MAAM,eAAe,GAAG;IACtB,aAAa,CAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,CAAC;IACtC,aAAa,CAAC,YAAY,EAAE,CAAC,EAAE,UAAU,CAAC;IAC1C,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC;IAChC,aAAa,CAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,CAAC;IAEtC,aAAa,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC;IACxC,aAAa,CAAC,oBAAoB,EAAE,CAAC,EAAE,kBAAkB,CAAC;IAC1D,aAAa,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC;IACxC,aAAa,CAAC,oBAAoB,EAAE,CAAC,EAAE,kBAAkB,CAAC;IAC1D,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IACpC,aAAa,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC;IACxC,kBAAkB,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;IAC5C,kBAAkB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,qBAAqB,CAAC,WAAW,EAAE,CAAC,CAAC;IACrC,kBAAkB,CAAC,0BAA0B,EAAE,QAAQ,EAAE,oBAAoB,CAAC;CAC/E,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,GAAc;IAClD,0BAA0B,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACnE,CAAC","sourcesContent":["/*\n * Global functions (port of the global object part of quickjs.c):\n * parseInt, parseFloat, isNaN, isFinite, the URI functions, escape/unescape.\n *\n * All of them map strings and numbers to primitives, so they are borrowed\n * host natives (builtins/native.ts).\n */\nimport {\n JSContext, JS_SetPropertyFunctionList, JS_NATIVE_DEF, JS_PROP_DOUBLE_DEF, JS_PROP_UNDEFINED_DEF, JS_PROP_STRING_DEF,\n JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag,\n} from '../quickjs.ts';\n\nconst G: any = globalThis;\n\nconst js_global_funcs = [\n JS_NATIVE_DEF('parseInt', 2, parseInt),\n JS_NATIVE_DEF('parseFloat', 1, parseFloat),\n JS_NATIVE_DEF('isNaN', 1, isNaN),\n JS_NATIVE_DEF('isFinite', 1, isFinite),\n\n JS_NATIVE_DEF('decodeURI', 1, decodeURI),\n JS_NATIVE_DEF('decodeURIComponent', 1, decodeURIComponent),\n JS_NATIVE_DEF('encodeURI', 1, encodeURI),\n JS_NATIVE_DEF('encodeURIComponent', 1, encodeURIComponent),\n JS_NATIVE_DEF('escape', 1, G.escape),\n JS_NATIVE_DEF('unescape', 1, G.unescape),\n JS_PROP_DOUBLE_DEF('Infinity', 1.0 / 0.0, 0),\n JS_PROP_DOUBLE_DEF('NaN', NaN, 0),\n JS_PROP_UNDEFINED_DEF('undefined', 0),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'global', JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicGlobal(ctx: JSContext): void {\n JS_SetPropertyFunctionList(ctx, ctx.global_obj, js_global_funcs);\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import { JSContext } from '../quickjs.ts';
2
+ export declare function JS_AddIntrinsicBasicObjects(ctx: JSContext): void;
3
+ export declare function JS_AddIntrinsicBaseObjects(ctx: JSContext): void;