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/atoms.js ADDED
@@ -0,0 +1,445 @@
1
+ /*
2
+ * Atom table: port of the atom handling in quickjs.c / quickjs-atom.h
3
+ *
4
+ * Atoms are small integers. Atoms whose value has bit 31 set are
5
+ * "tagged integers" (array indices) and are not stored in the table.
6
+ */
7
+ export const JS_ATOM_NULL = 0;
8
+ /* same order as quickjs-atom.h: the first entries are the keywords and
9
+ must match the TOK_xxx token order (see parser.ts) */
10
+ export const predefinedAtomNames = [
11
+ 'null', 'false', 'true', 'if', 'else', 'return', 'var', 'this', 'delete',
12
+ 'void', 'typeof', 'new', 'in', 'instanceof', 'do', 'while', 'for', 'break',
13
+ 'continue', 'switch', 'case', 'default', 'throw', 'try', 'catch', 'finally',
14
+ 'function', 'debugger', 'with', 'class', 'const', 'enum', 'export',
15
+ 'extends', 'import', 'super', 'implements', 'interface', 'let', 'package',
16
+ 'private', 'protected', 'public', 'static', 'yield', 'await',
17
+ '', 'length', 'fileName', 'lineNumber', 'columnNumber', 'message', 'cause',
18
+ 'errors', 'stack', 'name', 'toString', 'toLocaleString', 'valueOf', 'eval',
19
+ 'prototype', 'constructor', 'configurable', 'writable', 'enumerable',
20
+ 'value', 'get', 'set', 'of', '__proto__', 'undefined', 'number', 'boolean',
21
+ 'string', 'object', 'symbol', 'integer', 'unknown', 'arguments', 'callee',
22
+ 'caller', '<eval>', '<ret>', '<var>', '<arg_var>', '<with>', 'lastIndex',
23
+ 'target', 'index', 'input', 'defineProperties', 'apply', 'join', 'concat',
24
+ 'split', 'construct', 'getPrototypeOf', 'setPrototypeOf', 'isExtensible',
25
+ 'preventExtensions', 'has', 'deleteProperty', 'defineProperty',
26
+ 'getOwnPropertyDescriptor', 'ownKeys', 'add', 'done', 'next', 'values',
27
+ 'source', 'flags', 'global', 'unicode', 'raw', 'new.target',
28
+ 'this.active_func', '<home_object>', '<computed_field>',
29
+ '<static_computed_field>', '<class_fields_init>', '<brand>', '#constructor',
30
+ 'as', 'from', 'meta', '*default*', '*', 'Module', 'then', 'resolve',
31
+ 'reject', 'promise', 'proxy', 'revoke', 'async', 'exec', 'groups',
32
+ 'indices', 'status', 'reason', 'globalThis', 'bigint', '-0', 'Infinity',
33
+ '-Infinity', 'NaN', 'not-equal', 'timed-out', 'ok', 'toJSON', 'Object',
34
+ 'Array', 'Error', 'Number', 'String', 'Boolean', 'Symbol', 'Arguments',
35
+ 'Math', 'JSON', 'Date', 'Function', 'GeneratorFunction', 'ForInIterator',
36
+ 'RegExp', 'ArrayBuffer', 'SharedArrayBuffer', 'Uint8ClampedArray',
37
+ 'Int8Array', 'Uint8Array', 'Int16Array', 'Uint16Array', 'Int32Array',
38
+ 'Uint32Array', 'BigInt64Array', 'BigUint64Array', 'Float32Array',
39
+ 'Float64Array', 'DataView', 'BigInt', 'WeakRef', 'FinalizationRegistry',
40
+ 'Map', 'Set', 'WeakMap', 'WeakSet', 'Map Iterator', 'Set Iterator',
41
+ 'Array Iterator', 'String Iterator', 'RegExp String Iterator', 'Generator',
42
+ 'Proxy', 'Promise', 'PromiseResolveFunction', 'PromiseRejectFunction',
43
+ 'AsyncFunction', 'AsyncFunctionResolve', 'AsyncFunctionReject',
44
+ 'AsyncGeneratorFunction', 'AsyncGenerator', 'EvalError', 'RangeError',
45
+ 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError', 'InternalError',
46
+ /* private brand */
47
+ '<brand>',
48
+ /* well known symbols */
49
+ 'Symbol.toPrimitive', 'Symbol.iterator', 'Symbol.match', 'Symbol.matchAll',
50
+ 'Symbol.replace', 'Symbol.search', 'Symbol.split', 'Symbol.toStringTag',
51
+ 'Symbol.isConcatSpreadable', 'Symbol.hasInstance', 'Symbol.species',
52
+ 'Symbol.unscopables', 'Symbol.asyncIterator',
53
+ ];
54
+ function idx(name, from = 0) {
55
+ const i = predefinedAtomNames.indexOf(name, from);
56
+ if (i < 0)
57
+ throw new Error('missing predefined atom ' + name);
58
+ return i + 1;
59
+ }
60
+ /* JS_ATOM_xxx constants (1-based, JS_ATOM_NULL = 0) */
61
+ export const JS_ATOM_null = 1;
62
+ export const JS_ATOM_false = idx('false');
63
+ export const JS_ATOM_true = idx('true');
64
+ export const JS_ATOM_if = idx('if');
65
+ export const JS_ATOM_else = idx('else');
66
+ export const JS_ATOM_return = idx('return');
67
+ export const JS_ATOM_var = idx('var');
68
+ export const JS_ATOM_this = idx('this');
69
+ export const JS_ATOM_delete = idx('delete');
70
+ export const JS_ATOM_void = idx('void');
71
+ export const JS_ATOM_typeof = idx('typeof');
72
+ export const JS_ATOM_new = idx('new');
73
+ export const JS_ATOM_in = idx('in');
74
+ export const JS_ATOM_instanceof = idx('instanceof');
75
+ export const JS_ATOM_do = idx('do');
76
+ export const JS_ATOM_while = idx('while');
77
+ export const JS_ATOM_for = idx('for');
78
+ export const JS_ATOM_break = idx('break');
79
+ export const JS_ATOM_continue = idx('continue');
80
+ export const JS_ATOM_switch = idx('switch');
81
+ export const JS_ATOM_case = idx('case');
82
+ export const JS_ATOM_default = idx('default');
83
+ export const JS_ATOM_throw = idx('throw');
84
+ export const JS_ATOM_try = idx('try');
85
+ export const JS_ATOM_catch = idx('catch');
86
+ export const JS_ATOM_finally = idx('finally');
87
+ export const JS_ATOM_function = idx('function');
88
+ export const JS_ATOM_debugger = idx('debugger');
89
+ export const JS_ATOM_with = idx('with');
90
+ export const JS_ATOM_class = idx('class');
91
+ export const JS_ATOM_const = idx('const');
92
+ export const JS_ATOM_enum = idx('enum');
93
+ export const JS_ATOM_export = idx('export');
94
+ export const JS_ATOM_extends = idx('extends');
95
+ export const JS_ATOM_import = idx('import');
96
+ export const JS_ATOM_super = idx('super');
97
+ export const JS_ATOM_implements = idx('implements');
98
+ export const JS_ATOM_interface = idx('interface');
99
+ export const JS_ATOM_let = idx('let');
100
+ export const JS_ATOM_package = idx('package');
101
+ export const JS_ATOM_private = idx('private');
102
+ export const JS_ATOM_protected = idx('protected');
103
+ export const JS_ATOM_public = idx('public');
104
+ export const JS_ATOM_static = idx('static');
105
+ export const JS_ATOM_yield = idx('yield');
106
+ export const JS_ATOM_await = idx('await');
107
+ export const JS_ATOM_empty_string = idx('');
108
+ export const JS_ATOM_length = idx('length');
109
+ export const JS_ATOM_fileName = idx('fileName');
110
+ export const JS_ATOM_lineNumber = idx('lineNumber');
111
+ export const JS_ATOM_columnNumber = idx('columnNumber');
112
+ export const JS_ATOM_message = idx('message');
113
+ export const JS_ATOM_cause = idx('cause');
114
+ export const JS_ATOM_errors = idx('errors');
115
+ export const JS_ATOM_stack = idx('stack');
116
+ export const JS_ATOM_name = idx('name');
117
+ export const JS_ATOM_toString = idx('toString');
118
+ export const JS_ATOM_toLocaleString = idx('toLocaleString');
119
+ export const JS_ATOM_valueOf = idx('valueOf');
120
+ export const JS_ATOM_eval = idx('eval');
121
+ export const JS_ATOM_prototype = idx('prototype');
122
+ export const JS_ATOM_constructor = idx('constructor');
123
+ export const JS_ATOM_configurable = idx('configurable');
124
+ export const JS_ATOM_writable = idx('writable');
125
+ export const JS_ATOM_enumerable = idx('enumerable');
126
+ export const JS_ATOM_value = idx('value');
127
+ export const JS_ATOM_get = idx('get');
128
+ export const JS_ATOM_set = idx('set');
129
+ export const JS_ATOM_of = idx('of');
130
+ export const JS_ATOM___proto__ = idx('__proto__');
131
+ export const JS_ATOM_undefined = idx('undefined');
132
+ export const JS_ATOM_number = idx('number');
133
+ export const JS_ATOM_boolean = idx('boolean');
134
+ export const JS_ATOM_string = idx('string');
135
+ export const JS_ATOM_object = idx('object');
136
+ export const JS_ATOM_symbol = idx('symbol');
137
+ export const JS_ATOM_integer = idx('integer');
138
+ export const JS_ATOM_unknown = idx('unknown');
139
+ export const JS_ATOM_arguments = idx('arguments');
140
+ export const JS_ATOM_callee = idx('callee');
141
+ export const JS_ATOM_caller = idx('caller');
142
+ export const JS_ATOM__eval_ = idx('<eval>');
143
+ export const JS_ATOM__ret_ = idx('<ret>');
144
+ export const JS_ATOM__var_ = idx('<var>');
145
+ export const JS_ATOM__arg_var_ = idx('<arg_var>');
146
+ export const JS_ATOM__with_ = idx('<with>');
147
+ export const JS_ATOM_lastIndex = idx('lastIndex');
148
+ export const JS_ATOM_target = idx('target');
149
+ export const JS_ATOM_index = idx('index');
150
+ export const JS_ATOM_input = idx('input');
151
+ export const JS_ATOM_defineProperties = idx('defineProperties');
152
+ export const JS_ATOM_apply = idx('apply');
153
+ export const JS_ATOM_join = idx('join');
154
+ export const JS_ATOM_concat = idx('concat');
155
+ export const JS_ATOM_split = idx('split');
156
+ export const JS_ATOM_construct = idx('construct');
157
+ export const JS_ATOM_getPrototypeOf = idx('getPrototypeOf');
158
+ export const JS_ATOM_setPrototypeOf = idx('setPrototypeOf');
159
+ export const JS_ATOM_isExtensible = idx('isExtensible');
160
+ export const JS_ATOM_preventExtensions = idx('preventExtensions');
161
+ export const JS_ATOM_has = idx('has');
162
+ export const JS_ATOM_deleteProperty = idx('deleteProperty');
163
+ export const JS_ATOM_defineProperty = idx('defineProperty');
164
+ export const JS_ATOM_getOwnPropertyDescriptor = idx('getOwnPropertyDescriptor');
165
+ export const JS_ATOM_ownKeys = idx('ownKeys');
166
+ export const JS_ATOM_add = idx('add');
167
+ export const JS_ATOM_done = idx('done');
168
+ export const JS_ATOM_next = idx('next');
169
+ export const JS_ATOM_values = idx('values');
170
+ export const JS_ATOM_source = idx('source');
171
+ export const JS_ATOM_flags = idx('flags');
172
+ export const JS_ATOM_global = idx('global');
173
+ export const JS_ATOM_unicode = idx('unicode');
174
+ export const JS_ATOM_raw = idx('raw');
175
+ export const JS_ATOM_new_target = idx('new.target');
176
+ export const JS_ATOM_this_active_func = idx('this.active_func');
177
+ export const JS_ATOM_home_object = idx('<home_object>');
178
+ export const JS_ATOM_computed_field = idx('<computed_field>');
179
+ export const JS_ATOM_static_computed_field = idx('<static_computed_field>');
180
+ export const JS_ATOM_class_fields_init = idx('<class_fields_init>');
181
+ export const JS_ATOM_brand = idx('<brand>');
182
+ export const JS_ATOM_hash_constructor = idx('#constructor');
183
+ export const JS_ATOM_as = idx('as');
184
+ export const JS_ATOM_from = idx('from');
185
+ export const JS_ATOM_meta = idx('meta');
186
+ export const JS_ATOM__default_ = idx('*default*');
187
+ export const JS_ATOM__star_ = idx('*');
188
+ export const JS_ATOM_Module = idx('Module');
189
+ export const JS_ATOM_then = idx('then');
190
+ export const JS_ATOM_resolve = idx('resolve');
191
+ export const JS_ATOM_reject = idx('reject');
192
+ export const JS_ATOM_promise = idx('promise');
193
+ export const JS_ATOM_proxy = idx('proxy');
194
+ export const JS_ATOM_revoke = idx('revoke');
195
+ export const JS_ATOM_async = idx('async');
196
+ export const JS_ATOM_exec = idx('exec');
197
+ export const JS_ATOM_groups = idx('groups');
198
+ export const JS_ATOM_indices = idx('indices');
199
+ export const JS_ATOM_status = idx('status');
200
+ export const JS_ATOM_reason = idx('reason');
201
+ export const JS_ATOM_globalThis = idx('globalThis');
202
+ export const JS_ATOM_bigint = idx('bigint');
203
+ export const JS_ATOM_minus_zero = idx('-0');
204
+ export const JS_ATOM_Infinity = idx('Infinity');
205
+ export const JS_ATOM_minus_Infinity = idx('-Infinity');
206
+ export const JS_ATOM_NaN = idx('NaN');
207
+ export const JS_ATOM_not_equal = idx('not-equal');
208
+ export const JS_ATOM_timed_out = idx('timed-out');
209
+ export const JS_ATOM_ok = idx('ok');
210
+ export const JS_ATOM_toJSON = idx('toJSON');
211
+ export const JS_ATOM_Object = idx('Object');
212
+ export const JS_ATOM_Array = idx('Array');
213
+ export const JS_ATOM_Error = idx('Error');
214
+ export const JS_ATOM_Number = idx('Number');
215
+ export const JS_ATOM_String = idx('String');
216
+ export const JS_ATOM_Boolean = idx('Boolean');
217
+ export const JS_ATOM_Symbol = idx('Symbol');
218
+ export const JS_ATOM_Arguments = idx('Arguments');
219
+ export const JS_ATOM_Math = idx('Math');
220
+ export const JS_ATOM_JSON = idx('JSON');
221
+ export const JS_ATOM_Date = idx('Date');
222
+ export const JS_ATOM_Function = idx('Function');
223
+ export const JS_ATOM_GeneratorFunction = idx('GeneratorFunction');
224
+ export const JS_ATOM_ForInIterator = idx('ForInIterator');
225
+ export const JS_ATOM_RegExp = idx('RegExp');
226
+ export const JS_ATOM_ArrayBuffer = idx('ArrayBuffer');
227
+ export const JS_ATOM_SharedArrayBuffer = idx('SharedArrayBuffer');
228
+ export const JS_ATOM_Uint8ClampedArray = idx('Uint8ClampedArray');
229
+ export const JS_ATOM_Int8Array = idx('Int8Array');
230
+ export const JS_ATOM_Uint8Array = idx('Uint8Array');
231
+ export const JS_ATOM_Int16Array = idx('Int16Array');
232
+ export const JS_ATOM_Uint16Array = idx('Uint16Array');
233
+ export const JS_ATOM_Int32Array = idx('Int32Array');
234
+ export const JS_ATOM_Uint32Array = idx('Uint32Array');
235
+ export const JS_ATOM_BigInt64Array = idx('BigInt64Array');
236
+ export const JS_ATOM_BigUint64Array = idx('BigUint64Array');
237
+ export const JS_ATOM_Float32Array = idx('Float32Array');
238
+ export const JS_ATOM_Float64Array = idx('Float64Array');
239
+ export const JS_ATOM_DataView = idx('DataView');
240
+ export const JS_ATOM_BigInt = idx('BigInt');
241
+ export const JS_ATOM_WeakRef = idx('WeakRef');
242
+ export const JS_ATOM_FinalizationRegistry = idx('FinalizationRegistry');
243
+ export const JS_ATOM_Map = idx('Map');
244
+ export const JS_ATOM_Set = idx('Set');
245
+ export const JS_ATOM_WeakMap = idx('WeakMap');
246
+ export const JS_ATOM_WeakSet = idx('WeakSet');
247
+ export const JS_ATOM_Map_Iterator = idx('Map Iterator');
248
+ export const JS_ATOM_Set_Iterator = idx('Set Iterator');
249
+ export const JS_ATOM_Array_Iterator = idx('Array Iterator');
250
+ export const JS_ATOM_String_Iterator = idx('String Iterator');
251
+ export const JS_ATOM_RegExp_String_Iterator = idx('RegExp String Iterator');
252
+ export const JS_ATOM_Generator = idx('Generator');
253
+ export const JS_ATOM_Proxy = idx('Proxy');
254
+ export const JS_ATOM_Promise = idx('Promise');
255
+ export const JS_ATOM_PromiseResolveFunction = idx('PromiseResolveFunction');
256
+ export const JS_ATOM_PromiseRejectFunction = idx('PromiseRejectFunction');
257
+ export const JS_ATOM_AsyncFunction = idx('AsyncFunction');
258
+ export const JS_ATOM_AsyncFunctionResolve = idx('AsyncFunctionResolve');
259
+ export const JS_ATOM_AsyncFunctionReject = idx('AsyncFunctionReject');
260
+ export const JS_ATOM_AsyncGeneratorFunction = idx('AsyncGeneratorFunction');
261
+ export const JS_ATOM_AsyncGenerator = idx('AsyncGenerator');
262
+ export const JS_ATOM_EvalError = idx('EvalError');
263
+ export const JS_ATOM_RangeError = idx('RangeError');
264
+ export const JS_ATOM_ReferenceError = idx('ReferenceError');
265
+ export const JS_ATOM_SyntaxError = idx('SyntaxError');
266
+ export const JS_ATOM_TypeError = idx('TypeError');
267
+ export const JS_ATOM_URIError = idx('URIError');
268
+ export const JS_ATOM_InternalError = idx('InternalError');
269
+ export const JS_ATOM_Private_brand = idx('<brand>', JS_ATOM_brand);
270
+ export const JS_ATOM_Symbol_toPrimitive = idx('Symbol.toPrimitive');
271
+ export const JS_ATOM_Symbol_iterator = idx('Symbol.iterator');
272
+ export const JS_ATOM_Symbol_match = idx('Symbol.match');
273
+ export const JS_ATOM_Symbol_matchAll = idx('Symbol.matchAll');
274
+ export const JS_ATOM_Symbol_replace = idx('Symbol.replace');
275
+ export const JS_ATOM_Symbol_search = idx('Symbol.search');
276
+ export const JS_ATOM_Symbol_split = idx('Symbol.split');
277
+ export const JS_ATOM_Symbol_toStringTag = idx('Symbol.toStringTag');
278
+ export const JS_ATOM_Symbol_isConcatSpreadable = idx('Symbol.isConcatSpreadable');
279
+ export const JS_ATOM_Symbol_hasInstance = idx('Symbol.hasInstance');
280
+ export const JS_ATOM_Symbol_species = idx('Symbol.species');
281
+ export const JS_ATOM_Symbol_unscopables = idx('Symbol.unscopables');
282
+ export const JS_ATOM_Symbol_asyncIterator = idx('Symbol.asyncIterator');
283
+ export const JS_ATOM_END = predefinedAtomNames.length + 1;
284
+ /* atom types */
285
+ export const JS_ATOM_TYPE_STRING = 1;
286
+ export const JS_ATOM_TYPE_GLOBAL_SYMBOL = 2;
287
+ export const JS_ATOM_TYPE_SYMBOL = 3;
288
+ export const JS_ATOM_TYPE_PRIVATE = 4;
289
+ export const JS_ATOM_TAG_INT = 0x80000000;
290
+ export const JS_ATOM_MAX_INT = 0x7fffffff;
291
+ export function __JS_AtomIsTaggedInt(v) {
292
+ return v >= JS_ATOM_TAG_INT;
293
+ }
294
+ export function __JS_AtomFromUInt32(v) {
295
+ return v + JS_ATOM_TAG_INT;
296
+ }
297
+ export function __JS_AtomToUInt32(atom) {
298
+ return atom - JS_ATOM_TAG_INT;
299
+ }
300
+ /* A symbol value. Each symbol has its own atom (not interned by name
301
+ unless it is a global symbol created with Symbol.for()). */
302
+ /* Symbol atoms are host symbols. The well-known symbols are the host's own
303
+ (they are shared between realms by the specification); other symbol atoms
304
+ are fresh host symbols created by Symbol(description). */
305
+ export function js_well_known_symbol(name) {
306
+ if (!name.startsWith('Symbol.'))
307
+ return null;
308
+ const s = Symbol[name.slice(7)];
309
+ return typeof s === 'symbol' ? s : null;
310
+ }
311
+ /* returns -1 if the string is not a canonical array index */
312
+ export function is_num_string(str) {
313
+ const len = str.length;
314
+ if (len === 0 || len > 10)
315
+ return -1;
316
+ const c0 = str.charCodeAt(0);
317
+ if (c0 < 48 || c0 > 57)
318
+ return -1;
319
+ if (c0 === 48)
320
+ return len === 1 ? 0 : -1;
321
+ let n = 0;
322
+ for (let i = 0; i < len; i++) {
323
+ const c = str.charCodeAt(i);
324
+ if (c < 48 || c > 57)
325
+ return -1;
326
+ n = n * 10 + (c - 48);
327
+ }
328
+ if (n > JS_ATOM_MAX_INT)
329
+ return -1;
330
+ return n;
331
+ }
332
+ export class AtomTable {
333
+ /* index: atom - 1 */
334
+ names = [];
335
+ types = [];
336
+ strMap = new Map();
337
+ symMap = new Map();
338
+ constructor() {
339
+ for (let i = 0; i < predefinedAtomNames.length; i++) {
340
+ const name = predefinedAtomNames[i];
341
+ const atom = i + 1;
342
+ let type;
343
+ if (atom === JS_ATOM_Private_brand)
344
+ type = JS_ATOM_TYPE_PRIVATE;
345
+ else if (atom >= JS_ATOM_Symbol_toPrimitive)
346
+ type = JS_ATOM_TYPE_SYMBOL;
347
+ else
348
+ type = JS_ATOM_TYPE_STRING;
349
+ if (type === JS_ATOM_TYPE_STRING) {
350
+ this.names.push(name);
351
+ this.strMap.set(name, atom);
352
+ }
353
+ else {
354
+ const sym = js_well_known_symbol(name) ?? Symbol(name);
355
+ this.names.push(sym);
356
+ this.symMap.set(sym, atom);
357
+ }
358
+ this.types.push(type);
359
+ }
360
+ }
361
+ /* string atom. If the string is a canonical array index, returns a
362
+ tagged int atom. */
363
+ newAtomStr(str) {
364
+ const n = is_num_string(str);
365
+ if (n >= 0)
366
+ return __JS_AtomFromUInt32(n);
367
+ let atom = this.strMap.get(str);
368
+ if (atom === undefined) {
369
+ atom = this.names.length + 1;
370
+ this.names.push(str);
371
+ this.types.push(JS_ATOM_TYPE_STRING);
372
+ this.strMap.set(str, atom);
373
+ }
374
+ return atom;
375
+ }
376
+ newAtomUInt32(n) {
377
+ if (n <= JS_ATOM_MAX_INT)
378
+ return __JS_AtomFromUInt32(n);
379
+ return this.newAtomStr(String(n));
380
+ }
381
+ /* create a new (unique) symbol atom */
382
+ newSymbol(description, atom_type) {
383
+ /* registered symbols are shared with the host registry (Symbol.keyFor) */
384
+ const sym = (atom_type === JS_ATOM_TYPE_GLOBAL_SYMBOL) ? Symbol.for(description ?? '') : Symbol(description);
385
+ const existing = this.symMap.get(sym);
386
+ if (existing !== undefined)
387
+ return sym;
388
+ const atom = this.names.length + 1;
389
+ this.names.push(sym);
390
+ this.types.push(atom_type);
391
+ this.symMap.set(sym, atom);
392
+ return sym;
393
+ }
394
+ /* atom of an existing host symbol (registered on first use) */
395
+ symbolToAtom(sym) {
396
+ let atom = this.symMap.get(sym);
397
+ if (atom === undefined) {
398
+ atom = this.names.length + 1;
399
+ this.names.push(sym);
400
+ this.types.push(Symbol.keyFor(sym) !== undefined ? JS_ATOM_TYPE_GLOBAL_SYMBOL : JS_ATOM_TYPE_SYMBOL);
401
+ this.symMap.set(sym, atom);
402
+ }
403
+ return atom;
404
+ }
405
+ getType(atom) {
406
+ if (__JS_AtomIsTaggedInt(atom))
407
+ return JS_ATOM_TYPE_STRING;
408
+ return this.types[atom - 1];
409
+ }
410
+ isString(atom) {
411
+ return this.getType(atom) === JS_ATOM_TYPE_STRING;
412
+ }
413
+ isSymbol(atom) {
414
+ return !__JS_AtomIsTaggedInt(atom) && this.types[atom - 1] !== JS_ATOM_TYPE_STRING;
415
+ }
416
+ getSymbol(atom) {
417
+ return this.names[atom - 1];
418
+ }
419
+ /* host property key of an atom: number (array index), string or symbol */
420
+ toKey(atom) {
421
+ if (__JS_AtomIsTaggedInt(atom))
422
+ return __JS_AtomToUInt32(atom);
423
+ return this.names[atom - 1];
424
+ }
425
+ /* string of a string atom or the description of a symbol */
426
+ toStr(atom) {
427
+ if (__JS_AtomIsTaggedInt(atom))
428
+ return String(__JS_AtomToUInt32(atom));
429
+ const v = this.names[atom - 1];
430
+ if (typeof v === 'string')
431
+ return v;
432
+ return v.description === undefined ? '' : v.description;
433
+ }
434
+ /* for error messages: "Symbol(desc)" */
435
+ toDisplayStr(atom) {
436
+ if (!__JS_AtomIsTaggedInt(atom) && (atom <= 0 || atom > this.names.length))
437
+ return `<bad atom ${atom}>`;
438
+ if (this.isSymbol(atom)) {
439
+ const sym = this.getSymbol(atom);
440
+ return 'Symbol(' + (sym.description ?? '') + ')';
441
+ }
442
+ return this.toStr(atom);
443
+ }
444
+ }
445
+ //# sourceMappingURL=atoms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atoms.js","sourceRoot":"","sources":["../src/atoms.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Atom table: port of the atom handling in quickjs.c / quickjs-atom.h\n *\n * Atoms are small integers. Atoms whose value has bit 31 set are\n * \"tagged integers\" (array indices) and are not stored in the table.\n */\n\nexport type JSAtom = number;\n\nexport const JS_ATOM_NULL: JSAtom = 0;\n\n/* same order as quickjs-atom.h: the first entries are the keywords and\n must match the TOK_xxx token order (see parser.ts) */\nexport const predefinedAtomNames: string[] = [\n 'null', 'false', 'true', 'if', 'else', 'return', 'var', 'this', 'delete',\n 'void', 'typeof', 'new', 'in', 'instanceof', 'do', 'while', 'for', 'break',\n 'continue', 'switch', 'case', 'default', 'throw', 'try', 'catch', 'finally',\n 'function', 'debugger', 'with', 'class', 'const', 'enum', 'export',\n 'extends', 'import', 'super', 'implements', 'interface', 'let', 'package',\n 'private', 'protected', 'public', 'static', 'yield', 'await',\n '', 'length', 'fileName', 'lineNumber', 'columnNumber', 'message', 'cause',\n 'errors', 'stack', 'name', 'toString', 'toLocaleString', 'valueOf', 'eval',\n 'prototype', 'constructor', 'configurable', 'writable', 'enumerable',\n 'value', 'get', 'set', 'of', '__proto__', 'undefined', 'number', 'boolean',\n 'string', 'object', 'symbol', 'integer', 'unknown', 'arguments', 'callee',\n 'caller', '<eval>', '<ret>', '<var>', '<arg_var>', '<with>', 'lastIndex',\n 'target', 'index', 'input', 'defineProperties', 'apply', 'join', 'concat',\n 'split', 'construct', 'getPrototypeOf', 'setPrototypeOf', 'isExtensible',\n 'preventExtensions', 'has', 'deleteProperty', 'defineProperty',\n 'getOwnPropertyDescriptor', 'ownKeys', 'add', 'done', 'next', 'values',\n 'source', 'flags', 'global', 'unicode', 'raw', 'new.target',\n 'this.active_func', '<home_object>', '<computed_field>',\n '<static_computed_field>', '<class_fields_init>', '<brand>', '#constructor',\n 'as', 'from', 'meta', '*default*', '*', 'Module', 'then', 'resolve',\n 'reject', 'promise', 'proxy', 'revoke', 'async', 'exec', 'groups',\n 'indices', 'status', 'reason', 'globalThis', 'bigint', '-0', 'Infinity',\n '-Infinity', 'NaN', 'not-equal', 'timed-out', 'ok', 'toJSON', 'Object',\n 'Array', 'Error', 'Number', 'String', 'Boolean', 'Symbol', 'Arguments',\n 'Math', 'JSON', 'Date', 'Function', 'GeneratorFunction', 'ForInIterator',\n 'RegExp', 'ArrayBuffer', 'SharedArrayBuffer', 'Uint8ClampedArray',\n 'Int8Array', 'Uint8Array', 'Int16Array', 'Uint16Array', 'Int32Array',\n 'Uint32Array', 'BigInt64Array', 'BigUint64Array', 'Float32Array',\n 'Float64Array', 'DataView', 'BigInt', 'WeakRef', 'FinalizationRegistry',\n 'Map', 'Set', 'WeakMap', 'WeakSet', 'Map Iterator', 'Set Iterator',\n 'Array Iterator', 'String Iterator', 'RegExp String Iterator', 'Generator',\n 'Proxy', 'Promise', 'PromiseResolveFunction', 'PromiseRejectFunction',\n 'AsyncFunction', 'AsyncFunctionResolve', 'AsyncFunctionReject',\n 'AsyncGeneratorFunction', 'AsyncGenerator', 'EvalError', 'RangeError',\n 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError', 'InternalError',\n /* private brand */\n '<brand>',\n /* well known symbols */\n 'Symbol.toPrimitive', 'Symbol.iterator', 'Symbol.match', 'Symbol.matchAll',\n 'Symbol.replace', 'Symbol.search', 'Symbol.split', 'Symbol.toStringTag',\n 'Symbol.isConcatSpreadable', 'Symbol.hasInstance', 'Symbol.species',\n 'Symbol.unscopables', 'Symbol.asyncIterator',\n];\n\nfunction idx(name: string, from = 0): number {\n const i = predefinedAtomNames.indexOf(name, from);\n if (i < 0) throw new Error('missing predefined atom ' + name);\n return i + 1;\n}\n\n/* JS_ATOM_xxx constants (1-based, JS_ATOM_NULL = 0) */\nexport const JS_ATOM_null = 1;\nexport const JS_ATOM_false = idx('false');\nexport const JS_ATOM_true = idx('true');\nexport const JS_ATOM_if = idx('if');\nexport const JS_ATOM_else = idx('else');\nexport const JS_ATOM_return = idx('return');\nexport const JS_ATOM_var = idx('var');\nexport const JS_ATOM_this = idx('this');\nexport const JS_ATOM_delete = idx('delete');\nexport const JS_ATOM_void = idx('void');\nexport const JS_ATOM_typeof = idx('typeof');\nexport const JS_ATOM_new = idx('new');\nexport const JS_ATOM_in = idx('in');\nexport const JS_ATOM_instanceof = idx('instanceof');\nexport const JS_ATOM_do = idx('do');\nexport const JS_ATOM_while = idx('while');\nexport const JS_ATOM_for = idx('for');\nexport const JS_ATOM_break = idx('break');\nexport const JS_ATOM_continue = idx('continue');\nexport const JS_ATOM_switch = idx('switch');\nexport const JS_ATOM_case = idx('case');\nexport const JS_ATOM_default = idx('default');\nexport const JS_ATOM_throw = idx('throw');\nexport const JS_ATOM_try = idx('try');\nexport const JS_ATOM_catch = idx('catch');\nexport const JS_ATOM_finally = idx('finally');\nexport const JS_ATOM_function = idx('function');\nexport const JS_ATOM_debugger = idx('debugger');\nexport const JS_ATOM_with = idx('with');\nexport const JS_ATOM_class = idx('class');\nexport const JS_ATOM_const = idx('const');\nexport const JS_ATOM_enum = idx('enum');\nexport const JS_ATOM_export = idx('export');\nexport const JS_ATOM_extends = idx('extends');\nexport const JS_ATOM_import = idx('import');\nexport const JS_ATOM_super = idx('super');\nexport const JS_ATOM_implements = idx('implements');\nexport const JS_ATOM_interface = idx('interface');\nexport const JS_ATOM_let = idx('let');\nexport const JS_ATOM_package = idx('package');\nexport const JS_ATOM_private = idx('private');\nexport const JS_ATOM_protected = idx('protected');\nexport const JS_ATOM_public = idx('public');\nexport const JS_ATOM_static = idx('static');\nexport const JS_ATOM_yield = idx('yield');\nexport const JS_ATOM_await = idx('await');\nexport const JS_ATOM_empty_string = idx('');\nexport const JS_ATOM_length = idx('length');\nexport const JS_ATOM_fileName = idx('fileName');\nexport const JS_ATOM_lineNumber = idx('lineNumber');\nexport const JS_ATOM_columnNumber = idx('columnNumber');\nexport const JS_ATOM_message = idx('message');\nexport const JS_ATOM_cause = idx('cause');\nexport const JS_ATOM_errors = idx('errors');\nexport const JS_ATOM_stack = idx('stack');\nexport const JS_ATOM_name = idx('name');\nexport const JS_ATOM_toString = idx('toString');\nexport const JS_ATOM_toLocaleString = idx('toLocaleString');\nexport const JS_ATOM_valueOf = idx('valueOf');\nexport const JS_ATOM_eval = idx('eval');\nexport const JS_ATOM_prototype = idx('prototype');\nexport const JS_ATOM_constructor = idx('constructor');\nexport const JS_ATOM_configurable = idx('configurable');\nexport const JS_ATOM_writable = idx('writable');\nexport const JS_ATOM_enumerable = idx('enumerable');\nexport const JS_ATOM_value = idx('value');\nexport const JS_ATOM_get = idx('get');\nexport const JS_ATOM_set = idx('set');\nexport const JS_ATOM_of = idx('of');\nexport const JS_ATOM___proto__ = idx('__proto__');\nexport const JS_ATOM_undefined = idx('undefined');\nexport const JS_ATOM_number = idx('number');\nexport const JS_ATOM_boolean = idx('boolean');\nexport const JS_ATOM_string = idx('string');\nexport const JS_ATOM_object = idx('object');\nexport const JS_ATOM_symbol = idx('symbol');\nexport const JS_ATOM_integer = idx('integer');\nexport const JS_ATOM_unknown = idx('unknown');\nexport const JS_ATOM_arguments = idx('arguments');\nexport const JS_ATOM_callee = idx('callee');\nexport const JS_ATOM_caller = idx('caller');\nexport const JS_ATOM__eval_ = idx('<eval>');\nexport const JS_ATOM__ret_ = idx('<ret>');\nexport const JS_ATOM__var_ = idx('<var>');\nexport const JS_ATOM__arg_var_ = idx('<arg_var>');\nexport const JS_ATOM__with_ = idx('<with>');\nexport const JS_ATOM_lastIndex = idx('lastIndex');\nexport const JS_ATOM_target = idx('target');\nexport const JS_ATOM_index = idx('index');\nexport const JS_ATOM_input = idx('input');\nexport const JS_ATOM_defineProperties = idx('defineProperties');\nexport const JS_ATOM_apply = idx('apply');\nexport const JS_ATOM_join = idx('join');\nexport const JS_ATOM_concat = idx('concat');\nexport const JS_ATOM_split = idx('split');\nexport const JS_ATOM_construct = idx('construct');\nexport const JS_ATOM_getPrototypeOf = idx('getPrototypeOf');\nexport const JS_ATOM_setPrototypeOf = idx('setPrototypeOf');\nexport const JS_ATOM_isExtensible = idx('isExtensible');\nexport const JS_ATOM_preventExtensions = idx('preventExtensions');\nexport const JS_ATOM_has = idx('has');\nexport const JS_ATOM_deleteProperty = idx('deleteProperty');\nexport const JS_ATOM_defineProperty = idx('defineProperty');\nexport const JS_ATOM_getOwnPropertyDescriptor = idx('getOwnPropertyDescriptor');\nexport const JS_ATOM_ownKeys = idx('ownKeys');\nexport const JS_ATOM_add = idx('add');\nexport const JS_ATOM_done = idx('done');\nexport const JS_ATOM_next = idx('next');\nexport const JS_ATOM_values = idx('values');\nexport const JS_ATOM_source = idx('source');\nexport const JS_ATOM_flags = idx('flags');\nexport const JS_ATOM_global = idx('global');\nexport const JS_ATOM_unicode = idx('unicode');\nexport const JS_ATOM_raw = idx('raw');\nexport const JS_ATOM_new_target = idx('new.target');\nexport const JS_ATOM_this_active_func = idx('this.active_func');\nexport const JS_ATOM_home_object = idx('<home_object>');\nexport const JS_ATOM_computed_field = idx('<computed_field>');\nexport const JS_ATOM_static_computed_field = idx('<static_computed_field>');\nexport const JS_ATOM_class_fields_init = idx('<class_fields_init>');\nexport const JS_ATOM_brand = idx('<brand>');\nexport const JS_ATOM_hash_constructor = idx('#constructor');\nexport const JS_ATOM_as = idx('as');\nexport const JS_ATOM_from = idx('from');\nexport const JS_ATOM_meta = idx('meta');\nexport const JS_ATOM__default_ = idx('*default*');\nexport const JS_ATOM__star_ = idx('*');\nexport const JS_ATOM_Module = idx('Module');\nexport const JS_ATOM_then = idx('then');\nexport const JS_ATOM_resolve = idx('resolve');\nexport const JS_ATOM_reject = idx('reject');\nexport const JS_ATOM_promise = idx('promise');\nexport const JS_ATOM_proxy = idx('proxy');\nexport const JS_ATOM_revoke = idx('revoke');\nexport const JS_ATOM_async = idx('async');\nexport const JS_ATOM_exec = idx('exec');\nexport const JS_ATOM_groups = idx('groups');\nexport const JS_ATOM_indices = idx('indices');\nexport const JS_ATOM_status = idx('status');\nexport const JS_ATOM_reason = idx('reason');\nexport const JS_ATOM_globalThis = idx('globalThis');\nexport const JS_ATOM_bigint = idx('bigint');\nexport const JS_ATOM_minus_zero = idx('-0');\nexport const JS_ATOM_Infinity = idx('Infinity');\nexport const JS_ATOM_minus_Infinity = idx('-Infinity');\nexport const JS_ATOM_NaN = idx('NaN');\nexport const JS_ATOM_not_equal = idx('not-equal');\nexport const JS_ATOM_timed_out = idx('timed-out');\nexport const JS_ATOM_ok = idx('ok');\nexport const JS_ATOM_toJSON = idx('toJSON');\nexport const JS_ATOM_Object = idx('Object');\nexport const JS_ATOM_Array = idx('Array');\nexport const JS_ATOM_Error = idx('Error');\nexport const JS_ATOM_Number = idx('Number');\nexport const JS_ATOM_String = idx('String');\nexport const JS_ATOM_Boolean = idx('Boolean');\nexport const JS_ATOM_Symbol = idx('Symbol');\nexport const JS_ATOM_Arguments = idx('Arguments');\nexport const JS_ATOM_Math = idx('Math');\nexport const JS_ATOM_JSON = idx('JSON');\nexport const JS_ATOM_Date = idx('Date');\nexport const JS_ATOM_Function = idx('Function');\nexport const JS_ATOM_GeneratorFunction = idx('GeneratorFunction');\nexport const JS_ATOM_ForInIterator = idx('ForInIterator');\nexport const JS_ATOM_RegExp = idx('RegExp');\nexport const JS_ATOM_ArrayBuffer = idx('ArrayBuffer');\nexport const JS_ATOM_SharedArrayBuffer = idx('SharedArrayBuffer');\nexport const JS_ATOM_Uint8ClampedArray = idx('Uint8ClampedArray');\nexport const JS_ATOM_Int8Array = idx('Int8Array');\nexport const JS_ATOM_Uint8Array = idx('Uint8Array');\nexport const JS_ATOM_Int16Array = idx('Int16Array');\nexport const JS_ATOM_Uint16Array = idx('Uint16Array');\nexport const JS_ATOM_Int32Array = idx('Int32Array');\nexport const JS_ATOM_Uint32Array = idx('Uint32Array');\nexport const JS_ATOM_BigInt64Array = idx('BigInt64Array');\nexport const JS_ATOM_BigUint64Array = idx('BigUint64Array');\nexport const JS_ATOM_Float32Array = idx('Float32Array');\nexport const JS_ATOM_Float64Array = idx('Float64Array');\nexport const JS_ATOM_DataView = idx('DataView');\nexport const JS_ATOM_BigInt = idx('BigInt');\nexport const JS_ATOM_WeakRef = idx('WeakRef');\nexport const JS_ATOM_FinalizationRegistry = idx('FinalizationRegistry');\nexport const JS_ATOM_Map = idx('Map');\nexport const JS_ATOM_Set = idx('Set');\nexport const JS_ATOM_WeakMap = idx('WeakMap');\nexport const JS_ATOM_WeakSet = idx('WeakSet');\nexport const JS_ATOM_Map_Iterator = idx('Map Iterator');\nexport const JS_ATOM_Set_Iterator = idx('Set Iterator');\nexport const JS_ATOM_Array_Iterator = idx('Array Iterator');\nexport const JS_ATOM_String_Iterator = idx('String Iterator');\nexport const JS_ATOM_RegExp_String_Iterator = idx('RegExp String Iterator');\nexport const JS_ATOM_Generator = idx('Generator');\nexport const JS_ATOM_Proxy = idx('Proxy');\nexport const JS_ATOM_Promise = idx('Promise');\nexport const JS_ATOM_PromiseResolveFunction = idx('PromiseResolveFunction');\nexport const JS_ATOM_PromiseRejectFunction = idx('PromiseRejectFunction');\nexport const JS_ATOM_AsyncFunction = idx('AsyncFunction');\nexport const JS_ATOM_AsyncFunctionResolve = idx('AsyncFunctionResolve');\nexport const JS_ATOM_AsyncFunctionReject = idx('AsyncFunctionReject');\nexport const JS_ATOM_AsyncGeneratorFunction = idx('AsyncGeneratorFunction');\nexport const JS_ATOM_AsyncGenerator = idx('AsyncGenerator');\nexport const JS_ATOM_EvalError = idx('EvalError');\nexport const JS_ATOM_RangeError = idx('RangeError');\nexport const JS_ATOM_ReferenceError = idx('ReferenceError');\nexport const JS_ATOM_SyntaxError = idx('SyntaxError');\nexport const JS_ATOM_TypeError = idx('TypeError');\nexport const JS_ATOM_URIError = idx('URIError');\nexport const JS_ATOM_InternalError = idx('InternalError');\nexport const JS_ATOM_Private_brand = idx('<brand>', JS_ATOM_brand);\nexport const JS_ATOM_Symbol_toPrimitive = idx('Symbol.toPrimitive');\nexport const JS_ATOM_Symbol_iterator = idx('Symbol.iterator');\nexport const JS_ATOM_Symbol_match = idx('Symbol.match');\nexport const JS_ATOM_Symbol_matchAll = idx('Symbol.matchAll');\nexport const JS_ATOM_Symbol_replace = idx('Symbol.replace');\nexport const JS_ATOM_Symbol_search = idx('Symbol.search');\nexport const JS_ATOM_Symbol_split = idx('Symbol.split');\nexport const JS_ATOM_Symbol_toStringTag = idx('Symbol.toStringTag');\nexport const JS_ATOM_Symbol_isConcatSpreadable = idx('Symbol.isConcatSpreadable');\nexport const JS_ATOM_Symbol_hasInstance = idx('Symbol.hasInstance');\nexport const JS_ATOM_Symbol_species = idx('Symbol.species');\nexport const JS_ATOM_Symbol_unscopables = idx('Symbol.unscopables');\nexport const JS_ATOM_Symbol_asyncIterator = idx('Symbol.asyncIterator');\nexport const JS_ATOM_END = predefinedAtomNames.length + 1;\n\n/* atom types */\nexport const JS_ATOM_TYPE_STRING = 1;\nexport const JS_ATOM_TYPE_GLOBAL_SYMBOL = 2;\nexport const JS_ATOM_TYPE_SYMBOL = 3;\nexport const JS_ATOM_TYPE_PRIVATE = 4;\n\nexport const JS_ATOM_TAG_INT = 0x80000000;\nexport const JS_ATOM_MAX_INT = 0x7fffffff;\n\nexport function __JS_AtomIsTaggedInt(v: JSAtom): boolean {\n return v >= JS_ATOM_TAG_INT;\n}\nexport function __JS_AtomFromUInt32(v: number): JSAtom {\n return v + JS_ATOM_TAG_INT;\n}\nexport function __JS_AtomToUInt32(atom: JSAtom): number {\n return atom - JS_ATOM_TAG_INT;\n}\n\n/* A symbol value. Each symbol has its own atom (not interned by name\n unless it is a global symbol created with Symbol.for()). */\n/* Symbol atoms are host symbols. The well-known symbols are the host's own\n (they are shared between realms by the specification); other symbol atoms\n are fresh host symbols created by Symbol(description). */\nexport function js_well_known_symbol(name: string): symbol | null {\n if (!name.startsWith('Symbol.')) return null;\n const s = (Symbol as any)[name.slice(7)];\n return typeof s === 'symbol' ? s : null;\n}\n\n/* returns -1 if the string is not a canonical array index */\nexport function is_num_string(str: string): number {\n const len = str.length;\n if (len === 0 || len > 10) return -1;\n const c0 = str.charCodeAt(0);\n if (c0 < 48 || c0 > 57) return -1;\n if (c0 === 48) return len === 1 ? 0 : -1;\n let n = 0;\n for (let i = 0; i < len; i++) {\n const c = str.charCodeAt(i);\n if (c < 48 || c > 57) return -1;\n n = n * 10 + (c - 48);\n }\n if (n > JS_ATOM_MAX_INT) return -1;\n return n;\n}\n\nexport class AtomTable {\n /* index: atom - 1 */\n private names: (string | symbol)[] = [];\n private types: number[] = [];\n private strMap = new Map<string, JSAtom>();\n private symMap = new Map<symbol, JSAtom>();\n\n constructor() {\n for (let i = 0; i < predefinedAtomNames.length; i++) {\n const name = predefinedAtomNames[i];\n const atom = i + 1;\n let type: number;\n if (atom === JS_ATOM_Private_brand) type = JS_ATOM_TYPE_PRIVATE;\n else if (atom >= JS_ATOM_Symbol_toPrimitive) type = JS_ATOM_TYPE_SYMBOL;\n else type = JS_ATOM_TYPE_STRING;\n if (type === JS_ATOM_TYPE_STRING) {\n this.names.push(name);\n this.strMap.set(name, atom);\n } else {\n const sym = js_well_known_symbol(name) ?? Symbol(name);\n this.names.push(sym);\n this.symMap.set(sym, atom);\n }\n this.types.push(type);\n }\n }\n\n /* string atom. If the string is a canonical array index, returns a\n tagged int atom. */\n newAtomStr(str: string): JSAtom {\n const n = is_num_string(str);\n if (n >= 0) return __JS_AtomFromUInt32(n);\n let atom = this.strMap.get(str);\n if (atom === undefined) {\n atom = this.names.length + 1;\n this.names.push(str);\n this.types.push(JS_ATOM_TYPE_STRING);\n this.strMap.set(str, atom);\n }\n return atom;\n }\n\n newAtomUInt32(n: number): JSAtom {\n if (n <= JS_ATOM_MAX_INT) return __JS_AtomFromUInt32(n);\n return this.newAtomStr(String(n));\n }\n\n /* create a new (unique) symbol atom */\n newSymbol(description: string | undefined, atom_type: number): symbol {\n /* registered symbols are shared with the host registry (Symbol.keyFor) */\n const sym = (atom_type === JS_ATOM_TYPE_GLOBAL_SYMBOL) ? Symbol.for(description ?? '') : Symbol(description);\n const existing = this.symMap.get(sym);\n if (existing !== undefined) return sym;\n const atom = this.names.length + 1;\n this.names.push(sym);\n this.types.push(atom_type);\n this.symMap.set(sym, atom);\n return sym;\n }\n\n /* atom of an existing host symbol (registered on first use) */\n symbolToAtom(sym: symbol): JSAtom {\n let atom = this.symMap.get(sym);\n if (atom === undefined) {\n atom = this.names.length + 1;\n this.names.push(sym);\n this.types.push(Symbol.keyFor(sym) !== undefined ? JS_ATOM_TYPE_GLOBAL_SYMBOL : JS_ATOM_TYPE_SYMBOL);\n this.symMap.set(sym, atom);\n }\n return atom;\n }\n\n getType(atom: JSAtom): number {\n if (__JS_AtomIsTaggedInt(atom)) return JS_ATOM_TYPE_STRING;\n return this.types[atom - 1];\n }\n\n isString(atom: JSAtom): boolean {\n return this.getType(atom) === JS_ATOM_TYPE_STRING;\n }\n\n isSymbol(atom: JSAtom): boolean {\n return !__JS_AtomIsTaggedInt(atom) && this.types[atom - 1] !== JS_ATOM_TYPE_STRING;\n }\n\n getSymbol(atom: JSAtom): symbol {\n return this.names[atom - 1] as symbol;\n }\n\n /* host property key of an atom: number (array index), string or symbol */\n toKey(atom: JSAtom): string | number | symbol {\n if (__JS_AtomIsTaggedInt(atom)) return __JS_AtomToUInt32(atom);\n return this.names[atom - 1];\n }\n\n /* string of a string atom or the description of a symbol */\n toStr(atom: JSAtom): string {\n if (__JS_AtomIsTaggedInt(atom)) return String(__JS_AtomToUInt32(atom));\n const v = this.names[atom - 1];\n if (typeof v === 'string') return v;\n return v.description === undefined ? '' : v.description;\n }\n\n /* for error messages: \"Symbol(desc)\" */\n toDisplayStr(atom: JSAtom): string {\n if (!__JS_AtomIsTaggedInt(atom) && (atom <= 0 || atom > this.names.length)) return `<bad atom ${atom}>`;\n if (this.isSymbol(atom)) {\n const sym = this.getSymbol(atom);\n return 'Symbol(' + (sym.description ?? '') + ')';\n }\n return this.toStr(atom);\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import { JSContext, JSValue } from '../quickjs.ts';
2
+ export declare function js_array_constructor(ctx: JSContext, new_target: JSValue, argv: JSValue[]): JSValue;
3
+ export declare function JS_AddIntrinsicArray(ctx: JSContext): void;