@swf2es/runtime 0.1.16 → 0.1.17

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 (56) hide show
  1. package/dist/avm2/amf.d.ts +1 -1
  2. package/dist/avm2/amf.d.ts.map +1 -1
  3. package/dist/avm2/amf.js +4 -3
  4. package/dist/avm2/amf.js.map +1 -1
  5. package/dist/avm2/as3-types.d.ts +25 -0
  6. package/dist/avm2/as3-types.d.ts.map +1 -0
  7. package/dist/avm2/as3-types.js +9 -0
  8. package/dist/avm2/as3-types.js.map +1 -0
  9. package/dist/avm2/builtin-types.generated.d.ts +553 -0
  10. package/dist/avm2/builtin-types.generated.d.ts.map +1 -0
  11. package/dist/avm2/builtin-types.generated.js +11 -0
  12. package/dist/avm2/builtin-types.generated.js.map +1 -0
  13. package/dist/avm2/classes.d.ts.map +1 -1
  14. package/dist/avm2/classes.js +10 -3
  15. package/dist/avm2/classes.js.map +1 -1
  16. package/dist/avm2/errors.d.ts.map +1 -1
  17. package/dist/avm2/errors.js +3 -1
  18. package/dist/avm2/errors.js.map +1 -1
  19. package/dist/avm2/index.d.ts +3 -0
  20. package/dist/avm2/index.d.ts.map +1 -1
  21. package/dist/avm2/index.js +2 -0
  22. package/dist/avm2/index.js.map +1 -1
  23. package/dist/avm2/natives/array.js +1 -1
  24. package/dist/avm2/natives/array.js.map +1 -1
  25. package/dist/avm2/natives/bytearray.d.ts.map +1 -1
  26. package/dist/avm2/natives/bytearray.js +6 -11
  27. package/dist/avm2/natives/bytearray.js.map +1 -1
  28. package/dist/avm2/natives/describe.js +6 -1
  29. package/dist/avm2/natives/describe.js.map +1 -1
  30. package/dist/avm2/natives/object.d.ts.map +1 -1
  31. package/dist/avm2/natives/object.js +5 -2
  32. package/dist/avm2/natives/object.js.map +1 -1
  33. package/dist/avm2/natives/vector.js +1 -1
  34. package/dist/avm2/natives/vector.js.map +1 -1
  35. package/dist/avm2/runtime.d.ts +39 -1
  36. package/dist/avm2/runtime.d.ts.map +1 -1
  37. package/dist/avm2/runtime.js +106 -20
  38. package/dist/avm2/runtime.js.map +1 -1
  39. package/dist/avm2/traits.d.ts +6 -0
  40. package/dist/avm2/traits.d.ts.map +1 -1
  41. package/dist/avm2/traits.js +17 -0
  42. package/dist/avm2/traits.js.map +1 -1
  43. package/package.json +2 -2
  44. package/src/avm2/amf.ts +4 -3
  45. package/src/avm2/as3-types.ts +41 -0
  46. package/src/avm2/builtin-types.generated.ts +619 -0
  47. package/src/avm2/classes.ts +10 -3
  48. package/src/avm2/errors.ts +3 -1
  49. package/src/avm2/index.ts +5 -0
  50. package/src/avm2/natives/array.ts +1 -1
  51. package/src/avm2/natives/bytearray.ts +6 -14
  52. package/src/avm2/natives/describe.ts +8 -1
  53. package/src/avm2/natives/object.ts +5 -2
  54. package/src/avm2/natives/vector.ts +1 -1
  55. package/src/avm2/runtime.ts +127 -27
  56. package/src/avm2/traits.ts +20 -0
@@ -0,0 +1,619 @@
1
+ // TypeScript declarations of avmplus' builtin.abc's classes: each one's public
2
+ // members, as natives reach them through Runtime.prop, setProp and callProp.
3
+ // Generated by tools/as3-types.ts --update, not to be edited, from
4
+ // builtin-library.ts.
5
+ //
6
+ // They describe avmplus' API, and are under its licence:
7
+ // This Source Code Form is subject to the terms of the Mozilla Public
8
+ // License, v. 2.0. If a copy of the MPL was not distributed with this
9
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/.
10
+
11
+ import type { Ref } from "./as3-types.js";
12
+ import type { Value } from "./descriptors.js";
13
+
14
+ /** Each class's instances' public members, by the class's qualified name. */
15
+ export interface BuiltinClasses {
16
+ "ArgumentError": As3_ArgumentError;
17
+ "Array": As3_Array;
18
+ "Boolean": As3_Boolean;
19
+ "Class": As3_Class;
20
+ "Date": As3_Date;
21
+ "DefinitionError": As3_DefinitionError;
22
+ "Error": As3_Error;
23
+ "EvalError": As3_EvalError;
24
+ "Function": As3_Function;
25
+ "JSON": As3_JSON;
26
+ "Math": As3_Math;
27
+ "Namespace": As3_Namespace;
28
+ "Number": As3_Number;
29
+ "Object": As3_Object;
30
+ "QName": As3_QName;
31
+ "RangeError": As3_RangeError;
32
+ "ReferenceError": As3_ReferenceError;
33
+ "RegExp": As3_RegExp;
34
+ "SecurityError": As3_SecurityError;
35
+ "String": As3_String;
36
+ "SyntaxError": As3_SyntaxError;
37
+ "TypeError": As3_TypeError;
38
+ "URIError": As3_URIError;
39
+ "UninitializedError": As3_UninitializedError;
40
+ "VerifyError": As3_VerifyError;
41
+ "XML": As3_XML;
42
+ "XMLList": As3_XMLList;
43
+ "__AS3__.vec::Vector": As3___AS3___vec_Vector;
44
+ "__AS3__.vec::Vector$double": As3___AS3___vec_Vector$double;
45
+ "__AS3__.vec::Vector$int": As3___AS3___vec_Vector$int;
46
+ "__AS3__.vec::Vector$object": As3___AS3___vec_Vector$object;
47
+ "__AS3__.vec::Vector$uint": As3___AS3___vec_Vector$uint;
48
+ "flash.concurrent::Condition": As3_flash_concurrent_Condition;
49
+ "flash.concurrent::Mutex": As3_flash_concurrent_Mutex;
50
+ "flash.errors::EOFError": As3_flash_errors_EOFError;
51
+ "flash.errors::IOError": As3_flash_errors_IOError;
52
+ "flash.errors::IllegalOperationError": As3_flash_errors_IllegalOperationError;
53
+ "flash.errors::MemoryError": As3_flash_errors_MemoryError;
54
+ "flash.net::IDynamicPropertyOutput": As3_flash_net_IDynamicPropertyOutput;
55
+ "flash.net::IDynamicPropertyWriter": As3_flash_net_IDynamicPropertyWriter;
56
+ "flash.net::ObjectEncoding": As3_flash_net_ObjectEncoding;
57
+ "flash.utils::ByteArray": As3_flash_utils_ByteArray;
58
+ "flash.utils::CompressionAlgorithm": As3_flash_utils_CompressionAlgorithm;
59
+ "flash.utils::Dictionary": As3_flash_utils_Dictionary;
60
+ "flash.utils::IDataInput": As3_flash_utils_IDataInput;
61
+ "flash.utils::IDataOutput": As3_flash_utils_IDataOutput;
62
+ "flash.utils::IExternalizable": As3_flash_utils_IExternalizable;
63
+ "flash.utils::Proxy": As3_flash_utils_Proxy;
64
+ "int": As3_int;
65
+ "uint": As3_uint;
66
+ }
67
+
68
+ /** Each class object's public members, its static ones, by the class's qualified name. */
69
+ export interface BuiltinStatics {
70
+ "ArgumentError": As3_ArgumentError$;
71
+ "Array": As3_Array$;
72
+ "Boolean": As3_Boolean$;
73
+ "Class": As3_Class$;
74
+ "Date": As3_Date$;
75
+ "DefinitionError": As3_DefinitionError$;
76
+ "Error": As3_Error$;
77
+ "EvalError": As3_EvalError$;
78
+ "Function": As3_Function$;
79
+ "JSON": As3_JSON$;
80
+ "Math": As3_Math$;
81
+ "Namespace": As3_Namespace$;
82
+ "Number": As3_Number$;
83
+ "Object": As3_Object$;
84
+ "QName": As3_QName$;
85
+ "RangeError": As3_RangeError$;
86
+ "ReferenceError": As3_ReferenceError$;
87
+ "RegExp": As3_RegExp$;
88
+ "SecurityError": As3_SecurityError$;
89
+ "String": As3_String$;
90
+ "SyntaxError": As3_SyntaxError$;
91
+ "TypeError": As3_TypeError$;
92
+ "URIError": As3_URIError$;
93
+ "UninitializedError": As3_UninitializedError$;
94
+ "VerifyError": As3_VerifyError$;
95
+ "XML": As3_XML$;
96
+ "XMLList": As3_XMLList$;
97
+ "__AS3__.vec::Vector": As3___AS3___vec_Vector$;
98
+ "__AS3__.vec::Vector$double": As3___AS3___vec_Vector$double$;
99
+ "__AS3__.vec::Vector$int": As3___AS3___vec_Vector$int$;
100
+ "__AS3__.vec::Vector$object": As3___AS3___vec_Vector$object$;
101
+ "__AS3__.vec::Vector$uint": As3___AS3___vec_Vector$uint$;
102
+ "flash.concurrent::Condition": As3_flash_concurrent_Condition$;
103
+ "flash.concurrent::Mutex": As3_flash_concurrent_Mutex$;
104
+ "flash.errors::EOFError": As3_flash_errors_EOFError$;
105
+ "flash.errors::IOError": As3_flash_errors_IOError$;
106
+ "flash.errors::IllegalOperationError": As3_flash_errors_IllegalOperationError$;
107
+ "flash.errors::MemoryError": As3_flash_errors_MemoryError$;
108
+ "flash.net::IDynamicPropertyOutput": As3_flash_net_IDynamicPropertyOutput$;
109
+ "flash.net::IDynamicPropertyWriter": As3_flash_net_IDynamicPropertyWriter$;
110
+ "flash.net::ObjectEncoding": As3_flash_net_ObjectEncoding$;
111
+ "flash.utils::ByteArray": As3_flash_utils_ByteArray$;
112
+ "flash.utils::CompressionAlgorithm": As3_flash_utils_CompressionAlgorithm$;
113
+ "flash.utils::Dictionary": As3_flash_utils_Dictionary$;
114
+ "flash.utils::IDataInput": As3_flash_utils_IDataInput$;
115
+ "flash.utils::IDataOutput": As3_flash_utils_IDataOutput$;
116
+ "flash.utils::IExternalizable": As3_flash_utils_IExternalizable$;
117
+ "flash.utils::Proxy": As3_flash_utils_Proxy$;
118
+ "int": As3_int$;
119
+ "uint": As3_uint$;
120
+ }
121
+
122
+ export interface As3_ArgumentError extends As3_Error {}
123
+
124
+ export interface As3_ArgumentError$ {
125
+ readonly length: number;
126
+ }
127
+
128
+ export interface As3_Array extends As3_Object {
129
+ length: number;
130
+ }
131
+
132
+ export interface As3_Array$ {
133
+ readonly CASEINSENSITIVE: number;
134
+ readonly DESCENDING: number;
135
+ readonly NUMERIC: number;
136
+ readonly RETURNINDEXEDARRAY: number;
137
+ readonly UNIQUESORT: number;
138
+ readonly length: number;
139
+ }
140
+
141
+ export interface As3_Boolean extends As3_Object {}
142
+
143
+ export interface As3_Boolean$ {
144
+ readonly length: number;
145
+ }
146
+
147
+ export interface As3_Class extends As3_Object {
148
+ readonly prototype: Value;
149
+ }
150
+
151
+ export interface As3_Class$ {
152
+ readonly length: number;
153
+ }
154
+
155
+ export interface As3_Date extends As3_Object {
156
+ date: number;
157
+ dateUTC: number;
158
+ readonly day: number;
159
+ readonly dayUTC: number;
160
+ fullYear: number;
161
+ fullYearUTC: number;
162
+ hours: number;
163
+ hoursUTC: number;
164
+ milliseconds: number;
165
+ millisecondsUTC: number;
166
+ minutes: number;
167
+ minutesUTC: number;
168
+ month: number;
169
+ monthUTC: number;
170
+ seconds: number;
171
+ secondsUTC: number;
172
+ time: number;
173
+ readonly timezoneOffset: number;
174
+ }
175
+
176
+ export interface As3_Date$ {
177
+ UTC(arg0: Value, arg1: Value, arg2?: Value, arg3?: Value, arg4?: Value, arg5?: Value, arg6?: Value, ...rest: Value[]): number;
178
+ readonly length: number;
179
+ parse(arg0: Value): number;
180
+ }
181
+
182
+ export interface As3_DefinitionError extends As3_Error {}
183
+
184
+ export interface As3_DefinitionError$ {
185
+ readonly length: number;
186
+ }
187
+
188
+ export interface As3_Error extends As3_Object {
189
+ readonly errorID: number;
190
+ getStackTrace(): string | null;
191
+ message: Value;
192
+ name: Value;
193
+ }
194
+
195
+ export interface As3_Error$ {
196
+ getErrorMessage(arg0: number): string | null;
197
+ readonly length: number;
198
+ throwError(arg0: Ref<As3_Class> | null, arg1: number, ...rest: Value[]): Value;
199
+ }
200
+
201
+ export interface As3_EvalError extends As3_Error {}
202
+
203
+ export interface As3_EvalError$ {
204
+ readonly length: number;
205
+ }
206
+
207
+ export interface As3_Function extends As3_Object {
208
+ readonly length: number;
209
+ prototype: Value;
210
+ }
211
+
212
+ export interface As3_Function$ {
213
+ createEmptyFunction(): Ref<As3_Function> | null;
214
+ readonly length: number;
215
+ }
216
+
217
+ export interface As3_JSON extends As3_Object {}
218
+
219
+ export interface As3_JSON$ {
220
+ parse(arg0: string | null, arg1?: Ref<As3_Function> | null): Value;
221
+ stringify(arg0: Value, arg1?: Value, arg2?: Value): string | null;
222
+ }
223
+
224
+ export interface As3_Math extends As3_Object {}
225
+
226
+ export interface As3_Math$ {
227
+ readonly E: number;
228
+ readonly LN10: number;
229
+ readonly LN2: number;
230
+ readonly LOG10E: number;
231
+ readonly LOG2E: number;
232
+ readonly PI: number;
233
+ readonly SQRT1_2: number;
234
+ readonly SQRT2: number;
235
+ abs(arg0: number): number;
236
+ acos(arg0: number): number;
237
+ asin(arg0: number): number;
238
+ atan(arg0: number): number;
239
+ atan2(arg0: number, arg1: number): number;
240
+ ceil(arg0: number): number;
241
+ cos(arg0: number): number;
242
+ exp(arg0: number): number;
243
+ floor(arg0: number): number;
244
+ log(arg0: number): number;
245
+ max(arg0?: number, arg1?: number, ...rest: Value[]): number;
246
+ min(arg0?: number, arg1?: number, ...rest: Value[]): number;
247
+ pow(arg0: number, arg1: number): number;
248
+ random(): number;
249
+ round(arg0: number): number;
250
+ sin(arg0: number): number;
251
+ sqrt(arg0: number): number;
252
+ tan(arg0: number): number;
253
+ }
254
+
255
+ export interface As3_Namespace extends As3_Object {
256
+ readonly prefix: Value;
257
+ readonly uri: string | null;
258
+ }
259
+
260
+ export interface As3_Namespace$ {
261
+ readonly length: Value;
262
+ }
263
+
264
+ export interface As3_Number extends As3_Object {}
265
+
266
+ export interface As3_Number$ {
267
+ readonly E: number;
268
+ readonly LN10: number;
269
+ readonly LN2: number;
270
+ readonly LOG10E: number;
271
+ readonly LOG2E: number;
272
+ readonly MAX_VALUE: number;
273
+ readonly MIN_VALUE: number;
274
+ readonly NEGATIVE_INFINITY: number;
275
+ readonly NaN: number;
276
+ readonly PI: number;
277
+ readonly POSITIVE_INFINITY: number;
278
+ readonly SQRT1_2: number;
279
+ readonly SQRT2: number;
280
+ abs(arg0: number): number;
281
+ acos(arg0: number): number;
282
+ asin(arg0: number): number;
283
+ atan(arg0: number): number;
284
+ atan2(arg0: number, arg1: number): number;
285
+ ceil(arg0: number): number;
286
+ cos(arg0: number): number;
287
+ exp(arg0: number): number;
288
+ floor(arg0: number): number;
289
+ readonly length: number;
290
+ log(arg0: number): number;
291
+ max(arg0?: number, arg1?: number, ...rest: Value[]): number;
292
+ min(arg0?: number, arg1?: number, ...rest: Value[]): number;
293
+ pow(arg0: number, arg1: number): number;
294
+ random(): number;
295
+ round(arg0: number): number;
296
+ sin(arg0: number): number;
297
+ sqrt(arg0: number): number;
298
+ tan(arg0: number): number;
299
+ }
300
+
301
+ export interface As3_Object {}
302
+
303
+ export interface As3_Object$ {
304
+ _init(): Value;
305
+ readonly length: number;
306
+ }
307
+
308
+ export interface As3_QName extends As3_Object {
309
+ readonly localName: string | null;
310
+ readonly uri: Value;
311
+ }
312
+
313
+ export interface As3_QName$ {
314
+ readonly length: Value;
315
+ }
316
+
317
+ export interface As3_RangeError extends As3_Error {}
318
+
319
+ export interface As3_RangeError$ {
320
+ readonly length: number;
321
+ }
322
+
323
+ export interface As3_ReferenceError extends As3_Error {}
324
+
325
+ export interface As3_ReferenceError$ {
326
+ readonly length: number;
327
+ }
328
+
329
+ export interface As3_RegExp extends As3_Object {
330
+ readonly dotall: boolean;
331
+ readonly extended: boolean;
332
+ readonly global: boolean;
333
+ readonly ignoreCase: boolean;
334
+ lastIndex: number;
335
+ readonly multiline: boolean;
336
+ readonly source: string | null;
337
+ }
338
+
339
+ export interface As3_RegExp$ {
340
+ readonly length: number;
341
+ }
342
+
343
+ export interface As3_SecurityError extends As3_Error {}
344
+
345
+ export interface As3_SecurityError$ {
346
+ readonly length: number;
347
+ }
348
+
349
+ export interface As3_String extends As3_Object {
350
+ readonly length: number;
351
+ }
352
+
353
+ export interface As3_String$ {
354
+ readonly length: number;
355
+ }
356
+
357
+ export interface As3_SyntaxError extends As3_Error {}
358
+
359
+ export interface As3_SyntaxError$ {
360
+ readonly length: number;
361
+ }
362
+
363
+ export interface As3_TypeError extends As3_Error {}
364
+
365
+ export interface As3_TypeError$ {
366
+ readonly length: number;
367
+ }
368
+
369
+ export interface As3_URIError extends As3_Error {}
370
+
371
+ export interface As3_URIError$ {
372
+ readonly length: number;
373
+ }
374
+
375
+ export interface As3_UninitializedError extends As3_Error {}
376
+
377
+ export interface As3_UninitializedError$ {
378
+ readonly length: number;
379
+ }
380
+
381
+ export interface As3_VerifyError extends As3_Error {}
382
+
383
+ export interface As3_VerifyError$ {
384
+ readonly length: number;
385
+ }
386
+
387
+ export interface As3_XML extends As3_Object {}
388
+
389
+ export interface As3_XML$ {
390
+ ignoreComments: boolean;
391
+ ignoreProcessingInstructions: boolean;
392
+ ignoreWhitespace: boolean;
393
+ readonly length: Value;
394
+ prettyIndent: number;
395
+ prettyPrinting: boolean;
396
+ }
397
+
398
+ export interface As3_XMLList extends As3_Object {}
399
+
400
+ export interface As3_XMLList$ {
401
+ readonly length: Value;
402
+ }
403
+
404
+ export interface As3___AS3___vec_Vector extends As3_Object {}
405
+
406
+ export interface As3___AS3___vec_Vector$ {}
407
+
408
+ export interface As3___AS3___vec_Vector$double extends As3_Object {
409
+ fixed: boolean;
410
+ length: number;
411
+ }
412
+
413
+ export interface As3___AS3___vec_Vector$double$ {}
414
+
415
+ export interface As3___AS3___vec_Vector$int extends As3_Object {
416
+ fixed: boolean;
417
+ length: number;
418
+ }
419
+
420
+ export interface As3___AS3___vec_Vector$int$ {}
421
+
422
+ export interface As3___AS3___vec_Vector$object extends As3_Object {
423
+ fixed: boolean;
424
+ length: number;
425
+ }
426
+
427
+ export interface As3___AS3___vec_Vector$object$ {}
428
+
429
+ export interface As3___AS3___vec_Vector$uint extends As3_Object {
430
+ fixed: boolean;
431
+ length: number;
432
+ }
433
+
434
+ export interface As3___AS3___vec_Vector$uint$ {}
435
+
436
+ export interface As3_flash_concurrent_Condition extends As3_Object {
437
+ readonly mutex: Ref<As3_flash_concurrent_Mutex> | null;
438
+ notify(): void;
439
+ notifyAll(): void;
440
+ wait(arg0?: number): boolean;
441
+ }
442
+
443
+ export interface As3_flash_concurrent_Condition$ {
444
+ readonly isSupported: boolean;
445
+ }
446
+
447
+ export interface As3_flash_concurrent_Mutex extends As3_Object {
448
+ lock(): void;
449
+ tryLock(): boolean;
450
+ unlock(): void;
451
+ }
452
+
453
+ export interface As3_flash_concurrent_Mutex$ {
454
+ readonly isSupported: boolean;
455
+ }
456
+
457
+ export interface As3_flash_errors_EOFError extends As3_flash_errors_IOError {}
458
+
459
+ export interface As3_flash_errors_EOFError$ {}
460
+
461
+ export interface As3_flash_errors_IOError extends As3_Error {}
462
+
463
+ export interface As3_flash_errors_IOError$ {}
464
+
465
+ export interface As3_flash_errors_IllegalOperationError extends As3_Error {}
466
+
467
+ export interface As3_flash_errors_IllegalOperationError$ {}
468
+
469
+ export interface As3_flash_errors_MemoryError extends As3_Error {}
470
+
471
+ export interface As3_flash_errors_MemoryError$ {}
472
+
473
+ export interface As3_flash_net_IDynamicPropertyOutput {
474
+ writeDynamicProperty(arg0: string | null, arg1: Value): void;
475
+ }
476
+
477
+ export interface As3_flash_net_IDynamicPropertyOutput$ {}
478
+
479
+ export interface As3_flash_net_IDynamicPropertyWriter {
480
+ writeDynamicProperties(arg0: Value, arg1: Ref<As3_flash_net_IDynamicPropertyOutput> | null): void;
481
+ }
482
+
483
+ export interface As3_flash_net_IDynamicPropertyWriter$ {}
484
+
485
+ export interface As3_flash_net_ObjectEncoding extends As3_Object {}
486
+
487
+ export interface As3_flash_net_ObjectEncoding$ {
488
+ readonly AMF0: number;
489
+ readonly AMF3: number;
490
+ readonly DEFAULT: number;
491
+ dynamicPropertyWriter: Ref<As3_flash_net_IDynamicPropertyWriter> | null;
492
+ }
493
+
494
+ export interface As3_flash_utils_ByteArray extends As3_Object {
495
+ atomicCompareAndSwapIntAt(arg0: number, arg1: number, arg2: number): number;
496
+ atomicCompareAndSwapLength(arg0: number, arg1: number): number;
497
+ readonly bytesAvailable: number;
498
+ clear(): void;
499
+ compress(arg0?: string | null): void;
500
+ deflate(): void;
501
+ endian: string | null;
502
+ inflate(): void;
503
+ length: number;
504
+ objectEncoding: number;
505
+ position: number;
506
+ readBoolean(): boolean;
507
+ readByte(): number;
508
+ readBytes(arg0: Ref<As3_flash_utils_ByteArray> | null, arg1?: number, arg2?: number): void;
509
+ readDouble(): number;
510
+ readFloat(): number;
511
+ readInt(): number;
512
+ readMultiByte(arg0: number, arg1: string | null): string | null;
513
+ readObject(): Value;
514
+ readShort(): number;
515
+ readUTF(): string | null;
516
+ readUTFBytes(arg0: number): string | null;
517
+ readUnsignedByte(): number;
518
+ readUnsignedInt(): number;
519
+ readUnsignedShort(): number;
520
+ shareable: boolean;
521
+ toString(): string | null;
522
+ uncompress(arg0?: string | null): void;
523
+ writeBoolean(arg0: boolean): void;
524
+ writeByte(arg0: number): void;
525
+ writeBytes(arg0: Ref<As3_flash_utils_ByteArray> | null, arg1?: number, arg2?: number): void;
526
+ writeDouble(arg0: number): void;
527
+ writeFloat(arg0: number): void;
528
+ writeInt(arg0: number): void;
529
+ writeMultiByte(arg0: string | null, arg1: string | null): void;
530
+ writeObject(arg0: Value): void;
531
+ writeShort(arg0: number): void;
532
+ writeUTF(arg0: string | null): void;
533
+ writeUTFBytes(arg0: string | null): void;
534
+ writeUnsignedInt(arg0: number): void;
535
+ }
536
+
537
+ export interface As3_flash_utils_ByteArray$ {
538
+ defaultObjectEncoding: number;
539
+ }
540
+
541
+ export interface As3_flash_utils_CompressionAlgorithm extends As3_Object {}
542
+
543
+ export interface As3_flash_utils_CompressionAlgorithm$ {
544
+ readonly DEFLATE: string | null;
545
+ readonly LZMA: string | null;
546
+ readonly ZLIB: string | null;
547
+ }
548
+
549
+ export interface As3_flash_utils_Dictionary extends As3_Object {}
550
+
551
+ export interface As3_flash_utils_Dictionary$ {}
552
+
553
+ export interface As3_flash_utils_IDataInput {
554
+ readonly bytesAvailable: number;
555
+ endian: string | null;
556
+ objectEncoding: number;
557
+ readBoolean(): boolean;
558
+ readByte(): number;
559
+ readBytes(arg0: Ref<As3_flash_utils_ByteArray> | null, arg1?: number, arg2?: number): void;
560
+ readDouble(): number;
561
+ readFloat(): number;
562
+ readInt(): number;
563
+ readMultiByte(arg0: number, arg1: string | null): string | null;
564
+ readObject(): Value;
565
+ readShort(): number;
566
+ readUTF(): string | null;
567
+ readUTFBytes(arg0: number): string | null;
568
+ readUnsignedByte(): number;
569
+ readUnsignedInt(): number;
570
+ readUnsignedShort(): number;
571
+ }
572
+
573
+ export interface As3_flash_utils_IDataInput$ {}
574
+
575
+ export interface As3_flash_utils_IDataOutput {
576
+ endian: string | null;
577
+ objectEncoding: number;
578
+ writeBoolean(arg0: boolean): void;
579
+ writeByte(arg0: number): void;
580
+ writeBytes(arg0: Ref<As3_flash_utils_ByteArray> | null, arg1?: number, arg2?: number): void;
581
+ writeDouble(arg0: number): void;
582
+ writeFloat(arg0: number): void;
583
+ writeInt(arg0: number): void;
584
+ writeMultiByte(arg0: string | null, arg1: string | null): void;
585
+ writeObject(arg0: Value): void;
586
+ writeShort(arg0: number): void;
587
+ writeUTF(arg0: string | null): void;
588
+ writeUTFBytes(arg0: string | null): void;
589
+ writeUnsignedInt(arg0: number): void;
590
+ }
591
+
592
+ export interface As3_flash_utils_IDataOutput$ {}
593
+
594
+ export interface As3_flash_utils_IExternalizable {
595
+ readExternal(arg0: Ref<As3_flash_utils_IDataInput> | null): void;
596
+ writeExternal(arg0: Ref<As3_flash_utils_IDataOutput> | null): void;
597
+ }
598
+
599
+ export interface As3_flash_utils_IExternalizable$ {}
600
+
601
+ export interface As3_flash_utils_Proxy extends As3_Object {}
602
+
603
+ export interface As3_flash_utils_Proxy$ {}
604
+
605
+ export interface As3_int extends As3_Object {}
606
+
607
+ export interface As3_int$ {
608
+ readonly MAX_VALUE: number;
609
+ readonly MIN_VALUE: number;
610
+ readonly length: number;
611
+ }
612
+
613
+ export interface As3_uint extends As3_Object {}
614
+
615
+ export interface As3_uint$ {
616
+ readonly MAX_VALUE: number;
617
+ readonly MIN_VALUE: number;
618
+ readonly length: number;
619
+ }
@@ -151,11 +151,15 @@ export function newClass(
151
151
 
152
152
  const iscope = rt.scope(scope, [cls], 0);
153
153
  for (const [d, factory, id, , params] of desc.static.methods) {
154
- installMethod(rt, straits.methodHome(3), d, withId(factory(scope, base), id), factory, params);
154
+ const method = withId(factory(scope, rt.staticSuper), id);
155
+ rt.keepStatic(factory, method);
156
+ installMethod(rt, straits.methodHome(3), d, method, factory, params);
155
157
  }
156
158
 
157
159
  for (const [d, factory, id, , params] of desc.instance.methods) {
158
- installMethod(rt, itraits.methodHome(3), d, withId(factory(iscope, base), id), factory, params);
160
+ const method = withId(factory(iscope, base), id);
161
+ rt.keepStatic(factory, method);
162
+ installMethod(rt, itraits.methodHome(3), d, method, factory, params);
159
163
  }
160
164
 
161
165
  // Playerglobal can declare an accessor whose setter has no ABC body.
@@ -187,6 +191,7 @@ export function newClass(
187
191
  // Caches keep the methods and what the hooks decide.
188
192
  invalidate();
189
193
  const init = desc.init(iscope, base);
194
+ rt.keepStatic(desc.init, init);
190
195
  itraits.proto.$init = init;
191
196
  // Its entry for `new` and `super()` of the class where the compiler
192
197
  // coerced the arguments, as for bound calls (installMethod).
@@ -198,7 +203,9 @@ export function newClass(
198
203
  // resolves from traits, before initproperty has stored it anywhere.
199
204
  rt.defining.set(qualified, cls);
200
205
  try {
201
- desc.cinit(scope, base).call(cls);
206
+ const cinit = desc.cinit(scope, rt.staticSuper);
207
+ rt.keepStatic(desc.cinit, cinit);
208
+ cinit.call(cls);
202
209
  } finally {
203
210
  rt.defining.delete(qualified);
204
211
  }
@@ -67,6 +67,8 @@ export function describe(rt: Runtime, v: Value): string {
67
67
  return rt.toString(v);
68
68
  }
69
69
 
70
+ // Its class's name without the package, as "Object@0", the address left out.
70
71
  const name: string = v.$traits.name;
71
- return `${name.slice(name.lastIndexOf("::") + (name.includes("::") ? 2 : 0))}@0`;
72
+ const colons = name.lastIndexOf("::");
73
+ return `${colons < 0 ? name : name.slice(colons + 2)}@0`;
72
74
  }
package/src/avm2/index.ts CHANGED
@@ -4,8 +4,11 @@ import type { RuntimeOptions } from "./options.js";
4
4
  import { Runtime } from "./runtime.js";
5
5
 
6
6
  export { Reader as Amf3Reader, Writer as Amf3Writer } from "./amf.js";
7
+ // The classes' declarations, for natives to reach AS3 objects by (Runtime.prop).
8
+ export type { MethodName, PropertyName, Ref, WritableName } from "./as3-types.js";
7
9
  /** avmplus' builtin.abc (MPL-2.0), which every runtime loads first. */
8
10
  export { builtinLibrary } from "./builtin-library.js";
11
+ export type { BuiltinClasses, BuiltinStatics } from "./builtin-types.generated.js";
9
12
  export type { Abc, AsObject, CompileUnit, FoundDefinition, Method, Value } from "./descriptors.js";
10
13
  export { type Domain, frameScripts, frameSites, siteScript, stackFrames } from "./domain.js";
11
14
  export { UnsupportedError } from "./errors.js";
@@ -68,6 +71,8 @@ export { invalidate as clearPropertyCaches } from "./property-cache.js";
68
71
  export { Runtime } from "./runtime.js";
69
72
  // methodKey: where a method sits on its traits, for a player that makes a closure of its own.
70
73
  export { instanceVarField, methodKey, setStaticVar } from "./traits.js";
74
+ // avmplus' UTF-8, for a player's bytes that must read and write as ByteArray's do.
75
+ export { fromUtf8, utf8 } from "./utf8.js";
71
76
 
72
77
  /** A runtime with the builtins' natives, for modules compiled from builtin.abc and after. */
73
78
  export function createRuntime(options: RuntimeOptions = {}): Runtime {
@@ -28,7 +28,7 @@ function sealed(rt: Runtime, o: AsObject, adding: number): boolean {
28
28
  }
29
29
 
30
30
  if (adding > 0) {
31
- throw rt.error("ReferenceError", 1056, "0", o.$traits.name);
31
+ throw rt.error("ReferenceError", 1056, "0", o.$traits.errorName);
32
32
  }
33
33
 
34
34
  return true;