jseption 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +56 -4
  2. package/dist/atoms.d.ts +1 -0
  3. package/dist/atoms.js +2 -1
  4. package/dist/atoms.js.map +1 -1
  5. package/dist/builtins/base64.d.ts +14 -0
  6. package/dist/builtins/base64.js +219 -0
  7. package/dist/builtins/base64.js.map +1 -0
  8. package/dist/builtins/bigint.js +3 -3
  9. package/dist/builtins/bigint.js.map +1 -1
  10. package/dist/builtins/date.d.ts +1 -0
  11. package/dist/builtins/date.js +26 -12
  12. package/dist/builtins/date.js.map +1 -1
  13. package/dist/builtins/error.js +9 -0
  14. package/dist/builtins/error.js.map +1 -1
  15. package/dist/builtins/float16.d.ts +3 -0
  16. package/dist/builtins/float16.js +69 -0
  17. package/dist/builtins/float16.js.map +1 -0
  18. package/dist/builtins/function.js +2 -2
  19. package/dist/builtins/index.js +9 -6
  20. package/dist/builtins/index.js.map +1 -1
  21. package/dist/builtins/iterator.d.ts +2 -0
  22. package/dist/builtins/iterator.js +624 -0
  23. package/dist/builtins/iterator.js.map +1 -0
  24. package/dist/builtins/json.d.ts +13 -1
  25. package/dist/builtins/json.js +283 -211
  26. package/dist/builtins/json.js.map +1 -1
  27. package/dist/builtins/mapset.js +365 -6
  28. package/dist/builtins/mapset.js.map +1 -1
  29. package/dist/builtins/math.js +203 -3
  30. package/dist/builtins/math.js.map +1 -1
  31. package/dist/builtins/native.js +6 -6
  32. package/dist/builtins/object.js +9 -2
  33. package/dist/builtins/object.js.map +1 -1
  34. package/dist/builtins/promise.js +31 -11
  35. package/dist/builtins/promise.js.map +1 -1
  36. package/dist/builtins/proxy.js +2 -2
  37. package/dist/builtins/reflect.js +6 -2
  38. package/dist/builtins/reflect.js.map +1 -1
  39. package/dist/builtins/regexp.js +74 -3
  40. package/dist/builtins/regexp.js.map +1 -1
  41. package/dist/builtins/string.js +1 -1
  42. package/dist/builtins/symbol.js +1 -1
  43. package/dist/builtins/symbol.js.map +1 -1
  44. package/dist/builtins/typedarray.d.ts +1 -0
  45. package/dist/builtins/typedarray.js +302 -32
  46. package/dist/builtins/typedarray.js.map +1 -1
  47. package/dist/builtins/weakref.js +7 -7
  48. package/dist/embed.d.ts +5 -0
  49. package/dist/embed.js +47 -15
  50. package/dist/embed.js.map +1 -1
  51. package/dist/interpreter.js +15 -14
  52. package/dist/interpreter.js.map +1 -1
  53. package/dist/jit.d.ts +1 -0
  54. package/dist/jit.js +51 -13
  55. package/dist/jit.js.map +1 -1
  56. package/dist/jit_hook.d.ts +1 -0
  57. package/dist/jit_hook.js.map +1 -1
  58. package/dist/jit_runtime.d.ts +1 -1
  59. package/dist/jit_runtime.js +6 -6
  60. package/dist/jit_runtime.js.map +1 -1
  61. package/dist/jit_stack.d.ts +1 -0
  62. package/dist/jit_stack.js +2 -1
  63. package/dist/jit_stack.js.map +1 -1
  64. package/dist/jseption.d.ts +4 -0
  65. package/dist/jseption.js +2 -0
  66. package/dist/jseption.js.map +1 -1
  67. package/dist/membrane.d.ts +16 -0
  68. package/dist/membrane.js +576 -0
  69. package/dist/membrane.js.map +1 -0
  70. package/dist/module.js +5 -3
  71. package/dist/module.js.map +1 -1
  72. package/dist/parser.js +26 -9
  73. package/dist/parser.js.map +1 -1
  74. package/dist/print.d.ts +12 -0
  75. package/dist/print.js +494 -0
  76. package/dist/print.js.map +1 -0
  77. package/dist/qjs.js +13 -10
  78. package/dist/qjs.js.map +1 -1
  79. package/dist/quickjs.d.ts +8 -0
  80. package/dist/quickjs.js +132 -53
  81. package/dist/quickjs.js.map +1 -1
  82. package/dist/std.d.ts +4 -2
  83. package/dist/std.js +42 -8
  84. package/dist/std.js.map +1 -1
  85. package/dist/values.d.ts +31 -27
  86. package/dist/values.js.map +1 -1
  87. package/dist/version.d.ts +1 -1
  88. package/dist/version.js +1 -1
  89. package/dist/version.js.map +1 -1
  90. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"regexp.js","sourceRoot":"","sources":["../../src/builtins/regexp.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * RegExp objects (port of the RegExp part of quickjs.c)\n *\n * libregexp is not ported: a guest RegExp object IS a host RegExp with the\n * guest prototype (builtins/native.ts), so matching, lastIndex handling and\n * the Symbol.* protocol methods are the borrowed host natives. The results\n * they create (match arrays, split arrays, string iterators) are\n * re-prototyped by the fixers. The constructor keeps the quickjs.c logic\n * for IsRegExp, pattern/flags extraction and flag validation.\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsObject,\n JS_NewObject, JS_NewObjectProto, JS_GetProperty, JS_ToString, JS_ToBoolFree, JS_ThrowTypeError,\n JS_ThrowSyntaxError, js_proto_from_ctor, js_same_value, hooks, JS_SetPropertyFunctionList,\n JS_NewGlobalCConstructor, JS_CGETSET_DEF, JS_NATIVE_DEF, JS_NATIVE_GETSET_DEF, JS_PROP_STRING_DEF,\n JSCFunctionListEntry, JS_PROP_CONFIGURABLE, JS_ATOM_constructor, JS_ATOM_source, JS_ATOM_flags,\n JS_ATOM_Symbol_match, JS_ATOM_Symbol_matchAll, JS_ATOM_Symbol_replace, JS_ATOM_Symbol_search, JS_ATOM_Symbol_split, JS_ATOM_Symbol_species,\n JS_ATOM_Symbol_toStringTag,\n} from '../quickjs.ts';\nimport {\n js_adopt_host_object, fix_match, fix_array, fix_regexp_string_iterator, fix_iter_result_match,\n HOST_REGEXP_STRING_ITERATOR_PROTO,\n} from './native.ts';\n\nconst RP = RegExp.prototype;\nconst host_getter = (name: string) => Object.getOwnPropertyDescriptor(RP, name)!.get!;\nconst SOURCE_GETTER = host_getter('source');\nconst FLAGS_GETTER = host_getter('flags');\n\n/* validate the flags (quickjs.c messages) and compile with the host */\nfunction js_compile_regexp(ctx: JSContext, pattern: string, flags: JSValue): RegExp | null {\n let flags_str = '';\n if (!JS_IsUndefined(flags)) {\n const str = JS_ToString(ctx, flags);\n if (JS_IsException(str)) return null;\n flags_str = str as string;\n let seen = '';\n for (const c of flags_str) {\n if (!'dgimsuvy'.includes(c) || seen.includes(c)) {\n JS_ThrowSyntaxError(ctx, 'invalid regular expression flags');\n return null;\n }\n seen += c;\n }\n if (seen.includes('u') && seen.includes('v')) {\n JS_ThrowSyntaxError(ctx, 'invalid regular expression flags');\n return null;\n }\n }\n try {\n return new RegExp(pattern, flags_str);\n } catch (e) {\n let msg = (e instanceof Error) ? e.message : String(e);\n /* strip the host prefix \"Invalid regular expression: /.../flags: \" if present */\n msg = msg.replace(/^Invalid regular expression: (\\/.*\\/[a-z]*: )?/s, '');\n JS_ThrowSyntaxError(ctx, msg);\n return null;\n }\n}\n\n/* create the guest RegExp object from a freshly compiled host regexp */\nfunction js_regexp_create(ctx: JSContext, ctor: JSValue, re: RegExp): JSValue {\n const proto = js_proto_from_ctor(ctx, ctor, JSClassID.REGEXP);\n if (JS_IsException(proto)) return proto;\n return js_adopt_host_object(ctx, re, proto, JSClassID.REGEXP);\n}\n\n/* hook used by the interpreter for regexp literals */\nfunction js_regexp_constructor_internal_hook(ctx: JSContext, ctor: JSValue, pattern: string, flags: string): JSValue {\n if (typeof pattern !== 'string' || typeof flags !== 'string') return JS_ThrowTypeError(ctx, 'string expected');\n const re = js_compile_regexp(ctx, pattern, flags);\n if (!re) return JS_EXCEPTION;\n return js_regexp_create(ctx, ctor, re);\n}\n\n/* the host regexp behind a guest RegExp object, or null */\nfunction js_get_regexp(ctx: JSContext, obj: JSValue, throw_error: boolean): RegExp | null {\n if (Q.JS_IsObject(obj) && Q.JS_GetClassID(obj) === JSClassID.REGEXP && obj instanceof RegExp) return obj;\n if (throw_error) Q.JS_ThrowTypeErrorInvalidClass(ctx, JSClassID.REGEXP);\n return null;\n}\n\n/* return < 0 if exception or TRUE/FALSE */\nfunction js_is_regexp(ctx: JSContext, obj: JSValue): number {\n if (!JS_IsObject(obj)) return 0;\n const m = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_match);\n if (JS_IsException(m)) return -1;\n if (!JS_IsUndefined(m)) return JS_ToBoolFree(ctx, m) ? 1 : 0;\n return js_get_regexp(ctx, obj, false) !== null ? 1 : 0;\n}\n\nfunction js_regexp_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n const pat = argv[0];\n const flags1 = argv[1];\n const pat_is_regexp = js_is_regexp(ctx, pat);\n if (pat_is_regexp < 0) return JS_EXCEPTION;\n if (JS_IsUndefined(new_target)) {\n /* called as a function */\n new_target = ctx.rt.current_stack_frame?.cur_func ?? undefined;\n if (pat_is_regexp && JS_IsUndefined(flags1)) {\n const ctor = JS_GetProperty(ctx, pat, JS_ATOM_constructor);\n if (JS_IsException(ctor)) return ctor;\n if (js_same_value(ctx, ctor, new_target)) return pat;\n }\n }\n let re: RegExp | null;\n const re1 = js_get_regexp(ctx, pat, false);\n if (re1) {\n const pattern = SOURCE_GETTER.call(re1) as string;\n if (JS_IsUndefined(flags1)) {\n re = new RegExp(re1);\n } else {\n re = js_compile_regexp(ctx, pattern, flags1);\n if (!re) return JS_EXCEPTION;\n }\n } else {\n let flags: JSValue;\n let pattern_val: JSValue;\n if (pat_is_regexp) {\n pattern_val = JS_GetProperty(ctx, pat, JS_ATOM_source);\n if (JS_IsException(pattern_val)) return pattern_val;\n if (JS_IsUndefined(flags1)) {\n flags = JS_GetProperty(ctx, pat, JS_ATOM_flags);\n if (JS_IsException(flags)) return flags;\n } else {\n flags = flags1;\n }\n } else {\n pattern_val = pat;\n flags = flags1;\n }\n let pattern: string;\n if (JS_IsUndefined(pattern_val)) {\n pattern = '';\n } else {\n const s = JS_ToString(ctx, pattern_val);\n if (JS_IsException(s)) return s;\n pattern = s as string;\n }\n re = js_compile_regexp(ctx, pattern, flags);\n if (!re) return JS_EXCEPTION;\n }\n return js_regexp_create(ctx, new_target, re);\n}\n\nfunction js_get_this(ctx: JSContext, this_val: JSValue): JSValue { return this_val; }\n\nconst js_regexp_funcs: JSCFunctionListEntry[] = [\n JS_CGETSET_DEF(JS_ATOM_Symbol_species, js_get_this, null),\n];\n\n/* The flag/source getters are generic on %RegExp.prototype% itself (\"(?:)\",\n \"\" and undefined). The host getters recognise the host prototype only,\n so the guest prototype is special cased here. */\nfunction regexp_getter(ctx: JSContext, name: string, proto_value: JSValue): Function {\n const get = host_getter(name);\n const proto = ctx.class_proto[JSClassID.REGEXP];\n return function (this: any) {\n if (this === proto) return proto_value;\n return get.call(this);\n };\n}\n\nexport function JS_AddIntrinsicRegExp(ctx: JSContext): void {\n hooks.js_regexp_constructor_internal = js_regexp_constructor_internal_hook;\n\n const proto = JS_NewObject(ctx) as JSObject;\n ctx.class_proto[JSClassID.REGEXP] = proto;\n const js_regexp_proto_funcs: JSCFunctionListEntry[] = [\n JS_NATIVE_GETSET_DEF('flags', FLAGS_GETTER, null),\n JS_NATIVE_GETSET_DEF('source', regexp_getter(ctx, 'source', '(?:)'), null),\n JS_NATIVE_GETSET_DEF('global', regexp_getter(ctx, 'global', undefined), null),\n JS_NATIVE_GETSET_DEF('ignoreCase', regexp_getter(ctx, 'ignoreCase', undefined), null),\n JS_NATIVE_GETSET_DEF('multiline', regexp_getter(ctx, 'multiline', undefined), null),\n JS_NATIVE_GETSET_DEF('dotAll', regexp_getter(ctx, 'dotAll', undefined), null),\n JS_NATIVE_GETSET_DEF('unicode', regexp_getter(ctx, 'unicode', undefined), null),\n JS_NATIVE_GETSET_DEF('unicodeSets', regexp_getter(ctx, 'unicodeSets', undefined), null),\n JS_NATIVE_GETSET_DEF('sticky', regexp_getter(ctx, 'sticky', undefined), null),\n JS_NATIVE_GETSET_DEF('hasIndices', regexp_getter(ctx, 'hasIndices', undefined), null),\n JS_NATIVE_DEF('exec', 1, RP.exec, fix_match),\n JS_NATIVE_DEF('compile', 2, (RP as any).compile),\n JS_NATIVE_DEF('test', 1, RP.test),\n JS_NATIVE_DEF('toString', 0, RP.toString),\n JS_NATIVE_DEF(JS_ATOM_Symbol_replace, 2, RP[Symbol.replace]),\n JS_NATIVE_DEF(JS_ATOM_Symbol_match, 1, RP[Symbol.match], fix_match),\n JS_NATIVE_DEF(JS_ATOM_Symbol_matchAll, 1, RP[Symbol.matchAll], fix_regexp_string_iterator),\n JS_NATIVE_DEF(JS_ATOM_Symbol_search, 1, RP[Symbol.search]),\n JS_NATIVE_DEF(JS_ATOM_Symbol_split, 2, RP[Symbol.split], fix_array),\n ];\n JS_SetPropertyFunctionList(ctx, proto, js_regexp_proto_funcs);\n const obj = JS_NewGlobalCConstructor(ctx, 'RegExp', js_regexp_constructor, 2, proto);\n ctx.regexp_ctor = obj as JSObject;\n JS_SetPropertyFunctionList(ctx, obj, js_regexp_funcs);\n\n const it_proto = JS_NewObjectProto(ctx, ctx.iterator_proto) as JSObject;\n ctx.class_proto[JSClassID.REGEXP_STRING_ITERATOR] = it_proto;\n JS_SetPropertyFunctionList(ctx, it_proto, [\n JS_NATIVE_DEF('next', 0, (HOST_REGEXP_STRING_ITERATOR_PROTO as any).next, fix_iter_result_match),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'RegExp String Iterator', JS_PROP_CONFIGURABLE),\n ]);\n}\n"]}
1
+ {"version":3,"file":"regexp.js","sourceRoot":"","sources":["../../src/builtins/regexp.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * RegExp objects (port of the RegExp part of quickjs.c)\n *\n * libregexp is not ported: a guest RegExp object IS a host RegExp with the\n * guest prototype (builtins/native.ts), so matching, lastIndex handling and\n * the Symbol.* protocol methods are the borrowed host natives. The results\n * they create (match arrays, split arrays, string iterators) are\n * re-prototyped by the fixers. The constructor keeps the quickjs.c logic\n * for IsRegExp, pattern/flags extraction and flag validation.\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsObject,\n JS_CFUNC_DEF, JS_NewObject, JS_NewObjectProto, JS_GetProperty, JS_ToString, JS_ToBoolFree, JS_ThrowTypeError,\n JS_ThrowSyntaxError, js_proto_from_ctor, js_same_value, hooks, JS_SetPropertyFunctionList,\n JS_NewGlobalCConstructor, JS_CGETSET_DEF, JS_NATIVE_DEF, JS_NATIVE_GETSET_DEF, JS_PROP_STRING_DEF,\n JSCFunctionListEntry, JS_PROP_CONFIGURABLE, JS_ATOM_constructor, JS_ATOM_source, JS_ATOM_flags,\n JS_ATOM_Symbol_match, JS_ATOM_Symbol_matchAll, JS_ATOM_Symbol_replace, JS_ATOM_Symbol_search, JS_ATOM_Symbol_split, JS_ATOM_Symbol_species,\n JS_ATOM_Symbol_toStringTag,\n} from '../quickjs.ts';\nimport {\n js_adopt_host_object, fix_match, fix_array, fix_regexp_string_iterator, fix_iter_result_match,\n HOST_REGEXP_STRING_ITERATOR_PROTO,\n} from './native.ts';\n\nconst RP = RegExp.prototype;\nconst host_getter = (name: string) => Object.getOwnPropertyDescriptor(RP, name)!.get!;\nconst SOURCE_GETTER = host_getter('source');\nconst FLAGS_GETTER = host_getter('flags');\n\n/* validate the flags (quickjs.c messages) and compile with the host */\nfunction js_compile_regexp(ctx: JSContext, pattern: string, flags: JSValue): RegExp | null {\n let flags_str = '';\n if (!JS_IsUndefined(flags)) {\n const str = JS_ToString(ctx, flags);\n if (JS_IsException(str)) return null;\n flags_str = str as string;\n let seen = '';\n for (const c of flags_str) {\n if (!'dgimsuvy'.includes(c) || seen.includes(c)) {\n JS_ThrowSyntaxError(ctx, 'invalid regular expression flags');\n return null;\n }\n seen += c;\n }\n if (seen.includes('u') && seen.includes('v')) {\n JS_ThrowSyntaxError(ctx, 'invalid regular expression flags');\n return null;\n }\n }\n try {\n return new RegExp(pattern, flags_str);\n } catch (e) {\n let msg = (e instanceof Error) ? e.message : String(e);\n /* strip the host prefix \"Invalid regular expression: /.../flags: \" if present */\n msg = msg.replace(/^Invalid regular expression: (\\/.*\\/[a-z]*: )?/s, '');\n JS_ThrowSyntaxError(ctx, msg);\n return null;\n }\n}\n\n/* create the guest RegExp object from a freshly compiled host regexp */\nfunction js_regexp_create(ctx: JSContext, ctor: JSValue, re: RegExp): JSValue {\n const proto = js_proto_from_ctor(ctx, ctor, JSClassID.REGEXP);\n if (JS_IsException(proto)) return proto;\n return js_adopt_host_object(ctx, re, proto, JSClassID.REGEXP);\n}\n\n/* hook used by the interpreter for regexp literals */\nfunction js_regexp_constructor_internal_hook(ctx: JSContext, ctor: JSValue, pattern: string, flags: string): JSValue {\n if (typeof pattern !== 'string' || typeof flags !== 'string') return JS_ThrowTypeError(ctx, 'string expected');\n const re = js_compile_regexp(ctx, pattern, flags);\n if (!re) return JS_EXCEPTION;\n return js_regexp_create(ctx, ctor, re);\n}\n\n/* the host regexp behind a guest RegExp object, or null */\nfunction js_get_regexp(ctx: JSContext, obj: JSValue, throw_error: boolean): RegExp | null {\n if (Q.JS_IsObject(obj) && Q.JS_GetClassID(obj) === JSClassID.REGEXP && obj instanceof RegExp) return obj;\n if (throw_error) Q.JS_ThrowTypeErrorInvalidClass(ctx, JSClassID.REGEXP);\n return null;\n}\n\n/* return < 0 if exception or TRUE/FALSE */\nfunction js_is_regexp(ctx: JSContext, obj: JSValue): number {\n if (!JS_IsObject(obj)) return 0;\n const m = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_match);\n if (JS_IsException(m)) return -1;\n if (!JS_IsUndefined(m)) return JS_ToBoolFree(ctx, m) ? 1 : 0;\n return js_get_regexp(ctx, obj, false) !== null ? 1 : 0;\n}\n\nfunction js_regexp_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n const pat = argv[0];\n const flags1 = argv[1];\n const pat_is_regexp = js_is_regexp(ctx, pat);\n if (pat_is_regexp < 0) return JS_EXCEPTION;\n if (JS_IsUndefined(new_target)) {\n /* called as a function */\n new_target = ctx.rt.current_stack_frame?.cur_func ?? undefined;\n if (pat_is_regexp && JS_IsUndefined(flags1)) {\n const ctor = JS_GetProperty(ctx, pat, JS_ATOM_constructor);\n if (JS_IsException(ctor)) return ctor;\n if (js_same_value(ctx, ctor, new_target)) return pat;\n }\n }\n /* the prototype is read from new.target before the pattern and the flags\n are converted to strings (QuickJS c31809e) */\n let re: RegExp | null;\n let proto: JSValue;\n const re1 = js_get_regexp(ctx, pat, false);\n if (re1) {\n const pattern = SOURCE_GETTER.call(re1) as string;\n proto = js_proto_from_ctor(ctx, new_target, JSClassID.REGEXP);\n if (JS_IsException(proto)) return proto;\n if (JS_IsUndefined(flags1)) {\n re = new RegExp(re1);\n } else {\n re = js_compile_regexp(ctx, pattern, flags1);\n if (!re) return JS_EXCEPTION;\n }\n } else {\n let flags: JSValue;\n let pattern_val: JSValue;\n if (pat_is_regexp) {\n pattern_val = JS_GetProperty(ctx, pat, JS_ATOM_source);\n if (JS_IsException(pattern_val)) return pattern_val;\n if (JS_IsUndefined(flags1)) {\n flags = JS_GetProperty(ctx, pat, JS_ATOM_flags);\n if (JS_IsException(flags)) return flags;\n } else {\n flags = flags1;\n }\n } else {\n pattern_val = pat;\n flags = flags1;\n }\n proto = js_proto_from_ctor(ctx, new_target, JSClassID.REGEXP);\n if (JS_IsException(proto)) return proto;\n let pattern: string;\n if (JS_IsUndefined(pattern_val)) {\n pattern = '';\n } else {\n const s = JS_ToString(ctx, pattern_val);\n if (JS_IsException(s)) return s;\n pattern = s as string;\n }\n re = js_compile_regexp(ctx, pattern, flags);\n if (!re) return JS_EXCEPTION;\n }\n return js_adopt_host_object(ctx, re, proto, JSClassID.REGEXP);\n}\n\nfunction js_get_this(ctx: JSContext, this_val: JSValue): JSValue { return this_val; }\n\n/* white space and line terminators above U+00FF (lre_is_space): the code\n points below 256 are all escaped as \\xNN anyway */\nfunction regexp_escape_is_space(c: number): boolean {\n return c === 0x1680 || (c >= 0x2000 && c <= 0x200a) || c === 0x2028 || c === 0x2029 ||\n c === 0x202f || c === 0x205f || c === 0x3000 || c === 0xfeff;\n}\n\nconst regexp_escape_punct = \",-=<>#&!%:;@~'`\\\"\";\n\n/* RegExp.escape(string) (js_regexp_escape) */\nfunction js_regexp_escape(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const str = argv[0];\n if (typeof str !== 'string') return JS_ThrowTypeError(ctx, 'not a string');\n const hex = (c: number, n: number) => c.toString(16).padStart(n, '0');\n let b = '';\n let i = 0;\n while (i < str.length) {\n const i0 = i;\n let c = str.charCodeAt(i++);\n /* string_getc: a valid surrogate pair is one code point */\n if (c >= 0xd800 && c < 0xdc00 && i < str.length) {\n const c1 = str.charCodeAt(i);\n if (c1 >= 0xdc00 && c1 < 0xe000) { c = 0x10000 + ((c - 0xd800) << 10) + (c1 - 0xdc00); i++; }\n }\n if (c < 33) {\n if (c >= 9 && c <= 13) b += '\\\\' + 'tnvfr'[c - 9];\n else b += '\\\\x' + hex(c, 2);\n } else if (c < 128) {\n const ch = String.fromCharCode(c);\n if ((c >= 0x30 && c <= 0x39) || (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a)) {\n if (i0 === 0) { b += '\\\\x' + hex(c, 2); continue; }\n } else if (regexp_escape_punct.includes(ch)) {\n b += '\\\\x' + hex(c, 2);\n continue;\n } else if (ch !== '_') {\n b += '\\\\';\n }\n b += ch;\n } else if (c < 256) {\n b += '\\\\x' + hex(c, 2);\n } else if ((c >= 0xd800 && c < 0xe000) || regexp_escape_is_space(c)) {\n b += '\\\\u' + hex(c, 4);\n } else {\n b += String.fromCodePoint(c);\n }\n }\n return b;\n}\n\nconst js_regexp_funcs: JSCFunctionListEntry[] = [\n JS_CFUNC_DEF('escape', 1, js_regexp_escape),\n JS_CGETSET_DEF(JS_ATOM_Symbol_species, js_get_this, null),\n];\n\n/* The flag/source getters are generic on %RegExp.prototype% itself (\"(?:)\",\n \"\" and undefined). The host getters recognise the host prototype only,\n so the guest prototype is special cased here. */\nfunction regexp_getter(ctx: JSContext, name: string, proto_value: JSValue): Function {\n const get = host_getter(name);\n const proto = ctx.class_proto[JSClassID.REGEXP];\n return function (this: any) {\n if (this === proto) return proto_value;\n return get.call(this);\n };\n}\n\nexport function JS_AddIntrinsicRegExp(ctx: JSContext): void {\n hooks.js_regexp_constructor_internal = js_regexp_constructor_internal_hook;\n\n const proto = JS_NewObject(ctx) as JSObject;\n ctx.class_proto[JSClassID.REGEXP] = proto;\n const js_regexp_proto_funcs: JSCFunctionListEntry[] = [\n JS_NATIVE_GETSET_DEF('flags', FLAGS_GETTER, null),\n JS_NATIVE_GETSET_DEF('source', regexp_getter(ctx, 'source', '(?:)'), null),\n JS_NATIVE_GETSET_DEF('global', regexp_getter(ctx, 'global', undefined), null),\n JS_NATIVE_GETSET_DEF('ignoreCase', regexp_getter(ctx, 'ignoreCase', undefined), null),\n JS_NATIVE_GETSET_DEF('multiline', regexp_getter(ctx, 'multiline', undefined), null),\n JS_NATIVE_GETSET_DEF('dotAll', regexp_getter(ctx, 'dotAll', undefined), null),\n JS_NATIVE_GETSET_DEF('unicode', regexp_getter(ctx, 'unicode', undefined), null),\n JS_NATIVE_GETSET_DEF('unicodeSets', regexp_getter(ctx, 'unicodeSets', undefined), null),\n JS_NATIVE_GETSET_DEF('sticky', regexp_getter(ctx, 'sticky', undefined), null),\n JS_NATIVE_GETSET_DEF('hasIndices', regexp_getter(ctx, 'hasIndices', undefined), null),\n JS_NATIVE_DEF('exec', 1, RP.exec, fix_match),\n JS_NATIVE_DEF('compile', 2, (RP as any).compile),\n JS_NATIVE_DEF('test', 1, RP.test),\n JS_NATIVE_DEF('toString', 0, RP.toString),\n JS_NATIVE_DEF(JS_ATOM_Symbol_replace, 2, RP[Symbol.replace]),\n JS_NATIVE_DEF(JS_ATOM_Symbol_match, 1, RP[Symbol.match], fix_match),\n JS_NATIVE_DEF(JS_ATOM_Symbol_matchAll, 1, RP[Symbol.matchAll], fix_regexp_string_iterator),\n JS_NATIVE_DEF(JS_ATOM_Symbol_search, 1, RP[Symbol.search]),\n JS_NATIVE_DEF(JS_ATOM_Symbol_split, 2, RP[Symbol.split], fix_array),\n ];\n JS_SetPropertyFunctionList(ctx, proto, js_regexp_proto_funcs);\n const obj = JS_NewGlobalCConstructor(ctx, 'RegExp', js_regexp_constructor, 2, proto);\n ctx.regexp_ctor = obj as JSObject;\n JS_SetPropertyFunctionList(ctx, obj, js_regexp_funcs);\n\n const it_proto = JS_NewObjectProto(ctx, ctx.iterator_proto) as JSObject;\n ctx.class_proto[JSClassID.REGEXP_STRING_ITERATOR] = it_proto;\n JS_SetPropertyFunctionList(ctx, it_proto, [\n JS_NATIVE_DEF('next', 0, (HOST_REGEXP_STRING_ITERATOR_PROTO as any).next, fix_iter_result_match),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'RegExp String Iterator', JS_PROP_CONFIGURABLE),\n ]);\n}\n"]}
@@ -127,7 +127,7 @@ export function JS_AddIntrinsicString(ctx) {
127
127
  JS_SetPropertyFunctionList(ctx, obj, js_string_funcs);
128
128
  JS_SetPropertyFunctionList(ctx, proto, js_string_proto_funcs);
129
129
  const iter_proto = JS_NewObjectProto(ctx, ctx.iterator_proto);
130
- ctx.class_proto[41 /* JSClassID.STRING_ITERATOR */] = iter_proto;
130
+ ctx.class_proto[42 /* JSClassID.STRING_ITERATOR */] = iter_proto;
131
131
  JS_SetPropertyFunctionList(ctx, iter_proto, js_string_iterator_proto_funcs);
132
132
  /* called from JS_NewContext in quickjs.c */
133
133
  JS_AddIntrinsicStringNormalize(ctx);
@@ -12,7 +12,7 @@ function js_thisSymbolValue(ctx, this_val) {
12
12
  }
13
13
  function js_symbol_constructor(ctx, new_target, argv) {
14
14
  if (!JS_IsUndefined(new_target))
15
- return JS_ThrowTypeError(ctx, 'not a constructor');
15
+ return Q.JS_ThrowTypeErrorNotAConstructor(ctx, new_target);
16
16
  let str;
17
17
  if (!JS_IsUndefined(argv[0])) {
18
18
  const s = JS_ToString(ctx, argv[0]);
@@ -1 +1 @@
1
- {"version":3,"file":"symbol.js","sourceRoot":"","sources":["../../src/builtins/symbol.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Symbol objects (port of the Symbol part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsSymbol,\n JS_NewObjectProto, JS_NewCFunction3, JS_NewGlobalCConstructorOnly, JSCFunctionEnum, JS_DefinePropertyValue, JS_PROP_CONFIGURABLE,\n JS_ToString, JS_ThrowTypeError, JS_ThrowTypeErrorNotASymbol, JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_NATIVE_DEF, JS_NATIVE_GETSET_DEF, hooks,\n JS_CFUNC_MAGIC_DEF, JS_CGETSET_DEF, JS_PROP_STRING_DEF, JS_CFUNC_SPECIAL_DEF, JS_ATOM_TYPE_SYMBOL, JS_ATOM_TYPE_GLOBAL_SYMBOL,\n JS_ATOM_Symbol_toPrimitive, JS_ATOM_Symbol_iterator, JS_ATOM_Symbol_match, JS_ATOM_Symbol_matchAll, JS_ATOM_Symbol_replace,\n JS_ATOM_Symbol_search, JS_ATOM_Symbol_split, JS_ATOM_Symbol_toStringTag, JS_ATOM_Symbol_isConcatSpreadable,\n JS_ATOM_Symbol_hasInstance, JS_ATOM_Symbol_species, JS_ATOM_Symbol_unscopables, JS_ATOM_Symbol_asyncIterator,\n JS_AtomToValue, JS_NewAtom, JSAtom,\n} from '../quickjs.ts';\n\nfunction js_thisSymbolValue(ctx: JSContext, this_val: JSValue): JSValue {\n if (typeof this_val === 'symbol') return this_val;\n if (Q.JS_IsObject(this_val) && Q.JS_GetClassID(this_val) === JSClassID.SYMBOL) return Q.JS_GetAnyOpaque(this_val) as symbol;\n return JS_ThrowTypeErrorNotASymbol(ctx);\n}\n\nfunction js_symbol_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsUndefined(new_target)) return JS_ThrowTypeError(ctx, 'not a constructor');\n let str: string | undefined;\n if (!JS_IsUndefined(argv[0])) {\n const s = JS_ToString(ctx, argv[0]);\n if (JS_IsException(s)) return s;\n str = s as string;\n }\n return ctx.rt.atoms.newSymbol(str, JS_ATOM_TYPE_SYMBOL);\n}\n\nfunction js_symbol_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const val = js_thisSymbolValue(ctx, this_val);\n if (JS_IsException(val)) return val;\n return js_symbol_descriptive_string(val as symbol);\n}\n\nexport function js_symbol_descriptive_string(sym: symbol): string {\n return 'Symbol(' + (sym.description ?? '') + ')';\n}\n\nfunction js_symbol_valueOf(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return js_thisSymbolValue(ctx, this_val);\n}\n\nfunction js_symbol_get_description(ctx: JSContext, this_val: JSValue): JSValue {\n const val = js_thisSymbolValue(ctx, this_val);\n if (JS_IsException(val)) return val;\n return (val as symbol).description;\n}\n\nfunction js_symbol_for(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const str = JS_ToString(ctx, argv[0]);\n if (JS_IsException(str)) return str;\n const reg = ctx.rt.global_symbol_registry;\n let sym = reg.get(str as string);\n if (!sym) {\n sym = ctx.rt.atoms.newSymbol(str as string, JS_ATOM_TYPE_GLOBAL_SYMBOL);\n reg.set(str as string, sym);\n }\n return sym;\n}\n\nfunction js_symbol_keyFor(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const sym = argv[0];\n if (!(typeof sym === 'symbol')) return JS_ThrowTypeError(ctx, 'not a symbol');\n if (Symbol.keyFor(sym) === undefined) return undefined;\n return sym.description;\n}\n\n/* Symbol wrapper objects are host Symbol objects with the guest prototype:\n the prototype methods are borrowed host natives. The registry of\n Symbol.for is the host registry (symbols are host symbols). */\nconst js_symbol_proto_funcs = [\n JS_NATIVE_DEF('toString', 0, Symbol.prototype.toString),\n JS_NATIVE_DEF('valueOf', 0, Symbol.prototype.valueOf),\n JS_NATIVE_GETSET_DEF('description', Object.getOwnPropertyDescriptor(Symbol.prototype, 'description')!.get!, null),\n];\n\nconst js_symbol_funcs = [\n JS_NATIVE_DEF('for', 1, Symbol.for),\n JS_NATIVE_DEF('keyFor', 1, Symbol.keyFor),\n];\n\nconst well_known_symbols: [string, JSAtom][] = [\n ['toPrimitive', JS_ATOM_Symbol_toPrimitive], ['iterator', JS_ATOM_Symbol_iterator], ['match', JS_ATOM_Symbol_match],\n ['matchAll', JS_ATOM_Symbol_matchAll], ['replace', JS_ATOM_Symbol_replace], ['search', JS_ATOM_Symbol_search],\n ['split', JS_ATOM_Symbol_split], ['toStringTag', JS_ATOM_Symbol_toStringTag], ['isConcatSpreadable', JS_ATOM_Symbol_isConcatSpreadable],\n ['hasInstance', JS_ATOM_Symbol_hasInstance], ['species', JS_ATOM_Symbol_species], ['unscopables', JS_ATOM_Symbol_unscopables],\n ['asyncIterator', JS_ATOM_Symbol_asyncIterator],\n];\n\nexport function JS_AddIntrinsicSymbol(ctx: JSContext): void {\n const proto = JS_NewObjectProto(ctx, ctx.class_proto[JSClassID.OBJECT]) as JSObject;\n ctx.class_proto[JSClassID.SYMBOL] = proto;\n JS_SetPropertyFunctionList(ctx, proto, js_symbol_proto_funcs);\n const obj1 = JS_NewGlobalCConstructorOnly(ctx, 'Symbol', js_symbol_constructor as any, 0, proto);\n /* Symbol() can be called without new */\n Q.js_get_meta(obj1)!.cfunc!.cproto = JSCFunctionEnum.constructor_or_func;\n JS_SetPropertyFunctionList(ctx, obj1, js_symbol_funcs);\n for (const [name, atom] of well_known_symbols) {\n JS_DefinePropertyValue(ctx, obj1, JS_NewAtom(ctx, name), JS_AtomToValue(ctx, atom), 0);\n }\n /* Symbol.prototype[Symbol.toStringTag] and [Symbol.toPrimitive] */\n JS_DefinePropertyValue(ctx, proto, JS_ATOM_Symbol_toStringTag, 'Symbol', JS_PROP_CONFIGURABLE);\n const toprim = hooks.js_borrow_native(ctx, (Symbol.prototype as any)[Symbol.toPrimitive], '[Symbol.toPrimitive]', 1, null);\n JS_DefinePropertyValue(ctx, proto, JS_ATOM_Symbol_toPrimitive, toprim, JS_PROP_CONFIGURABLE);\n}\n"]}
1
+ {"version":3,"file":"symbol.js","sourceRoot":"","sources":["../../src/builtins/symbol.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Symbol objects (port of the Symbol part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JS_EXCEPTION, JS_IsException, JS_IsUndefined, JS_IsSymbol,\n JS_NewObjectProto, JS_NewCFunction3, JS_NewGlobalCConstructorOnly, JSCFunctionEnum, JS_DefinePropertyValue, JS_PROP_CONFIGURABLE,\n JS_ToString, JS_ThrowTypeError, JS_ThrowTypeErrorNotASymbol, JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_NATIVE_DEF, JS_NATIVE_GETSET_DEF, hooks,\n JS_CFUNC_MAGIC_DEF, JS_CGETSET_DEF, JS_PROP_STRING_DEF, JS_CFUNC_SPECIAL_DEF, JS_ATOM_TYPE_SYMBOL, JS_ATOM_TYPE_GLOBAL_SYMBOL,\n JS_ATOM_Symbol_toPrimitive, JS_ATOM_Symbol_iterator, JS_ATOM_Symbol_match, JS_ATOM_Symbol_matchAll, JS_ATOM_Symbol_replace,\n JS_ATOM_Symbol_search, JS_ATOM_Symbol_split, JS_ATOM_Symbol_toStringTag, JS_ATOM_Symbol_isConcatSpreadable,\n JS_ATOM_Symbol_hasInstance, JS_ATOM_Symbol_species, JS_ATOM_Symbol_unscopables, JS_ATOM_Symbol_asyncIterator,\n JS_AtomToValue, JS_NewAtom, JSAtom,\n} from '../quickjs.ts';\n\nfunction js_thisSymbolValue(ctx: JSContext, this_val: JSValue): JSValue {\n if (typeof this_val === 'symbol') return this_val;\n if (Q.JS_IsObject(this_val) && Q.JS_GetClassID(this_val) === JSClassID.SYMBOL) return Q.JS_GetAnyOpaque(this_val) as symbol;\n return JS_ThrowTypeErrorNotASymbol(ctx);\n}\n\nfunction js_symbol_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsUndefined(new_target)) return Q.JS_ThrowTypeErrorNotAConstructor(ctx, new_target);\n let str: string | undefined;\n if (!JS_IsUndefined(argv[0])) {\n const s = JS_ToString(ctx, argv[0]);\n if (JS_IsException(s)) return s;\n str = s as string;\n }\n return ctx.rt.atoms.newSymbol(str, JS_ATOM_TYPE_SYMBOL);\n}\n\nfunction js_symbol_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const val = js_thisSymbolValue(ctx, this_val);\n if (JS_IsException(val)) return val;\n return js_symbol_descriptive_string(val as symbol);\n}\n\nexport function js_symbol_descriptive_string(sym: symbol): string {\n return 'Symbol(' + (sym.description ?? '') + ')';\n}\n\nfunction js_symbol_valueOf(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return js_thisSymbolValue(ctx, this_val);\n}\n\nfunction js_symbol_get_description(ctx: JSContext, this_val: JSValue): JSValue {\n const val = js_thisSymbolValue(ctx, this_val);\n if (JS_IsException(val)) return val;\n return (val as symbol).description;\n}\n\nfunction js_symbol_for(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const str = JS_ToString(ctx, argv[0]);\n if (JS_IsException(str)) return str;\n const reg = ctx.rt.global_symbol_registry;\n let sym = reg.get(str as string);\n if (!sym) {\n sym = ctx.rt.atoms.newSymbol(str as string, JS_ATOM_TYPE_GLOBAL_SYMBOL);\n reg.set(str as string, sym);\n }\n return sym;\n}\n\nfunction js_symbol_keyFor(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const sym = argv[0];\n if (!(typeof sym === 'symbol')) return JS_ThrowTypeError(ctx, 'not a symbol');\n if (Symbol.keyFor(sym) === undefined) return undefined;\n return sym.description;\n}\n\n/* Symbol wrapper objects are host Symbol objects with the guest prototype:\n the prototype methods are borrowed host natives. The registry of\n Symbol.for is the host registry (symbols are host symbols). */\nconst js_symbol_proto_funcs = [\n JS_NATIVE_DEF('toString', 0, Symbol.prototype.toString),\n JS_NATIVE_DEF('valueOf', 0, Symbol.prototype.valueOf),\n JS_NATIVE_GETSET_DEF('description', Object.getOwnPropertyDescriptor(Symbol.prototype, 'description')!.get!, null),\n];\n\nconst js_symbol_funcs = [\n JS_NATIVE_DEF('for', 1, Symbol.for),\n JS_NATIVE_DEF('keyFor', 1, Symbol.keyFor),\n];\n\nconst well_known_symbols: [string, JSAtom][] = [\n ['toPrimitive', JS_ATOM_Symbol_toPrimitive], ['iterator', JS_ATOM_Symbol_iterator], ['match', JS_ATOM_Symbol_match],\n ['matchAll', JS_ATOM_Symbol_matchAll], ['replace', JS_ATOM_Symbol_replace], ['search', JS_ATOM_Symbol_search],\n ['split', JS_ATOM_Symbol_split], ['toStringTag', JS_ATOM_Symbol_toStringTag], ['isConcatSpreadable', JS_ATOM_Symbol_isConcatSpreadable],\n ['hasInstance', JS_ATOM_Symbol_hasInstance], ['species', JS_ATOM_Symbol_species], ['unscopables', JS_ATOM_Symbol_unscopables],\n ['asyncIterator', JS_ATOM_Symbol_asyncIterator],\n];\n\nexport function JS_AddIntrinsicSymbol(ctx: JSContext): void {\n const proto = JS_NewObjectProto(ctx, ctx.class_proto[JSClassID.OBJECT]) as JSObject;\n ctx.class_proto[JSClassID.SYMBOL] = proto;\n JS_SetPropertyFunctionList(ctx, proto, js_symbol_proto_funcs);\n const obj1 = JS_NewGlobalCConstructorOnly(ctx, 'Symbol', js_symbol_constructor as any, 0, proto);\n /* Symbol() can be called without new */\n Q.js_get_meta(obj1)!.cfunc!.cproto = JSCFunctionEnum.constructor_or_func;\n JS_SetPropertyFunctionList(ctx, obj1, js_symbol_funcs);\n for (const [name, atom] of well_known_symbols) {\n JS_DefinePropertyValue(ctx, obj1, JS_NewAtom(ctx, name), JS_AtomToValue(ctx, atom), 0);\n }\n /* Symbol.prototype[Symbol.toStringTag] and [Symbol.toPrimitive] */\n JS_DefinePropertyValue(ctx, proto, JS_ATOM_Symbol_toStringTag, 'Symbol', JS_PROP_CONFIGURABLE);\n const toprim = hooks.js_borrow_native(ctx, (Symbol.prototype as any)[Symbol.toPrimitive], '[Symbol.toPrimitive]', 1, null);\n JS_DefinePropertyValue(ctx, proto, JS_ATOM_Symbol_toPrimitive, toprim, JS_PROP_CONFIGURABLE);\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { JSContext, JSValue, JSObject, JSClassID, JSArrayBuffer } from '../quickjs.ts';
2
+ export declare function typed_array_class_available(class_id: JSClassID): boolean;
2
3
  export declare class JSArrayBufferData extends JSArrayBuffer {
3
4
  max_byte_length: number;
4
5
  dv: DataView | null;