@swf2es/runtime 0.1.15 → 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 (84) 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/cache-fill.d.ts +4 -1
  14. package/dist/avm2/cache-fill.d.ts.map +1 -1
  15. package/dist/avm2/cache-fill.js +5 -6
  16. package/dist/avm2/cache-fill.js.map +1 -1
  17. package/dist/avm2/classes.d.ts.map +1 -1
  18. package/dist/avm2/classes.js +10 -3
  19. package/dist/avm2/classes.js.map +1 -1
  20. package/dist/avm2/descriptors.d.ts +6 -1
  21. package/dist/avm2/descriptors.d.ts.map +1 -1
  22. package/dist/avm2/descriptors.js.map +1 -1
  23. package/dist/avm2/errors.d.ts +14 -0
  24. package/dist/avm2/errors.d.ts.map +1 -1
  25. package/dist/avm2/errors.js +20 -1
  26. package/dist/avm2/errors.js.map +1 -1
  27. package/dist/avm2/index.d.ts +4 -0
  28. package/dist/avm2/index.d.ts.map +1 -1
  29. package/dist/avm2/index.js +3 -0
  30. package/dist/avm2/index.js.map +1 -1
  31. package/dist/avm2/names.d.ts +11 -0
  32. package/dist/avm2/names.d.ts.map +1 -1
  33. package/dist/avm2/names.js +12 -0
  34. package/dist/avm2/names.js.map +1 -1
  35. package/dist/avm2/natives/array.js +1 -1
  36. package/dist/avm2/natives/array.js.map +1 -1
  37. package/dist/avm2/natives/bytearray.d.ts.map +1 -1
  38. package/dist/avm2/natives/bytearray.js +6 -11
  39. package/dist/avm2/natives/bytearray.js.map +1 -1
  40. package/dist/avm2/natives/describe.js +6 -1
  41. package/dist/avm2/natives/describe.js.map +1 -1
  42. package/dist/avm2/natives/object.d.ts.map +1 -1
  43. package/dist/avm2/natives/object.js +5 -2
  44. package/dist/avm2/natives/object.js.map +1 -1
  45. package/dist/avm2/natives/proxy.d.ts.map +1 -1
  46. package/dist/avm2/natives/proxy.js +9 -4
  47. package/dist/avm2/natives/proxy.js.map +1 -1
  48. package/dist/avm2/natives/vector.js +1 -1
  49. package/dist/avm2/natives/vector.js.map +1 -1
  50. package/dist/avm2/options.d.ts +5 -0
  51. package/dist/avm2/options.d.ts.map +1 -1
  52. package/dist/avm2/options.js.map +1 -1
  53. package/dist/avm2/property-cache.d.ts +17 -13
  54. package/dist/avm2/property-cache.d.ts.map +1 -1
  55. package/dist/avm2/property-cache.js +50 -10
  56. package/dist/avm2/property-cache.js.map +1 -1
  57. package/dist/avm2/runtime.d.ts +101 -1
  58. package/dist/avm2/runtime.d.ts.map +1 -1
  59. package/dist/avm2/runtime.js +351 -45
  60. package/dist/avm2/runtime.js.map +1 -1
  61. package/dist/avm2/traits.d.ts +13 -0
  62. package/dist/avm2/traits.d.ts.map +1 -1
  63. package/dist/avm2/traits.js +23 -0
  64. package/dist/avm2/traits.js.map +1 -1
  65. package/package.json +2 -2
  66. package/src/avm2/amf.ts +4 -3
  67. package/src/avm2/as3-types.ts +41 -0
  68. package/src/avm2/builtin-types.generated.ts +619 -0
  69. package/src/avm2/cache-fill.ts +5 -7
  70. package/src/avm2/classes.ts +10 -3
  71. package/src/avm2/descriptors.ts +6 -2
  72. package/src/avm2/errors.ts +21 -1
  73. package/src/avm2/index.ts +6 -0
  74. package/src/avm2/names.ts +13 -0
  75. package/src/avm2/natives/array.ts +1 -1
  76. package/src/avm2/natives/bytearray.ts +6 -14
  77. package/src/avm2/natives/describe.ts +8 -1
  78. package/src/avm2/natives/object.ts +5 -2
  79. package/src/avm2/natives/proxy.ts +20 -4
  80. package/src/avm2/natives/vector.ts +1 -1
  81. package/src/avm2/options.ts +5 -0
  82. package/src/avm2/property-cache.ts +57 -11
  83. package/src/avm2/runtime.ts +407 -53
  84. package/src/avm2/traits.ts +27 -1
@@ -16,7 +16,7 @@ import type { Domain } from "./domain.js";
16
16
  import { DynamicProperties } from "./dynamic-properties.js";
17
17
  import type { ClassHook, IndexHook, PropertyHook } from "./hooks.js";
18
18
  import type { Multiname, Namespace } from "./names.js";
19
- import { invalidate } from "./property-cache.js";
19
+ import { invalidate, type PropertyCache } from "./property-cache.js";
20
20
 
21
21
  // Binding kinds, as the compiler encodes them: kind | id << 3.
22
22
  export const BIND_Method = 1;
@@ -160,6 +160,12 @@ export class Traits {
160
160
  interfaceKeys: Map<Traits, (string | undefined)[]> | null = null;
161
161
  lastInterface: Traits | null = null;
162
162
  lastInterfaceKeys: (string | undefined)[] = [];
163
+ /**
164
+ * The cache entries for these traits of names looked up on more traits
165
+ * than their own caches keep (property-cache.ts), by name; emptied with
166
+ * every cache.
167
+ */
168
+ manyTraitsEntries: Map<Multiname, PropertyCache> | null = null;
163
169
 
164
170
  constructor(
165
171
  readonly name: string,
@@ -181,6 +187,26 @@ export class Traits {
181
187
  }
182
188
  }
183
189
 
190
+ /**
191
+ * Its name as Flash's debugger player writes it in an error message
192
+ * (AvmCore::toErrorString): the package and the name joined by a dot,
193
+ * "flash.text.TextField"; a class object's as "class " and its class's.
194
+ */
195
+ get errorName(): string {
196
+ let name = this.name;
197
+ const statics = this.base?.name === "Class" && name.endsWith("$");
198
+ if (statics) {
199
+ name = name.slice(0, -1);
200
+ }
201
+
202
+ const colons = name.lastIndexOf("::");
203
+ if (colons >= 0) {
204
+ name = `${name.slice(0, colons)}.${name.slice(colons + 2)}`;
205
+ }
206
+
207
+ return statics ? `class ${name}` : name;
208
+ }
209
+
184
210
  /**
185
211
  * The object a method and its entries, `count` properties, go into:
186
212
  * the prototype, till it holds HOME_PROPERTIES, then an object chained