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.
- package/LICENSE +26 -0
- package/README.md +191 -2
- package/dist/atoms.d.ts +255 -0
- package/dist/atoms.js +445 -0
- package/dist/atoms.js.map +1 -0
- package/dist/builtins/array.d.ts +3 -0
- package/dist/builtins/array.js +116 -0
- package/dist/builtins/array.js.map +1 -0
- package/dist/builtins/bigint.d.ts +3 -0
- package/dist/builtins/bigint.js +122 -0
- package/dist/builtins/bigint.js.map +1 -0
- package/dist/builtins/boolean.d.ts +2 -0
- package/dist/builtins/boolean.js +26 -0
- package/dist/builtins/boolean.js.map +1 -0
- package/dist/builtins/date.d.ts +3 -0
- package/dist/builtins/date.js +1046 -0
- package/dist/builtins/date.js.map +1 -0
- package/dist/builtins/error.d.ts +2 -0
- package/dist/builtins/error.js +154 -0
- package/dist/builtins/error.js.map +1 -0
- package/dist/builtins/function.d.ts +5 -0
- package/dist/builtins/function.js +164 -0
- package/dist/builtins/function.js.map +1 -0
- package/dist/builtins/global.d.ts +2 -0
- package/dist/builtins/global.js +29 -0
- package/dist/builtins/global.js.map +1 -0
- package/dist/builtins/index.d.ts +3 -0
- package/dist/builtins/index.js +139 -0
- package/dist/builtins/index.js.map +1 -0
- package/dist/builtins/json.d.ts +6 -0
- package/dist/builtins/json.js +984 -0
- package/dist/builtins/json.js.map +1 -0
- package/dist/builtins/mapset.d.ts +4 -0
- package/dist/builtins/mapset.js +234 -0
- package/dist/builtins/mapset.js.map +1 -0
- package/dist/builtins/math.d.ts +2 -0
- package/dist/builtins/math.js +62 -0
- package/dist/builtins/math.js.map +1 -0
- package/dist/builtins/native.d.ts +22 -0
- package/dist/builtins/native.js +250 -0
- package/dist/builtins/native.js.map +1 -0
- package/dist/builtins/number.d.ts +4 -0
- package/dist/builtins/number.js +76 -0
- package/dist/builtins/number.js.map +1 -0
- package/dist/builtins/object.d.ts +12 -0
- package/dist/builtins/object.js +575 -0
- package/dist/builtins/object.js.map +1 -0
- package/dist/builtins/promise.d.ts +13 -0
- package/dist/builtins/promise.js +582 -0
- package/dist/builtins/promise.js.map +1 -0
- package/dist/builtins/proxy.d.ts +3 -0
- package/dist/builtins/proxy.js +226 -0
- package/dist/builtins/proxy.js.map +1 -0
- package/dist/builtins/reflect.d.ts +2 -0
- package/dist/builtins/reflect.js +109 -0
- package/dist/builtins/reflect.js.map +1 -0
- package/dist/builtins/regexp.d.ts +2 -0
- package/dist/builtins/regexp.js +203 -0
- package/dist/builtins/regexp.js.map +1 -0
- package/dist/builtins/string.d.ts +4 -0
- package/dist/builtins/string.js +135 -0
- package/dist/builtins/string.js.map +1 -0
- package/dist/builtins/symbol.d.ts +3 -0
- package/dist/builtins/symbol.js +98 -0
- package/dist/builtins/symbol.js.map +1 -0
- package/dist/builtins/typedarray.d.ts +15 -0
- package/dist/builtins/typedarray.js +1838 -0
- package/dist/builtins/typedarray.js.map +1 -0
- package/dist/builtins/weakref.d.ts +18 -0
- package/dist/builtins/weakref.js +130 -0
- package/dist/builtins/weakref.js.map +1 -0
- package/dist/dump.d.ts +2 -0
- package/dist/dump.js +124 -0
- package/dist/dump.js.map +1 -0
- package/dist/embed.d.ts +18 -0
- package/dist/embed.js +286 -0
- package/dist/embed.js.map +1 -0
- package/dist/interpreter.d.ts +81 -0
- package/dist/interpreter.js +3768 -0
- package/dist/interpreter.js.map +1 -0
- package/dist/jit.d.ts +59 -0
- package/dist/jit.js +3440 -0
- package/dist/jit.js.map +1 -0
- package/dist/jit_hook.d.ts +21 -0
- package/dist/jit_hook.js +4 -0
- package/dist/jit_hook.js.map +1 -0
- package/dist/jit_runtime.d.ts +104 -0
- package/dist/jit_runtime.js +721 -0
- package/dist/jit_runtime.js.map +1 -0
- package/dist/jit_stack.d.ts +24 -0
- package/dist/jit_stack.js +227 -0
- package/dist/jit_stack.js.map +1 -0
- package/dist/jseption.d.ts +15 -0
- package/dist/jseption.js +61 -0
- package/dist/jseption.js.map +1 -0
- package/dist/opcodes.d.ts +347 -0
- package/dist/opcodes.js +322 -0
- package/dist/opcodes.js.map +1 -0
- package/dist/parser.d.ts +283 -0
- package/dist/parser.js +9752 -0
- package/dist/parser.js.map +1 -0
- package/dist/qjs.d.ts +2 -0
- package/dist/qjs.js +122 -0
- package/dist/qjs.js.map +1 -0
- package/dist/quickjs.d.ts +460 -0
- package/dist/quickjs.js +3408 -0
- package/dist/quickjs.js.map +1 -0
- package/dist/std.d.ts +4 -0
- package/dist/std.js +273 -0
- package/dist/std.js.map +1 -0
- package/dist/values.d.ts +447 -0
- package/dist/values.js +461 -0
- package/dist/values.js.map +1 -0
- package/package.json +59 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/builtins/json.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * JSON object (port of the JSON part of quickjs.c: json_next_token,\n * json_parse_value, JS_ParseJSON, internalize_json_property,\n * js_json_check, js_json_to_str, JS_JSONStringify)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSErrorEnum, JSAtom, JS_EXCEPTION, JS_IsException, JS_IsUndefined,\n JS_IsObject, JS_IsFunction, JS_IsArray, JS_NewObject, JS_NewArray, JS_NewErrorNative, JS_Throw, JS_ThrowTypeError,\n JS_ThrowStackOverflow, JS_DefinePropertyValue, JS_DefinePropertyValueUint32, JS_DefinePropertyValueStr,\n JS_GetProperty, JS_GetPropertyInt64, JS_GetPropertyValue, JS_DeleteProperty, JS_GetOwnPropertyNamesInternal,\n JS_PROP_C_W_E, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_GPN_STRING_MASK, JS_GPN_ENUM_ONLY, JS_ATOM_NULL,\n JS_ATOM_empty_string, JS_ATOM_toJSON, JS_ATOM_fileName, JS_ATOM_lineNumber, JS_ATOM_columnNumber,\n JS_ATOM_Symbol_toStringTag, JS_ATOM_true, JS_ATOM_false, JS_ATOM_null, JS_ValueToAtom, JS_NewAtomUInt32,\n JS_AtomToValue, JS_Call, JS_ToString, JS_ToNumber, JS_ToInt32Clamp, JS_ToBoolFree, JS_ToQuotedString,\n js_get_length64, build_backtrace, JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_PROP_STRING_DEF, JS_OBJECT_DEF,\n JS_NewAtom,\n} from '../quickjs.ts';\nimport { fix_deep_json } from './native.ts';\n\n/* ---------------------------------------------------------------------\n JSON parser (port of json_next_token / json_parse_value)\n --------------------------------------------------------------------- */\n\nexport const JS_PARSE_JSON_EXT = 1 << 0; /* allow extended JSON (comments, trailing commas, ...) */\n\nconst enum JSONTok {\n EOF = -1,\n STRING = -2,\n NUMBER = -3,\n IDENT = -4,\n ERROR = -5,\n}\n\nclass JSONParseState {\n ctx: JSContext;\n buf: string;\n buf_end: number;\n buf_ptr = 0;\n last_ptr = 0;\n filename: string;\n ext_json = false;\n /* current token */\n tok: number = JSONTok.EOF;\n tok_ptr = 0; /* start position of the token */\n tok_str = ''; /* TOK_STRING value */\n tok_num: JSValue = 0; /* TOK_NUMBER value */\n tok_atom: JSAtom = JS_ATOM_NULL; /* TOK_IDENT atom */\n constructor(ctx: JSContext, buf: string, filename: string) {\n this.ctx = ctx;\n this.buf = buf;\n this.buf_end = buf.length;\n this.filename = filename;\n }\n /* character code at position p, 0 past the end (like the NUL terminated C buffer) */\n at(p: number): number {\n return p < this.buf_end ? this.buf.charCodeAt(p) : 0;\n }\n}\n\nconst CP_LS = 0x2028;\nconst CP_PS = 0x2029;\n\nfunction get_line_col(buf: string, pos: number): [number, number] {\n let line = 1, col = 1;\n const n = Math.min(pos, buf.length);\n for (let i = 0; i < n; i++) {\n const c = buf.charCodeAt(i);\n if (c === 10) { line++; col = 1; }\n else if (c === 13) { if (buf.charCodeAt(i + 1) !== 10) { line++; col = 1; } }\n else if (c === CP_LS || c === CP_PS) { line++; col = 1; }\n else col++;\n }\n return [line, col];\n}\n\n/* port of js_parse_error_pos / js_parse_error_v: throw a SyntaxError\n with the position of 'pos' in the input */\nfunction json_parse_error_pos(s: JSONParseState, pos: number, msg: string): number {\n const ctx = s.ctx;\n const [line, col] = get_line_col(s.buf, pos);\n const obj = JS_NewErrorNative(ctx, JSErrorEnum.SYNTAX_ERROR, msg);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_fileName, s.filename, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_lineNumber, line, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_columnNumber, col, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n build_backtrace(ctx, obj, s.filename, line, col, 0);\n JS_Throw(ctx, obj);\n return -1;\n}\n\nfunction json_parse_error(s: JSONParseState, msg: string): number {\n return json_parse_error_pos(s, s.tok_ptr, msg);\n}\n\nfunction is_digit(c: number): boolean { return c >= 48 && c <= 57; }\n\nfunction from_hex(c: number): number {\n if (c >= 48 && c <= 57) return c - 48;\n if (c >= 65 && c <= 70) return c - 55;\n if (c >= 97 && c <= 102) return c - 87;\n return -1;\n}\n\n/* ASCII identifier start / continue (lre_is_id_start / lre_is_id_continue restricted to ASCII) */\nfunction is_ident_start_ascii(c: number): boolean {\n return (c >= 97 && c <= 122) || (c >= 65 && c <= 90) || c === 95 /* _ */ || c === 36 /* $ */;\n}\nfunction is_ident_continue_ascii(c: number): boolean {\n return is_ident_start_ascii(c) || is_digit(c);\n}\n\n/* port of lre_parse_escape(&p, TRUE): returns the code point, -1 if\n malformed, -2 if unknown escape; pp.p is updated */\nfunction lre_parse_escape(s: JSONParseState, pp: { p: number }): number {\n let p = pp.p;\n let c = s.at(p++);\n switch (c) {\n case 98: c = 8; break; /* \\b */\n case 102: c = 12; break; /* \\f */\n case 110: c = 10; break; /* \\n */\n case 114: c = 13; break; /* \\r */\n case 116: c = 9; break; /* \\t */\n case 118: c = 11; break; /* \\v */\n case 120: /* x */\n case 117: /* u */\n {\n if (s.at(p) === 123 /* { */) {\n p++;\n c = 0;\n for (;;) {\n const h = from_hex(s.at(p++));\n if (h < 0) return -1;\n c = (c << 4) | h;\n if (c > 0x10ffff) return -1;\n if (s.at(p) === 125 /* } */) break;\n }\n p++;\n } else {\n const n = (c === 120) ? 2 : 4;\n c = 0;\n for (let i = 0; i < n; i++) {\n const h = from_hex(s.at(p++));\n if (h < 0) return -1;\n c = (c << 4) | h;\n }\n }\n }\n break;\n default:\n return -2;\n }\n pp.p = p;\n return c;\n}\n\n/* port of js_parse_string() in JSON mode (s->cur_func == NULL) */\nfunction json_parse_string(s: JSONParseState, sep: number, p: number): number {\n let out = '';\n for (;;) {\n if (p >= s.buf_end) return json_parse_error(s, 'unexpected end of string');\n let c = s.at(p);\n if (c < 0x20) {\n return json_parse_error_pos(s, p, 'invalid character in a JSON string');\n }\n p++;\n if (c === sep) break;\n if (c === 92 /* \\ */) {\n const p_escape = p - 1;\n c = s.at(p);\n switch (c) {\n case 0:\n if (p >= s.buf_end) return json_parse_error(s, 'unexpected end of string');\n p++;\n break;\n case 39: /* ' */\n case 34: /* \" */\n case 92: /* \\ */\n p++;\n break;\n case 13: /* \\r: accept DOS and MAC newline sequences */\n if (s.at(p + 1) === 10) p++;\n /* fall through */\n case 10:\n /* ignore escaped newline sequence */\n p++;\n continue;\n default:\n if (c >= 48 && c <= 57) {\n /* JSON case: no octal escapes */\n return json_parse_error_pos(s, p_escape, 'malformed escape sequence in string literal');\n } else if (c >= 0x80) {\n p++;\n /* LS or PS are skipped */\n if (c === CP_LS || c === CP_PS) continue;\n } else {\n const pp = { p };\n const ret = lre_parse_escape(s, pp);\n if (ret === -1) {\n return json_parse_error_pos(s, p_escape, 'malformed escape sequence in string literal');\n } else if (ret < 0) {\n /* ignore the '\\' (could output a warning) */\n p++;\n } else {\n p = pp.p;\n c = ret;\n }\n }\n break;\n }\n }\n out += (c > 0xffff) ? String.fromCodePoint(c) : String.fromCharCode(c);\n }\n s.tok = JSONTok.STRING;\n s.tok_str = out;\n s.buf_ptr = p;\n return 0;\n}\n\n/* port of json_parse_ident: only pure ascii identifiers are accepted */\nfunction json_parse_ident(s: JSONParseState, pp: { p: number }, c: number): JSAtom {\n let p = pp.p;\n let ident = String.fromCharCode(c);\n for (;;) {\n c = s.at(p);\n if (c >= 128 || !is_ident_continue_ascii(c)) break;\n ident += String.fromCharCode(c);\n p++;\n }\n pp.p = p;\n return JS_NewAtom(s.ctx, ident);\n}\n\n/* port of js_atof() with radix 10 and no flags (JSON) or\n ATOD_ACCEPT_BIN_OCT with radix 0 (extended JSON). Returns -1 on error. */\nfunction json_parse_number(s: JSONParseState, p: number): number {\n const ext = s.ext_json;\n let is_neg = false;\n let radix = 10;\n let p_start: number;\n if (s.at(p) === 43 /* + */) {\n p++;\n } else if (s.at(p) === 45 /* - */) {\n p++;\n is_neg = true;\n }\n if (ext && s.at(p) === 48 /* 0 */) {\n const c1 = s.at(p + 1);\n if (c1 === 120 || c1 === 88) { p += 2; radix = 16; }\n else if (c1 === 111 || c1 === 79) { p += 2; radix = 8; }\n else if (c1 === 98 || c1 === 66) { p += 2; radix = 2; }\n if (radix !== 10) {\n /* there must be a digit after the prefix */\n if (to_digit(s.at(p)) >= radix) return json_parse_error_pos(s, p, 'invalid number literal');\n }\n }\n let is_float = false;\n p_start = p;\n while (to_digit(s.at(p)) < radix) p++;\n if (s.at(p) === 46 /* . */ && (p > p_start || to_digit(s.at(p + 1)) < radix)) {\n is_float = true;\n p++;\n while (to_digit(s.at(p)) < radix) p++;\n }\n if (p > p_start) {\n const c = s.at(p);\n if (((c === 101 || c === 69) && radix === 10) ||\n ((c === 112 || c === 80) && (radix === 2 || radix === 8 || radix === 16))) {\n let p1 = p + 1;\n is_float = true;\n if (s.at(p1) === 43 || s.at(p1) === 45) p1++;\n if (is_digit(s.at(p1))) {\n p = p1 + 1;\n while (is_digit(s.at(p))) p++;\n }\n }\n }\n if (p === p_start) return json_parse_error_pos(s, p, 'invalid number literal');\n const text = s.buf.substring(p_start, p);\n let d: number;\n if (radix === 10) {\n d = Number(text);\n } else if (is_float) {\n return json_parse_error_pos(s, p_start, 'invalid number literal');\n } else {\n d = parseInt(text, radix);\n }\n if (is_neg) d = -d;\n s.tok = JSONTok.NUMBER;\n s.tok_num = d;\n s.buf_ptr = p;\n return 0;\n}\n\nfunction to_digit(c: number): number {\n if (c >= 48 && c <= 57) return c - 48;\n if (c >= 65 && c <= 90) return c - 65 + 10;\n if (c >= 97 && c <= 122) return c - 97 + 10;\n return 36;\n}\n\nfunction json_next_token(s: JSONParseState): number {\n let p = s.last_ptr = s.buf_ptr;\n for (;;) {\n s.tok_ptr = p;\n const c = s.at(p);\n switch (c) {\n case 0:\n if (p >= s.buf_end) {\n s.tok = JSONTok.EOF;\n s.buf_ptr = p;\n return 0;\n }\n break; /* def_token */\n case 39: /* ' */\n if (!s.ext_json) break; /* JSON does not accept single quoted strings */\n /* fall through */\n case 34: /* \" */\n if (json_parse_string(s, c, p + 1)) { s.tok = JSONTok.ERROR; return -1; }\n return 0;\n case 13: /* \\r: accept DOS and MAC newline sequences */\n if (s.at(p + 1) === 10) p++;\n /* fall through */\n case 10:\n p++;\n continue;\n case 12: /* \\f */\n case 11: /* \\v */\n if (!s.ext_json) break; /* JSONWhitespace does not match <VT>, nor <FF> */\n /* fall through */\n case 32:\n case 9:\n p++;\n continue;\n case 47: /* / */\n if (!s.ext_json) break; /* JSON does not accept comments */\n if (s.at(p + 1) === 42 /* * */) {\n p += 2;\n for (;;) {\n if (p >= s.buf_end) {\n json_parse_error(s, 'unexpected end of comment');\n s.tok = JSONTok.ERROR;\n return -1;\n }\n if (s.at(p) === 42 && s.at(p + 1) === 47) { p += 2; break; }\n p++;\n }\n continue;\n } else if (s.at(p + 1) === 47) {\n p += 2;\n for (;;) {\n if (p >= s.buf_end) break;\n const c1 = s.at(p);\n if (c1 === 13 || c1 === 10 || c1 === CP_LS || c1 === CP_PS) break;\n p++;\n }\n continue;\n }\n break; /* def_token */\n case 43: /* + */\n if (!s.ext_json || !is_digit(s.at(p + 1))) break;\n return json_parse_number(s, p);\n case 48: /* 0 */\n if (is_digit(s.at(p + 1))) break;\n return json_parse_number(s, p);\n case 45: /* - */\n if (!is_digit(s.at(p + 1))) break;\n return json_parse_number(s, p);\n default:\n if (is_digit(c)) return json_parse_number(s, p);\n if (is_ident_start_ascii(c)) {\n /* identifier: only pure ascii characters are accepted */\n const pp = { p: p + 1 };\n const atom = json_parse_ident(s, pp, c);\n if (atom === JS_ATOM_NULL) { s.tok = JSONTok.ERROR; return -1; }\n s.tok_atom = atom;\n s.tok = JSONTok.IDENT;\n s.buf_ptr = pp.p;\n return 0;\n }\n if (c >= 128) {\n json_parse_error(s, 'unexpected character');\n s.tok = JSONTok.ERROR;\n return -1;\n }\n break;\n }\n /* def_token */\n s.tok = c;\n p++;\n s.buf_ptr = p;\n return 0;\n }\n}\n\nfunction json_parse_expect(s: JSONParseState, tok: number): number {\n if (s.tok !== tok) {\n /* XXX: dump token correctly in all cases */\n return json_parse_error(s, `expecting '${String.fromCharCode(tok)}'`);\n }\n return json_next_token(s);\n}\n\n/* current token (through a function so that TypeScript does not narrow s.tok) */\nfunction cur_tok(s: JSONParseState): number { return s.tok; }\n\nfunction json_parse_value(s: JSONParseState, depth: number): JSValue {\n const ctx = s.ctx;\n let val: JSValue = null;\n if (depth > ctx.rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n const tok: number = s.tok;\n switch (tok) {\n case 123: /* { */\n {\n if (json_next_token(s)) return JS_EXCEPTION;\n val = JS_NewObject(ctx);\n if (JS_IsException(val)) return val;\n if (cur_tok(s) !== 125 /* } */) {\n for (;;) {\n let prop_name: JSAtom;\n if (cur_tok(s) === JSONTok.STRING) {\n prop_name = JS_ValueToAtom(ctx, s.tok_str);\n if (prop_name === JS_ATOM_NULL) return JS_EXCEPTION;\n } else if (s.ext_json && cur_tok(s) === JSONTok.IDENT) {\n prop_name = s.tok_atom;\n } else {\n json_parse_error(s, 'expecting property name');\n return JS_EXCEPTION;\n }\n if (json_next_token(s)) return JS_EXCEPTION;\n if (json_parse_expect(s, 58 /* : */)) return JS_EXCEPTION;\n const prop_val = json_parse_value(s, depth + 1);\n if (JS_IsException(prop_val)) return JS_EXCEPTION;\n const ret = JS_DefinePropertyValue(ctx, val, prop_name, prop_val, JS_PROP_C_W_E);\n if (ret < 0) return JS_EXCEPTION;\n if (cur_tok(s) !== 44 /* , */) break;\n if (json_next_token(s)) return JS_EXCEPTION;\n if (s.ext_json && cur_tok(s) === 125) break;\n }\n }\n if (json_parse_expect(s, 125 /* } */)) return JS_EXCEPTION;\n }\n break;\n case 91: /* [ */\n {\n if (json_next_token(s)) return JS_EXCEPTION;\n val = JS_NewArray(ctx);\n if (JS_IsException(val)) return val;\n if (cur_tok(s) !== 93 /* ] */) {\n let idx = 0;\n for (;;) {\n const el = json_parse_value(s, depth + 1);\n if (JS_IsException(el)) return JS_EXCEPTION;\n const ret = JS_DefinePropertyValueUint32(ctx, val, idx, el, JS_PROP_C_W_E);\n if (ret < 0) return JS_EXCEPTION;\n if (cur_tok(s) !== 44 /* , */) break;\n if (json_next_token(s)) return JS_EXCEPTION;\n idx++;\n if (s.ext_json && cur_tok(s) === 93) break;\n }\n }\n if (json_parse_expect(s, 93 /* ] */)) return JS_EXCEPTION;\n }\n break;\n case JSONTok.STRING:\n val = s.tok_str;\n if (json_next_token(s)) return JS_EXCEPTION;\n break;\n case JSONTok.NUMBER:\n val = s.tok_num;\n if (json_next_token(s)) return JS_EXCEPTION;\n break;\n case JSONTok.IDENT:\n if (s.tok_atom === JS_ATOM_false || s.tok_atom === JS_ATOM_true) {\n val = (s.tok_atom === JS_ATOM_true);\n } else if (s.tok_atom === JS_ATOM_null) {\n val = null;\n } else {\n return json_unexpected_token(s);\n }\n if (json_next_token(s)) return JS_EXCEPTION;\n break;\n default:\n return json_unexpected_token(s);\n }\n return val;\n}\n\nfunction json_unexpected_token(s: JSONParseState): JSValue {\n if (s.tok === JSONTok.EOF) {\n json_parse_error(s, 'Unexpected end of JSON input');\n } else {\n json_parse_error(s, `unexpected token: '${s.buf.substring(s.tok_ptr, s.buf_ptr)}'`);\n }\n return JS_EXCEPTION;\n}\n\nexport function JS_ParseJSON2(ctx: JSContext, buf: string, filename: string, flags: number): JSValue {\n const s = new JSONParseState(ctx, buf, filename);\n s.ext_json = (flags & JS_PARSE_JSON_EXT) !== 0;\n if (json_next_token(s)) return JS_EXCEPTION;\n const val = json_parse_value(s, 0);\n if (JS_IsException(val)) return val;\n if (s.tok !== JSONTok.EOF) {\n json_parse_error(s, 'unexpected data at the end');\n return JS_EXCEPTION;\n }\n return val;\n}\n\nexport function JS_ParseJSON(ctx: JSContext, buf: string, filename: string): JSValue {\n return JS_ParseJSON2(ctx, buf, filename, 0);\n}\n\n/* ---------------------------------------------------------------------\n JSON.parse\n --------------------------------------------------------------------- */\n\nfunction internalize_json_property(ctx: JSContext, holder: JSValue, name: JSAtom, reviver: JSValue, depth: number): JSValue {\n if (depth > ctx.rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n const val = JS_GetProperty(ctx, holder, name);\n if (JS_IsException(val)) return val;\n if (JS_IsObject(val)) {\n const is_array = JS_IsArray(ctx, val);\n if (is_array < 0) return JS_EXCEPTION;\n let len: number;\n let atoms: { atom: JSAtom }[] | null = null;\n if (is_array) {\n len = js_get_length64(ctx, val);\n if (len < 0) return JS_EXCEPTION;\n } else {\n atoms = JS_GetOwnPropertyNamesInternal(ctx, val, JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK);\n if (!atoms) return JS_EXCEPTION;\n len = atoms.length;\n }\n for (let i = 0; i < len; i++) {\n let prop: JSAtom;\n if (is_array) {\n prop = JS_NewAtomUInt32(ctx, i);\n } else {\n prop = atoms![i].atom;\n }\n const new_el = internalize_json_property(ctx, val, prop, reviver, depth + 1);\n if (JS_IsException(new_el)) return JS_EXCEPTION;\n let ret: number;\n if (JS_IsUndefined(new_el)) {\n ret = JS_DeleteProperty(ctx, val, prop, 0);\n } else {\n ret = JS_DefinePropertyValue(ctx, val, prop, new_el, JS_PROP_C_W_E);\n }\n if (ret < 0) return JS_EXCEPTION;\n }\n }\n const name_val = JS_AtomToValue(ctx, name);\n if (JS_IsException(name_val)) return JS_EXCEPTION;\n return JS_Call(ctx, reviver, holder, [name_val, val]);\n}\n\nfunction js_json_parse(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const str = JS_ToString(ctx, argv[0]);\n if (JS_IsException(str)) return JS_EXCEPTION;\n /* fast path: the host parser, with the tree re-prototyped to the guest\n intrinsics. On a syntax error the ported parser runs to produce the\n QuickJS error (message, line and column). */\n let obj: JSValue;\n try {\n obj = fix_deep_json(ctx, JSON.parse(str as string));\n } catch {\n obj = JS_ParseJSON(ctx, str as string, '<input>');\n }\n if (JS_IsException(obj)) return obj;\n if (argv.length > 1 && JS_IsFunction(ctx, argv[1])) {\n const reviver = argv[1];\n const root = JS_NewObject(ctx);\n if (JS_IsException(root)) return JS_EXCEPTION;\n if (JS_DefinePropertyValue(ctx, root, JS_ATOM_empty_string, obj, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n obj = internalize_json_property(ctx, root, JS_ATOM_empty_string, reviver, 0);\n }\n return obj;\n}\n\n/* ---------------------------------------------------------------------\n JSON.stringify\n --------------------------------------------------------------------- */\n\ninterface JSONStringifyContext {\n replacer_func: JSValue;\n stack: JSObject[];\n property_list: string[] | null;\n gap: string;\n empty: string;\n b: string[];\n}\n\nfunction js_json_check(ctx: JSContext, jsc: JSONStringifyContext, holder: JSValue, val: JSValue, key: JSValue): JSValue {\n /* check for object.toJSON method */\n /* ECMA specifies this is done only for Object and BigInt */\n if (JS_IsObject(val) || typeof val === 'bigint') {\n const f = JS_GetProperty(ctx, val, JS_ATOM_toJSON);\n if (JS_IsException(f)) return JS_EXCEPTION;\n if (JS_IsFunction(ctx, f)) {\n val = JS_Call(ctx, f, val, [key]);\n if (JS_IsException(val)) return JS_EXCEPTION;\n }\n }\n if (!JS_IsUndefined(jsc.replacer_func)) {\n val = JS_Call(ctx, jsc.replacer_func, holder, [key, val]);\n if (JS_IsException(val)) return JS_EXCEPTION;\n }\n switch (typeof val) {\n case 'object':\n if (val === null) return val;\n if (Q.JS_IsObject(val)) {\n if (JS_IsFunction(ctx, val)) break;\n return val;\n }\n if (JS_IsException(val)) return val;\n break; /* symbol */\n case 'string':\n case 'number':\n case 'boolean':\n case 'bigint':\n return val;\n default:\n break;\n }\n return undefined;\n}\n\nfunction js_json_to_str(ctx: JSContext, jsc: JSONStringifyContext, holder: JSValue, val: JSValue, indent: string, depth: number): number {\n if (depth > ctx.rt.max_stack_depth) { JS_ThrowStackOverflow(ctx); return -1; }\n\n if (Q.JS_IsObject(val)) {\n const p = val;\n const cl = Q.JS_GetClassID(p);\n if (cl === JSClassID.STRING) {\n val = JS_ToString(ctx, val);\n if (JS_IsException(val)) return -1;\n } else if (cl === JSClassID.NUMBER) {\n val = JS_ToNumber(ctx, val);\n if (JS_IsException(val)) return -1;\n } else if (cl === JSClassID.BOOLEAN || cl === JSClassID.BIG_INT) {\n /* This will throw the same error as for the primitive object */\n val = Q.JS_GetAnyOpaque(p) as JSValue;\n } else {\n if (jsc.stack.includes(p)) {\n JS_ThrowTypeError(ctx, 'circular reference');\n return -1;\n }\n const indent1 = indent + jsc.gap;\n let sep: string, sep1: string;\n if (jsc.gap !== '') {\n sep = '\\n' + indent1;\n sep1 = ' ';\n } else {\n sep = jsc.empty;\n sep1 = jsc.empty;\n }\n jsc.stack.push(p);\n const ret = JS_IsArray(ctx, val);\n if (ret < 0) return -1;\n if (ret) {\n const len = js_get_length64(ctx, val);\n if (len < 0) return -1;\n jsc.b.push('[');\n for (let i = 0; i < len; i++) {\n if (i > 0) jsc.b.push(',');\n jsc.b.push(sep);\n let v = JS_GetPropertyInt64(ctx, val, i);\n if (JS_IsException(v)) return -1;\n /* XXX: could do this string conversion only when needed */\n const prop = String(i);\n v = js_json_check(ctx, jsc, val, v, prop);\n if (JS_IsException(v)) return -1;\n if (JS_IsUndefined(v)) v = null;\n if (js_json_to_str(ctx, jsc, val, v, indent1, depth + 1)) return -1;\n }\n if (len > 0 && jsc.gap !== '') {\n jsc.b.push('\\n');\n jsc.b.push(indent);\n }\n jsc.b.push(']');\n } else {\n let tab: JSValue[];\n if (jsc.property_list !== null) {\n tab = jsc.property_list;\n } else {\n const keys = js_object_keys(ctx, val);\n if (!keys) return -1;\n tab = keys;\n }\n const len = tab.length;\n jsc.b.push('{');\n let has_content = false;\n for (let i = 0; i < len; i++) {\n let prop = tab[i];\n let v = JS_GetPropertyValue(ctx, val, prop);\n if (JS_IsException(v)) return -1;\n v = js_json_check(ctx, jsc, val, v, prop);\n if (JS_IsException(v)) return -1;\n if (!JS_IsUndefined(v)) {\n if (has_content) jsc.b.push(',');\n prop = JS_ToQuotedString(ctx, prop);\n if (JS_IsException(prop)) return -1;\n jsc.b.push(sep);\n jsc.b.push(prop as string);\n jsc.b.push(':');\n jsc.b.push(sep1);\n if (js_json_to_str(ctx, jsc, val, v, indent1, depth + 1)) return -1;\n has_content = true;\n }\n }\n if (has_content && jsc.gap !== '') {\n jsc.b.push('\\n');\n jsc.b.push(indent);\n }\n jsc.b.push('}');\n }\n jsc.stack.pop();\n return 0;\n }\n }\n /* concat_primitive */\n switch (typeof val) {\n case 'string': {\n const q = JS_ToQuotedString(ctx, val);\n if (JS_IsException(q)) return -1;\n jsc.b.push(q as string);\n return 0;\n }\n case 'number':\n if (!Number.isFinite(val)) {\n jsc.b.push('null');\n } else {\n jsc.b.push(String(val));\n }\n return 0;\n case 'boolean':\n jsc.b.push(val ? 'true' : 'false');\n return 0;\n case 'object':\n if (val === null) { jsc.b.push('null'); return 0; }\n return 0;\n case 'bigint':\n /* reject big numbers: use toJSON method to override */\n JS_ThrowTypeError(ctx, 'Do not know how to serialize a BigInt');\n return -1;\n default:\n return 0;\n }\n}\n\n/* own enumerable string keys of an object (js_object_keys with JS_ITERATOR_KIND_KEY) */\nfunction js_object_keys(ctx: JSContext, obj: JSValue): string[] | null {\n const tab = JS_GetOwnPropertyNamesInternal(ctx, obj as JSObject, JS_GPN_STRING_MASK | JS_GPN_ENUM_ONLY);\n if (!tab) return null;\n const res: string[] = [];\n for (const e of tab) {\n const v = JS_AtomToValue(ctx, e.atom);\n if (JS_IsException(v)) return null;\n res.push(v as string);\n }\n return res;\n}\n\nexport function JS_JSONStringify(ctx: JSContext, obj: JSValue, replacer: JSValue, space0: JSValue): JSValue {\n const jsc: JSONStringifyContext = {\n replacer_func: undefined,\n stack: [],\n property_list: null,\n gap: '',\n empty: '',\n b: [],\n };\n if (JS_IsFunction(ctx, replacer)) {\n jsc.replacer_func = replacer;\n } else {\n const res = JS_IsArray(ctx, replacer);\n if (res < 0) return JS_EXCEPTION;\n if (res) {\n /* XXX: enumeration is not fully correct */\n jsc.property_list = [];\n const n = js_get_length64(ctx, replacer);\n if (n < 0) return JS_EXCEPTION;\n for (let i = 0; i < n; i++) {\n let v = JS_GetPropertyInt64(ctx, replacer, i);\n if (JS_IsException(v)) return JS_EXCEPTION;\n if (Q.JS_IsObject(v)) {\n if (Q.JS_GetClassID(v) === JSClassID.STRING || Q.JS_GetClassID(v) === JSClassID.NUMBER) {\n v = JS_ToString(ctx, v);\n if (JS_IsException(v)) return JS_EXCEPTION;\n } else {\n continue;\n }\n } else if (typeof v === 'number') {\n v = JS_ToString(ctx, v);\n if (JS_IsException(v)) return JS_EXCEPTION;\n } else if (typeof v !== 'string') {\n continue;\n }\n if (!jsc.property_list.includes(v as string)) {\n jsc.property_list.push(v as string);\n }\n }\n }\n }\n let space = space0;\n if (Q.JS_IsObject(space)) {\n if (Q.JS_GetClassID(space) === JSClassID.NUMBER) {\n space = JS_ToNumber(ctx, space);\n } else if (Q.JS_GetClassID(space) === JSClassID.STRING) {\n space = JS_ToString(ctx, space);\n }\n if (JS_IsException(space)) return JS_EXCEPTION;\n }\n if (typeof space === 'number') {\n const n = JS_ToInt32Clamp(ctx, space, 0, 10, 0);\n if (JS_IsException(n)) return JS_EXCEPTION;\n jsc.gap = ' '.substring(0, n as number);\n } else if (typeof space === 'string') {\n jsc.gap = space.substring(0, Math.min(space.length, 10));\n } else {\n jsc.gap = jsc.empty;\n }\n const wrapper = JS_NewObject(ctx);\n if (JS_IsException(wrapper)) return JS_EXCEPTION;\n if (JS_DefinePropertyValue(ctx, wrapper, JS_ATOM_empty_string, obj, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n let val = js_json_check(ctx, jsc, wrapper, obj, jsc.empty);\n if (JS_IsException(val)) return JS_EXCEPTION;\n if (JS_IsUndefined(val)) return undefined;\n if (js_json_to_str(ctx, jsc, wrapper, val, jsc.empty, 0)) return JS_EXCEPTION;\n return jsc.b.join('');\n}\n\nfunction js_json_stringify(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // stringify(val, replacer, space)\n /* fast path: the host serializer (toJSON/replacer are guest functions,\n called natively). A host TypeError (BigInt, cycle) is reported by the\n ported serializer with the QuickJS message; guest exceptions thrown by\n toJSON/replacer/getters propagate. */\n try {\n return (JSON.stringify as any)(argv[0], argv[1], argv[2]);\n } catch (e) {\n if (!(e instanceof TypeError)) return Q.js_host_exception_to_guest(ctx, e);\n }\n return JS_JSONStringify(ctx, argv[0], argv[1], argv[2]);\n}\n\nconst js_json_funcs = [\n JS_CFUNC_DEF('parse', 2, js_json_parse),\n JS_CFUNC_DEF('stringify', 3, js_json_stringify),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'JSON', JS_PROP_CONFIGURABLE),\n];\n\nconst js_json_obj = [\n JS_OBJECT_DEF('JSON', js_json_funcs, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicJSON(ctx: JSContext): void {\n /* add JSON as autoinit object */\n JS_SetPropertyFunctionList(ctx, ctx.global_obj, js_json_obj);\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { JSContext, JSValue } from '../quickjs.ts';
|
|
2
|
+
export declare function js_weakref_is_target(val: JSValue): boolean;
|
|
3
|
+
export declare function js_map_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[], magic: number): JSValue;
|
|
4
|
+
export declare function JS_AddIntrinsicMapSet(ctx: JSContext): void;
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Map, Set, WeakMap, WeakSet and their iterators (port of the Map/Set
|
|
3
|
+
* part of quickjs.c)
|
|
4
|
+
*
|
|
5
|
+
* Guest collections are host collections with the guest prototype
|
|
6
|
+
* (builtins/native.ts): the constructor creates the host Map/Set/WeakMap/
|
|
7
|
+
* WeakSet, re-prototypes it to the prototype derived from new.target and
|
|
8
|
+
* tags it with the class id. Every method is the borrowed host native; the
|
|
9
|
+
* iterators are the host iterators re-prototyped to the guest Map/Set
|
|
10
|
+
* Iterator prototypes, whose `next` is the host one.
|
|
11
|
+
*/
|
|
12
|
+
import { JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsObject, JS_IsFunction, JS_NewObject, JS_NewObjectProto, JS_NewArray, JS_NewCFunctionMagic, js_proto_from_ctor, JS_ThrowTypeError, JS_ThrowTypeErrorNotAnObject, JS_GetProperty, JS_GetPropertyUint32, JS_SetPropertyInt64, JS_GetIterator, JS_IteratorNext, JS_IteratorClose, JS_Call, js_get_length64, JS_SetPropertyFunctionList, JS_NewGlobalCConstructor2, JS_CFUNC_MAGIC_DEF, JS_CGETSET_DEF, JS_NATIVE_DEF, JS_NATIVE_GETSET_DEF, JS_PROP_STRING_DEF, JS_ALIAS_DEF, JS_PROP_CONFIGURABLE, JS_ATOM_Map, JS_ATOM_add, JS_ATOM_set, JS_ATOM_next, JS_ATOM_Symbol_iterator, JS_ATOM_Symbol_toStringTag, JS_ATOM_Symbol_species, JS_AtomGetStr, } from "../quickjs.js";
|
|
13
|
+
import { js_adopt_host_object, fix_map_iterator, fix_set_iterator, fix_iter_result_entries, HOST_MAP_ITERATOR_PROTO, HOST_SET_ITERATOR_PROTO, } from "./native.js";
|
|
14
|
+
const MAGIC_SET = 1 << 0;
|
|
15
|
+
const MAGIC_WEAK = 1 << 1;
|
|
16
|
+
/* true if 'val' can be the target of a weak reference: an object or a
|
|
17
|
+
non registered symbol (js_weakref_is_target) */
|
|
18
|
+
export function js_weakref_is_target(val) {
|
|
19
|
+
if (JS_IsObject(val))
|
|
20
|
+
return true;
|
|
21
|
+
if (typeof val === 'symbol')
|
|
22
|
+
return Symbol.keyFor(val) === undefined;
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
function check_function(ctx, obj) {
|
|
26
|
+
if (JS_IsFunction(ctx, obj))
|
|
27
|
+
return 0;
|
|
28
|
+
JS_ThrowTypeError(ctx, 'not a function');
|
|
29
|
+
return -1;
|
|
30
|
+
}
|
|
31
|
+
function new_host_collection(magic) {
|
|
32
|
+
switch (magic) {
|
|
33
|
+
case 0: return new Map();
|
|
34
|
+
case MAGIC_SET: return new Set();
|
|
35
|
+
case MAGIC_WEAK: return new WeakMap();
|
|
36
|
+
default: return new WeakSet();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function js_map_constructor(ctx, new_target, argv, magic) {
|
|
40
|
+
const is_set = (magic & MAGIC_SET) !== 0;
|
|
41
|
+
const proto = js_proto_from_ctor(ctx, new_target, (34 /* JSClassID.MAP */ + magic));
|
|
42
|
+
if (JS_IsException(proto))
|
|
43
|
+
return JS_EXCEPTION;
|
|
44
|
+
const obj = js_adopt_host_object(ctx, new_host_collection(magic), proto, (34 /* JSClassID.MAP */ + magic));
|
|
45
|
+
/* the iterable argument is processed as in quickjs.c: the 'set'/'add'
|
|
46
|
+
method is looked up on the new object (observable) and called for
|
|
47
|
+
each entry */
|
|
48
|
+
const arr = argv.length > 0 ? argv[0] : undefined;
|
|
49
|
+
if (arr !== undefined && arr !== null) {
|
|
50
|
+
const adder = JS_GetProperty(ctx, obj, is_set ? JS_ATOM_add : JS_ATOM_set);
|
|
51
|
+
if (JS_IsException(adder))
|
|
52
|
+
return JS_EXCEPTION;
|
|
53
|
+
if (!JS_IsFunction(ctx, adder)) {
|
|
54
|
+
return JS_ThrowTypeError(ctx, 'set/add is not a function');
|
|
55
|
+
}
|
|
56
|
+
const iter = JS_GetIterator(ctx, arr, false);
|
|
57
|
+
if (JS_IsException(iter))
|
|
58
|
+
return JS_EXCEPTION;
|
|
59
|
+
const next_method = JS_GetProperty(ctx, iter, JS_ATOM_next);
|
|
60
|
+
if (JS_IsException(next_method))
|
|
61
|
+
return JS_EXCEPTION;
|
|
62
|
+
const pdone = { done: 0 };
|
|
63
|
+
for (;;) {
|
|
64
|
+
const item = JS_IteratorNext(ctx, iter, next_method, [], pdone);
|
|
65
|
+
if (JS_IsException(item))
|
|
66
|
+
return JS_EXCEPTION;
|
|
67
|
+
if (pdone.done)
|
|
68
|
+
break;
|
|
69
|
+
let ret;
|
|
70
|
+
if (is_set) {
|
|
71
|
+
ret = JS_Call(ctx, adder, obj, [item]);
|
|
72
|
+
if (JS_IsException(ret)) {
|
|
73
|
+
JS_IteratorClose(ctx, iter, true);
|
|
74
|
+
return JS_EXCEPTION;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
if (!JS_IsObject(item)) {
|
|
79
|
+
JS_ThrowTypeErrorNotAnObject(ctx);
|
|
80
|
+
JS_IteratorClose(ctx, iter, true);
|
|
81
|
+
return JS_EXCEPTION;
|
|
82
|
+
}
|
|
83
|
+
const key = JS_GetPropertyUint32(ctx, item, 0);
|
|
84
|
+
if (JS_IsException(key)) {
|
|
85
|
+
JS_IteratorClose(ctx, iter, true);
|
|
86
|
+
return JS_EXCEPTION;
|
|
87
|
+
}
|
|
88
|
+
const value = JS_GetPropertyUint32(ctx, item, 1);
|
|
89
|
+
if (JS_IsException(value)) {
|
|
90
|
+
JS_IteratorClose(ctx, iter, true);
|
|
91
|
+
return JS_EXCEPTION;
|
|
92
|
+
}
|
|
93
|
+
ret = JS_Call(ctx, adder, obj, [key, value]);
|
|
94
|
+
if (JS_IsException(ret)) {
|
|
95
|
+
JS_IteratorClose(ctx, iter, true);
|
|
96
|
+
return JS_EXCEPTION;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return obj;
|
|
102
|
+
}
|
|
103
|
+
/* Map.groupBy (js_object_groupBy with is_map = 1; Object.groupBy is in object.ts) */
|
|
104
|
+
function js_map_groupBy(ctx, this_val, argv) {
|
|
105
|
+
// "is function?" check must be observed before argv[0] is accessed
|
|
106
|
+
const cb = argv[1];
|
|
107
|
+
if (check_function(ctx, cb))
|
|
108
|
+
return JS_EXCEPTION;
|
|
109
|
+
const iter = JS_GetIterator(ctx, argv[0], false);
|
|
110
|
+
if (JS_IsException(iter))
|
|
111
|
+
return JS_EXCEPTION;
|
|
112
|
+
const next = JS_GetProperty(ctx, iter, JS_ATOM_next);
|
|
113
|
+
if (JS_IsException(next))
|
|
114
|
+
return JS_EXCEPTION;
|
|
115
|
+
const groups = js_map_constructor(ctx, undefined, [], 0);
|
|
116
|
+
if (JS_IsException(groups))
|
|
117
|
+
return JS_EXCEPTION;
|
|
118
|
+
const map = groups;
|
|
119
|
+
const pdone = { done: 0 };
|
|
120
|
+
for (let idx = 0;; idx++) {
|
|
121
|
+
if (idx >= Number.MAX_SAFE_INTEGER) {
|
|
122
|
+
JS_ThrowTypeError(ctx, 'too many elements');
|
|
123
|
+
JS_IteratorClose(ctx, iter, true);
|
|
124
|
+
return JS_EXCEPTION;
|
|
125
|
+
}
|
|
126
|
+
const v = JS_IteratorNext(ctx, iter, next, [], pdone);
|
|
127
|
+
if (JS_IsException(v))
|
|
128
|
+
return JS_EXCEPTION;
|
|
129
|
+
if (pdone.done)
|
|
130
|
+
break; // v is JS_UNDEFINED
|
|
131
|
+
let key = JS_Call(ctx, cb, ctx.global_obj, [v, idx]);
|
|
132
|
+
if (JS_IsException(key)) {
|
|
133
|
+
JS_IteratorClose(ctx, iter, true);
|
|
134
|
+
return JS_EXCEPTION;
|
|
135
|
+
}
|
|
136
|
+
/* -0 is normalized to +0 */
|
|
137
|
+
if (typeof key === 'number' && key === 0)
|
|
138
|
+
key = 0;
|
|
139
|
+
let prop = MAP_GET.call(map, key);
|
|
140
|
+
if (JS_IsUndefined(prop)) {
|
|
141
|
+
prop = JS_NewArray(ctx);
|
|
142
|
+
MAP_SET.call(map, key, prop);
|
|
143
|
+
}
|
|
144
|
+
const len = js_get_length64(ctx, prop);
|
|
145
|
+
if (len < 0)
|
|
146
|
+
return JS_EXCEPTION;
|
|
147
|
+
if (JS_SetPropertyInt64(ctx, prop, len, v) < 0)
|
|
148
|
+
return JS_EXCEPTION;
|
|
149
|
+
}
|
|
150
|
+
return groups;
|
|
151
|
+
}
|
|
152
|
+
function js_get_this(ctx, this_val) { return this_val; }
|
|
153
|
+
const MP = Map.prototype, SP = Set.prototype, WMP = WeakMap.prototype, WSP = WeakSet.prototype;
|
|
154
|
+
const MAP_GET = MP.get, MAP_SET = MP.set;
|
|
155
|
+
const getter = (o, name) => Object.getOwnPropertyDescriptor(o, name).get;
|
|
156
|
+
const js_map_funcs = [
|
|
157
|
+
JS_CFUNC_MAGIC_DEF('groupBy', 2, js_map_groupBy, 1),
|
|
158
|
+
JS_CGETSET_DEF(JS_ATOM_Symbol_species, js_get_this, null),
|
|
159
|
+
];
|
|
160
|
+
const js_map_proto_funcs = [
|
|
161
|
+
JS_NATIVE_DEF('set', 2, MP.set),
|
|
162
|
+
JS_NATIVE_DEF('get', 1, MP.get),
|
|
163
|
+
JS_NATIVE_DEF('has', 1, MP.has),
|
|
164
|
+
JS_NATIVE_DEF('delete', 1, MP.delete),
|
|
165
|
+
JS_NATIVE_DEF('clear', 0, MP.clear),
|
|
166
|
+
JS_NATIVE_GETSET_DEF('size', getter(MP, 'size'), null),
|
|
167
|
+
JS_NATIVE_DEF('forEach', 1, MP.forEach),
|
|
168
|
+
JS_NATIVE_DEF('values', 0, MP.values, fix_map_iterator),
|
|
169
|
+
JS_NATIVE_DEF('keys', 0, MP.keys, fix_map_iterator),
|
|
170
|
+
JS_NATIVE_DEF('entries', 0, MP.entries, fix_map_iterator),
|
|
171
|
+
JS_ALIAS_DEF(JS_ATOM_Symbol_iterator, 'entries'),
|
|
172
|
+
JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Map', JS_PROP_CONFIGURABLE),
|
|
173
|
+
];
|
|
174
|
+
const js_map_iterator_proto_funcs = [
|
|
175
|
+
JS_NATIVE_DEF('next', 0, HOST_MAP_ITERATOR_PROTO.next, fix_iter_result_entries),
|
|
176
|
+
JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Map Iterator', JS_PROP_CONFIGURABLE),
|
|
177
|
+
];
|
|
178
|
+
const js_set_proto_funcs = [
|
|
179
|
+
JS_NATIVE_DEF('add', 1, SP.add),
|
|
180
|
+
JS_NATIVE_DEF('has', 1, SP.has),
|
|
181
|
+
JS_NATIVE_DEF('delete', 1, SP.delete),
|
|
182
|
+
JS_NATIVE_DEF('clear', 0, SP.clear),
|
|
183
|
+
JS_NATIVE_GETSET_DEF('size', getter(SP, 'size'), null),
|
|
184
|
+
JS_NATIVE_DEF('forEach', 1, SP.forEach),
|
|
185
|
+
JS_NATIVE_DEF('values', 0, SP.values, fix_set_iterator),
|
|
186
|
+
JS_ALIAS_DEF('keys', 'values'),
|
|
187
|
+
JS_ALIAS_DEF(JS_ATOM_Symbol_iterator, 'values'),
|
|
188
|
+
JS_NATIVE_DEF('entries', 0, SP.entries, fix_set_iterator),
|
|
189
|
+
JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Set', JS_PROP_CONFIGURABLE),
|
|
190
|
+
];
|
|
191
|
+
const js_set_iterator_proto_funcs = [
|
|
192
|
+
JS_NATIVE_DEF('next', 0, HOST_SET_ITERATOR_PROTO.next, fix_iter_result_entries),
|
|
193
|
+
JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Set Iterator', JS_PROP_CONFIGURABLE),
|
|
194
|
+
];
|
|
195
|
+
const js_weak_map_proto_funcs = [
|
|
196
|
+
JS_NATIVE_DEF('set', 2, WMP.set),
|
|
197
|
+
JS_NATIVE_DEF('get', 1, WMP.get),
|
|
198
|
+
JS_NATIVE_DEF('has', 1, WMP.has),
|
|
199
|
+
JS_NATIVE_DEF('delete', 1, WMP.delete),
|
|
200
|
+
JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'WeakMap', JS_PROP_CONFIGURABLE),
|
|
201
|
+
];
|
|
202
|
+
const js_weak_set_proto_funcs = [
|
|
203
|
+
JS_NATIVE_DEF('add', 1, WSP.add),
|
|
204
|
+
JS_NATIVE_DEF('has', 1, WSP.has),
|
|
205
|
+
JS_NATIVE_DEF('delete', 1, WSP.delete),
|
|
206
|
+
JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'WeakSet', JS_PROP_CONFIGURABLE),
|
|
207
|
+
];
|
|
208
|
+
const js_map_proto_funcs_ptr = [
|
|
209
|
+
js_map_proto_funcs,
|
|
210
|
+
js_set_proto_funcs,
|
|
211
|
+
js_weak_map_proto_funcs,
|
|
212
|
+
js_weak_set_proto_funcs,
|
|
213
|
+
js_map_iterator_proto_funcs,
|
|
214
|
+
js_set_iterator_proto_funcs,
|
|
215
|
+
];
|
|
216
|
+
export function JS_AddIntrinsicMapSet(ctx) {
|
|
217
|
+
for (let i = 0; i < 4; i++) {
|
|
218
|
+
const name = JS_AtomGetStr(ctx, JS_ATOM_Map + i);
|
|
219
|
+
const proto = JS_NewObject(ctx);
|
|
220
|
+
ctx.class_proto[34 /* JSClassID.MAP */ + i] = proto;
|
|
221
|
+
JS_SetPropertyFunctionList(ctx, proto, js_map_proto_funcs_ptr[i]);
|
|
222
|
+
const obj1 = JS_NewCFunctionMagic(ctx, js_map_constructor, name, 0, 3 /* JSCFunctionEnum.constructor_magic */, i);
|
|
223
|
+
if (i < 2) {
|
|
224
|
+
JS_SetPropertyFunctionList(ctx, obj1, js_map_funcs);
|
|
225
|
+
}
|
|
226
|
+
JS_NewGlobalCConstructor2(ctx, obj1, name, proto);
|
|
227
|
+
}
|
|
228
|
+
for (let i = 0; i < 2; i++) {
|
|
229
|
+
const proto = JS_NewObjectProto(ctx, ctx.iterator_proto);
|
|
230
|
+
ctx.class_proto[38 /* JSClassID.MAP_ITERATOR */ + i] = proto;
|
|
231
|
+
JS_SetPropertyFunctionList(ctx, proto, js_map_proto_funcs_ptr[i + 4]);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=mapset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapset.js","sourceRoot":"","sources":["../../src/builtins/mapset.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Map, Set, WeakMap, WeakSet and their iterators (port of the Map/Set\n * part of quickjs.c)\n *\n * Guest collections are host collections with the guest prototype\n * (builtins/native.ts): the constructor creates the host Map/Set/WeakMap/\n * WeakSet, re-prototypes it to the prototype derived from new.target and\n * tags it with the class id. Every method is the borrowed host native; the\n * iterators are the host iterators re-prototyped to the guest Map/Set\n * Iterator prototypes, whose `next` is the host one.\n */\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSCFunctionEnum,\n JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsObject, JS_IsFunction, JS_NewObject, JS_NewObjectProto,\n JS_NewArray, JS_NewCFunctionMagic, js_proto_from_ctor,\n JS_ThrowTypeError, JS_ThrowTypeErrorNotAnObject, JS_GetProperty, JS_GetPropertyUint32, JS_SetPropertyInt64,\n JS_GetIterator, JS_IteratorNext, JS_IteratorClose, JS_Call, js_get_length64,\n JS_SetPropertyFunctionList, JS_NewGlobalCConstructor2, JS_CFUNC_MAGIC_DEF, JS_CGETSET_DEF, JS_NATIVE_DEF,\n JS_NATIVE_GETSET_DEF, JS_PROP_STRING_DEF, JS_ALIAS_DEF, JS_PROP_CONFIGURABLE, JS_ATOM_Map, JS_ATOM_add, JS_ATOM_set,\n JS_ATOM_next, JS_ATOM_Symbol_iterator, JS_ATOM_Symbol_toStringTag, JS_ATOM_Symbol_species, JS_AtomGetStr,\n} from '../quickjs.ts';\nimport {\n js_adopt_host_object, fix_map_iterator, fix_set_iterator, fix_iter_result_entries, HOST_MAP_ITERATOR_PROTO,\n HOST_SET_ITERATOR_PROTO,\n} from './native.ts';\n\nconst MAGIC_SET = 1 << 0;\nconst MAGIC_WEAK = 1 << 1;\n\n/* true if 'val' can be the target of a weak reference: an object or a\n non registered symbol (js_weakref_is_target) */\nexport function js_weakref_is_target(val: JSValue): boolean {\n if (JS_IsObject(val)) return true;\n if (typeof val === 'symbol') return Symbol.keyFor(val) === undefined;\n return false;\n}\n\nfunction check_function(ctx: JSContext, obj: JSValue): number {\n if (JS_IsFunction(ctx, obj)) return 0;\n JS_ThrowTypeError(ctx, 'not a function');\n return -1;\n}\n\nfunction new_host_collection(magic: number): object {\n switch (magic) {\n case 0: return new Map();\n case MAGIC_SET: return new Set();\n case MAGIC_WEAK: return new WeakMap();\n default: return new WeakSet();\n }\n}\n\nexport function js_map_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[], magic: number): JSValue {\n const is_set = (magic & MAGIC_SET) !== 0;\n const proto = js_proto_from_ctor(ctx, new_target, (JSClassID.MAP + magic) as JSClassID);\n if (JS_IsException(proto)) return JS_EXCEPTION;\n const obj = js_adopt_host_object(ctx, new_host_collection(magic), proto, (JSClassID.MAP + magic) as JSClassID);\n\n /* the iterable argument is processed as in quickjs.c: the 'set'/'add'\n method is looked up on the new object (observable) and called for\n each entry */\n const arr = argv.length > 0 ? argv[0] : undefined;\n if (arr !== undefined && arr !== null) {\n const adder = JS_GetProperty(ctx, obj, is_set ? JS_ATOM_add : JS_ATOM_set);\n if (JS_IsException(adder)) return JS_EXCEPTION;\n if (!JS_IsFunction(ctx, adder)) {\n return JS_ThrowTypeError(ctx, 'set/add is not a function');\n }\n const iter = JS_GetIterator(ctx, arr, false);\n if (JS_IsException(iter)) return JS_EXCEPTION;\n const next_method = JS_GetProperty(ctx, iter, JS_ATOM_next);\n if (JS_IsException(next_method)) return JS_EXCEPTION;\n const pdone = { done: 0 };\n for (;;) {\n const item = JS_IteratorNext(ctx, iter, next_method, [], pdone);\n if (JS_IsException(item)) return JS_EXCEPTION;\n if (pdone.done) break;\n let ret: JSValue;\n if (is_set) {\n ret = JS_Call(ctx, adder, obj, [item]);\n if (JS_IsException(ret)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n } else {\n if (!JS_IsObject(item)) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const key = JS_GetPropertyUint32(ctx, item, 0);\n if (JS_IsException(key)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const value = JS_GetPropertyUint32(ctx, item, 1);\n if (JS_IsException(value)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n ret = JS_Call(ctx, adder, obj, [key, value]);\n if (JS_IsException(ret)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n }\n }\n }\n return obj;\n}\n\n/* Map.groupBy (js_object_groupBy with is_map = 1; Object.groupBy is in object.ts) */\nfunction js_map_groupBy(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // \"is function?\" check must be observed before argv[0] is accessed\n const cb = argv[1];\n if (check_function(ctx, cb)) return JS_EXCEPTION;\n\n const iter = JS_GetIterator(ctx, argv[0], false);\n if (JS_IsException(iter)) return JS_EXCEPTION;\n\n const next = JS_GetProperty(ctx, iter, JS_ATOM_next);\n if (JS_IsException(next)) return JS_EXCEPTION;\n\n const groups = js_map_constructor(ctx, undefined, [], 0);\n if (JS_IsException(groups)) return JS_EXCEPTION;\n const map = groups as Map<JSValue, JSValue>;\n\n const pdone = { done: 0 };\n for (let idx = 0; ; idx++) {\n if (idx >= Number.MAX_SAFE_INTEGER) {\n JS_ThrowTypeError(ctx, 'too many elements');\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n const v = JS_IteratorNext(ctx, iter, next, [], pdone);\n if (JS_IsException(v)) return JS_EXCEPTION;\n if (pdone.done) break; // v is JS_UNDEFINED\n\n let key = JS_Call(ctx, cb, ctx.global_obj, [v, idx]);\n if (JS_IsException(key)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n /* -0 is normalized to +0 */\n if (typeof key === 'number' && key === 0) key = 0;\n\n let prop = MAP_GET.call(map, key);\n if (JS_IsUndefined(prop)) {\n prop = JS_NewArray(ctx);\n MAP_SET.call(map, key, prop);\n }\n const len = js_get_length64(ctx, prop);\n if (len < 0) return JS_EXCEPTION;\n if (JS_SetPropertyInt64(ctx, prop, len, v) < 0) return JS_EXCEPTION;\n }\n return groups;\n}\n\nfunction js_get_this(ctx: JSContext, this_val: JSValue): JSValue { return this_val; }\n\nconst MP = Map.prototype, SP = Set.prototype, WMP = WeakMap.prototype, WSP = WeakSet.prototype;\nconst MAP_GET = MP.get, MAP_SET = MP.set;\nconst getter = (o: object, name: string) => Object.getOwnPropertyDescriptor(o, name)!.get!;\n\nconst js_map_funcs = [\n JS_CFUNC_MAGIC_DEF('groupBy', 2, js_map_groupBy, 1),\n JS_CGETSET_DEF(JS_ATOM_Symbol_species, js_get_this, null),\n];\n\nconst js_map_proto_funcs = [\n JS_NATIVE_DEF('set', 2, MP.set),\n JS_NATIVE_DEF('get', 1, MP.get),\n JS_NATIVE_DEF('has', 1, MP.has),\n JS_NATIVE_DEF('delete', 1, MP.delete),\n JS_NATIVE_DEF('clear', 0, MP.clear),\n JS_NATIVE_GETSET_DEF('size', getter(MP, 'size'), null),\n JS_NATIVE_DEF('forEach', 1, MP.forEach),\n JS_NATIVE_DEF('values', 0, MP.values, fix_map_iterator),\n JS_NATIVE_DEF('keys', 0, MP.keys, fix_map_iterator),\n JS_NATIVE_DEF('entries', 0, MP.entries, fix_map_iterator),\n JS_ALIAS_DEF(JS_ATOM_Symbol_iterator, 'entries'),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Map', JS_PROP_CONFIGURABLE),\n];\n\nconst js_map_iterator_proto_funcs = [\n JS_NATIVE_DEF('next', 0, (HOST_MAP_ITERATOR_PROTO as any).next, fix_iter_result_entries),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Map Iterator', JS_PROP_CONFIGURABLE),\n];\n\nconst js_set_proto_funcs = [\n JS_NATIVE_DEF('add', 1, SP.add),\n JS_NATIVE_DEF('has', 1, SP.has),\n JS_NATIVE_DEF('delete', 1, SP.delete),\n JS_NATIVE_DEF('clear', 0, SP.clear),\n JS_NATIVE_GETSET_DEF('size', getter(SP, 'size'), null),\n JS_NATIVE_DEF('forEach', 1, SP.forEach),\n JS_NATIVE_DEF('values', 0, SP.values, fix_set_iterator),\n JS_ALIAS_DEF('keys', 'values'),\n JS_ALIAS_DEF(JS_ATOM_Symbol_iterator, 'values'),\n JS_NATIVE_DEF('entries', 0, SP.entries, fix_set_iterator),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Set', JS_PROP_CONFIGURABLE),\n];\n\nconst js_set_iterator_proto_funcs = [\n JS_NATIVE_DEF('next', 0, (HOST_SET_ITERATOR_PROTO as any).next, fix_iter_result_entries),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Set Iterator', JS_PROP_CONFIGURABLE),\n];\n\nconst js_weak_map_proto_funcs = [\n JS_NATIVE_DEF('set', 2, WMP.set),\n JS_NATIVE_DEF('get', 1, WMP.get),\n JS_NATIVE_DEF('has', 1, WMP.has),\n JS_NATIVE_DEF('delete', 1, WMP.delete),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'WeakMap', JS_PROP_CONFIGURABLE),\n];\n\nconst js_weak_set_proto_funcs = [\n JS_NATIVE_DEF('add', 1, WSP.add),\n JS_NATIVE_DEF('has', 1, WSP.has),\n JS_NATIVE_DEF('delete', 1, WSP.delete),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'WeakSet', JS_PROP_CONFIGURABLE),\n];\n\nconst js_map_proto_funcs_ptr = [\n js_map_proto_funcs,\n js_set_proto_funcs,\n js_weak_map_proto_funcs,\n js_weak_set_proto_funcs,\n js_map_iterator_proto_funcs,\n js_set_iterator_proto_funcs,\n];\n\nexport function JS_AddIntrinsicMapSet(ctx: JSContext): void {\n for (let i = 0; i < 4; i++) {\n const name = JS_AtomGetStr(ctx, JS_ATOM_Map + i);\n const proto = JS_NewObject(ctx) as JSObject;\n ctx.class_proto[JSClassID.MAP + i] = proto;\n JS_SetPropertyFunctionList(ctx, proto, js_map_proto_funcs_ptr[i]);\n const obj1 = JS_NewCFunctionMagic(ctx, js_map_constructor as any, name, 0, JSCFunctionEnum.constructor_magic, i);\n if (i < 2) {\n JS_SetPropertyFunctionList(ctx, obj1, js_map_funcs);\n }\n JS_NewGlobalCConstructor2(ctx, obj1, name, proto);\n }\n\n for (let i = 0; i < 2; i++) {\n const proto = JS_NewObjectProto(ctx, ctx.iterator_proto) as JSObject;\n ctx.class_proto[JSClassID.MAP_ITERATOR + i] = proto;\n JS_SetPropertyFunctionList(ctx, proto, js_map_proto_funcs_ptr[i + 4]);\n }\n}\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Math object (port of the Math part of quickjs.c)
|
|
3
|
+
*
|
|
4
|
+
* Every Math function maps numbers to numbers with spec defined results,
|
|
5
|
+
* so all of them are borrowed host natives (builtins/native.ts).
|
|
6
|
+
*/
|
|
7
|
+
import { JS_SetPropertyFunctionList, JS_NATIVE_DEF, JS_PROP_STRING_DEF, JS_PROP_DOUBLE_DEF, JS_OBJECT_DEF, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag, } from "../quickjs.js";
|
|
8
|
+
const M = Math;
|
|
9
|
+
const js_math_funcs = [
|
|
10
|
+
JS_NATIVE_DEF('min', 2, M.min),
|
|
11
|
+
JS_NATIVE_DEF('max', 2, M.max),
|
|
12
|
+
JS_NATIVE_DEF('abs', 1, M.abs),
|
|
13
|
+
JS_NATIVE_DEF('floor', 1, M.floor),
|
|
14
|
+
JS_NATIVE_DEF('ceil', 1, M.ceil),
|
|
15
|
+
JS_NATIVE_DEF('round', 1, M.round),
|
|
16
|
+
JS_NATIVE_DEF('sqrt', 1, M.sqrt),
|
|
17
|
+
JS_NATIVE_DEF('acos', 1, M.acos),
|
|
18
|
+
JS_NATIVE_DEF('asin', 1, M.asin),
|
|
19
|
+
JS_NATIVE_DEF('atan', 1, M.atan),
|
|
20
|
+
JS_NATIVE_DEF('atan2', 2, M.atan2),
|
|
21
|
+
JS_NATIVE_DEF('cos', 1, M.cos),
|
|
22
|
+
JS_NATIVE_DEF('exp', 1, M.exp),
|
|
23
|
+
JS_NATIVE_DEF('log', 1, M.log),
|
|
24
|
+
JS_NATIVE_DEF('pow', 2, M.pow),
|
|
25
|
+
JS_NATIVE_DEF('sin', 1, M.sin),
|
|
26
|
+
JS_NATIVE_DEF('tan', 1, M.tan),
|
|
27
|
+
/* ES6 */
|
|
28
|
+
JS_NATIVE_DEF('trunc', 1, M.trunc),
|
|
29
|
+
JS_NATIVE_DEF('sign', 1, M.sign),
|
|
30
|
+
JS_NATIVE_DEF('cosh', 1, M.cosh),
|
|
31
|
+
JS_NATIVE_DEF('sinh', 1, M.sinh),
|
|
32
|
+
JS_NATIVE_DEF('tanh', 1, M.tanh),
|
|
33
|
+
JS_NATIVE_DEF('acosh', 1, M.acosh),
|
|
34
|
+
JS_NATIVE_DEF('asinh', 1, M.asinh),
|
|
35
|
+
JS_NATIVE_DEF('atanh', 1, M.atanh),
|
|
36
|
+
JS_NATIVE_DEF('expm1', 1, M.expm1),
|
|
37
|
+
JS_NATIVE_DEF('log1p', 1, M.log1p),
|
|
38
|
+
JS_NATIVE_DEF('log2', 1, M.log2),
|
|
39
|
+
JS_NATIVE_DEF('log10', 1, M.log10),
|
|
40
|
+
JS_NATIVE_DEF('cbrt', 1, M.cbrt),
|
|
41
|
+
JS_NATIVE_DEF('hypot', 2, M.hypot),
|
|
42
|
+
JS_NATIVE_DEF('random', 0, M.random),
|
|
43
|
+
JS_NATIVE_DEF('fround', 1, M.fround),
|
|
44
|
+
JS_NATIVE_DEF('imul', 2, M.imul),
|
|
45
|
+
JS_NATIVE_DEF('clz32', 1, M.clz32),
|
|
46
|
+
JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Math', JS_PROP_CONFIGURABLE),
|
|
47
|
+
JS_PROP_DOUBLE_DEF('E', 2.718281828459045, 0),
|
|
48
|
+
JS_PROP_DOUBLE_DEF('LN10', 2.302585092994046, 0),
|
|
49
|
+
JS_PROP_DOUBLE_DEF('LN2', 0.6931471805599453, 0),
|
|
50
|
+
JS_PROP_DOUBLE_DEF('LOG2E', 1.4426950408889634, 0),
|
|
51
|
+
JS_PROP_DOUBLE_DEF('LOG10E', 0.4342944819032518, 0),
|
|
52
|
+
JS_PROP_DOUBLE_DEF('PI', 3.141592653589793, 0),
|
|
53
|
+
JS_PROP_DOUBLE_DEF('SQRT1_2', 0.7071067811865476, 0),
|
|
54
|
+
JS_PROP_DOUBLE_DEF('SQRT2', 1.4142135623730951, 0),
|
|
55
|
+
];
|
|
56
|
+
const js_math_obj = [
|
|
57
|
+
JS_OBJECT_DEF('Math', js_math_funcs, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),
|
|
58
|
+
];
|
|
59
|
+
export function JS_AddIntrinsicMath(ctx) {
|
|
60
|
+
JS_SetPropertyFunctionList(ctx, ctx.global_obj, js_math_obj);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/builtins/math.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Math object (port of the Math part of quickjs.c)\n *\n * Every Math function maps numbers to numbers with spec defined results,\n * so all of them are borrowed host natives (builtins/native.ts).\n */\nimport {\n JSContext, JS_SetPropertyFunctionList, JS_NATIVE_DEF, JS_PROP_STRING_DEF, JS_PROP_DOUBLE_DEF, JS_OBJECT_DEF,\n JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag,\n} from '../quickjs.ts';\n\nconst M = Math;\n\nconst js_math_funcs = [\n JS_NATIVE_DEF('min', 2, M.min),\n JS_NATIVE_DEF('max', 2, M.max),\n JS_NATIVE_DEF('abs', 1, M.abs),\n JS_NATIVE_DEF('floor', 1, M.floor),\n JS_NATIVE_DEF('ceil', 1, M.ceil),\n JS_NATIVE_DEF('round', 1, M.round),\n JS_NATIVE_DEF('sqrt', 1, M.sqrt),\n\n JS_NATIVE_DEF('acos', 1, M.acos),\n JS_NATIVE_DEF('asin', 1, M.asin),\n JS_NATIVE_DEF('atan', 1, M.atan),\n JS_NATIVE_DEF('atan2', 2, M.atan2),\n JS_NATIVE_DEF('cos', 1, M.cos),\n JS_NATIVE_DEF('exp', 1, M.exp),\n JS_NATIVE_DEF('log', 1, M.log),\n JS_NATIVE_DEF('pow', 2, M.pow),\n JS_NATIVE_DEF('sin', 1, M.sin),\n JS_NATIVE_DEF('tan', 1, M.tan),\n /* ES6 */\n JS_NATIVE_DEF('trunc', 1, M.trunc),\n JS_NATIVE_DEF('sign', 1, M.sign),\n JS_NATIVE_DEF('cosh', 1, M.cosh),\n JS_NATIVE_DEF('sinh', 1, M.sinh),\n JS_NATIVE_DEF('tanh', 1, M.tanh),\n JS_NATIVE_DEF('acosh', 1, M.acosh),\n JS_NATIVE_DEF('asinh', 1, M.asinh),\n JS_NATIVE_DEF('atanh', 1, M.atanh),\n JS_NATIVE_DEF('expm1', 1, M.expm1),\n JS_NATIVE_DEF('log1p', 1, M.log1p),\n JS_NATIVE_DEF('log2', 1, M.log2),\n JS_NATIVE_DEF('log10', 1, M.log10),\n JS_NATIVE_DEF('cbrt', 1, M.cbrt),\n JS_NATIVE_DEF('hypot', 2, M.hypot),\n JS_NATIVE_DEF('random', 0, M.random),\n JS_NATIVE_DEF('fround', 1, M.fround),\n JS_NATIVE_DEF('imul', 2, M.imul),\n JS_NATIVE_DEF('clz32', 1, M.clz32),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Math', JS_PROP_CONFIGURABLE),\n JS_PROP_DOUBLE_DEF('E', 2.718281828459045, 0),\n JS_PROP_DOUBLE_DEF('LN10', 2.302585092994046, 0),\n JS_PROP_DOUBLE_DEF('LN2', 0.6931471805599453, 0),\n JS_PROP_DOUBLE_DEF('LOG2E', 1.4426950408889634, 0),\n JS_PROP_DOUBLE_DEF('LOG10E', 0.4342944819032518, 0),\n JS_PROP_DOUBLE_DEF('PI', 3.141592653589793, 0),\n JS_PROP_DOUBLE_DEF('SQRT1_2', 0.7071067811865476, 0),\n JS_PROP_DOUBLE_DEF('SQRT2', 1.4142135623730951, 0),\n];\n\nconst js_math_obj = [\n JS_OBJECT_DEF('Math', js_math_funcs, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicMath(ctx: JSContext): void {\n JS_SetPropertyFunctionList(ctx, ctx.global_obj, js_math_obj);\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { JSContext, JSValue, JSClassID, JSNativeFixer } from '../quickjs.ts';
|
|
2
|
+
export declare function js_borrow_native(ctx: JSContext, host: Function, name: string, length: number, fix: JSNativeFixer | null): JSValue;
|
|
3
|
+
export declare function fix_array(ctx: JSContext, v: any): any;
|
|
4
|
+
export declare function fix_object(ctx: JSContext, v: any): any;
|
|
5
|
+
export declare function fix_any(ctx: JSContext, v: any): any;
|
|
6
|
+
export declare function fix_entries(ctx: JSContext, v: any): any;
|
|
7
|
+
export declare function fix_match(ctx: JSContext, v: any): any;
|
|
8
|
+
export declare function fix_deep_json(ctx: JSContext, v: any): any;
|
|
9
|
+
export declare const HOST_ARRAY_ITERATOR_PROTO: object;
|
|
10
|
+
export declare const HOST_STRING_ITERATOR_PROTO: object;
|
|
11
|
+
export declare const HOST_MAP_ITERATOR_PROTO: object;
|
|
12
|
+
export declare const HOST_SET_ITERATOR_PROTO: object;
|
|
13
|
+
export declare const HOST_REGEXP_STRING_ITERATOR_PROTO: object;
|
|
14
|
+
export declare const fix_array_iterator: JSNativeFixer;
|
|
15
|
+
export declare const fix_string_iterator: JSNativeFixer;
|
|
16
|
+
export declare const fix_map_iterator: JSNativeFixer;
|
|
17
|
+
export declare const fix_set_iterator: JSNativeFixer;
|
|
18
|
+
export declare const fix_regexp_string_iterator: JSNativeFixer;
|
|
19
|
+
export declare function fix_iter_result(ctx: JSContext, r: any): any;
|
|
20
|
+
export declare function fix_iter_result_entries(ctx: JSContext, r: any): any;
|
|
21
|
+
export declare function fix_iter_result_match(ctx: JSContext, r: any): any;
|
|
22
|
+
export declare function js_adopt_host_object(ctx: JSContext, obj: object, proto: JSValue | null, class_id: JSClassID, opaque?: any): JSValue;
|