jseption 0.0.0-stage → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +191 -2
  3. package/dist/atoms.d.ts +255 -0
  4. package/dist/atoms.js +445 -0
  5. package/dist/atoms.js.map +1 -0
  6. package/dist/builtins/array.d.ts +3 -0
  7. package/dist/builtins/array.js +116 -0
  8. package/dist/builtins/array.js.map +1 -0
  9. package/dist/builtins/bigint.d.ts +3 -0
  10. package/dist/builtins/bigint.js +122 -0
  11. package/dist/builtins/bigint.js.map +1 -0
  12. package/dist/builtins/boolean.d.ts +2 -0
  13. package/dist/builtins/boolean.js +26 -0
  14. package/dist/builtins/boolean.js.map +1 -0
  15. package/dist/builtins/date.d.ts +3 -0
  16. package/dist/builtins/date.js +1046 -0
  17. package/dist/builtins/date.js.map +1 -0
  18. package/dist/builtins/error.d.ts +2 -0
  19. package/dist/builtins/error.js +154 -0
  20. package/dist/builtins/error.js.map +1 -0
  21. package/dist/builtins/function.d.ts +5 -0
  22. package/dist/builtins/function.js +164 -0
  23. package/dist/builtins/function.js.map +1 -0
  24. package/dist/builtins/global.d.ts +2 -0
  25. package/dist/builtins/global.js +29 -0
  26. package/dist/builtins/global.js.map +1 -0
  27. package/dist/builtins/index.d.ts +3 -0
  28. package/dist/builtins/index.js +139 -0
  29. package/dist/builtins/index.js.map +1 -0
  30. package/dist/builtins/json.d.ts +6 -0
  31. package/dist/builtins/json.js +984 -0
  32. package/dist/builtins/json.js.map +1 -0
  33. package/dist/builtins/mapset.d.ts +4 -0
  34. package/dist/builtins/mapset.js +234 -0
  35. package/dist/builtins/mapset.js.map +1 -0
  36. package/dist/builtins/math.d.ts +2 -0
  37. package/dist/builtins/math.js +62 -0
  38. package/dist/builtins/math.js.map +1 -0
  39. package/dist/builtins/native.d.ts +22 -0
  40. package/dist/builtins/native.js +250 -0
  41. package/dist/builtins/native.js.map +1 -0
  42. package/dist/builtins/number.d.ts +4 -0
  43. package/dist/builtins/number.js +76 -0
  44. package/dist/builtins/number.js.map +1 -0
  45. package/dist/builtins/object.d.ts +12 -0
  46. package/dist/builtins/object.js +575 -0
  47. package/dist/builtins/object.js.map +1 -0
  48. package/dist/builtins/promise.d.ts +13 -0
  49. package/dist/builtins/promise.js +582 -0
  50. package/dist/builtins/promise.js.map +1 -0
  51. package/dist/builtins/proxy.d.ts +3 -0
  52. package/dist/builtins/proxy.js +226 -0
  53. package/dist/builtins/proxy.js.map +1 -0
  54. package/dist/builtins/reflect.d.ts +2 -0
  55. package/dist/builtins/reflect.js +109 -0
  56. package/dist/builtins/reflect.js.map +1 -0
  57. package/dist/builtins/regexp.d.ts +2 -0
  58. package/dist/builtins/regexp.js +203 -0
  59. package/dist/builtins/regexp.js.map +1 -0
  60. package/dist/builtins/string.d.ts +4 -0
  61. package/dist/builtins/string.js +135 -0
  62. package/dist/builtins/string.js.map +1 -0
  63. package/dist/builtins/symbol.d.ts +3 -0
  64. package/dist/builtins/symbol.js +98 -0
  65. package/dist/builtins/symbol.js.map +1 -0
  66. package/dist/builtins/typedarray.d.ts +15 -0
  67. package/dist/builtins/typedarray.js +1838 -0
  68. package/dist/builtins/typedarray.js.map +1 -0
  69. package/dist/builtins/weakref.d.ts +18 -0
  70. package/dist/builtins/weakref.js +130 -0
  71. package/dist/builtins/weakref.js.map +1 -0
  72. package/dist/dump.d.ts +2 -0
  73. package/dist/dump.js +124 -0
  74. package/dist/dump.js.map +1 -0
  75. package/dist/embed.d.ts +18 -0
  76. package/dist/embed.js +286 -0
  77. package/dist/embed.js.map +1 -0
  78. package/dist/interpreter.d.ts +81 -0
  79. package/dist/interpreter.js +3768 -0
  80. package/dist/interpreter.js.map +1 -0
  81. package/dist/jit.d.ts +59 -0
  82. package/dist/jit.js +3440 -0
  83. package/dist/jit.js.map +1 -0
  84. package/dist/jit_hook.d.ts +21 -0
  85. package/dist/jit_hook.js +4 -0
  86. package/dist/jit_hook.js.map +1 -0
  87. package/dist/jit_runtime.d.ts +104 -0
  88. package/dist/jit_runtime.js +721 -0
  89. package/dist/jit_runtime.js.map +1 -0
  90. package/dist/jit_stack.d.ts +24 -0
  91. package/dist/jit_stack.js +227 -0
  92. package/dist/jit_stack.js.map +1 -0
  93. package/dist/jseption.d.ts +15 -0
  94. package/dist/jseption.js +61 -0
  95. package/dist/jseption.js.map +1 -0
  96. package/dist/opcodes.d.ts +347 -0
  97. package/dist/opcodes.js +322 -0
  98. package/dist/opcodes.js.map +1 -0
  99. package/dist/parser.d.ts +283 -0
  100. package/dist/parser.js +9752 -0
  101. package/dist/parser.js.map +1 -0
  102. package/dist/qjs.d.ts +2 -0
  103. package/dist/qjs.js +122 -0
  104. package/dist/qjs.js.map +1 -0
  105. package/dist/quickjs.d.ts +460 -0
  106. package/dist/quickjs.js +3408 -0
  107. package/dist/quickjs.js.map +1 -0
  108. package/dist/std.d.ts +4 -0
  109. package/dist/std.js +273 -0
  110. package/dist/std.js.map +1 -0
  111. package/dist/values.d.ts +447 -0
  112. package/dist/values.js +461 -0
  113. package/dist/values.js.map +1 -0
  114. package/package.json +59 -4
package/dist/values.js ADDED
@@ -0,0 +1,461 @@
1
+ export class JSSpecial {
2
+ tag;
3
+ v;
4
+ constructor(tag, v) {
5
+ this.tag = tag;
6
+ this.v = v;
7
+ }
8
+ }
9
+ export const JS_UNINITIALIZED = new JSSpecial(0 /* JSTag.UNINITIALIZED */, 0);
10
+ export const JS_EXCEPTION = new JSSpecial(6 /* JSTag.EXCEPTION */, 0);
11
+ export const JS_UNDEFINED = undefined;
12
+ export const JS_NULL = null;
13
+ export const JS_TRUE = true;
14
+ export const JS_FALSE = false;
15
+ /* catch offsets are stored on the stack; cache small ones */
16
+ const catchOffsetCache = [];
17
+ export function JS_NewCatchOffset(v) {
18
+ let r = catchOffsetCache[v];
19
+ if (r === undefined) {
20
+ r = new JSSpecial(5 /* JSTag.CATCH_OFFSET */, v);
21
+ if (v < 1024)
22
+ catchOffsetCache[v] = r;
23
+ }
24
+ return r;
25
+ }
26
+ export function JS_VALUE_GET_TAG(v) {
27
+ switch (typeof v) {
28
+ case 'undefined': return 4 /* JSTag.UNDEFINED */;
29
+ case 'boolean': return 2 /* JSTag.BOOL */;
30
+ case 'number': return Number.isInteger(v) && v >= -2147483648 && v <= 2147483647 && !(v === 0 && 1 / v < 0) ? 1 /* JSTag.INT */ : 7 /* JSTag.FLOAT64 */;
31
+ case 'string': return 9 /* JSTag.STRING */;
32
+ case 'bigint': return 8 /* JSTag.BIG_INT */;
33
+ case 'symbol': return 10 /* JSTag.SYMBOL */;
34
+ case 'function': return 11 /* JSTag.OBJECT */;
35
+ case 'object':
36
+ if (v === null)
37
+ return 3 /* JSTag.NULL */;
38
+ if (v instanceof JSSpecial)
39
+ return v.tag;
40
+ return 11 /* JSTag.OBJECT */;
41
+ }
42
+ return 4 /* JSTag.UNDEFINED */;
43
+ }
44
+ export function JS_IsException(v) { return v === JS_EXCEPTION; }
45
+ export function JS_IsUninitialized(v) { return v === JS_UNINITIALIZED; }
46
+ export function JS_IsUndefined(v) { return v === undefined; }
47
+ export function JS_IsNull(v) { return v === null; }
48
+ /* true for guest objects (including functions); the internal sentinels are excluded */
49
+ export function JS_IsObject(v) {
50
+ const t = typeof v;
51
+ if (t === 'object')
52
+ return v !== null && !(v instanceof JSSpecial);
53
+ return t === 'function';
54
+ }
55
+ export function JS_IsString(v) { return typeof v === 'string'; }
56
+ export function JS_IsSymbol(v) { return typeof v === 'symbol'; }
57
+ export function JS_IsNumber(v) { return typeof v === 'number'; }
58
+ export function JS_IsBigInt(v) { return typeof v === 'bigint'; }
59
+ export function JS_IsBool(v) { return typeof v === 'boolean'; }
60
+ export function JS_IsCatchOffset(v) {
61
+ return v instanceof JSSpecial && v.tag === 5 /* JSTag.CATCH_OFFSET */;
62
+ }
63
+ /* property flags */
64
+ export const JS_PROP_CONFIGURABLE = 1 << 0;
65
+ export const JS_PROP_WRITABLE = 1 << 1;
66
+ export const JS_PROP_ENUMERABLE = 1 << 2;
67
+ export const JS_PROP_C_W_E = JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE | JS_PROP_ENUMERABLE;
68
+ export const JS_PROP_LENGTH = 1 << 3; /* used internally in Arrays */
69
+ export const JS_PROP_TMASK = 3 << 4;
70
+ export const JS_PROP_NORMAL = 0 << 4;
71
+ export const JS_PROP_GETSET = 1 << 4;
72
+ export const JS_PROP_VARREF = 2 << 4; /* used internally */
73
+ export const JS_PROP_AUTOINIT = 3 << 4; /* used internally */
74
+ /* flags for JS_DefineProperty */
75
+ export const JS_PROP_HAS_SHIFT = 8;
76
+ export const JS_PROP_HAS_CONFIGURABLE = 1 << 8;
77
+ export const JS_PROP_HAS_WRITABLE = 1 << 9;
78
+ export const JS_PROP_HAS_ENUMERABLE = 1 << 10;
79
+ export const JS_PROP_HAS_GET = 1 << 11;
80
+ export const JS_PROP_HAS_SET = 1 << 12;
81
+ export const JS_PROP_HAS_VALUE = 1 << 13;
82
+ /* throw an exception if false would be returned (JS_DefineProperty/JS_SetProperty) */
83
+ export const JS_PROP_THROW = 1 << 14;
84
+ /* throw an exception if false would be returned in strict mode */
85
+ export const JS_PROP_THROW_STRICT = 1 << 15;
86
+ export const JS_PROP_NO_ADD = 1 << 16; /* internal use */
87
+ export const JS_PROP_NO_EXOTIC = 1 << 17; /* internal use */
88
+ export const JS_PROP_DEFINE_PROPERTY = 1 << 18; /* internal use */
89
+ export const JS_PROP_REFLECT_DEFINE_PROPERTY = 1 << 19; /* internal use */
90
+ /* JS_GetOwnPropertyNames flags */
91
+ export const JS_GPN_STRING_MASK = 1 << 0;
92
+ export const JS_GPN_SYMBOL_MASK = 1 << 1;
93
+ export const JS_GPN_PRIVATE_MASK = 1 << 2;
94
+ export const JS_GPN_ENUM_ONLY = 1 << 4;
95
+ export const JS_GPN_SET_ENUM = 1 << 5;
96
+ /* JS_Eval flags */
97
+ export const JS_EVAL_TYPE_GLOBAL = 0 << 0;
98
+ export const JS_EVAL_TYPE_MODULE = 1 << 0;
99
+ export const JS_EVAL_TYPE_DIRECT = 2 << 0;
100
+ export const JS_EVAL_TYPE_INDIRECT = 3 << 0;
101
+ export const JS_EVAL_TYPE_MASK = 3 << 0;
102
+ export const JS_EVAL_FLAG_STRICT = 1 << 3;
103
+ export const JS_EVAL_FLAG_COMPILE_ONLY = 1 << 5;
104
+ export const JS_EVAL_FLAG_BACKTRACE_BARRIER = 1 << 6;
105
+ export const JS_EVAL_FLAG_ASYNC = 1 << 7;
106
+ /* JS_CallInternal flags */
107
+ export const JS_CALL_FLAG_CONSTRUCTOR = 1 << 0;
108
+ export const JS_CALL_FLAG_COPY_ARGV = 1 << 1;
109
+ export const JS_CALL_FLAG_GENERATOR = 1 << 2;
110
+ export const JS_MODE_STRICT = 1 << 0;
111
+ export const JS_MODE_ASYNC = 1 << 2; /* async function */
112
+ export const JS_MODE_BACKTRACE_BARRIER = 1 << 3;
113
+ export class JSVarDef {
114
+ var_name;
115
+ scope_level = 0;
116
+ scope_next = 0;
117
+ is_const = false;
118
+ is_lexical = false;
119
+ is_captured = false;
120
+ is_static_private = false;
121
+ var_kind = 0 /* JSVarKind.NORMAL */;
122
+ func_pool_idx = -1;
123
+ constructor(var_name) { this.var_name = var_name; }
124
+ }
125
+ export class JSClosureVar {
126
+ is_local = false;
127
+ is_arg = false;
128
+ is_const = false;
129
+ is_lexical = false;
130
+ var_kind = 0 /* JSVarKind.NORMAL */;
131
+ var_idx = 0;
132
+ var_name = 0;
133
+ }
134
+ export class JSFunctionBytecode {
135
+ js_mode = 0;
136
+ has_prototype = false;
137
+ has_simple_parameter_list = true;
138
+ is_derived_class_constructor = false;
139
+ need_home_object = false;
140
+ func_kind = 0 /* JSFunctionKind.NORMAL */;
141
+ new_target_allowed = false;
142
+ super_call_allowed = false;
143
+ super_allowed = false;
144
+ arguments_allowed = false;
145
+ has_debug = false;
146
+ is_direct_or_indirect_eval = false;
147
+ byte_code_buf = new Uint8Array(0);
148
+ byte_code_len = 0;
149
+ func_name = 0;
150
+ vardefs = []; /* arguments + local variables */
151
+ closure_var = [];
152
+ arg_count = 0;
153
+ var_count = 0;
154
+ defined_arg_count = 0;
155
+ stack_size = 0;
156
+ realm = null; /* JSContext */
157
+ cpool = [];
158
+ debug = { filename: 0, source: null, pc2line: null, source_len: 0 };
159
+ /* compiled tier (src/jit.ts) */
160
+ call_count = 0;
161
+ no_jit = false; /* set when the compiler bailed on this function */
162
+ compiled = null; /* JitCompiled (natural convention): see src/jit.ts */
163
+ compiled_ctor = null; /* JitCompiled (explicit convention) for constructs through wrappers; false: the compiler bailed */
164
+ /* factory of this function's retargetable wrappers (src/jit_runtime.ts), generated on its
165
+ first closure: one copy of the wrapper code per function keeps the call site inside it
166
+ monomorphic */
167
+ wrapper_factory = null;
168
+ /* lazily computed: the body reads `arguments` or a rest parameter (-1: unknown) */
169
+ uses_args = -1;
170
+ /* on-stack replacement (src/jit.ts): back-edges taken by interpreter frames, and the compiled
171
+ OSR variants by loop header pc (null: the compiler bailed for that header) */
172
+ loop_count = 0;
173
+ osr = null;
174
+ }
175
+ /* A variable reference: aliases a stack slot while the frame is alive,
176
+ then owns the value once the frame exits (detached). */
177
+ export class JSVarRef {
178
+ is_detached = false;
179
+ frame;
180
+ is_arg;
181
+ var_idx;
182
+ value = undefined; /* used when detached */
183
+ constructor(frame, is_arg, var_idx) {
184
+ this.frame = frame;
185
+ this.is_arg = is_arg;
186
+ this.var_idx = var_idx;
187
+ }
188
+ get() {
189
+ if (this.is_detached)
190
+ return this.value;
191
+ const f = this.frame;
192
+ return this.is_arg ? f.arg_buf[this.var_idx] : f.var_buf[this.var_idx];
193
+ }
194
+ set(v) {
195
+ if (this.is_detached) {
196
+ this.value = v;
197
+ return;
198
+ }
199
+ const f = this.frame;
200
+ if (this.is_arg)
201
+ f.arg_buf[this.var_idx] = v;
202
+ else
203
+ f.var_buf[this.var_idx] = v;
204
+ }
205
+ detach() {
206
+ if (!this.is_detached) {
207
+ this.value = this.get();
208
+ this.is_detached = true;
209
+ this.frame = null;
210
+ }
211
+ }
212
+ }
213
+ /* a detached variable reference holding 'value' (used by compiled functions
214
+ for captured locals) */
215
+ export function new_var_ref_cell(value) {
216
+ const vr = new JSVarRef(null, false, 0);
217
+ vr.is_detached = true;
218
+ vr.value = value;
219
+ return vr;
220
+ }
221
+ /* shared empty buffer: frames of C functions never write to their buffers,
222
+ so a single frozen array avoids 4 allocations per call */
223
+ export const EMPTY_BUF = Object.freeze([]);
224
+ export const EMPTY_VAR_REFS = Object.freeze([]);
225
+ export class JSStackFrame {
226
+ prev_frame = null;
227
+ cur_func = undefined; /* current function, JS_UNDEFINED if the frame is detached */
228
+ arg_buf = EMPTY_BUF;
229
+ var_buf = EMPTY_BUF;
230
+ stack_buf = EMPTY_BUF;
231
+ sp = 0;
232
+ cur_pc = 0;
233
+ arg_count = 0;
234
+ js_mode = 0;
235
+ cur_sp = -1; /* only used in generators */
236
+ var_refs = EMPTY_VAR_REFS; /* var refs created in this frame (to detach on exit); replaced on first use */
237
+ this_obj = undefined;
238
+ new_target = undefined;
239
+ /* the rest of this frame runs in compiled code (on-stack replacement): backtraces show the
240
+ compiled frame instead of this one */
241
+ osr = false;
242
+ }
243
+ export class JSAsyncFunctionState {
244
+ this_val = undefined;
245
+ argc = 0;
246
+ throw_flag = false;
247
+ is_completed = false;
248
+ frame = new JSStackFrame();
249
+ func_obj = undefined;
250
+ /* for async functions */
251
+ resolving_funcs = [undefined, undefined];
252
+ promise = undefined;
253
+ }
254
+ export class JSGeneratorData {
255
+ state = 0 /* JSGeneratorState.SUSPENDED_START */;
256
+ func_state = null;
257
+ }
258
+ /* bound function metadata (the object itself is a host bound function) */
259
+ export class JSBoundFunctionData {
260
+ func_obj;
261
+ this_val;
262
+ argv;
263
+ constructor(func_obj, this_val, argv) {
264
+ this.func_obj = func_obj;
265
+ this.this_val = this_val;
266
+ this.argv = argv;
267
+ }
268
+ }
269
+ export class JSCFunctionRecord {
270
+ func;
271
+ length;
272
+ cproto;
273
+ magic;
274
+ constructor(func, length, cproto, magic) {
275
+ this.func = func;
276
+ this.length = length;
277
+ this.cproto = cproto;
278
+ this.magic = magic;
279
+ }
280
+ }
281
+ export class JSCFunctionDataRecord {
282
+ func;
283
+ length;
284
+ magic;
285
+ data;
286
+ constructor(func, length, magic, data) {
287
+ this.func = func;
288
+ this.length = length;
289
+ this.magic = magic;
290
+ this.data = data;
291
+ }
292
+ }
293
+ /* for-in enumeration state: snapshot of the enumerable keys */
294
+ export class JSForInState {
295
+ obj = undefined;
296
+ idx = 0;
297
+ keys = [];
298
+ own_count = 0; /* number of keys of 'obj' itself at the start of 'keys' */
299
+ }
300
+ export class JSMapRecord {
301
+ key;
302
+ value;
303
+ empty = false; /* true if the record was deleted */
304
+ constructor(key, value) { this.key = key; this.value = value; }
305
+ }
306
+ export class JSMapState {
307
+ is_weak;
308
+ /* records in insertion order; deleted records are marked empty and
309
+ purged lazily when there are no active iterators */
310
+ records = [];
311
+ map = new Map(); /* normalized key -> record */
312
+ weak = null;
313
+ record_count = 0;
314
+ iterator_count = 0;
315
+ constructor(is_weak) {
316
+ this.is_weak = is_weak;
317
+ if (is_weak)
318
+ this.weak = new WeakMap();
319
+ }
320
+ }
321
+ export class JSMapIteratorData {
322
+ obj;
323
+ kind;
324
+ idx = 0;
325
+ constructor(obj, kind) { this.obj = obj; this.kind = kind; }
326
+ }
327
+ export class JSArrayIteratorData {
328
+ obj;
329
+ kind;
330
+ idx = 0;
331
+ constructor(obj, kind) { this.obj = obj; this.kind = kind; }
332
+ }
333
+ export class JSRegExpStringIteratorData {
334
+ iterating_regexp;
335
+ iterated_string;
336
+ global;
337
+ unicode;
338
+ done = false;
339
+ constructor(re, str, global, unicode) {
340
+ this.iterating_regexp = re;
341
+ this.iterated_string = str;
342
+ this.global = global;
343
+ this.unicode = unicode;
344
+ }
345
+ }
346
+ export class JSPromiseReactionData {
347
+ resolving_funcs;
348
+ handler;
349
+ constructor(resolving_funcs, handler) {
350
+ this.resolving_funcs = resolving_funcs;
351
+ this.handler = handler;
352
+ }
353
+ }
354
+ export class JSPromiseData {
355
+ promise_state = 0 /* JSPromiseState.PENDING */;
356
+ is_handled = false;
357
+ promise_reactions = [[], []];
358
+ promise_result = undefined;
359
+ }
360
+ export class JSPromiseFunctionData {
361
+ promise;
362
+ presolved;
363
+ constructor(promise, presolved) {
364
+ this.promise = promise;
365
+ this.presolved = presolved;
366
+ }
367
+ }
368
+ export class JSProxyData {
369
+ host_revoke = null;
370
+ target;
371
+ handler;
372
+ is_func;
373
+ is_revoked = false;
374
+ constructor(target, handler, is_func) {
375
+ this.target = target;
376
+ this.handler = handler;
377
+ this.is_func = is_func;
378
+ }
379
+ }
380
+ export class JSRegExp {
381
+ pattern;
382
+ flags;
383
+ /* host regexp used as the matching engine */
384
+ re;
385
+ constructor(pattern, flags, re) {
386
+ this.pattern = pattern;
387
+ this.flags = flags;
388
+ this.re = re;
389
+ }
390
+ }
391
+ /* ArrayBuffer metadata: the guest object is the host ArrayBuffer itself */
392
+ export class JSArrayBuffer {
393
+ buffer;
394
+ data; /* view over the whole buffer (empty when detached) */
395
+ detached = false;
396
+ shared;
397
+ constructor(buffer, shared = false) {
398
+ this.buffer = buffer;
399
+ this.data = new Uint8Array(buffer);
400
+ this.shared = shared;
401
+ }
402
+ get byteLength() { return this.detached ? 0 : this.buffer.byteLength; }
403
+ }
404
+ /* typed array metadata: the guest object is the host typed array itself */
405
+ export class JSTypedArray {
406
+ buffer; /* guest ArrayBuffer object */
407
+ offset;
408
+ length; /* in bytes */
409
+ track_rab = false;
410
+ constructor(buffer, offset, length) {
411
+ this.buffer = buffer;
412
+ this.offset = offset;
413
+ this.length = length;
414
+ }
415
+ }
416
+ /* function with closure variables */
417
+ export class JSFunctionData {
418
+ function_bytecode;
419
+ var_refs;
420
+ home_object = null;
421
+ /* compiled tier (see src/jit.ts and docs/JIT.md "Tiering"):
422
+ compiled: the direct entry `(this, new_target, ...args)` of this closure, once compiled;
423
+ priv: a private callable with the host convention and the host Function.prototype
424
+ (never reachable from guest code): `priv.apply(this, args)` is the fast way for
425
+ the engine and for retargetable wrappers to call the compiled body;
426
+ mkpriv: creates `priv` on demand (closures created by compiled code);
427
+ ctor: the explicit-convention body `(this | undefined, new_target, ...args)` used for
428
+ construct calls through a retargetable wrapper (compiled on the first one). */
429
+ compiled = null;
430
+ priv = null;
431
+ mkpriv = null;
432
+ ctor = null;
433
+ constructor(b, var_refs) {
434
+ this.function_bytecode = b;
435
+ this.var_refs = var_refs;
436
+ }
437
+ }
438
+ /* engine metadata attached to guest objects that need it (JSRuntime.meta) */
439
+ export class JSObjectMeta {
440
+ class_id;
441
+ /* class specific data (the "union" of JSObject in quickjs.c) */
442
+ u = null;
443
+ /* bytecode function data */
444
+ func = null;
445
+ /* C function data */
446
+ cfunc = null;
447
+ realm = null; /* JSContext of C functions */
448
+ is_constructor = false;
449
+ is_class = false;
450
+ is_uncatchable_error = false;
451
+ /* true once the QuickJS backtrace has been added to an error object */
452
+ has_backtrace = false;
453
+ constructor(class_id) { this.class_id = class_id; }
454
+ }
455
+ export function JS_VALUE_GET_OBJ(v) { return v; }
456
+ export function JS_VALUE_GET_INT(v) { return v; }
457
+ export function JS_VALUE_GET_FLOAT64(v) { return v; }
458
+ export function JS_VALUE_GET_BOOL(v) { return v; }
459
+ export function JS_VALUE_GET_STRING(v) { return v; }
460
+ export function js_mkval_bool(v) { return v; }
461
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../src/values.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Value and object representation (host-values model, see docs/HOST_VALUES.md).\n *\n * Primitive JS values are the host primitives (undefined, null, boolean,\n * number, string, bigint, symbol). Guest objects are host objects whose\n * prototype chains are entirely guest-owned; engine metadata for the\n * objects that need it (class id, internal slots, bytecode) lives in a\n * WeakMap (JSRuntime.meta). The special QuickJS tags (uninitialized,\n * exception, catch offset) are JSSpecial instances that never escape to\n * guest code.\n */\nimport { JSAtom } from './atoms.ts';\n\nexport const enum JSTag {\n UNINITIALIZED = 0,\n INT = 1,\n BOOL = 2,\n NULL = 3,\n UNDEFINED = 4,\n CATCH_OFFSET = 5,\n EXCEPTION = 6,\n FLOAT64 = 7,\n BIG_INT = 8,\n STRING = 9,\n SYMBOL = 10,\n OBJECT = 11,\n}\n\nexport class JSSpecial {\n constructor(public tag: JSTag, public v: number) {}\n}\n\nexport const JS_UNINITIALIZED = new JSSpecial(JSTag.UNINITIALIZED, 0);\nexport const JS_EXCEPTION = new JSSpecial(JSTag.EXCEPTION, 0);\nexport const JS_UNDEFINED = undefined;\nexport const JS_NULL = null;\nexport const JS_TRUE = true;\nexport const JS_FALSE = false;\n\n/* a guest object is any host object (or function) */\nexport type JSObject = object;\n\nexport type JSValue =\n | undefined\n | null\n | boolean\n | number\n | string\n | bigint\n | symbol\n | JSObject\n | JSSpecial;\n\nexport type JSValueConst = JSValue;\n\n/* catch offsets are stored on the stack; cache small ones */\nconst catchOffsetCache: JSSpecial[] = [];\nexport function JS_NewCatchOffset(v: number): JSSpecial {\n let r = catchOffsetCache[v];\n if (r === undefined) {\n r = new JSSpecial(JSTag.CATCH_OFFSET, v);\n if (v < 1024) catchOffsetCache[v] = r;\n }\n return r;\n}\n\nexport function JS_VALUE_GET_TAG(v: JSValue): JSTag {\n switch (typeof v) {\n case 'undefined': return JSTag.UNDEFINED;\n case 'boolean': return JSTag.BOOL;\n case 'number': return Number.isInteger(v) && v >= -2147483648 && v <= 2147483647 && !(v === 0 && 1 / v < 0) ? JSTag.INT : JSTag.FLOAT64;\n case 'string': return JSTag.STRING;\n case 'bigint': return JSTag.BIG_INT;\n case 'symbol': return JSTag.SYMBOL;\n case 'function': return JSTag.OBJECT;\n case 'object':\n if (v === null) return JSTag.NULL;\n if (v instanceof JSSpecial) return v.tag;\n return JSTag.OBJECT;\n }\n return JSTag.UNDEFINED;\n}\n\nexport function JS_IsException(v: JSValue): v is JSSpecial { return v === JS_EXCEPTION; }\nexport function JS_IsUninitialized(v: JSValue): boolean { return v === JS_UNINITIALIZED; }\nexport function JS_IsUndefined(v: JSValue): v is undefined { return v === undefined; }\nexport function JS_IsNull(v: JSValue): v is null { return v === null; }\n/* true for guest objects (including functions); the internal sentinels are excluded */\nexport function JS_IsObject(v: JSValue): v is JSObject {\n const t = typeof v;\n if (t === 'object') return v !== null && !(v instanceof JSSpecial);\n return t === 'function';\n}\nexport function JS_IsString(v: JSValue): v is string { return typeof v === 'string'; }\nexport function JS_IsSymbol(v: JSValue): v is symbol { return typeof v === 'symbol'; }\nexport function JS_IsNumber(v: JSValue): v is number { return typeof v === 'number'; }\nexport function JS_IsBigInt(v: JSValue): v is bigint { return typeof v === 'bigint'; }\nexport function JS_IsBool(v: JSValue): v is boolean { return typeof v === 'boolean'; }\nexport function JS_IsCatchOffset(v: JSValue): v is JSSpecial {\n return v instanceof JSSpecial && v.tag === JSTag.CATCH_OFFSET;\n}\n\n/* class ids (same order as quickjs.c) */\nexport const enum JSClassID {\n OBJECT = 1,\n ARRAY,\n ERROR,\n NUMBER,\n STRING,\n BOOLEAN,\n SYMBOL,\n ARGUMENTS,\n MAPPED_ARGUMENTS,\n DATE,\n MODULE_NS,\n C_FUNCTION,\n BYTECODE_FUNCTION,\n BOUND_FUNCTION,\n C_FUNCTION_DATA,\n GENERATOR_FUNCTION,\n FOR_IN_ITERATOR,\n REGEXP,\n ARRAY_BUFFER,\n SHARED_ARRAY_BUFFER,\n UINT8C_ARRAY,\n INT8_ARRAY,\n UINT8_ARRAY,\n INT16_ARRAY,\n UINT16_ARRAY,\n INT32_ARRAY,\n UINT32_ARRAY,\n BIG_INT64_ARRAY,\n BIG_UINT64_ARRAY,\n FLOAT32_ARRAY,\n FLOAT64_ARRAY,\n DATAVIEW,\n BIG_INT,\n MAP,\n SET,\n WEAKMAP,\n WEAKSET,\n MAP_ITERATOR,\n SET_ITERATOR,\n ARRAY_ITERATOR,\n STRING_ITERATOR,\n REGEXP_STRING_ITERATOR,\n GENERATOR,\n PROXY,\n PROMISE,\n PROMISE_RESOLVE_FUNCTION,\n PROMISE_REJECT_FUNCTION,\n ASYNC_FUNCTION,\n ASYNC_FUNCTION_RESOLVE,\n ASYNC_FUNCTION_REJECT,\n ASYNC_FROM_SYNC_ITERATOR,\n ASYNC_GENERATOR_FUNCTION,\n ASYNC_GENERATOR,\n WEAK_REF,\n FINALIZATION_REGISTRY,\n INIT_COUNT,\n}\n\n/* property flags */\nexport const JS_PROP_CONFIGURABLE = 1 << 0;\nexport const JS_PROP_WRITABLE = 1 << 1;\nexport const JS_PROP_ENUMERABLE = 1 << 2;\nexport const JS_PROP_C_W_E = JS_PROP_CONFIGURABLE | JS_PROP_WRITABLE | JS_PROP_ENUMERABLE;\nexport const JS_PROP_LENGTH = 1 << 3; /* used internally in Arrays */\nexport const JS_PROP_TMASK = 3 << 4;\nexport const JS_PROP_NORMAL = 0 << 4;\nexport const JS_PROP_GETSET = 1 << 4;\nexport const JS_PROP_VARREF = 2 << 4; /* used internally */\nexport const JS_PROP_AUTOINIT = 3 << 4; /* used internally */\n\n/* flags for JS_DefineProperty */\nexport const JS_PROP_HAS_SHIFT = 8;\nexport const JS_PROP_HAS_CONFIGURABLE = 1 << 8;\nexport const JS_PROP_HAS_WRITABLE = 1 << 9;\nexport const JS_PROP_HAS_ENUMERABLE = 1 << 10;\nexport const JS_PROP_HAS_GET = 1 << 11;\nexport const JS_PROP_HAS_SET = 1 << 12;\nexport const JS_PROP_HAS_VALUE = 1 << 13;\n/* throw an exception if false would be returned (JS_DefineProperty/JS_SetProperty) */\nexport const JS_PROP_THROW = 1 << 14;\n/* throw an exception if false would be returned in strict mode */\nexport const JS_PROP_THROW_STRICT = 1 << 15;\nexport const JS_PROP_NO_ADD = 1 << 16; /* internal use */\nexport const JS_PROP_NO_EXOTIC = 1 << 17; /* internal use */\nexport const JS_PROP_DEFINE_PROPERTY = 1 << 18; /* internal use */\nexport const JS_PROP_REFLECT_DEFINE_PROPERTY = 1 << 19; /* internal use */\n\n/* JS_GetOwnPropertyNames flags */\nexport const JS_GPN_STRING_MASK = 1 << 0;\nexport const JS_GPN_SYMBOL_MASK = 1 << 1;\nexport const JS_GPN_PRIVATE_MASK = 1 << 2;\nexport const JS_GPN_ENUM_ONLY = 1 << 4;\nexport const JS_GPN_SET_ENUM = 1 << 5;\n\n/* JS_Eval flags */\nexport const JS_EVAL_TYPE_GLOBAL = 0 << 0;\nexport const JS_EVAL_TYPE_MODULE = 1 << 0;\nexport const JS_EVAL_TYPE_DIRECT = 2 << 0;\nexport const JS_EVAL_TYPE_INDIRECT = 3 << 0;\nexport const JS_EVAL_TYPE_MASK = 3 << 0;\nexport const JS_EVAL_FLAG_STRICT = 1 << 3;\nexport const JS_EVAL_FLAG_COMPILE_ONLY = 1 << 5;\nexport const JS_EVAL_FLAG_BACKTRACE_BARRIER = 1 << 6;\nexport const JS_EVAL_FLAG_ASYNC = 1 << 7;\n\n/* JS_CallInternal flags */\nexport const JS_CALL_FLAG_CONSTRUCTOR = 1 << 0;\nexport const JS_CALL_FLAG_COPY_ARGV = 1 << 1;\nexport const JS_CALL_FLAG_GENERATOR = 1 << 2;\n\nexport const JS_MODE_STRICT = 1 << 0;\nexport const JS_MODE_ASYNC = 1 << 2; /* async function */\nexport const JS_MODE_BACKTRACE_BARRIER = 1 << 3;\n\nexport const enum JSFunctionKind {\n NORMAL = 0,\n GENERATOR = 1 << 0,\n ASYNC = 1 << 1,\n ASYNC_GENERATOR = (1 << 0) | (1 << 1),\n}\n\nexport const enum JSVarKind {\n NORMAL,\n FUNCTION_DECL, /* lexical var with function declaration */\n NEW_FUNCTION_DECL, /* lexical var with async/generator function declaration */\n CATCH,\n FUNCTION_NAME, /* function expression name */\n PRIVATE_FIELD,\n PRIVATE_METHOD,\n PRIVATE_GETTER,\n PRIVATE_SETTER,\n PRIVATE_GETTER_SETTER,\n}\n\nexport const enum JSErrorEnum {\n EVAL_ERROR,\n RANGE_ERROR,\n REFERENCE_ERROR,\n SYNTAX_ERROR,\n TYPE_ERROR,\n URI_ERROR,\n INTERNAL_ERROR,\n AGGREGATE_ERROR,\n NATIVE_ERROR_COUNT,\n PLAIN_ERROR = NATIVE_ERROR_COUNT,\n}\n\nexport class JSVarDef {\n var_name: JSAtom;\n scope_level = 0;\n scope_next = 0;\n is_const = false;\n is_lexical = false;\n is_captured = false;\n is_static_private = false;\n var_kind: JSVarKind = JSVarKind.NORMAL;\n func_pool_idx = -1;\n constructor(var_name: JSAtom) { this.var_name = var_name; }\n}\n\nexport class JSClosureVar {\n is_local = false;\n is_arg = false;\n is_const = false;\n is_lexical = false;\n var_kind: JSVarKind = JSVarKind.NORMAL;\n var_idx = 0;\n var_name: JSAtom = 0;\n}\n\nexport class JSFunctionBytecode {\n js_mode = 0;\n has_prototype = false;\n has_simple_parameter_list = true;\n is_derived_class_constructor = false;\n need_home_object = false;\n func_kind: JSFunctionKind = JSFunctionKind.NORMAL;\n new_target_allowed = false;\n super_call_allowed = false;\n super_allowed = false;\n arguments_allowed = false;\n has_debug = false;\n is_direct_or_indirect_eval = false;\n byte_code_buf: Uint8Array = new Uint8Array(0);\n byte_code_len = 0;\n func_name: JSAtom = 0;\n vardefs: JSVarDef[] = []; /* arguments + local variables */\n closure_var: JSClosureVar[] = [];\n arg_count = 0;\n var_count = 0;\n defined_arg_count = 0;\n stack_size = 0;\n realm: any = null; /* JSContext */\n cpool: (JSValue | JSFunctionBytecode)[] = [];\n debug = { filename: 0 as JSAtom, source: null as string | null, pc2line: null as Uint8Array | null, source_len: 0 };\n /* compiled tier (src/jit.ts) */\n call_count = 0;\n no_jit = false; /* set when the compiler bailed on this function */\n compiled: any = null; /* JitCompiled (natural convention): see src/jit.ts */\n compiled_ctor: any = null; /* JitCompiled (explicit convention) for constructs through wrappers; false: the compiler bailed */\n /* factory of this function's retargetable wrappers (src/jit_runtime.ts), generated on its\n first closure: one copy of the wrapper code per function keeps the call site inside it\n monomorphic */\n wrapper_factory: any = null;\n /* lazily computed: the body reads `arguments` or a rest parameter (-1: unknown) */\n uses_args = -1;\n /* on-stack replacement (src/jit.ts): back-edges taken by interpreter frames, and the compiled\n OSR variants by loop header pc (null: the compiler bailed for that header) */\n loop_count = 0;\n osr: Map<number, any> | null = null;\n}\n\n/* A variable reference: aliases a stack slot while the frame is alive,\n then owns the value once the frame exits (detached). */\nexport class JSVarRef {\n is_detached = false;\n frame: JSStackFrame | null;\n is_arg: boolean;\n var_idx: number;\n value: JSValue = undefined; /* used when detached */\n constructor(frame: JSStackFrame | null, is_arg: boolean, var_idx: number) {\n this.frame = frame; this.is_arg = is_arg; this.var_idx = var_idx;\n }\n get(): JSValue {\n if (this.is_detached) return this.value;\n const f = this.frame!;\n return this.is_arg ? f.arg_buf[this.var_idx] : f.var_buf[this.var_idx];\n }\n set(v: JSValue): void {\n if (this.is_detached) { this.value = v; return; }\n const f = this.frame!;\n if (this.is_arg) f.arg_buf[this.var_idx] = v; else f.var_buf[this.var_idx] = v;\n }\n detach(): void {\n if (!this.is_detached) {\n this.value = this.get();\n this.is_detached = true;\n this.frame = null;\n }\n }\n}\n\n/* a detached variable reference holding 'value' (used by compiled functions\n for captured locals) */\nexport function new_var_ref_cell(value: JSValue): JSVarRef {\n const vr = new JSVarRef(null, false, 0);\n vr.is_detached = true;\n vr.value = value;\n return vr;\n}\n\n/* shared empty buffer: frames of C functions never write to their buffers,\n so a single frozen array avoids 4 allocations per call */\nexport const EMPTY_BUF: JSValue[] = Object.freeze([]) as unknown as JSValue[];\n\nexport const EMPTY_VAR_REFS: JSVarRef[] = Object.freeze([]) as unknown as JSVarRef[];\n\nexport class JSStackFrame {\n prev_frame: JSStackFrame | null = null;\n cur_func: JSValue = undefined; /* current function, JS_UNDEFINED if the frame is detached */\n arg_buf: JSValue[] = EMPTY_BUF;\n var_buf: JSValue[] = EMPTY_BUF;\n stack_buf: JSValue[] = EMPTY_BUF;\n sp = 0;\n cur_pc = 0;\n arg_count = 0;\n js_mode = 0;\n cur_sp = -1; /* only used in generators */\n var_refs: JSVarRef[] = EMPTY_VAR_REFS; /* var refs created in this frame (to detach on exit); replaced on first use */\n this_obj: JSValue = undefined;\n new_target: JSValue = undefined;\n /* the rest of this frame runs in compiled code (on-stack replacement): backtraces show the\n compiled frame instead of this one */\n osr = false;\n}\n\nexport const enum JSGeneratorState {\n SUSPENDED_START,\n SUSPENDED_YIELD,\n SUSPENDED_YIELD_STAR,\n EXECUTING,\n COMPLETED,\n}\n\nexport class JSAsyncFunctionState {\n this_val: JSValue = undefined;\n argc = 0;\n throw_flag = false;\n is_completed = false;\n frame: JSStackFrame = new JSStackFrame();\n func_obj: JSValue = undefined;\n /* for async functions */\n resolving_funcs: [JSValue, JSValue] = [undefined, undefined];\n promise: JSValue = undefined;\n}\n\nexport class JSGeneratorData {\n state: JSGeneratorState = JSGeneratorState.SUSPENDED_START;\n func_state: JSAsyncFunctionState | null = null;\n}\n\n/* bound function metadata (the object itself is a host bound function) */\nexport class JSBoundFunctionData {\n func_obj: JSObject;\n this_val: JSValue;\n argv: JSValue[];\n constructor(func_obj: JSObject, this_val: JSValue, argv: JSValue[]) {\n this.func_obj = func_obj; this.this_val = this_val; this.argv = argv;\n }\n}\n\nexport type JSCFunction = (ctx: any, this_val: JSValue, argv: JSValue[]) => JSValue;\nexport type JSCFunctionMagic = (ctx: any, this_val: JSValue, argv: JSValue[], magic: number) => JSValue;\nexport type JSCFunctionData = (ctx: any, this_val: JSValue, argv: JSValue[], magic: number, data: JSValue[]) => JSValue;\nexport type JSCFunctionConstructor = (ctx: any, new_target: JSValue, argv: JSValue[]) => JSValue;\nexport type JSCFunctionConstructorMagic = (ctx: any, new_target: JSValue, argv: JSValue[], magic: number) => JSValue;\n\nexport const enum JSCFunctionEnum {\n generic,\n generic_magic,\n constructor,\n constructor_magic,\n constructor_or_func,\n constructor_or_func_magic,\n f_f,\n f_f_f,\n getter,\n setter,\n getter_magic,\n setter_magic,\n iterator_next,\n}\n\nexport class JSCFunctionRecord {\n func: Function;\n length: number;\n cproto: JSCFunctionEnum;\n magic: number;\n constructor(func: Function, length: number, cproto: JSCFunctionEnum, magic: number) {\n this.func = func; this.length = length; this.cproto = cproto; this.magic = magic;\n }\n}\n\nexport class JSCFunctionDataRecord {\n func: JSCFunctionData;\n length: number;\n magic: number;\n data: JSValue[];\n constructor(func: JSCFunctionData, length: number, magic: number, data: JSValue[]) {\n this.func = func; this.length = length; this.magic = magic; this.data = data;\n }\n}\n\n/* for-in enumeration state: snapshot of the enumerable keys */\nexport class JSForInState {\n obj: JSValue = undefined;\n idx = 0;\n keys: (string | number)[] = [];\n own_count = 0; /* number of keys of 'obj' itself at the start of 'keys' */\n}\n\nexport class JSMapRecord {\n key: JSValue;\n value: JSValue;\n empty = false; /* true if the record was deleted */\n constructor(key: JSValue, value: JSValue) { this.key = key; this.value = value; }\n}\n\nexport class JSMapState {\n is_weak: boolean;\n /* records in insertion order; deleted records are marked empty and\n purged lazily when there are no active iterators */\n records: JSMapRecord[] = [];\n map = new Map<unknown, JSMapRecord>(); /* normalized key -> record */\n weak: WeakMap<object, JSMapRecord> | null = null;\n record_count = 0;\n iterator_count = 0;\n constructor(is_weak: boolean) {\n this.is_weak = is_weak;\n if (is_weak) this.weak = new WeakMap();\n }\n}\n\nexport class JSMapIteratorData {\n obj: JSValue;\n kind: number;\n idx = 0;\n constructor(obj: JSValue, kind: number) { this.obj = obj; this.kind = kind; }\n}\n\nexport class JSArrayIteratorData {\n obj: JSValue;\n kind: number;\n idx = 0;\n constructor(obj: JSValue, kind: number) { this.obj = obj; this.kind = kind; }\n}\n\nexport class JSRegExpStringIteratorData {\n iterating_regexp: JSValue;\n iterated_string: JSValue;\n global: boolean;\n unicode: boolean;\n done = false;\n constructor(re: JSValue, str: JSValue, global: boolean, unicode: boolean) {\n this.iterating_regexp = re; this.iterated_string = str; this.global = global; this.unicode = unicode;\n }\n}\n\nexport const enum JSPromiseState {\n PENDING,\n FULFILLED,\n REJECTED,\n}\n\nexport class JSPromiseReactionData {\n resolving_funcs: [JSValue, JSValue];\n handler: JSValue;\n constructor(resolving_funcs: [JSValue, JSValue], handler: JSValue) {\n this.resolving_funcs = resolving_funcs; this.handler = handler;\n }\n}\n\nexport class JSPromiseData {\n promise_state: JSPromiseState = JSPromiseState.PENDING;\n is_handled = false;\n promise_reactions: [JSPromiseReactionData[], JSPromiseReactionData[]] = [[], []];\n promise_result: JSValue = undefined;\n}\n\nexport class JSPromiseFunctionData {\n promise: JSValue;\n presolved: { already_resolved: boolean };\n constructor(promise: JSValue, presolved: { already_resolved: boolean }) {\n this.promise = promise; this.presolved = presolved;\n }\n}\n\nexport class JSProxyData {\n host_revoke: (() => void) | null = null;\n target: JSValue;\n handler: JSValue;\n is_func: boolean;\n is_revoked = false;\n constructor(target: JSValue, handler: JSValue, is_func: boolean) {\n this.target = target; this.handler = handler; this.is_func = is_func;\n }\n}\n\nexport class JSRegExp {\n pattern: string;\n flags: string;\n /* host regexp used as the matching engine */\n re: RegExp;\n constructor(pattern: string, flags: string, re: RegExp) {\n this.pattern = pattern; this.flags = flags; this.re = re;\n }\n}\n\n/* ArrayBuffer metadata: the guest object is the host ArrayBuffer itself */\nexport class JSArrayBuffer {\n buffer: ArrayBuffer | SharedArrayBuffer;\n data: Uint8Array; /* view over the whole buffer (empty when detached) */\n detached = false;\n shared: boolean;\n constructor(buffer: ArrayBuffer | SharedArrayBuffer, shared = false) {\n this.buffer = buffer;\n this.data = new Uint8Array(buffer as ArrayBuffer);\n this.shared = shared;\n }\n get byteLength(): number { return this.detached ? 0 : this.buffer.byteLength; }\n}\n\n/* typed array metadata: the guest object is the host typed array itself */\nexport class JSTypedArray {\n buffer: JSObject; /* guest ArrayBuffer object */\n offset: number;\n length: number; /* in bytes */\n track_rab = false;\n constructor(buffer: JSObject, offset: number, length: number) {\n this.buffer = buffer; this.offset = offset; this.length = length;\n }\n}\n\n/* function with closure variables */\nexport class JSFunctionData {\n function_bytecode: JSFunctionBytecode;\n var_refs: JSVarRef[];\n home_object: JSObject | null = null;\n /* compiled tier (see src/jit.ts and docs/JIT.md \"Tiering\"):\n compiled: the direct entry `(this, new_target, ...args)` of this closure, once compiled;\n priv: a private callable with the host convention and the host Function.prototype\n (never reachable from guest code): `priv.apply(this, args)` is the fast way for\n the engine and for retargetable wrappers to call the compiled body;\n mkpriv: creates `priv` on demand (closures created by compiled code);\n ctor: the explicit-convention body `(this | undefined, new_target, ...args)` used for\n construct calls through a retargetable wrapper (compiled on the first one). */\n compiled: Function | null = null;\n priv: Function | null = null;\n mkpriv: (() => Function) | null = null;\n ctor: Function | null = null;\n constructor(b: JSFunctionBytecode, var_refs: JSVarRef[]) {\n this.function_bytecode = b; this.var_refs = var_refs;\n }\n}\n\n/* engine metadata attached to guest objects that need it (JSRuntime.meta) */\nexport class JSObjectMeta {\n class_id: JSClassID;\n /* class specific data (the \"union\" of JSObject in quickjs.c) */\n u: any = null;\n /* bytecode function data */\n func: JSFunctionData | null = null;\n /* C function data */\n cfunc: JSCFunctionRecord | null = null;\n realm: any = null; /* JSContext of C functions */\n is_constructor = false;\n is_class = false;\n is_uncatchable_error = false;\n /* true once the QuickJS backtrace has been added to an error object */\n has_backtrace = false;\n constructor(class_id: JSClassID) { this.class_id = class_id; }\n}\n\nexport function JS_VALUE_GET_OBJ(v: JSValue): JSObject { return v as JSObject; }\nexport function JS_VALUE_GET_INT(v: JSValue): number { return v as number; }\nexport function JS_VALUE_GET_FLOAT64(v: JSValue): number { return v as number; }\nexport function JS_VALUE_GET_BOOL(v: JSValue): boolean { return v as boolean; }\nexport function JS_VALUE_GET_STRING(v: JSValue): string { return v as string; }\n\nexport function js_mkval_bool(v: boolean): JSValue { return v; }\n"]}
package/package.json CHANGED
@@ -1,6 +1,61 @@
1
1
  {
2
2
  "name": "jseption",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.0.2",
4
+ "description": "A sandboxed JavaScript engine for any JavaScript host, built on a TypeScript port of QuickJS with a bytecode-to-JavaScript compiler",
5
+ "keywords": [
6
+ "quickjs",
7
+ "javascript",
8
+ "interpreter",
9
+ "sandbox",
10
+ "jit",
11
+ "engine"
12
+ ],
13
+ "license": "MIT",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/noya-app/jseption.git"
17
+ },
18
+ "homepage": "https://github.com/noya-app/jseption#readme",
19
+ "bugs": {
20
+ "url": "https://github.com/noya-app/jseption/issues"
21
+ },
22
+ "type": "module",
23
+ "main": "./dist/jseption.js",
24
+ "types": "./dist/jseption.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "types": "./dist/jseption.d.ts",
28
+ "default": "./dist/jseption.js"
29
+ },
30
+ "./std": {
31
+ "types": "./dist/std.d.ts",
32
+ "default": "./dist/std.js"
33
+ },
34
+ "./package.json": "./package.json"
35
+ },
36
+ "bin": {
37
+ "jseption": "./dist/qjs.js"
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "README.md",
42
+ "LICENSE"
43
+ ],
44
+ "engines": {
45
+ "node": ">=20"
46
+ },
47
+ "publishConfig": {
48
+ "access": "public"
49
+ },
50
+ "scripts": {
51
+ "test": "bun test",
52
+ "qjs": "bun run src/qjs.ts",
53
+ "typecheck": "bun x tsc --noEmit -p tsconfig.json",
54
+ "build": "rm -rf dist && bun x tsc -p tsconfig.build.json && chmod +x dist/qjs.js",
55
+ "prepack": "bun run build"
56
+ },
57
+ "devDependencies": {
58
+ "@types/bun": "latest",
59
+ "typescript": "^5.6.0"
60
+ }
61
+ }