jseption 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -4
- package/dist/atoms.d.ts +1 -0
- package/dist/atoms.js +2 -1
- package/dist/atoms.js.map +1 -1
- package/dist/builtins/base64.d.ts +14 -0
- package/dist/builtins/base64.js +219 -0
- package/dist/builtins/base64.js.map +1 -0
- package/dist/builtins/bigint.js +3 -3
- package/dist/builtins/bigint.js.map +1 -1
- package/dist/builtins/date.d.ts +1 -0
- package/dist/builtins/date.js +26 -12
- package/dist/builtins/date.js.map +1 -1
- package/dist/builtins/error.js +9 -0
- package/dist/builtins/error.js.map +1 -1
- package/dist/builtins/float16.d.ts +3 -0
- package/dist/builtins/float16.js +69 -0
- package/dist/builtins/float16.js.map +1 -0
- package/dist/builtins/function.js +2 -2
- package/dist/builtins/index.js +9 -6
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/iterator.d.ts +2 -0
- package/dist/builtins/iterator.js +624 -0
- package/dist/builtins/iterator.js.map +1 -0
- package/dist/builtins/json.d.ts +13 -1
- package/dist/builtins/json.js +283 -211
- package/dist/builtins/json.js.map +1 -1
- package/dist/builtins/mapset.js +365 -6
- package/dist/builtins/mapset.js.map +1 -1
- package/dist/builtins/math.js +203 -3
- package/dist/builtins/math.js.map +1 -1
- package/dist/builtins/native.js +6 -6
- package/dist/builtins/object.js +9 -2
- package/dist/builtins/object.js.map +1 -1
- package/dist/builtins/promise.js +31 -11
- package/dist/builtins/promise.js.map +1 -1
- package/dist/builtins/proxy.js +2 -2
- package/dist/builtins/reflect.js +6 -2
- package/dist/builtins/reflect.js.map +1 -1
- package/dist/builtins/regexp.js +74 -3
- package/dist/builtins/regexp.js.map +1 -1
- package/dist/builtins/string.js +1 -1
- package/dist/builtins/symbol.js +1 -1
- package/dist/builtins/symbol.js.map +1 -1
- package/dist/builtins/typedarray.d.ts +1 -0
- package/dist/builtins/typedarray.js +302 -32
- package/dist/builtins/typedarray.js.map +1 -1
- package/dist/builtins/weakref.js +7 -7
- package/dist/embed.js +3 -3
- package/dist/interpreter.js +15 -14
- package/dist/interpreter.js.map +1 -1
- package/dist/jit.d.ts +1 -0
- package/dist/jit.js +51 -13
- package/dist/jit.js.map +1 -1
- package/dist/jit_hook.d.ts +1 -0
- package/dist/jit_hook.js.map +1 -1
- package/dist/jit_runtime.d.ts +1 -1
- package/dist/jit_runtime.js +6 -6
- package/dist/jit_runtime.js.map +1 -1
- package/dist/jit_stack.d.ts +1 -0
- package/dist/jit_stack.js +2 -1
- package/dist/jit_stack.js.map +1 -1
- package/dist/jseption.d.ts +2 -0
- package/dist/jseption.js +1 -0
- package/dist/jseption.js.map +1 -1
- package/dist/membrane.js +1 -1
- package/dist/module.js +5 -3
- package/dist/module.js.map +1 -1
- package/dist/parser.js +26 -9
- package/dist/parser.js.map +1 -1
- package/dist/print.d.ts +12 -0
- package/dist/print.js +494 -0
- package/dist/print.js.map +1 -0
- package/dist/qjs.js +13 -10
- package/dist/qjs.js.map +1 -1
- package/dist/quickjs.d.ts +8 -0
- package/dist/quickjs.js +132 -53
- package/dist/quickjs.js.map +1 -1
- package/dist/std.d.ts +4 -2
- package/dist/std.js +42 -8
- package/dist/std.js.map +1 -1
- package/dist/values.d.ts +31 -27
- package/dist/values.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
package/dist/builtins/math.js
CHANGED
|
@@ -1,10 +1,208 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Math object (port of the Math part of quickjs.c)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The functions that map numbers to numbers with spec defined results are
|
|
5
|
+
* borrowed host natives (builtins/native.ts). Math.f16round and
|
|
6
|
+
* Math.sumPrecise are ported, so that they exist and give the same results
|
|
7
|
+
* on every host.
|
|
6
8
|
*/
|
|
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";
|
|
9
|
+
import { JS_SetPropertyFunctionList, JS_NATIVE_DEF, JS_CFUNC_DEF, JS_PROP_STRING_DEF, JS_PROP_DOUBLE_DEF, JS_OBJECT_DEF, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag, JS_ATOM_next, JS_EXCEPTION, JS_IsException, JS_GetIterator, JS_GetProperty, JS_IteratorNext, JS_IteratorClose, JS_ThrowTypeError, JS_ToFloat64, } from "../quickjs.js";
|
|
10
|
+
import { f16round } from "./float16.js";
|
|
11
|
+
const SP_LIMB_BITS = 56;
|
|
12
|
+
const SP_RND_BITS = SP_LIMB_BITS - 53;
|
|
13
|
+
/* we add one extra limb to avoid having to test for overflows during the sum */
|
|
14
|
+
const SUM_PRECISE_ACC_LEN = 39;
|
|
15
|
+
const SUM_PRECISE_COUNTER_INIT = 250;
|
|
16
|
+
const LIMB_MASK = (1n << BigInt(SP_LIMB_BITS)) - 1n;
|
|
17
|
+
const sp_f64 = new Float64Array(1);
|
|
18
|
+
const sp_u64 = new BigUint64Array(sp_f64.buffer);
|
|
19
|
+
class SumPrecise {
|
|
20
|
+
state = 0 /* SumPreciseState.FINITE */;
|
|
21
|
+
counter = SUM_PRECISE_COUNTER_INIT;
|
|
22
|
+
/* 'acc' contains n_limbs and acc[n_limbs - 1] may be 0. 0 limbs
|
|
23
|
+
indicates a minus zero result when state = FINITE */
|
|
24
|
+
n_limbs = 0;
|
|
25
|
+
acc = new Array(SUM_PRECISE_ACC_LEN).fill(0n);
|
|
26
|
+
renorm() {
|
|
27
|
+
let carry = 0n;
|
|
28
|
+
for (let i = 0; i < this.n_limbs; i++) {
|
|
29
|
+
const v = this.acc[i] + carry;
|
|
30
|
+
this.acc[i] = v & LIMB_MASK;
|
|
31
|
+
carry = v >> BigInt(SP_LIMB_BITS);
|
|
32
|
+
}
|
|
33
|
+
/* we add a failsafe but it should be never reached in a
|
|
34
|
+
reasonnable amount of time */
|
|
35
|
+
if (carry !== 0n && this.n_limbs < SUM_PRECISE_ACC_LEN)
|
|
36
|
+
this.acc[this.n_limbs++] = carry;
|
|
37
|
+
}
|
|
38
|
+
add(d) {
|
|
39
|
+
sp_f64[0] = d;
|
|
40
|
+
const a = sp_u64[0];
|
|
41
|
+
const sgn = Number(a >> 63n);
|
|
42
|
+
const e = Number((a >> 52n) & 0x7ffn);
|
|
43
|
+
let m = a & ((1n << 52n) - 1n);
|
|
44
|
+
if (e === 2047) {
|
|
45
|
+
if (m === 0n) {
|
|
46
|
+
/* +/- infinity */
|
|
47
|
+
if (this.state === 3 /* SumPreciseState.NAN */ ||
|
|
48
|
+
(this.state === 2 /* SumPreciseState.MINUS_INFINITY */ && !sgn) ||
|
|
49
|
+
(this.state === 1 /* SumPreciseState.INFINITY */ && sgn)) {
|
|
50
|
+
this.state = 3 /* SumPreciseState.NAN */;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.state = 1 /* SumPreciseState.INFINITY */ + sgn;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
/* NaN */
|
|
58
|
+
this.state = 3 /* SumPreciseState.NAN */;
|
|
59
|
+
}
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
let p, shift;
|
|
63
|
+
if (e === 0) {
|
|
64
|
+
if (m === 0n) {
|
|
65
|
+
/* zero */
|
|
66
|
+
if (this.n_limbs === 0 && !sgn)
|
|
67
|
+
this.n_limbs = 1;
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
/* subnormal */
|
|
71
|
+
p = 0;
|
|
72
|
+
shift = 0;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
/* Note: we sum even if state != FINITE to avoid tests */
|
|
76
|
+
m |= 1n << 52n;
|
|
77
|
+
shift = e - 1;
|
|
78
|
+
/* 'p' is the position of a0 in acc */
|
|
79
|
+
p = Math.floor(shift / SP_LIMB_BITS);
|
|
80
|
+
shift %= SP_LIMB_BITS;
|
|
81
|
+
}
|
|
82
|
+
const a0 = (m << BigInt(shift)) & LIMB_MASK;
|
|
83
|
+
const a1 = m >> BigInt(SP_LIMB_BITS - shift);
|
|
84
|
+
if (!sgn) {
|
|
85
|
+
this.acc[p] += a0;
|
|
86
|
+
this.acc[p + 1] += a1;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.acc[p] -= a0;
|
|
90
|
+
this.acc[p + 1] -= a1;
|
|
91
|
+
}
|
|
92
|
+
this.n_limbs = Math.max(this.n_limbs, p + 2);
|
|
93
|
+
if (--this.counter === 0) {
|
|
94
|
+
this.counter = SUM_PRECISE_COUNTER_INIT;
|
|
95
|
+
this.renorm();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
result() {
|
|
99
|
+
switch (this.state) {
|
|
100
|
+
case 1 /* SumPreciseState.INFINITY */: return Infinity;
|
|
101
|
+
case 2 /* SumPreciseState.MINUS_INFINITY */: return -Infinity;
|
|
102
|
+
case 3 /* SumPreciseState.NAN */: return NaN;
|
|
103
|
+
}
|
|
104
|
+
this.renorm();
|
|
105
|
+
const acc = this.acc;
|
|
106
|
+
let n = this.n_limbs;
|
|
107
|
+
/* minus zero result */
|
|
108
|
+
if (n === 0)
|
|
109
|
+
return -0;
|
|
110
|
+
/* normalize */
|
|
111
|
+
while (n > 0 && acc[n - 1] === 0n)
|
|
112
|
+
n--;
|
|
113
|
+
/* zero result. The spec tells it is always positive in the finite case */
|
|
114
|
+
if (n === 0)
|
|
115
|
+
return 0;
|
|
116
|
+
const is_neg = acc[n - 1] < 0n;
|
|
117
|
+
if (is_neg) {
|
|
118
|
+
/* negate */
|
|
119
|
+
let carry = 1n;
|
|
120
|
+
for (let i = 0; i < n - 1; i++) {
|
|
121
|
+
const v = LIMB_MASK - acc[i] + carry;
|
|
122
|
+
carry = v >> BigInt(SP_LIMB_BITS);
|
|
123
|
+
acc[i] = v & LIMB_MASK;
|
|
124
|
+
}
|
|
125
|
+
acc[n - 1] = -acc[n - 1] + carry - 1n;
|
|
126
|
+
while (n > 1 && acc[n - 1] === 0n)
|
|
127
|
+
n--;
|
|
128
|
+
}
|
|
129
|
+
const sign = is_neg ? 1n << 63n : 0n;
|
|
130
|
+
/* subnormal case */
|
|
131
|
+
if (n === 1 && acc[0] < (1n << 52n)) {
|
|
132
|
+
sp_u64[0] = sign | acc[0];
|
|
133
|
+
return sp_f64[0];
|
|
134
|
+
}
|
|
135
|
+
/* normal case */
|
|
136
|
+
let e = n * SP_LIMB_BITS;
|
|
137
|
+
let p = n - 1;
|
|
138
|
+
let m = acc[p];
|
|
139
|
+
const shift = (64 - m.toString(2).length) - (64 - SP_LIMB_BITS); /* clz64(m) - (64 - SP_LIMB_BITS) */
|
|
140
|
+
e = e - shift - 52;
|
|
141
|
+
if (shift !== 0) {
|
|
142
|
+
m <<= BigInt(shift);
|
|
143
|
+
if (p > 0) {
|
|
144
|
+
p--;
|
|
145
|
+
const shift1 = SP_LIMB_BITS - shift;
|
|
146
|
+
const nz = acc[p] & ((1n << BigInt(shift1)) - 1n);
|
|
147
|
+
m = m | (acc[p] >> BigInt(shift1)) | (nz !== 0n ? 1n : 0n);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const rnd_mask = (1n << BigInt(SP_RND_BITS)) - 1n;
|
|
151
|
+
if ((m & rnd_mask) === (1n << BigInt(SP_RND_BITS - 1))) {
|
|
152
|
+
/* see if the LSB part is non zero for the final rounding */
|
|
153
|
+
while (p > 0) {
|
|
154
|
+
p--;
|
|
155
|
+
if (acc[p] !== 0n) {
|
|
156
|
+
m |= 1n;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/* rounding to nearest with ties to even */
|
|
162
|
+
const addend = (1n << BigInt(SP_RND_BITS - 1)) - 1n + ((m >> BigInt(SP_RND_BITS)) & 1n);
|
|
163
|
+
m = (m + addend) >> BigInt(SP_RND_BITS);
|
|
164
|
+
/* handle overflow in the rounding */
|
|
165
|
+
if (m === 1n << 53n)
|
|
166
|
+
e++;
|
|
167
|
+
if (e >= 2047) {
|
|
168
|
+
/* infinity */
|
|
169
|
+
return is_neg ? -Infinity : Infinity;
|
|
170
|
+
}
|
|
171
|
+
m &= (1n << 52n) - 1n;
|
|
172
|
+
sp_u64[0] = sign | (BigInt(e) << 52n) | m;
|
|
173
|
+
return sp_f64[0];
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function js_math_sumPrecise(ctx, this_val, argv) {
|
|
177
|
+
const iter = JS_GetIterator(ctx, argv[0], false);
|
|
178
|
+
if (JS_IsException(iter))
|
|
179
|
+
return JS_EXCEPTION;
|
|
180
|
+
const next = JS_GetProperty(ctx, iter, JS_ATOM_next);
|
|
181
|
+
if (JS_IsException(next))
|
|
182
|
+
return JS_EXCEPTION;
|
|
183
|
+
const s = new SumPrecise();
|
|
184
|
+
const pdone = { done: 0 };
|
|
185
|
+
for (;;) {
|
|
186
|
+
const item = JS_IteratorNext(ctx, iter, next, [], pdone);
|
|
187
|
+
if (JS_IsException(item))
|
|
188
|
+
return JS_EXCEPTION;
|
|
189
|
+
if (pdone.done)
|
|
190
|
+
break;
|
|
191
|
+
if (typeof item !== 'number') {
|
|
192
|
+
JS_ThrowTypeError(ctx, 'not a number');
|
|
193
|
+
JS_IteratorClose(ctx, iter, true);
|
|
194
|
+
return JS_EXCEPTION;
|
|
195
|
+
}
|
|
196
|
+
s.add(item);
|
|
197
|
+
}
|
|
198
|
+
return s.result();
|
|
199
|
+
}
|
|
200
|
+
function js_math_f16round(ctx, this_val, argv) {
|
|
201
|
+
const a = JS_ToFloat64(ctx, argv[0]);
|
|
202
|
+
if (JS_IsException(a))
|
|
203
|
+
return JS_EXCEPTION;
|
|
204
|
+
return f16round(a);
|
|
205
|
+
}
|
|
8
206
|
const M = Math;
|
|
9
207
|
const js_math_funcs = [
|
|
10
208
|
JS_NATIVE_DEF('min', 2, M.min),
|
|
@@ -40,9 +238,11 @@ const js_math_funcs = [
|
|
|
40
238
|
JS_NATIVE_DEF('cbrt', 1, M.cbrt),
|
|
41
239
|
JS_NATIVE_DEF('hypot', 2, M.hypot),
|
|
42
240
|
JS_NATIVE_DEF('random', 0, M.random),
|
|
241
|
+
JS_CFUNC_DEF('f16round', 1, js_math_f16round),
|
|
43
242
|
JS_NATIVE_DEF('fround', 1, M.fround),
|
|
44
243
|
JS_NATIVE_DEF('imul', 2, M.imul),
|
|
45
244
|
JS_NATIVE_DEF('clz32', 1, M.clz32),
|
|
245
|
+
JS_CFUNC_DEF('sumPrecise', 1, js_math_sumPrecise),
|
|
46
246
|
JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'Math', JS_PROP_CONFIGURABLE),
|
|
47
247
|
JS_PROP_DOUBLE_DEF('E', 2.718281828459045, 0),
|
|
48
248
|
JS_PROP_DOUBLE_DEF('LN10', 2.302585092994046, 0),
|
|
@@ -1 +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"]}
|
|
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 * The functions that map numbers to numbers with spec defined results are\n * borrowed host natives (builtins/native.ts). Math.f16round and\n * Math.sumPrecise are ported, so that they exist and give the same results\n * on every host.\n */\nimport {\n JSContext, JSValue, JS_SetPropertyFunctionList, JS_NATIVE_DEF, JS_CFUNC_DEF, JS_PROP_STRING_DEF, JS_PROP_DOUBLE_DEF,\n JS_OBJECT_DEF, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_ATOM_Symbol_toStringTag, JS_ATOM_next, JS_EXCEPTION,\n JS_IsException, JS_GetIterator, JS_GetProperty, JS_IteratorNext, JS_IteratorClose, JS_ThrowTypeError, JS_ToFloat64,\n} from '../quickjs.ts';\nimport { f16round } from './float16.ts';\n\n/* ---------------------------------------------------------------------\n Math.sumPrecise (js_math_sumPrecise)\n\n The sum is exact: the accumulator is a fixed point number of\n SUM_PRECISE_ACC_LEN limbs of SP_LIMB_BITS bits (in signed 64 bit\n integers in the C version, here in bigints, which hold the same values:\n the counter renormalizes before a limb could overflow), and only the\n final result is rounded.\n --------------------------------------------------------------------- */\n\nconst enum SumPreciseState {\n FINITE,\n INFINITY,\n MINUS_INFINITY, /* must be after INFINITY */\n NAN, /* must be after MINUS_INFINITY */\n}\n\nconst SP_LIMB_BITS = 56;\nconst SP_RND_BITS = SP_LIMB_BITS - 53;\n/* we add one extra limb to avoid having to test for overflows during the sum */\nconst SUM_PRECISE_ACC_LEN = 39;\nconst SUM_PRECISE_COUNTER_INIT = 250;\nconst LIMB_MASK = (1n << BigInt(SP_LIMB_BITS)) - 1n;\n\nconst sp_f64 = new Float64Array(1);\nconst sp_u64 = new BigUint64Array(sp_f64.buffer);\n\nclass SumPrecise {\n state = SumPreciseState.FINITE;\n counter = SUM_PRECISE_COUNTER_INIT;\n /* 'acc' contains n_limbs and acc[n_limbs - 1] may be 0. 0 limbs\n indicates a minus zero result when state = FINITE */\n n_limbs = 0;\n acc: bigint[] = new Array(SUM_PRECISE_ACC_LEN).fill(0n);\n\n renorm(): void {\n let carry = 0n;\n for (let i = 0; i < this.n_limbs; i++) {\n const v = this.acc[i] + carry;\n this.acc[i] = v & LIMB_MASK;\n carry = v >> BigInt(SP_LIMB_BITS);\n }\n /* we add a failsafe but it should be never reached in a\n reasonnable amount of time */\n if (carry !== 0n && this.n_limbs < SUM_PRECISE_ACC_LEN) this.acc[this.n_limbs++] = carry;\n }\n\n add(d: number): void {\n sp_f64[0] = d;\n const a = sp_u64[0];\n const sgn = Number(a >> 63n);\n const e = Number((a >> 52n) & 0x7ffn);\n let m = a & ((1n << 52n) - 1n);\n if (e === 2047) {\n if (m === 0n) {\n /* +/- infinity */\n if (this.state === SumPreciseState.NAN ||\n (this.state === SumPreciseState.MINUS_INFINITY && !sgn) ||\n (this.state === SumPreciseState.INFINITY && sgn)) {\n this.state = SumPreciseState.NAN;\n } else {\n this.state = SumPreciseState.INFINITY + sgn;\n }\n } else {\n /* NaN */\n this.state = SumPreciseState.NAN;\n }\n return;\n }\n let p: number, shift: number;\n if (e === 0) {\n if (m === 0n) {\n /* zero */\n if (this.n_limbs === 0 && !sgn) this.n_limbs = 1;\n return;\n }\n /* subnormal */\n p = 0;\n shift = 0;\n } else {\n /* Note: we sum even if state != FINITE to avoid tests */\n m |= 1n << 52n;\n shift = e - 1;\n /* 'p' is the position of a0 in acc */\n p = Math.floor(shift / SP_LIMB_BITS);\n shift %= SP_LIMB_BITS;\n }\n const a0 = (m << BigInt(shift)) & LIMB_MASK;\n const a1 = m >> BigInt(SP_LIMB_BITS - shift);\n if (!sgn) {\n this.acc[p] += a0;\n this.acc[p + 1] += a1;\n } else {\n this.acc[p] -= a0;\n this.acc[p + 1] -= a1;\n }\n this.n_limbs = Math.max(this.n_limbs, p + 2);\n if (--this.counter === 0) {\n this.counter = SUM_PRECISE_COUNTER_INIT;\n this.renorm();\n }\n }\n\n result(): number {\n switch (this.state) {\n case SumPreciseState.INFINITY: return Infinity;\n case SumPreciseState.MINUS_INFINITY: return -Infinity;\n case SumPreciseState.NAN: return NaN;\n }\n this.renorm();\n const acc = this.acc;\n let n = this.n_limbs;\n /* minus zero result */\n if (n === 0) return -0;\n /* normalize */\n while (n > 0 && acc[n - 1] === 0n) n--;\n /* zero result. The spec tells it is always positive in the finite case */\n if (n === 0) return 0;\n const is_neg = acc[n - 1] < 0n;\n if (is_neg) {\n /* negate */\n let carry = 1n;\n for (let i = 0; i < n - 1; i++) {\n const v = LIMB_MASK - acc[i] + carry;\n carry = v >> BigInt(SP_LIMB_BITS);\n acc[i] = v & LIMB_MASK;\n }\n acc[n - 1] = -acc[n - 1] + carry - 1n;\n while (n > 1 && acc[n - 1] === 0n) n--;\n }\n const sign = is_neg ? 1n << 63n : 0n;\n /* subnormal case */\n if (n === 1 && acc[0] < (1n << 52n)) {\n sp_u64[0] = sign | acc[0];\n return sp_f64[0];\n }\n /* normal case */\n let e = n * SP_LIMB_BITS;\n let p = n - 1;\n let m = acc[p];\n const shift = (64 - m.toString(2).length) - (64 - SP_LIMB_BITS); /* clz64(m) - (64 - SP_LIMB_BITS) */\n e = e - shift - 52;\n if (shift !== 0) {\n m <<= BigInt(shift);\n if (p > 0) {\n p--;\n const shift1 = SP_LIMB_BITS - shift;\n const nz = acc[p] & ((1n << BigInt(shift1)) - 1n);\n m = m | (acc[p] >> BigInt(shift1)) | (nz !== 0n ? 1n : 0n);\n }\n }\n const rnd_mask = (1n << BigInt(SP_RND_BITS)) - 1n;\n if ((m & rnd_mask) === (1n << BigInt(SP_RND_BITS - 1))) {\n /* see if the LSB part is non zero for the final rounding */\n while (p > 0) {\n p--;\n if (acc[p] !== 0n) {\n m |= 1n;\n break;\n }\n }\n }\n /* rounding to nearest with ties to even */\n const addend = (1n << BigInt(SP_RND_BITS - 1)) - 1n + ((m >> BigInt(SP_RND_BITS)) & 1n);\n m = (m + addend) >> BigInt(SP_RND_BITS);\n /* handle overflow in the rounding */\n if (m === 1n << 53n) e++;\n if (e >= 2047) {\n /* infinity */\n return is_neg ? -Infinity : Infinity;\n }\n m &= (1n << 52n) - 1n;\n sp_u64[0] = sign | (BigInt(e) << 52n) | m;\n return sp_f64[0];\n }\n}\n\nfunction js_math_sumPrecise(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const iter = JS_GetIterator(ctx, argv[0], false);\n if (JS_IsException(iter)) return JS_EXCEPTION;\n const next = JS_GetProperty(ctx, iter, JS_ATOM_next);\n if (JS_IsException(next)) return JS_EXCEPTION;\n const s = new SumPrecise();\n const pdone = { done: 0 };\n for (;;) {\n const item = JS_IteratorNext(ctx, iter, next, [], pdone);\n if (JS_IsException(item)) return JS_EXCEPTION;\n if (pdone.done) break;\n if (typeof item !== 'number') {\n JS_ThrowTypeError(ctx, 'not a number');\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n s.add(item);\n }\n return s.result();\n}\n\nfunction js_math_f16round(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const a = JS_ToFloat64(ctx, argv[0]);\n if (JS_IsException(a)) return JS_EXCEPTION;\n return f16round(a as number);\n}\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_CFUNC_DEF('f16round', 1, js_math_f16round),\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_CFUNC_DEF('sumPrecise', 1, js_math_sumPrecise),\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"]}
|
package/dist/builtins/native.js
CHANGED
|
@@ -126,7 +126,7 @@ function fix_wrapper(ctx, v, p) {
|
|
|
126
126
|
value = Symbol.prototype.valueOf.call(v);
|
|
127
127
|
break;
|
|
128
128
|
case BigInt.prototype:
|
|
129
|
-
class_id =
|
|
129
|
+
class_id = 34 /* JSClassID.BIG_INT */;
|
|
130
130
|
value = BigInt.prototype.valueOf.call(v);
|
|
131
131
|
break;
|
|
132
132
|
default: return;
|
|
@@ -210,11 +210,11 @@ function make_fix_iterator(host_proto, class_id) {
|
|
|
210
210
|
return v;
|
|
211
211
|
};
|
|
212
212
|
}
|
|
213
|
-
export const fix_array_iterator = make_fix_iterator(HOST_ARRAY_ITERATOR_PROTO,
|
|
214
|
-
export const fix_string_iterator = make_fix_iterator(HOST_STRING_ITERATOR_PROTO,
|
|
215
|
-
export const fix_map_iterator = make_fix_iterator(HOST_MAP_ITERATOR_PROTO,
|
|
216
|
-
export const fix_set_iterator = make_fix_iterator(HOST_SET_ITERATOR_PROTO,
|
|
217
|
-
export const fix_regexp_string_iterator = make_fix_iterator(HOST_REGEXP_STRING_ITERATOR_PROTO,
|
|
213
|
+
export const fix_array_iterator = make_fix_iterator(HOST_ARRAY_ITERATOR_PROTO, 41 /* JSClassID.ARRAY_ITERATOR */);
|
|
214
|
+
export const fix_string_iterator = make_fix_iterator(HOST_STRING_ITERATOR_PROTO, 42 /* JSClassID.STRING_ITERATOR */);
|
|
215
|
+
export const fix_map_iterator = make_fix_iterator(HOST_MAP_ITERATOR_PROTO, 39 /* JSClassID.MAP_ITERATOR */);
|
|
216
|
+
export const fix_set_iterator = make_fix_iterator(HOST_SET_ITERATOR_PROTO, 40 /* JSClassID.SET_ITERATOR */);
|
|
217
|
+
export const fix_regexp_string_iterator = make_fix_iterator(HOST_REGEXP_STRING_ITERATOR_PROTO, 43 /* JSClassID.REGEXP_STRING_ITERATOR */);
|
|
218
218
|
/* iterator results `{ value, done }` are fresh host objects */
|
|
219
219
|
export function fix_iter_result(ctx, r) {
|
|
220
220
|
if (typeof r === 'object' && r !== null && Object.getPrototypeOf(r) === HOST_OBJECT_PROTO) {
|
package/dist/builtins/object.js
CHANGED
|
@@ -107,6 +107,13 @@ export function js_set_prototype_internal(ctx, obj, proto_val, throw_flag) {
|
|
|
107
107
|
}
|
|
108
108
|
return ret;
|
|
109
109
|
}
|
|
110
|
+
/* ported rather than forwarded to the host: the guest Object.prototype is an ordinary host
|
|
111
|
+
object, so the host would let its prototype change */
|
|
112
|
+
function js_object_setPrototypeOf(ctx, this_val, argv) {
|
|
113
|
+
if (js_set_prototype_internal(ctx, argv[0], argv[1], true) < 0)
|
|
114
|
+
return JS_EXCEPTION;
|
|
115
|
+
return argv[0];
|
|
116
|
+
}
|
|
110
117
|
/* magic = 1 if called as Reflect.defineProperty */
|
|
111
118
|
export function js_object_defineProperty(ctx, this_val, argv, magic) {
|
|
112
119
|
const obj = argv[0];
|
|
@@ -419,7 +426,7 @@ function js_object___getClass(ctx, this_val, argv) {
|
|
|
419
426
|
const v = argv[0];
|
|
420
427
|
if (Q.JS_IsObject(v)) {
|
|
421
428
|
let class_id = Q.JS_GetClassID(v);
|
|
422
|
-
if (class_id ===
|
|
429
|
+
if (class_id === 45 /* JSClassID.PROXY */ && JS_IsFunction(ctx, v))
|
|
423
430
|
class_id = 13 /* JSClassID.BYTECODE_FUNCTION */;
|
|
424
431
|
atom = ctx.rt.class_array[class_id].class_name;
|
|
425
432
|
}
|
|
@@ -530,7 +537,7 @@ function js_object___lookupGetter__(ctx, this_val, argv, setter) {
|
|
|
530
537
|
const js_object_funcs = [
|
|
531
538
|
JS_CFUNC_DEF('create', 2, js_object_create),
|
|
532
539
|
JS_CFUNC_MAGIC_DEF('getPrototypeOf', 1, js_object_getPrototypeOf, 0),
|
|
533
|
-
|
|
540
|
+
JS_CFUNC_DEF('setPrototypeOf', 2, js_object_setPrototypeOf),
|
|
534
541
|
JS_CFUNC_MAGIC_DEF('defineProperty', 3, js_object_defineProperty, 0),
|
|
535
542
|
JS_CFUNC_DEF('defineProperties', 2, js_object_defineProperties),
|
|
536
543
|
JS_NATIVE_DEF('getOwnPropertyNames', 1, Object.getOwnPropertyNames, fix_array),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/builtins/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AACnC,OAAO,EACkE,YAAY,EAAE,cAAc,EAAE,cAAc,EACnH,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAChH,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAC3F,eAAe,EAAE,uBAAuB,EAAE,eAAe,EAAE,oBAAoB,EACpG,yBAAyB,EAAE,8BAA8B,EAAE,iBAAiB,EAAE,sBAAsB,EACpG,2BAA2B,EAAE,2BAA2B,EAAE,cAAc,EAAE,QAAQ,EAAE,mBAAmB,EACvG,eAAe,EAAyB,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAC9F,iBAAiB,EAAE,4BAA4B,EAAE,wBAAwB,EACxF,0BAA0B,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAC3F,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EACxG,wBAAwB,EAAwB,sBAAsB,EAAE,eAAe,EAAE,eAAe,EACxG,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EACxD,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,YAAY,EAC3G,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EACnG,oBAAoB,EAAE,iBAAiB,GACxC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK9D,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAE1C,2BAA2B;AAC3B,SAAS,cAAc,CAAC,GAAc,EAAE,GAAY;IAClD,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACtC,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,iCAAiC;AACjC,SAAS,oBAAoB,CAAC,GAAc;IAC1C,OAAO,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAc,EAAE,GAAY,EAAE,IAAY,EAAE,IAAa,EAAE,KAAa;IAC5G,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IAChD,OAAO,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAc,EAAE,GAAY,EAAE,UAAmB;IACzF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,4BAA4B,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC3C,IAAI,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,KAAiB,CAAC;IAC5B,iDAAiD;IACjD,MAAM,KAAK,GAAG,8BAA8B,CAAC,GAAG,EAAE,CAAC,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;IACjH,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QACpC,IAAI,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAc,EAAE,UAAmB,EAAE,IAAe;IACjF,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,UAAU,KAAK,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5E,OAAO,mBAAmB,CAAC,GAAG,EAAE,UAAU,2BAAmB,CAAC;IAChE,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC5D,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC/F,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,IAAI,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;YAAE,OAAO,YAAY,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe,EAAE,KAAa;IACxG,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,yEAAyE;QACzE,IAAI,KAAK,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED;;;;gCAIgC;AAChC,MAAM,UAAU,yBAAyB,CAAC,GAAc,EAAE,GAAY,EAAE,SAAkB,EAAE,UAAmB;IAC7G,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC,CAAC;QAAC,CAAC;IAC9F,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC,CAAC;QAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC,CAAC;IAAC,CAAC;IACvG,MAAM,GAAG,GAAG,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACrE,IAAI,GAAG,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5B;mCAC2B;QAC3B,iBAAiB,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,wBAAwB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe,EAAE,KAAa;IACxG,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC/C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC,KAAK;QAAE,KAAK,IAAI,aAAa,CAAC;IACnC,MAAM,GAAG,GAAG,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/D,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACjC,IAAI,KAAK;QAAE,OAAO,GAAG,KAAK,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IACpF,oCAAoC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IACtE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6CAA6C;AAC7C,SAAS,0BAA0B,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe,EAAE,KAAa;IACnG,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACvC,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7C,IAAI,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IACpD,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC/C,IAAI,KAAK,GAAG,aAAa,GAAG,sBAAsB,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,oBAAoB,CAAC;IAC1H,IAAI,GAAY,EAAE,GAAY,CAAC;IAC/B,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,GAAG,SAAS,CAAC;QAChB,GAAG,GAAG,KAAK,CAAC;QACZ,KAAK,IAAI,eAAe,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,KAAK,CAAC;QACZ,GAAG,GAAG,SAAS,CAAC;QAChB,KAAK,IAAI,eAAe,CAAC;IAC3B,CAAC;IACD,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1E,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACjC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe,EAAE,KAAa;IAClH,IAAI,GAAY,CAAC;IACjB,IAAI,KAAK,EAAE,CAAC;QACV,2CAA2C;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACpE,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IACtC,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC/C,IAAI,GAAG,GAAY,SAAS,CAAC;IAC7B,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,yBAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QACjC,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,OAAO,YAAY,CAAC;YAC7C,MAAM,KAAK,GAAG,aAAa,GAAG,aAAa,CAAC;YAC5C,IAAI,IAAI,CAAC,KAAK,GAAG,cAAc,EAAE,CAAC;gBAChC,IAAI,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC;oBACrE,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC;oBAAE,OAAO,YAAY,CAAC;YACjG,CAAC;iBAAM,CAAC;gBACN,IAAI,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;oBACtE,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;oBAAE,OAAO,YAAY,CAAC;YAChI,CAAC;YACD,IAAI,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;gBACxG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;gBAAE,OAAO,YAAY,CAAC;QACxI,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mCAAmC,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IAC7F,gCAAgC;IAChC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7C,MAAM,CAAC,GAAG,GAAe,CAAC;IAC1B,MAAM,KAAK,GAAG,8BAA8B,CAAC,GAAG,EAAE,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAAC,CAAC;IAC9F,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC;IAChC,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,cAAc,CAAC,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,cAAc,CAAC,SAAS,CAAC;YAAE,OAAO,YAAY,CAAC;QACnD,MAAM,IAAI,GAAG,kCAAkC,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACrF,IAAI,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,IAAI,sBAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC;gBAAE,OAAO,YAAY,CAAC;QAC3G,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAc,EAAE,IAAa,EAAE,KAAa,EAAE,IAAY;IAChG,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7C,MAAM,CAAC,GAAG,GAAe,CAAC;IAC1B,MAAM,KAAK,GAAG,8BAA8B,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAChF,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC;IAChC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,IAAI,KAAK,GAAG,gBAAgB,EAAE,CAAC;YAC7B,2CAA2C;YAC3C,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,yBAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,YAAY,CAAC;YACjC,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC;gBAAE,SAAS;QACnD,CAAC;QACD,IAAI,GAAY,CAAC;QACjB,QAAQ,IAAI,EAAE,CAAC;YACb,QAAQ;YACR;gBACE,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChC,IAAI,cAAc,CAAC,GAAG,CAAC;oBAAE,OAAO,YAAY,CAAC;gBAC7C,MAAM;YACR;gBACE,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACrC,IAAI,cAAc,CAAC,GAAG,CAAC;oBAAE,OAAO,YAAY,CAAC;gBAC7C,MAAM;YACR,sCAA8B,CAAC,CAAC,CAAC;gBAC/B,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACtC,IAAI,cAAc,CAAC,GAAG,CAAC;oBAAE,OAAO,YAAY,CAAC;gBAC7C,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC7C,IAAI,cAAc,CAAC,KAAK,CAAC;oBAAE,OAAO,YAAY,CAAC;gBAC/C,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;gBACzC,MAAM;YACR,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe,EAAE,IAAY;IACtF,OAAO,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,GAAG,kBAAkB,EAAE,IAAI,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe,EAAE,OAAe;IACxG,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,OAAO;YAAE,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACjC,OAAO,GAAG,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe,EAAE,OAAe;IAC7G,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,OAAO;YAAE,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,GAAG,GAAG,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACjC,IAAI,OAAO;QAAE,OAAO,GAAG,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG;QAAE,OAAO,iBAAiB,CAAC,GAAG,EAAE,gDAAgD,CAAC,CAAC;IAC1F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IAC3E,OAAO,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IACnF,IAAI,GAAY,CAAC;IACjB,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;SAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,GAAG,GAAG,WAAW,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;QACpC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QACtC,IAAI,IAAY,CAAC;QACjB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,GAAG,aAAa,CAAC;QACvB,CAAC;aAAM,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,GAAG,gBAAgB,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,GAAe,CAAC;YAC1B,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,8BAAsB;gBACtB,iCAAyB;gBACzB,wCAAgC;gBAChC,6BAAqB;gBACrB,+BAAuB;gBACvB,8BAAsB;gBACtB,6BAAoB;gBACpB;oBACE,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC;oBAC1D,MAAM;gBACR;oBACE,IAAI,GAAG,cAAc,CAAC;oBACtB,MAAM;YACV,CAAC;QACH,CAAC;QACD,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,0BAA0B,CAAC,CAAC;QAC3D,IAAI,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,UAAU,GAAI,GAAc,GAAG,GAAG,CAAC;AAC5C,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IAClF,OAAO,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IAC/E;+CAC2C;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5D,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC1B,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC;QAC9C,IAAI,KAAK,CAAC,IAAI;YAAE,MAAM;QACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,4BAA4B,CAAC,GAAG,CAAC,CAAC;YAClC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClC,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,GAAG,GAAG,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAAC,OAAO,YAAY,CAAC;QAAC,CAAC;QACpF,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAAC,OAAO,YAAY,CAAC;QAAC,CAAC;QACtF,IAAI,2BAA2B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YACzF,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClC,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yDAAyD;AACzD,SAAS,oBAAoB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IAC9E,IAAI,IAAY,CAAC;IACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,IAAI,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,QAAQ,6BAAoB,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;YAAE,QAAQ,uCAA8B,CAAC;QAClG,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAE,CAAC,UAAU,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,oBAAoB,CAAC;IAC9B,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,qEAAqE;AACrE,SAAS,YAAY,CAAC,GAAc,EAAE,GAAY,EAAE,CAAU;IAC5D,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACvB,OAAO,2BAA2B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC,CAAC;AACtF,CAAC;AAED,8EAA8E;AAC9E,SAAS,iBAAiB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe,EAAE,MAAc;IAC3F,mEAAmE;IACnE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC;QAAE,OAAO,YAAY,CAAC;IACjD,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAC9C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,cAAc,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAC9C,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,cAAc,CAAC,MAAM,CAAC;QAAE,OAAO,YAAY,CAAC;IAChD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC1B,KAAK,IAAI,GAAG,GAAG,CAAC,GAAI,GAAG,EAAE,EAAE,CAAC;QAC1B,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;YAC5B,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAC5C,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClC,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,cAAc,CAAC,CAAC,CAAC;YAAE,OAAO,YAAY,CAAC;QAC3C,IAAI,KAAK,CAAC,IAAI;YAAE,MAAM,CAAC,oBAAoB;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClC,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9B,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClC,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC;QAC9C,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,cAAc,CAAC,IAAI,CAAC;gBAAE,OAAO,YAAY,CAAC;YAC9C,IAAI,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC;gBAAE,OAAO,YAAY,CAAC;QAClG,CAAC;QACD,IAAI,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAc,EAAE,QAAiB;IAChE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACvC,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,OAAO,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAc,EAAE,QAAiB,EAAE,KAAc;IAChF,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC;QAAE,OAAO,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAC9F,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/D,IAAI,yBAAyB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACnF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,oCAAoC;AACpC,SAAS,0BAA0B,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe,EAAE,MAAc;IACpG,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrC,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC/C,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,yBAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAe,EAAE,IAAI,CAAC,CAAC;QAC7E,IAAI,QAAQ,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,KAAK,GAAG,cAAc;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QAC7C,IAAI,SAAS,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG;IACtB,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,gBAAgB,CAAC;IAC3C,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACpE,aAAa,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IACzD,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACpE,YAAY,CAAC,kBAAkB,EAAE,CAAC,EAAE,0BAA0B,CAAC;IAC/D,aAAa,CAAC,qBAAqB,EAAE,CAAC,EAAE,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC;IAC9E,aAAa,CAAC,uBAAuB,EAAE,CAAC,EAAE,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC;IAClF,kBAAkB,CAAC,SAAS,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACtD,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;IAChD,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IACpD,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;IACxD,aAAa,CAAC,cAAc,EAAE,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC;IACrD,aAAa,CAAC,mBAAmB,EAAE,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC/D,kBAAkB,CAAC,0BAA0B,EAAE,CAAC,EAAE,kCAAkC,EAAE,CAAC,CAAC;IACxF,YAAY,CAAC,2BAA2B,EAAE,CAAC,EAAE,mCAAmC,CAAC;IACjF,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACjC,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClD,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC;IACrC,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;IACzC,aAAa,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC7C,aAAa,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC7C,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,oBAAoB,CAAC;IACnD,YAAY,CAAC,aAAa,EAAE,CAAC,EAAE,qBAAqB,CAAC;IACrD,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;CAC1C,CAAC;AAEF,MAAM,qBAAqB,GAAG;IAC5B,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE,kBAAkB,CAAC;IAC/C,YAAY,CAAC,gBAAgB,EAAE,CAAC,EAAE,wBAAwB,CAAC;IAC3D,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,iBAAiB,CAAC;IAC7C,aAAa,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IACnE,aAAa,CAAC,eAAe,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;IACjE,aAAa,CAAC,sBAAsB,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;IAC/E,cAAc,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;IACnF,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,EAAE,0BAA0B,EAAE,CAAC,CAAC;IACxE,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,EAAE,0BAA0B,EAAE,CAAC,CAAC;IACxE,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,EAAE,0BAA0B,EAAE,CAAC,CAAC;IACxE,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,EAAE,0BAA0B,EAAE,CAAC,CAAC;CACzE,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,GAAc;IAClD,YAAY;IACZ,MAAM,GAAG,GAAG,wBAAwB,CAAC,GAAG,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC,EAAE,GAAG,CAAC,WAAW,0BAAkB,CAAC,CAAC;IACjH,0BAA0B,CAAC,GAAG,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IACtD,0BAA0B,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,0BAAkB,EAAE,qBAAqB,CAAC,CAAC;AAC5F,CAAC","sourcesContent":["/*\n * Object objects (port of the Object part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSAtom, JSPropertyDescriptor, JS_EXCEPTION, JS_IsException, JS_IsUndefined,\n JS_IsNull, JS_IsObject, JS_IsFunction, JS_IsArray, JS_NewObject, JS_NewObjectProto, JS_NewArray, js_create_array,\n JS_ToObject, JS_ValueToAtom, JS_ATOM_NULL, JS_AtomToValue, JS_AtomToString, JS_GetProperty, JS_GetPropertyUint32,\n JS_GetPropertyInt64, JS_GetPrototype, JS_SetPrototypeInternal, JS_IsExtensible, JS_PreventExtensions,\n JS_GetOwnPropertyInternal, JS_GetOwnPropertyNamesInternal, JS_DefineProperty, JS_DefinePropertyValue,\n JS_DefinePropertyValueValue, JS_DefinePropertyValueInt64, js_obj_to_desc, new_desc, js_create_from_ctor,\n js_get_length64, JS_CopyDataProperties, JS_GetIterator, JS_IteratorNext, JS_IteratorClose, JS_Call, JS_Invoke,\n js_same_value, JS_ThrowTypeError, JS_ThrowTypeErrorNotAnObject, JS_NewGlobalCConstructor,\n JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_NATIVE_DEF, JS_CFUNC_MAGIC_DEF, JS_CGETSET_DEF,\n JS_PROP_CONFIGURABLE, JS_PROP_WRITABLE, JS_PROP_ENUMERABLE, JS_PROP_C_W_E, JS_PROP_GETSET, JS_PROP_THROW,\n JS_PROP_HAS_CONFIGURABLE, JS_PROP_HAS_WRITABLE, JS_PROP_HAS_ENUMERABLE, JS_PROP_HAS_GET, JS_PROP_HAS_SET,\n JS_GPN_STRING_MASK, JS_GPN_SYMBOL_MASK, JS_GPN_ENUM_ONLY,\n JS_ATOM_Array, JS_ATOM_Function, JS_ATOM_Object, JS_ATOM_Symbol_toStringTag, JS_ATOM_toString, JS_ATOM_next,\n JS_ATOM_get, JS_ATOM_set, JS_ATOM_value, JS_ATOM_writable, JS_ATOM_enumerable, JS_ATOM_configurable,\n JS_ATOM_empty_string, JS_ATOM___proto__,\n} from '../quickjs.ts';\nimport { fix_any, fix_array, fix_entries } from './native.ts';\n\n/* same values as JSIteratorKind in builtins/index.ts (JS_ITERATOR_KIND_xxx in C) */\nconst enum ObjIterKind { KEY, VALUE, KEY_AND_VALUE }\n\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/* check_function() in C */\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\n/* JS_GetActiveFunction() in C */\nfunction JS_GetActiveFunction(ctx: JSContext): JSValue {\n return ctx.rt.current_stack_frame ? ctx.rt.current_stack_frame.cur_func : undefined;\n}\n\nexport function JS_DefinePropertyDesc(ctx: JSContext, obj: JSValue, prop: JSAtom, desc: JSValue, flags: number): number {\n const d = new_desc();\n if (js_obj_to_desc(ctx, d, desc) < 0) return -1;\n return JS_DefineProperty(ctx, obj, prop, d.value, d.getter, d.setter, d.flags | flags);\n}\n\nexport function JS_ObjectDefineProperties(ctx: JSContext, obj: JSValue, properties: JSValue): number {\n if (!JS_IsObject(obj)) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n return -1;\n }\n const props = JS_ToObject(ctx, properties);\n if (JS_IsException(props)) return -1;\n const p = props as JSObject;\n /* XXX: not done in the same order as the spec */\n const atoms = JS_GetOwnPropertyNamesInternal(ctx, p, JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK);\n if (!atoms) return -1;\n for (const e of atoms) {\n const desc = JS_GetProperty(ctx, props, e.atom);\n if (JS_IsException(desc)) return -1;\n if (JS_DefinePropertyDesc(ctx, obj, e.atom, desc, JS_PROP_THROW) < 0) return -1;\n }\n return 0;\n}\n\nfunction js_object_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsUndefined(new_target) && new_target !== JS_GetActiveFunction(ctx)) {\n return js_create_from_ctor(ctx, new_target, JSClassID.OBJECT);\n }\n const v = argv[0];\n if (v === null || v === undefined) return JS_NewObject(ctx);\n return JS_ToObject(ctx, v);\n}\n\nfunction js_object_create(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const proto = argv[0];\n if (!JS_IsObject(proto) && !JS_IsNull(proto)) return JS_ThrowTypeError(ctx, 'not a prototype');\n const obj = JS_NewObjectProto(ctx, proto);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const props = argv[1];\n if (!JS_IsUndefined(props)) {\n if (JS_ObjectDefineProperties(ctx, obj, props)) return JS_EXCEPTION;\n }\n return obj;\n}\n\nexport function js_object_getPrototypeOf(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const val = argv[0];\n if (!JS_IsObject(val)) {\n /* ES6 feature non compatible with ES5.1: primitive types are accepted */\n if (magic || JS_IsNull(val) || JS_IsUndefined(val)) return JS_ThrowTypeErrorNotAnObject(ctx);\n }\n return JS_GetPrototype(ctx, val);\n}\n\n/* Wrapper around the core JS_SetPrototypeInternal reproducing the argument\n checks of the C version: a non object/null prototype is always a\n TypeError, a non object target is a TypeError unless throw_flag is set\n (then primitives are accepted), and a proxy trap returning false in\n throw mode is a TypeError. */\nexport function js_set_prototype_internal(ctx: JSContext, obj: JSValue, proto_val: JSValue, throw_flag: boolean): number {\n if (throw_flag) {\n if (JS_IsNull(obj) || JS_IsUndefined(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n } else {\n if (!JS_IsObject(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n }\n if (!JS_IsObject(proto_val) && !JS_IsNull(proto_val)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n const ret = JS_SetPrototypeInternal(ctx, obj, proto_val, throw_flag);\n if (ret === 0 && throw_flag) {\n /* only a proxy setPrototypeOf trap can return false here without\n having thrown already */\n JS_ThrowTypeError(ctx, 'proxy: bad prototype');\n return -1;\n }\n return ret;\n}\n\n/* magic = 1 if called as Reflect.defineProperty */\nexport function js_object_defineProperty(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const obj = argv[0];\n const prop = argv[1];\n const desc = argv[2];\n if (!JS_IsObject(obj)) return JS_ThrowTypeErrorNotAnObject(ctx);\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let flags = 0;\n if (!magic) flags |= JS_PROP_THROW;\n const ret = JS_DefinePropertyDesc(ctx, obj, atom, desc, flags);\n if (ret < 0) return JS_EXCEPTION;\n if (magic) return ret !== 0;\n return obj;\n}\n\nfunction js_object_defineProperties(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // defineProperties(obj, properties)\n const obj = argv[0];\n if (JS_ObjectDefineProperties(ctx, obj, argv[1])) return JS_EXCEPTION;\n return obj;\n}\n\n/* magic = 1 if called as __defineSetter__ */\nfunction js_object___defineGetter__(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const prop = argv[0];\n const value = argv[1];\n const obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n if (check_function(ctx, value)) return JS_EXCEPTION;\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let flags = JS_PROP_THROW | JS_PROP_HAS_ENUMERABLE | JS_PROP_ENUMERABLE | JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE;\n let get: JSValue, set: JSValue;\n if (magic) {\n get = undefined;\n set = value;\n flags |= JS_PROP_HAS_SET;\n } else {\n get = value;\n set = undefined;\n flags |= JS_PROP_HAS_GET;\n }\n const ret = JS_DefineProperty(ctx, obj, atom, undefined, get, set, flags);\n if (ret < 0) return JS_EXCEPTION;\n return undefined;\n}\n\nexport function js_object_getOwnPropertyDescriptor(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n let obj: JSValue;\n if (magic) {\n /* Reflect.getOwnPropertyDescriptor case */\n if (!JS_IsObject(argv[0])) return JS_ThrowTypeErrorNotAnObject(ctx);\n obj = argv[0];\n } else {\n obj = JS_ToObject(ctx, argv[0]);\n if (JS_IsException(obj)) return obj;\n }\n const prop = argv[1];\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let ret: JSValue = undefined;\n if (JS_IsObject(obj)) {\n const desc = new_desc();\n const res = JS_GetOwnPropertyInternal(ctx, desc, obj, atom);\n if (res < 0) return JS_EXCEPTION;\n if (res) {\n ret = JS_NewObject(ctx);\n if (JS_IsException(ret)) return JS_EXCEPTION;\n const flags = JS_PROP_C_W_E | JS_PROP_THROW;\n if (desc.flags & JS_PROP_GETSET) {\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_get, desc.getter, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_set, desc.setter, flags) < 0) return JS_EXCEPTION;\n } else {\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_value, desc.value, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_writable, (desc.flags & JS_PROP_WRITABLE) !== 0, flags) < 0) return JS_EXCEPTION;\n }\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_enumerable, (desc.flags & JS_PROP_ENUMERABLE) !== 0, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_configurable, (desc.flags & JS_PROP_CONFIGURABLE) !== 0, flags) < 0) return JS_EXCEPTION;\n }\n }\n return ret;\n}\n\nfunction js_object_getOwnPropertyDescriptors(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n //getOwnPropertyDescriptors(obj)\n const obj = JS_ToObject(ctx, argv[0]);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const p = obj as JSObject;\n const props = JS_GetOwnPropertyNamesInternal(ctx, p, JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK);\n if (!props) return JS_EXCEPTION;\n const r = JS_NewObject(ctx);\n if (JS_IsException(r)) return JS_EXCEPTION;\n for (const e of props) {\n const atomValue = JS_AtomToValue(ctx, e.atom);\n if (JS_IsException(atomValue)) return JS_EXCEPTION;\n const desc = js_object_getOwnPropertyDescriptor(ctx, undefined, [obj, atomValue], 0);\n if (JS_IsException(desc)) return JS_EXCEPTION;\n if (!JS_IsUndefined(desc)) {\n if (JS_DefinePropertyValue(ctx, r, e.atom, desc, JS_PROP_C_W_E | JS_PROP_THROW) < 0) return JS_EXCEPTION;\n }\n }\n return r;\n}\n\nexport function JS_GetOwnPropertyNames2(ctx: JSContext, obj1: JSValue, flags: number, kind: number): JSValue {\n const obj = JS_ToObject(ctx, obj1);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const p = obj as JSObject;\n const atoms = JS_GetOwnPropertyNamesInternal(ctx, p, flags & ~JS_GPN_ENUM_ONLY);\n if (!atoms) return JS_EXCEPTION;\n const values: JSValue[] = [];\n for (const e of atoms) {\n const atom = e.atom;\n if (flags & JS_GPN_ENUM_ONLY) {\n /* Check if property is still enumerable */\n const desc = new_desc();\n const res = JS_GetOwnPropertyInternal(ctx, desc, p, atom);\n if (res < 0) return JS_EXCEPTION;\n if (!res) continue;\n if (!(desc.flags & JS_PROP_ENUMERABLE)) continue;\n }\n let val: JSValue;\n switch (kind) {\n default:\n case ObjIterKind.KEY:\n val = JS_AtomToValue(ctx, atom);\n if (JS_IsException(val)) return JS_EXCEPTION;\n break;\n case ObjIterKind.VALUE:\n val = JS_GetProperty(ctx, obj, atom);\n if (JS_IsException(val)) return JS_EXCEPTION;\n break;\n case ObjIterKind.KEY_AND_VALUE: {\n const key = JS_AtomToValue(ctx, atom);\n if (JS_IsException(key)) return JS_EXCEPTION;\n const value = JS_GetProperty(ctx, obj, atom);\n if (JS_IsException(value)) return JS_EXCEPTION;\n val = js_create_array(ctx, [key, value]);\n break;\n }\n }\n values.push(val);\n }\n return js_create_array(ctx, values);\n}\n\nfunction js_object_keys(ctx: JSContext, this_val: JSValue, argv: JSValue[], kind: number): JSValue {\n return JS_GetOwnPropertyNames2(ctx, argv[0], JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK, kind);\n}\n\nexport function js_object_isExtensible(ctx: JSContext, this_val: JSValue, argv: JSValue[], reflect: number): JSValue {\n const obj = argv[0];\n if (!JS_IsObject(obj)) {\n if (reflect) return JS_ThrowTypeErrorNotAnObject(ctx);\n return false;\n }\n const ret = JS_IsExtensible(ctx, obj);\n if (ret < 0) return JS_EXCEPTION;\n return ret !== 0;\n}\n\nexport function js_object_preventExtensions(ctx: JSContext, this_val: JSValue, argv: JSValue[], reflect: number): JSValue {\n const obj = argv[0];\n if (!JS_IsObject(obj)) {\n if (reflect) return JS_ThrowTypeErrorNotAnObject(ctx);\n return obj;\n }\n const ret = JS_PreventExtensions(ctx, obj);\n if (ret < 0) return JS_EXCEPTION;\n if (reflect) return ret !== 0;\n if (!ret) return JS_ThrowTypeError(ctx, 'proxy preventExtensions handler returned false');\n return obj;\n}\n\nfunction js_object_valueOf(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return JS_ToObject(ctx, this_val);\n}\n\nexport function js_object_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n let tag: JSValue;\n if (JS_IsNull(this_val)) {\n tag = 'Null';\n } else if (JS_IsUndefined(this_val)) {\n tag = 'Undefined';\n } else {\n const obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return obj;\n const is_array = JS_IsArray(ctx, obj);\n if (is_array < 0) return JS_EXCEPTION;\n let atom: JSAtom;\n if (is_array) {\n atom = JS_ATOM_Array;\n } else if (JS_IsFunction(ctx, obj)) {\n atom = JS_ATOM_Function;\n } else {\n const p = obj as JSObject;\n switch (Q.JS_GetClassID(p)) {\n case JSClassID.STRING:\n case JSClassID.ARGUMENTS:\n case JSClassID.MAPPED_ARGUMENTS:\n case JSClassID.ERROR:\n case JSClassID.BOOLEAN:\n case JSClassID.NUMBER:\n case JSClassID.DATE:\n case JSClassID.REGEXP:\n atom = ctx.rt.class_array[Q.JS_GetClassID(p)]!.class_name;\n break;\n default:\n atom = JS_ATOM_Object;\n break;\n }\n }\n tag = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_toStringTag);\n if (JS_IsException(tag)) return JS_EXCEPTION;\n if (typeof tag !== 'string') tag = JS_AtomToString(ctx, atom);\n }\n return '[object ' + (tag as string) + ']';\n}\n\nfunction js_object_toLocaleString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return JS_Invoke(ctx, this_val, JS_ATOM_toString, []);\n}\n\nfunction js_object_fromEntries(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n /* RequireObjectCoercible() not necessary because it is tested in\n JS_GetIterator() by JS_GetProperty() */\n const iterable = argv[0];\n const obj = JS_NewObject(ctx);\n if (JS_IsException(obj)) return obj;\n const iter = JS_GetIterator(ctx, iterable, 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)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\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 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)) { JS_IteratorClose(ctx, iter, true); return JS_EXCEPTION; }\n const value = JS_GetPropertyUint32(ctx, item, 1);\n if (JS_IsException(value)) { JS_IteratorClose(ctx, iter, true); return JS_EXCEPTION; }\n if (JS_DefinePropertyValueValue(ctx, obj, key, value, JS_PROP_C_W_E | JS_PROP_THROW) < 0) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n }\n return obj;\n}\n\n/* __getClass is a debugging helper exposed by QuickJS */\nfunction js_object___getClass(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n let atom: JSAtom;\n const v = argv[0];\n if (Q.JS_IsObject(v)) {\n let class_id = Q.JS_GetClassID(v);\n if (class_id === JSClassID.PROXY && JS_IsFunction(ctx, v)) class_id = JSClassID.BYTECODE_FUNCTION;\n atom = ctx.rt.class_array[class_id]!.class_name;\n } else {\n atom = JS_ATOM_empty_string;\n }\n return JS_AtomToString(ctx, atom);\n}\n\n/* append 'v' at the end of the array 'arr' (js_array_push() in C) */\nfunction array_append(ctx: JSContext, arr: JSValue, v: JSValue): number {\n const len = js_get_length64(ctx, arr);\n if (len < 0) return -1;\n return JS_DefinePropertyValueInt64(ctx, arr, len, v, JS_PROP_C_W_E | JS_PROP_THROW);\n}\n\n/* Object.groupBy (is_map = 0). Map.groupBy (is_map = 1) lives in mapset.ts */\nfunction js_object_groupBy(ctx: JSContext, this_val: JSValue, argv: JSValue[], is_map: number): 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 const iter = JS_GetIterator(ctx, argv[0], false);\n if (JS_IsException(iter)) return JS_EXCEPTION;\n const next = JS_GetProperty(ctx, iter, JS_ATOM_next);\n if (JS_IsException(next)) return JS_EXCEPTION;\n const groups = JS_NewObjectProto(ctx, null);\n if (JS_IsException(groups)) return JS_EXCEPTION;\n const pdone = { done: 0 };\n for (let idx = 0; ; idx++) {\n if (idx >= 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 const 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 const key_atom = JS_ValueToAtom(ctx, key);\n if (key_atom === JS_ATOM_NULL) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n let prop = JS_GetProperty(ctx, groups, key_atom);\n if (JS_IsException(prop)) return JS_EXCEPTION;\n if (JS_IsUndefined(prop)) {\n prop = JS_NewArray(ctx);\n if (JS_IsException(prop)) return JS_EXCEPTION;\n if (JS_DefinePropertyValue(ctx, groups, key_atom, prop, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n }\n if (array_append(ctx, prop, v) < 0) return JS_EXCEPTION;\n }\n return groups;\n}\n\nfunction js_object_get___proto__(ctx: JSContext, this_val: JSValue): JSValue {\n const val = JS_ToObject(ctx, this_val);\n if (JS_IsException(val)) return val;\n return JS_GetPrototype(ctx, val);\n}\n\nfunction js_object_set___proto__(ctx: JSContext, this_val: JSValue, proto: JSValue): JSValue {\n if (JS_IsUndefined(this_val) || JS_IsNull(this_val)) return JS_ThrowTypeErrorNotAnObject(ctx);\n if (!JS_IsObject(proto) && !JS_IsNull(proto)) return undefined;\n if (js_set_prototype_internal(ctx, this_val, proto, true) < 0) return JS_EXCEPTION;\n return undefined;\n}\n\n/* magic = 1 for __lookupSetter__ */\nfunction js_object___lookupGetter__(ctx: JSContext, this_val: JSValue, argv: JSValue[], setter: number): JSValue {\n let obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const prop = JS_ValueToAtom(ctx, argv[0]);\n if (prop === JS_ATOM_NULL) return JS_EXCEPTION;\n for (;;) {\n const desc = new_desc();\n const has_prop = JS_GetOwnPropertyInternal(ctx, desc, obj as JSObject, prop);\n if (has_prop < 0) return JS_EXCEPTION;\n if (has_prop) {\n if (desc.flags & JS_PROP_GETSET) return setter ? desc.setter : desc.getter;\n return undefined;\n }\n obj = JS_GetPrototype(ctx, obj);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n if (JS_IsNull(obj)) return undefined;\n }\n}\n\nconst js_object_funcs = [\n JS_CFUNC_DEF('create', 2, js_object_create),\n JS_CFUNC_MAGIC_DEF('getPrototypeOf', 1, js_object_getPrototypeOf, 0),\n JS_NATIVE_DEF('setPrototypeOf', 2, Object.setPrototypeOf),\n JS_CFUNC_MAGIC_DEF('defineProperty', 3, js_object_defineProperty, 0),\n JS_CFUNC_DEF('defineProperties', 2, js_object_defineProperties),\n JS_NATIVE_DEF('getOwnPropertyNames', 1, Object.getOwnPropertyNames, fix_array),\n JS_NATIVE_DEF('getOwnPropertySymbols', 1, Object.getOwnPropertySymbols, fix_array),\n JS_CFUNC_MAGIC_DEF('groupBy', 2, js_object_groupBy, 0),\n JS_NATIVE_DEF('keys', 1, Object.keys, fix_array),\n JS_NATIVE_DEF('values', 1, Object.values, fix_array),\n JS_NATIVE_DEF('entries', 1, Object.entries, fix_entries),\n JS_NATIVE_DEF('isExtensible', 1, Object.isExtensible),\n JS_NATIVE_DEF('preventExtensions', 1, Object.preventExtensions),\n JS_CFUNC_MAGIC_DEF('getOwnPropertyDescriptor', 2, js_object_getOwnPropertyDescriptor, 0),\n JS_CFUNC_DEF('getOwnPropertyDescriptors', 1, js_object_getOwnPropertyDescriptors),\n JS_NATIVE_DEF('is', 2, Object.is),\n JS_NATIVE_DEF('assign', 2, Object.assign, fix_any),\n JS_NATIVE_DEF('seal', 1, Object.seal),\n JS_NATIVE_DEF('freeze', 1, Object.freeze),\n JS_NATIVE_DEF('isSealed', 1, Object.isSealed),\n JS_NATIVE_DEF('isFrozen', 1, Object.isFrozen),\n JS_CFUNC_DEF('__getClass', 1, js_object___getClass),\n JS_CFUNC_DEF('fromEntries', 1, js_object_fromEntries),\n JS_NATIVE_DEF('hasOwn', 2, Object.hasOwn),\n];\n\nconst js_object_proto_funcs = [\n JS_CFUNC_DEF('toString', 0, js_object_toString),\n JS_CFUNC_DEF('toLocaleString', 0, js_object_toLocaleString),\n JS_CFUNC_DEF('valueOf', 0, js_object_valueOf),\n JS_NATIVE_DEF('hasOwnProperty', 1, Object.prototype.hasOwnProperty),\n JS_NATIVE_DEF('isPrototypeOf', 1, Object.prototype.isPrototypeOf),\n JS_NATIVE_DEF('propertyIsEnumerable', 1, Object.prototype.propertyIsEnumerable),\n JS_CGETSET_DEF(JS_ATOM___proto__, js_object_get___proto__, js_object_set___proto__),\n JS_CFUNC_MAGIC_DEF('__defineGetter__', 2, js_object___defineGetter__, 0),\n JS_CFUNC_MAGIC_DEF('__defineSetter__', 2, js_object___defineGetter__, 1),\n JS_CFUNC_MAGIC_DEF('__lookupGetter__', 1, js_object___lookupGetter__, 0),\n JS_CFUNC_MAGIC_DEF('__lookupSetter__', 1, js_object___lookupGetter__, 1),\n];\n\nexport function JS_AddIntrinsicObject(ctx: JSContext): void {\n /* Object */\n const obj = JS_NewGlobalCConstructor(ctx, 'Object', js_object_constructor, 1, ctx.class_proto[JSClassID.OBJECT]);\n JS_SetPropertyFunctionList(ctx, obj, js_object_funcs);\n JS_SetPropertyFunctionList(ctx, ctx.class_proto[JSClassID.OBJECT], js_object_proto_funcs);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/builtins/object.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Object objects (port of the Object part of quickjs.c)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSAtom, JSPropertyDescriptor, JS_EXCEPTION, JS_IsException, JS_IsUndefined,\n JS_IsNull, JS_IsObject, JS_IsFunction, JS_IsArray, JS_NewObject, JS_NewObjectProto, JS_NewArray, js_create_array,\n JS_ToObject, JS_ValueToAtom, JS_ATOM_NULL, JS_AtomToValue, JS_AtomToString, JS_GetProperty, JS_GetPropertyUint32,\n JS_GetPropertyInt64, JS_GetPrototype, JS_SetPrototypeInternal, JS_IsExtensible, JS_PreventExtensions,\n JS_GetOwnPropertyInternal, JS_GetOwnPropertyNamesInternal, JS_DefineProperty, JS_DefinePropertyValue,\n JS_DefinePropertyValueValue, JS_DefinePropertyValueInt64, js_obj_to_desc, new_desc, js_create_from_ctor,\n js_get_length64, JS_CopyDataProperties, JS_GetIterator, JS_IteratorNext, JS_IteratorClose, JS_Call, JS_Invoke,\n js_same_value, JS_ThrowTypeError, JS_ThrowTypeErrorNotAnObject, JS_NewGlobalCConstructor,\n JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_NATIVE_DEF, JS_CFUNC_MAGIC_DEF, JS_CGETSET_DEF,\n JS_PROP_CONFIGURABLE, JS_PROP_WRITABLE, JS_PROP_ENUMERABLE, JS_PROP_C_W_E, JS_PROP_GETSET, JS_PROP_THROW,\n JS_PROP_HAS_CONFIGURABLE, JS_PROP_HAS_WRITABLE, JS_PROP_HAS_ENUMERABLE, JS_PROP_HAS_GET, JS_PROP_HAS_SET,\n JS_GPN_STRING_MASK, JS_GPN_SYMBOL_MASK, JS_GPN_ENUM_ONLY,\n JS_ATOM_Array, JS_ATOM_Function, JS_ATOM_Object, JS_ATOM_Symbol_toStringTag, JS_ATOM_toString, JS_ATOM_next,\n JS_ATOM_get, JS_ATOM_set, JS_ATOM_value, JS_ATOM_writable, JS_ATOM_enumerable, JS_ATOM_configurable,\n JS_ATOM_empty_string, JS_ATOM___proto__,\n} from '../quickjs.ts';\nimport { fix_any, fix_array, fix_entries } from './native.ts';\n\n/* same values as JSIteratorKind in builtins/index.ts (JS_ITERATOR_KIND_xxx in C) */\nconst enum ObjIterKind { KEY, VALUE, KEY_AND_VALUE }\n\nconst MAX_SAFE_INTEGER = 9007199254740991;\n\n/* check_function() in C */\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\n/* JS_GetActiveFunction() in C */\nfunction JS_GetActiveFunction(ctx: JSContext): JSValue {\n return ctx.rt.current_stack_frame ? ctx.rt.current_stack_frame.cur_func : undefined;\n}\n\nexport function JS_DefinePropertyDesc(ctx: JSContext, obj: JSValue, prop: JSAtom, desc: JSValue, flags: number): number {\n const d = new_desc();\n if (js_obj_to_desc(ctx, d, desc) < 0) return -1;\n return JS_DefineProperty(ctx, obj, prop, d.value, d.getter, d.setter, d.flags | flags);\n}\n\nexport function JS_ObjectDefineProperties(ctx: JSContext, obj: JSValue, properties: JSValue): number {\n if (!JS_IsObject(obj)) {\n JS_ThrowTypeErrorNotAnObject(ctx);\n return -1;\n }\n const props = JS_ToObject(ctx, properties);\n if (JS_IsException(props)) return -1;\n const p = props as JSObject;\n /* XXX: not done in the same order as the spec */\n const atoms = JS_GetOwnPropertyNamesInternal(ctx, p, JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK);\n if (!atoms) return -1;\n for (const e of atoms) {\n const desc = JS_GetProperty(ctx, props, e.atom);\n if (JS_IsException(desc)) return -1;\n if (JS_DefinePropertyDesc(ctx, obj, e.atom, desc, JS_PROP_THROW) < 0) return -1;\n }\n return 0;\n}\n\nfunction js_object_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue {\n if (!JS_IsUndefined(new_target) && new_target !== JS_GetActiveFunction(ctx)) {\n return js_create_from_ctor(ctx, new_target, JSClassID.OBJECT);\n }\n const v = argv[0];\n if (v === null || v === undefined) return JS_NewObject(ctx);\n return JS_ToObject(ctx, v);\n}\n\nfunction js_object_create(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const proto = argv[0];\n if (!JS_IsObject(proto) && !JS_IsNull(proto)) return JS_ThrowTypeError(ctx, 'not a prototype');\n const obj = JS_NewObjectProto(ctx, proto);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const props = argv[1];\n if (!JS_IsUndefined(props)) {\n if (JS_ObjectDefineProperties(ctx, obj, props)) return JS_EXCEPTION;\n }\n return obj;\n}\n\nexport function js_object_getPrototypeOf(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const val = argv[0];\n if (!JS_IsObject(val)) {\n /* ES6 feature non compatible with ES5.1: primitive types are accepted */\n if (magic || JS_IsNull(val) || JS_IsUndefined(val)) return JS_ThrowTypeErrorNotAnObject(ctx);\n }\n return JS_GetPrototype(ctx, val);\n}\n\n/* Wrapper around the core JS_SetPrototypeInternal reproducing the argument\n checks of the C version: a non object/null prototype is always a\n TypeError, a non object target is a TypeError unless throw_flag is set\n (then primitives are accepted), and a proxy trap returning false in\n throw mode is a TypeError. */\nexport function js_set_prototype_internal(ctx: JSContext, obj: JSValue, proto_val: JSValue, throw_flag: boolean): number {\n if (throw_flag) {\n if (JS_IsNull(obj) || JS_IsUndefined(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n } else {\n if (!JS_IsObject(obj)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n }\n if (!JS_IsObject(proto_val) && !JS_IsNull(proto_val)) { JS_ThrowTypeErrorNotAnObject(ctx); return -1; }\n const ret = JS_SetPrototypeInternal(ctx, obj, proto_val, throw_flag);\n if (ret === 0 && throw_flag) {\n /* only a proxy setPrototypeOf trap can return false here without\n having thrown already */\n JS_ThrowTypeError(ctx, 'proxy: bad prototype');\n return -1;\n }\n return ret;\n}\n\n/* ported rather than forwarded to the host: the guest Object.prototype is an ordinary host\n object, so the host would let its prototype change */\nfunction js_object_setPrototypeOf(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n if (js_set_prototype_internal(ctx, argv[0], argv[1], true) < 0) return JS_EXCEPTION;\n return argv[0];\n}\n\n/* magic = 1 if called as Reflect.defineProperty */\nexport function js_object_defineProperty(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const obj = argv[0];\n const prop = argv[1];\n const desc = argv[2];\n if (!JS_IsObject(obj)) return JS_ThrowTypeErrorNotAnObject(ctx);\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let flags = 0;\n if (!magic) flags |= JS_PROP_THROW;\n const ret = JS_DefinePropertyDesc(ctx, obj, atom, desc, flags);\n if (ret < 0) return JS_EXCEPTION;\n if (magic) return ret !== 0;\n return obj;\n}\n\nfunction js_object_defineProperties(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // defineProperties(obj, properties)\n const obj = argv[0];\n if (JS_ObjectDefineProperties(ctx, obj, argv[1])) return JS_EXCEPTION;\n return obj;\n}\n\n/* magic = 1 if called as __defineSetter__ */\nfunction js_object___defineGetter__(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n const prop = argv[0];\n const value = argv[1];\n const obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n if (check_function(ctx, value)) return JS_EXCEPTION;\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let flags = JS_PROP_THROW | JS_PROP_HAS_ENUMERABLE | JS_PROP_ENUMERABLE | JS_PROP_HAS_CONFIGURABLE | JS_PROP_CONFIGURABLE;\n let get: JSValue, set: JSValue;\n if (magic) {\n get = undefined;\n set = value;\n flags |= JS_PROP_HAS_SET;\n } else {\n get = value;\n set = undefined;\n flags |= JS_PROP_HAS_GET;\n }\n const ret = JS_DefineProperty(ctx, obj, atom, undefined, get, set, flags);\n if (ret < 0) return JS_EXCEPTION;\n return undefined;\n}\n\nexport function js_object_getOwnPropertyDescriptor(ctx: JSContext, this_val: JSValue, argv: JSValue[], magic: number): JSValue {\n let obj: JSValue;\n if (magic) {\n /* Reflect.getOwnPropertyDescriptor case */\n if (!JS_IsObject(argv[0])) return JS_ThrowTypeErrorNotAnObject(ctx);\n obj = argv[0];\n } else {\n obj = JS_ToObject(ctx, argv[0]);\n if (JS_IsException(obj)) return obj;\n }\n const prop = argv[1];\n const atom = JS_ValueToAtom(ctx, prop);\n if (atom === JS_ATOM_NULL) return JS_EXCEPTION;\n let ret: JSValue = undefined;\n if (JS_IsObject(obj)) {\n const desc = new_desc();\n const res = JS_GetOwnPropertyInternal(ctx, desc, obj, atom);\n if (res < 0) return JS_EXCEPTION;\n if (res) {\n ret = JS_NewObject(ctx);\n if (JS_IsException(ret)) return JS_EXCEPTION;\n const flags = JS_PROP_C_W_E | JS_PROP_THROW;\n if (desc.flags & JS_PROP_GETSET) {\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_get, desc.getter, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_set, desc.setter, flags) < 0) return JS_EXCEPTION;\n } else {\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_value, desc.value, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_writable, (desc.flags & JS_PROP_WRITABLE) !== 0, flags) < 0) return JS_EXCEPTION;\n }\n if (JS_DefinePropertyValue(ctx, ret, JS_ATOM_enumerable, (desc.flags & JS_PROP_ENUMERABLE) !== 0, flags) < 0 ||\n JS_DefinePropertyValue(ctx, ret, JS_ATOM_configurable, (desc.flags & JS_PROP_CONFIGURABLE) !== 0, flags) < 0) return JS_EXCEPTION;\n }\n }\n return ret;\n}\n\nfunction js_object_getOwnPropertyDescriptors(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n //getOwnPropertyDescriptors(obj)\n const obj = JS_ToObject(ctx, argv[0]);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const p = obj as JSObject;\n const props = JS_GetOwnPropertyNamesInternal(ctx, p, JS_GPN_STRING_MASK | JS_GPN_SYMBOL_MASK);\n if (!props) return JS_EXCEPTION;\n const r = JS_NewObject(ctx);\n if (JS_IsException(r)) return JS_EXCEPTION;\n for (const e of props) {\n const atomValue = JS_AtomToValue(ctx, e.atom);\n if (JS_IsException(atomValue)) return JS_EXCEPTION;\n const desc = js_object_getOwnPropertyDescriptor(ctx, undefined, [obj, atomValue], 0);\n if (JS_IsException(desc)) return JS_EXCEPTION;\n if (!JS_IsUndefined(desc)) {\n if (JS_DefinePropertyValue(ctx, r, e.atom, desc, JS_PROP_C_W_E | JS_PROP_THROW) < 0) return JS_EXCEPTION;\n }\n }\n return r;\n}\n\nexport function JS_GetOwnPropertyNames2(ctx: JSContext, obj1: JSValue, flags: number, kind: number): JSValue {\n const obj = JS_ToObject(ctx, obj1);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const p = obj as JSObject;\n const atoms = JS_GetOwnPropertyNamesInternal(ctx, p, flags & ~JS_GPN_ENUM_ONLY);\n if (!atoms) return JS_EXCEPTION;\n const values: JSValue[] = [];\n for (const e of atoms) {\n const atom = e.atom;\n if (flags & JS_GPN_ENUM_ONLY) {\n /* Check if property is still enumerable */\n const desc = new_desc();\n const res = JS_GetOwnPropertyInternal(ctx, desc, p, atom);\n if (res < 0) return JS_EXCEPTION;\n if (!res) continue;\n if (!(desc.flags & JS_PROP_ENUMERABLE)) continue;\n }\n let val: JSValue;\n switch (kind) {\n default:\n case ObjIterKind.KEY:\n val = JS_AtomToValue(ctx, atom);\n if (JS_IsException(val)) return JS_EXCEPTION;\n break;\n case ObjIterKind.VALUE:\n val = JS_GetProperty(ctx, obj, atom);\n if (JS_IsException(val)) return JS_EXCEPTION;\n break;\n case ObjIterKind.KEY_AND_VALUE: {\n const key = JS_AtomToValue(ctx, atom);\n if (JS_IsException(key)) return JS_EXCEPTION;\n const value = JS_GetProperty(ctx, obj, atom);\n if (JS_IsException(value)) return JS_EXCEPTION;\n val = js_create_array(ctx, [key, value]);\n break;\n }\n }\n values.push(val);\n }\n return js_create_array(ctx, values);\n}\n\nfunction js_object_keys(ctx: JSContext, this_val: JSValue, argv: JSValue[], kind: number): JSValue {\n return JS_GetOwnPropertyNames2(ctx, argv[0], JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK, kind);\n}\n\nexport function js_object_isExtensible(ctx: JSContext, this_val: JSValue, argv: JSValue[], reflect: number): JSValue {\n const obj = argv[0];\n if (!JS_IsObject(obj)) {\n if (reflect) return JS_ThrowTypeErrorNotAnObject(ctx);\n return false;\n }\n const ret = JS_IsExtensible(ctx, obj);\n if (ret < 0) return JS_EXCEPTION;\n return ret !== 0;\n}\n\nexport function js_object_preventExtensions(ctx: JSContext, this_val: JSValue, argv: JSValue[], reflect: number): JSValue {\n const obj = argv[0];\n if (!JS_IsObject(obj)) {\n if (reflect) return JS_ThrowTypeErrorNotAnObject(ctx);\n return obj;\n }\n const ret = JS_PreventExtensions(ctx, obj);\n if (ret < 0) return JS_EXCEPTION;\n if (reflect) return ret !== 0;\n if (!ret) return JS_ThrowTypeError(ctx, 'proxy preventExtensions handler returned false');\n return obj;\n}\n\nfunction js_object_valueOf(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return JS_ToObject(ctx, this_val);\n}\n\nexport function js_object_toString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n let tag: JSValue;\n if (JS_IsNull(this_val)) {\n tag = 'Null';\n } else if (JS_IsUndefined(this_val)) {\n tag = 'Undefined';\n } else {\n const obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return obj;\n const is_array = JS_IsArray(ctx, obj);\n if (is_array < 0) return JS_EXCEPTION;\n let atom: JSAtom;\n if (is_array) {\n atom = JS_ATOM_Array;\n } else if (JS_IsFunction(ctx, obj)) {\n atom = JS_ATOM_Function;\n } else {\n const p = obj as JSObject;\n switch (Q.JS_GetClassID(p)) {\n case JSClassID.STRING:\n case JSClassID.ARGUMENTS:\n case JSClassID.MAPPED_ARGUMENTS:\n case JSClassID.ERROR:\n case JSClassID.BOOLEAN:\n case JSClassID.NUMBER:\n case JSClassID.DATE:\n case JSClassID.REGEXP:\n atom = ctx.rt.class_array[Q.JS_GetClassID(p)]!.class_name;\n break;\n default:\n atom = JS_ATOM_Object;\n break;\n }\n }\n tag = JS_GetProperty(ctx, obj, JS_ATOM_Symbol_toStringTag);\n if (JS_IsException(tag)) return JS_EXCEPTION;\n if (typeof tag !== 'string') tag = JS_AtomToString(ctx, atom);\n }\n return '[object ' + (tag as string) + ']';\n}\n\nfunction js_object_toLocaleString(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return JS_Invoke(ctx, this_val, JS_ATOM_toString, []);\n}\n\nfunction js_object_fromEntries(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n /* RequireObjectCoercible() not necessary because it is tested in\n JS_GetIterator() by JS_GetProperty() */\n const iterable = argv[0];\n const obj = JS_NewObject(ctx);\n if (JS_IsException(obj)) return obj;\n const iter = JS_GetIterator(ctx, iterable, 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)) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\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 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)) { JS_IteratorClose(ctx, iter, true); return JS_EXCEPTION; }\n const value = JS_GetPropertyUint32(ctx, item, 1);\n if (JS_IsException(value)) { JS_IteratorClose(ctx, iter, true); return JS_EXCEPTION; }\n if (JS_DefinePropertyValueValue(ctx, obj, key, value, JS_PROP_C_W_E | JS_PROP_THROW) < 0) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n }\n return obj;\n}\n\n/* __getClass is a debugging helper exposed by QuickJS */\nfunction js_object___getClass(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n let atom: JSAtom;\n const v = argv[0];\n if (Q.JS_IsObject(v)) {\n let class_id = Q.JS_GetClassID(v);\n if (class_id === JSClassID.PROXY && JS_IsFunction(ctx, v)) class_id = JSClassID.BYTECODE_FUNCTION;\n atom = ctx.rt.class_array[class_id]!.class_name;\n } else {\n atom = JS_ATOM_empty_string;\n }\n return JS_AtomToString(ctx, atom);\n}\n\n/* append 'v' at the end of the array 'arr' (js_array_push() in C) */\nfunction array_append(ctx: JSContext, arr: JSValue, v: JSValue): number {\n const len = js_get_length64(ctx, arr);\n if (len < 0) return -1;\n return JS_DefinePropertyValueInt64(ctx, arr, len, v, JS_PROP_C_W_E | JS_PROP_THROW);\n}\n\n/* Object.groupBy (is_map = 0). Map.groupBy (is_map = 1) lives in mapset.ts */\nfunction js_object_groupBy(ctx: JSContext, this_val: JSValue, argv: JSValue[], is_map: number): 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 const iter = JS_GetIterator(ctx, argv[0], false);\n if (JS_IsException(iter)) return JS_EXCEPTION;\n const next = JS_GetProperty(ctx, iter, JS_ATOM_next);\n if (JS_IsException(next)) return JS_EXCEPTION;\n const groups = JS_NewObjectProto(ctx, null);\n if (JS_IsException(groups)) return JS_EXCEPTION;\n const pdone = { done: 0 };\n for (let idx = 0; ; idx++) {\n if (idx >= 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 const 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 const key_atom = JS_ValueToAtom(ctx, key);\n if (key_atom === JS_ATOM_NULL) {\n JS_IteratorClose(ctx, iter, true);\n return JS_EXCEPTION;\n }\n let prop = JS_GetProperty(ctx, groups, key_atom);\n if (JS_IsException(prop)) return JS_EXCEPTION;\n if (JS_IsUndefined(prop)) {\n prop = JS_NewArray(ctx);\n if (JS_IsException(prop)) return JS_EXCEPTION;\n if (JS_DefinePropertyValue(ctx, groups, key_atom, prop, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n }\n if (array_append(ctx, prop, v) < 0) return JS_EXCEPTION;\n }\n return groups;\n}\n\nfunction js_object_get___proto__(ctx: JSContext, this_val: JSValue): JSValue {\n const val = JS_ToObject(ctx, this_val);\n if (JS_IsException(val)) return val;\n return JS_GetPrototype(ctx, val);\n}\n\nfunction js_object_set___proto__(ctx: JSContext, this_val: JSValue, proto: JSValue): JSValue {\n if (JS_IsUndefined(this_val) || JS_IsNull(this_val)) return JS_ThrowTypeErrorNotAnObject(ctx);\n if (!JS_IsObject(proto) && !JS_IsNull(proto)) return undefined;\n if (js_set_prototype_internal(ctx, this_val, proto, true) < 0) return JS_EXCEPTION;\n return undefined;\n}\n\n/* magic = 1 for __lookupSetter__ */\nfunction js_object___lookupGetter__(ctx: JSContext, this_val: JSValue, argv: JSValue[], setter: number): JSValue {\n let obj = JS_ToObject(ctx, this_val);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n const prop = JS_ValueToAtom(ctx, argv[0]);\n if (prop === JS_ATOM_NULL) return JS_EXCEPTION;\n for (;;) {\n const desc = new_desc();\n const has_prop = JS_GetOwnPropertyInternal(ctx, desc, obj as JSObject, prop);\n if (has_prop < 0) return JS_EXCEPTION;\n if (has_prop) {\n if (desc.flags & JS_PROP_GETSET) return setter ? desc.setter : desc.getter;\n return undefined;\n }\n obj = JS_GetPrototype(ctx, obj);\n if (JS_IsException(obj)) return JS_EXCEPTION;\n if (JS_IsNull(obj)) return undefined;\n }\n}\n\nconst js_object_funcs = [\n JS_CFUNC_DEF('create', 2, js_object_create),\n JS_CFUNC_MAGIC_DEF('getPrototypeOf', 1, js_object_getPrototypeOf, 0),\n JS_CFUNC_DEF('setPrototypeOf', 2, js_object_setPrototypeOf),\n JS_CFUNC_MAGIC_DEF('defineProperty', 3, js_object_defineProperty, 0),\n JS_CFUNC_DEF('defineProperties', 2, js_object_defineProperties),\n JS_NATIVE_DEF('getOwnPropertyNames', 1, Object.getOwnPropertyNames, fix_array),\n JS_NATIVE_DEF('getOwnPropertySymbols', 1, Object.getOwnPropertySymbols, fix_array),\n JS_CFUNC_MAGIC_DEF('groupBy', 2, js_object_groupBy, 0),\n JS_NATIVE_DEF('keys', 1, Object.keys, fix_array),\n JS_NATIVE_DEF('values', 1, Object.values, fix_array),\n JS_NATIVE_DEF('entries', 1, Object.entries, fix_entries),\n JS_NATIVE_DEF('isExtensible', 1, Object.isExtensible),\n JS_NATIVE_DEF('preventExtensions', 1, Object.preventExtensions),\n JS_CFUNC_MAGIC_DEF('getOwnPropertyDescriptor', 2, js_object_getOwnPropertyDescriptor, 0),\n JS_CFUNC_DEF('getOwnPropertyDescriptors', 1, js_object_getOwnPropertyDescriptors),\n JS_NATIVE_DEF('is', 2, Object.is),\n JS_NATIVE_DEF('assign', 2, Object.assign, fix_any),\n JS_NATIVE_DEF('seal', 1, Object.seal),\n JS_NATIVE_DEF('freeze', 1, Object.freeze),\n JS_NATIVE_DEF('isSealed', 1, Object.isSealed),\n JS_NATIVE_DEF('isFrozen', 1, Object.isFrozen),\n JS_CFUNC_DEF('__getClass', 1, js_object___getClass),\n JS_CFUNC_DEF('fromEntries', 1, js_object_fromEntries),\n JS_NATIVE_DEF('hasOwn', 2, Object.hasOwn),\n];\n\nconst js_object_proto_funcs = [\n JS_CFUNC_DEF('toString', 0, js_object_toString),\n JS_CFUNC_DEF('toLocaleString', 0, js_object_toLocaleString),\n JS_CFUNC_DEF('valueOf', 0, js_object_valueOf),\n JS_NATIVE_DEF('hasOwnProperty', 1, Object.prototype.hasOwnProperty),\n JS_NATIVE_DEF('isPrototypeOf', 1, Object.prototype.isPrototypeOf),\n JS_NATIVE_DEF('propertyIsEnumerable', 1, Object.prototype.propertyIsEnumerable),\n JS_CGETSET_DEF(JS_ATOM___proto__, js_object_get___proto__, js_object_set___proto__),\n JS_CFUNC_MAGIC_DEF('__defineGetter__', 2, js_object___defineGetter__, 0),\n JS_CFUNC_MAGIC_DEF('__defineSetter__', 2, js_object___defineGetter__, 1),\n JS_CFUNC_MAGIC_DEF('__lookupGetter__', 1, js_object___lookupGetter__, 0),\n JS_CFUNC_MAGIC_DEF('__lookupSetter__', 1, js_object___lookupGetter__, 1),\n];\n\nexport function JS_AddIntrinsicObject(ctx: JSContext): void {\n /* Object */\n const obj = JS_NewGlobalCConstructor(ctx, 'Object', js_object_constructor, 1, ctx.class_proto[JSClassID.OBJECT]);\n JS_SetPropertyFunctionList(ctx, obj, js_object_funcs);\n JS_SetPropertyFunctionList(ctx, ctx.class_proto[JSClassID.OBJECT], js_object_proto_funcs);\n}\n"]}
|