@swf2es/runtime 0.0.0-stage → 0.1.0

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 (815) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.third-party +422 -0
  3. package/README.md +29 -2
  4. package/dist/avm1/activation.d.ts +108 -0
  5. package/dist/avm1/activation.d.ts.map +1 -0
  6. package/dist/avm1/activation.js +90 -0
  7. package/dist/avm1/activation.js.map +1 -0
  8. package/dist/avm1/case.d.ts +3 -0
  9. package/dist/avm1/case.d.ts.map +1 -0
  10. package/dist/avm1/case.js +250 -0
  11. package/dist/avm1/case.js.map +1 -0
  12. package/dist/avm1/clips.d.ts +68 -0
  13. package/dist/avm1/clips.d.ts.map +1 -0
  14. package/dist/avm1/clips.js +335 -0
  15. package/dist/avm1/clips.js.map +1 -0
  16. package/dist/avm1/control.d.ts +54 -0
  17. package/dist/avm1/control.d.ts.map +1 -0
  18. package/dist/avm1/control.js +281 -0
  19. package/dist/avm1/control.js.map +1 -0
  20. package/dist/avm1/errors.d.ts +49 -0
  21. package/dist/avm1/errors.d.ts.map +1 -0
  22. package/dist/avm1/errors.js +51 -0
  23. package/dist/avm1/errors.js.map +1 -0
  24. package/dist/avm1/functions.d.ts +94 -0
  25. package/dist/avm1/functions.d.ts.map +1 -0
  26. package/dist/avm1/functions.js +250 -0
  27. package/dist/avm1/functions.js.map +1 -0
  28. package/dist/avm1/globals/array.d.ts +8 -0
  29. package/dist/avm1/globals/array.d.ts.map +1 -0
  30. package/dist/avm1/globals/array.js +550 -0
  31. package/dist/avm1/globals/array.js.map +1 -0
  32. package/dist/avm1/globals/broadcaster.d.ts +22 -0
  33. package/dist/avm1/globals/broadcaster.d.ts.map +1 -0
  34. package/dist/avm1/globals/broadcaster.js +132 -0
  35. package/dist/avm1/globals/broadcaster.js.map +1 -0
  36. package/dist/avm1/globals/date.d.ts +10 -0
  37. package/dist/avm1/globals/date.d.ts.map +1 -0
  38. package/dist/avm1/globals/date.js +437 -0
  39. package/dist/avm1/globals/date.js.map +1 -0
  40. package/dist/avm1/globals/global.d.ts +23 -0
  41. package/dist/avm1/globals/global.d.ts.map +1 -0
  42. package/dist/avm1/globals/global.js +345 -0
  43. package/dist/avm1/globals/global.js.map +1 -0
  44. package/dist/avm1/globals/math.d.ts +7 -0
  45. package/dist/avm1/globals/math.d.ts.map +1 -0
  46. package/dist/avm1/globals/math.js +140 -0
  47. package/dist/avm1/globals/math.js.map +1 -0
  48. package/dist/avm1/globals/number.d.ts +11 -0
  49. package/dist/avm1/globals/number.d.ts.map +1 -0
  50. package/dist/avm1/globals/number.js +94 -0
  51. package/dist/avm1/globals/number.js.map +1 -0
  52. package/dist/avm1/globals/string.d.ts +8 -0
  53. package/dist/avm1/globals/string.d.ts.map +1 -0
  54. package/dist/avm1/globals/string.js +202 -0
  55. package/dist/avm1/globals/string.js.map +1 -0
  56. package/dist/avm1/globals/timers.d.ts +49 -0
  57. package/dist/avm1/globals/timers.d.ts.map +1 -0
  58. package/dist/avm1/globals/timers.js +130 -0
  59. package/dist/avm1/globals/timers.js.map +1 -0
  60. package/dist/avm1/host.d.ts +146 -0
  61. package/dist/avm1/host.d.ts.map +1 -0
  62. package/dist/avm1/host.js +6 -0
  63. package/dist/avm1/host.js.map +1 -0
  64. package/dist/avm1/index.d.ts +15 -0
  65. package/dist/avm1/index.d.ts.map +1 -0
  66. package/dist/avm1/index.js +15 -0
  67. package/dist/avm1/index.js.map +1 -0
  68. package/dist/avm1/inheritance.d.ts +25 -0
  69. package/dist/avm1/inheritance.d.ts.map +1 -0
  70. package/dist/avm1/inheritance.js +133 -0
  71. package/dist/avm1/inheritance.js.map +1 -0
  72. package/dist/avm1/numbers.d.ts +21 -0
  73. package/dist/avm1/numbers.d.ts.map +1 -0
  74. package/dist/avm1/numbers.js +299 -0
  75. package/dist/avm1/numbers.js.map +1 -0
  76. package/dist/avm1/objects.d.ts +245 -0
  77. package/dist/avm1/objects.d.ts.map +1 -0
  78. package/dist/avm1/objects.js +897 -0
  79. package/dist/avm1/objects.js.map +1 -0
  80. package/dist/avm1/operators.d.ts +45 -0
  81. package/dist/avm1/operators.d.ts.map +1 -0
  82. package/dist/avm1/operators.js +171 -0
  83. package/dist/avm1/operators.js.map +1 -0
  84. package/dist/avm1/realm.d.ts +126 -0
  85. package/dist/avm1/realm.d.ts.map +1 -0
  86. package/dist/avm1/realm.js +530 -0
  87. package/dist/avm1/realm.js.map +1 -0
  88. package/dist/avm1/runtime.d.ts +294 -0
  89. package/dist/avm1/runtime.d.ts.map +1 -0
  90. package/dist/avm1/runtime.js +883 -0
  91. package/dist/avm1/runtime.js.map +1 -0
  92. package/dist/avm1/scope.d.ts +77 -0
  93. package/dist/avm1/scope.d.ts.map +1 -0
  94. package/dist/avm1/scope.js +386 -0
  95. package/dist/avm1/scope.js.map +1 -0
  96. package/dist/avm1/urls.d.ts +25 -0
  97. package/dist/avm1/urls.d.ts.map +1 -0
  98. package/dist/avm1/urls.js +181 -0
  99. package/dist/avm1/urls.js.map +1 -0
  100. package/dist/avm1/values.d.ts +52 -0
  101. package/dist/avm1/values.d.ts.map +1 -0
  102. package/dist/avm1/values.js +98 -0
  103. package/dist/avm1/values.js.map +1 -0
  104. package/dist/avm2/amf-classes.d.ts +28 -0
  105. package/dist/avm2/amf-classes.d.ts.map +1 -0
  106. package/dist/avm2/amf-classes.js +67 -0
  107. package/dist/avm2/amf-classes.js.map +1 -0
  108. package/dist/avm2/amf.d.ts +96 -0
  109. package/dist/avm2/amf.d.ts.map +1 -0
  110. package/dist/avm2/amf.js +802 -0
  111. package/dist/avm2/amf.js.map +1 -0
  112. package/dist/avm2/array-conversion.d.ts +31 -0
  113. package/dist/avm2/array-conversion.d.ts.map +1 -0
  114. package/dist/avm2/array-conversion.js +101 -0
  115. package/dist/avm2/array-conversion.js.map +1 -0
  116. package/dist/avm2/builtin/ArgumentError.decl.d.ts +18 -0
  117. package/dist/avm2/builtin/ArgumentError.decl.d.ts.map +1 -0
  118. package/dist/avm2/builtin/ArgumentError.decl.js +15 -0
  119. package/dist/avm2/builtin/ArgumentError.decl.js.map +1 -0
  120. package/dist/avm2/builtin/Array.d.ts +2 -0
  121. package/dist/avm2/builtin/Array.d.ts.map +1 -0
  122. package/dist/avm2/builtin/Array.decl.d.ts +241 -0
  123. package/dist/avm2/builtin/Array.decl.d.ts.map +1 -0
  124. package/dist/avm2/builtin/Array.decl.js +167 -0
  125. package/dist/avm2/builtin/Array.decl.js.map +1 -0
  126. package/dist/avm2/builtin/Array.js +497 -0
  127. package/dist/avm2/builtin/Array.js.map +1 -0
  128. package/dist/avm2/builtin/Boolean.d.ts +2 -0
  129. package/dist/avm2/builtin/Boolean.d.ts.map +1 -0
  130. package/dist/avm2/builtin/Boolean.decl.d.ts +28 -0
  131. package/dist/avm2/builtin/Boolean.decl.d.ts.map +1 -0
  132. package/dist/avm2/builtin/Boolean.decl.js +14 -0
  133. package/dist/avm2/builtin/Boolean.decl.js.map +1 -0
  134. package/dist/avm2/builtin/Boolean.js +17 -0
  135. package/dist/avm2/builtin/Boolean.js.map +1 -0
  136. package/dist/avm2/builtin/Class.d.ts +2 -0
  137. package/dist/avm2/builtin/Class.d.ts.map +1 -0
  138. package/dist/avm2/builtin/Class.decl.d.ts +21 -0
  139. package/dist/avm2/builtin/Class.decl.d.ts.map +1 -0
  140. package/dist/avm2/builtin/Class.decl.js +9 -0
  141. package/dist/avm2/builtin/Class.decl.js.map +1 -0
  142. package/dist/avm2/builtin/Class.js +11 -0
  143. package/dist/avm2/builtin/Class.js.map +1 -0
  144. package/dist/avm2/builtin/Date.d.ts +2 -0
  145. package/dist/avm2/builtin/Date.d.ts.map +1 -0
  146. package/dist/avm2/builtin/Date.decl.d.ts +441 -0
  147. package/dist/avm2/builtin/Date.decl.d.ts.map +1 -0
  148. package/dist/avm2/builtin/Date.decl.js +258 -0
  149. package/dist/avm2/builtin/Date.decl.js.map +1 -0
  150. package/dist/avm2/builtin/Date.js +808 -0
  151. package/dist/avm2/builtin/Date.js.map +1 -0
  152. package/dist/avm2/builtin/DefinitionError.decl.d.ts +18 -0
  153. package/dist/avm2/builtin/DefinitionError.decl.d.ts.map +1 -0
  154. package/dist/avm2/builtin/DefinitionError.decl.js +15 -0
  155. package/dist/avm2/builtin/DefinitionError.decl.js.map +1 -0
  156. package/dist/avm2/builtin/Error.d.ts +4 -0
  157. package/dist/avm2/builtin/Error.d.ts.map +1 -0
  158. package/dist/avm2/builtin/Error.decl.d.ts +45 -0
  159. package/dist/avm2/builtin/Error.decl.d.ts.map +1 -0
  160. package/dist/avm2/builtin/Error.decl.js +25 -0
  161. package/dist/avm2/builtin/Error.decl.js.map +1 -0
  162. package/dist/avm2/builtin/Error.js +193 -0
  163. package/dist/avm2/builtin/Error.js.map +1 -0
  164. package/dist/avm2/builtin/EvalError.decl.d.ts +18 -0
  165. package/dist/avm2/builtin/EvalError.decl.d.ts.map +1 -0
  166. package/dist/avm2/builtin/EvalError.decl.js +15 -0
  167. package/dist/avm2/builtin/EvalError.decl.js.map +1 -0
  168. package/dist/avm2/builtin/Function.d.ts +2 -0
  169. package/dist/avm2/builtin/Function.d.ts.map +1 -0
  170. package/dist/avm2/builtin/Function.decl.d.ts +44 -0
  171. package/dist/avm2/builtin/Function.decl.d.ts.map +1 -0
  172. package/dist/avm2/builtin/Function.decl.js +35 -0
  173. package/dist/avm2/builtin/Function.decl.js.map +1 -0
  174. package/dist/avm2/builtin/Function.js +73 -0
  175. package/dist/avm2/builtin/Function.js.map +1 -0
  176. package/dist/avm2/builtin/JSON.decl.d.ts +50 -0
  177. package/dist/avm2/builtin/JSON.decl.d.ts.map +1 -0
  178. package/dist/avm2/builtin/JSON.decl.js +53 -0
  179. package/dist/avm2/builtin/JSON.decl.js.map +1 -0
  180. package/dist/avm2/builtin/Math.d.ts +28 -0
  181. package/dist/avm2/builtin/Math.d.ts.map +1 -0
  182. package/dist/avm2/builtin/Math.decl.d.ts +172 -0
  183. package/dist/avm2/builtin/Math.decl.d.ts.map +1 -0
  184. package/dist/avm2/builtin/Math.decl.js +73 -0
  185. package/dist/avm2/builtin/Math.decl.js.map +1 -0
  186. package/dist/avm2/builtin/Math.js +89 -0
  187. package/dist/avm2/builtin/Math.js.map +1 -0
  188. package/dist/avm2/builtin/MethodClosure.decl.d.ts +25 -0
  189. package/dist/avm2/builtin/MethodClosure.decl.d.ts.map +1 -0
  190. package/dist/avm2/builtin/MethodClosure.decl.js +15 -0
  191. package/dist/avm2/builtin/MethodClosure.decl.js.map +1 -0
  192. package/dist/avm2/builtin/Namespace.d.ts +2 -0
  193. package/dist/avm2/builtin/Namespace.d.ts.map +1 -0
  194. package/dist/avm2/builtin/Namespace.decl.d.ts +34 -0
  195. package/dist/avm2/builtin/Namespace.decl.d.ts.map +1 -0
  196. package/dist/avm2/builtin/Namespace.decl.js +22 -0
  197. package/dist/avm2/builtin/Namespace.decl.js.map +1 -0
  198. package/dist/avm2/builtin/Namespace.js +29 -0
  199. package/dist/avm2/builtin/Namespace.js.map +1 -0
  200. package/dist/avm2/builtin/Number.d.ts +19 -0
  201. package/dist/avm2/builtin/Number.d.ts.map +1 -0
  202. package/dist/avm2/builtin/Number.decl.d.ts +285 -0
  203. package/dist/avm2/builtin/Number.decl.d.ts.map +1 -0
  204. package/dist/avm2/builtin/Number.decl.js +267 -0
  205. package/dist/avm2/builtin/Number.decl.js.map +1 -0
  206. package/dist/avm2/builtin/Number.js +178 -0
  207. package/dist/avm2/builtin/Number.js.map +1 -0
  208. package/dist/avm2/builtin/Object.d.ts +5 -0
  209. package/dist/avm2/builtin/Object.d.ts.map +1 -0
  210. package/dist/avm2/builtin/Object.decl.d.ts +77 -0
  211. package/dist/avm2/builtin/Object.decl.d.ts.map +1 -0
  212. package/dist/avm2/builtin/Object.decl.js +67 -0
  213. package/dist/avm2/builtin/Object.decl.js.map +1 -0
  214. package/dist/avm2/builtin/Object.js +120 -0
  215. package/dist/avm2/builtin/Object.js.map +1 -0
  216. package/dist/avm2/builtin/QName.d.ts +2 -0
  217. package/dist/avm2/builtin/QName.d.ts.map +1 -0
  218. package/dist/avm2/builtin/QName.decl.d.ts +34 -0
  219. package/dist/avm2/builtin/QName.decl.d.ts.map +1 -0
  220. package/dist/avm2/builtin/QName.decl.js +22 -0
  221. package/dist/avm2/builtin/QName.decl.js.map +1 -0
  222. package/dist/avm2/builtin/QName.js +72 -0
  223. package/dist/avm2/builtin/QName.js.map +1 -0
  224. package/dist/avm2/builtin/RangeError.decl.d.ts +18 -0
  225. package/dist/avm2/builtin/RangeError.decl.d.ts.map +1 -0
  226. package/dist/avm2/builtin/RangeError.decl.js +15 -0
  227. package/dist/avm2/builtin/RangeError.decl.js.map +1 -0
  228. package/dist/avm2/builtin/ReferenceError.decl.d.ts +18 -0
  229. package/dist/avm2/builtin/ReferenceError.decl.d.ts.map +1 -0
  230. package/dist/avm2/builtin/ReferenceError.decl.js +15 -0
  231. package/dist/avm2/builtin/ReferenceError.decl.js.map +1 -0
  232. package/dist/avm2/builtin/RegExp.d.ts +2 -0
  233. package/dist/avm2/builtin/RegExp.d.ts.map +1 -0
  234. package/dist/avm2/builtin/RegExp.decl.d.ts +59 -0
  235. package/dist/avm2/builtin/RegExp.decl.d.ts.map +1 -0
  236. package/dist/avm2/builtin/RegExp.decl.js +31 -0
  237. package/dist/avm2/builtin/RegExp.decl.js.map +1 -0
  238. package/dist/avm2/builtin/RegExp.js +57 -0
  239. package/dist/avm2/builtin/RegExp.js.map +1 -0
  240. package/dist/avm2/builtin/SecurityError.decl.d.ts +18 -0
  241. package/dist/avm2/builtin/SecurityError.decl.d.ts.map +1 -0
  242. package/dist/avm2/builtin/SecurityError.decl.js +15 -0
  243. package/dist/avm2/builtin/SecurityError.decl.js.map +1 -0
  244. package/dist/avm2/builtin/String.d.ts +2 -0
  245. package/dist/avm2/builtin/String.d.ts.map +1 -0
  246. package/dist/avm2/builtin/String.decl.d.ts +168 -0
  247. package/dist/avm2/builtin/String.decl.d.ts.map +1 -0
  248. package/dist/avm2/builtin/String.decl.js +168 -0
  249. package/dist/avm2/builtin/String.decl.js.map +1 -0
  250. package/dist/avm2/builtin/String.js +176 -0
  251. package/dist/avm2/builtin/String.js.map +1 -0
  252. package/dist/avm2/builtin/SyntaxError.decl.d.ts +18 -0
  253. package/dist/avm2/builtin/SyntaxError.decl.d.ts.map +1 -0
  254. package/dist/avm2/builtin/SyntaxError.decl.js +15 -0
  255. package/dist/avm2/builtin/SyntaxError.decl.js.map +1 -0
  256. package/dist/avm2/builtin/TypeError.decl.d.ts +18 -0
  257. package/dist/avm2/builtin/TypeError.decl.d.ts.map +1 -0
  258. package/dist/avm2/builtin/TypeError.decl.js +15 -0
  259. package/dist/avm2/builtin/TypeError.decl.js.map +1 -0
  260. package/dist/avm2/builtin/URIError.decl.d.ts +18 -0
  261. package/dist/avm2/builtin/URIError.decl.d.ts.map +1 -0
  262. package/dist/avm2/builtin/URIError.decl.js +15 -0
  263. package/dist/avm2/builtin/URIError.decl.js.map +1 -0
  264. package/dist/avm2/builtin/UninitializedError.decl.d.ts +18 -0
  265. package/dist/avm2/builtin/UninitializedError.decl.d.ts.map +1 -0
  266. package/dist/avm2/builtin/UninitializedError.decl.js +15 -0
  267. package/dist/avm2/builtin/UninitializedError.decl.js.map +1 -0
  268. package/dist/avm2/builtin/VerifyError.decl.d.ts +18 -0
  269. package/dist/avm2/builtin/VerifyError.decl.d.ts.map +1 -0
  270. package/dist/avm2/builtin/VerifyError.decl.js +15 -0
  271. package/dist/avm2/builtin/VerifyError.decl.js.map +1 -0
  272. package/dist/avm2/builtin/Walker.decl.d.ts +23 -0
  273. package/dist/avm2/builtin/Walker.decl.d.ts.map +1 -0
  274. package/dist/avm2/builtin/Walker.decl.js +14 -0
  275. package/dist/avm2/builtin/Walker.decl.js.map +1 -0
  276. package/dist/avm2/builtin/XML.d.ts +2 -0
  277. package/dist/avm2/builtin/XML.d.ts.map +1 -0
  278. package/dist/avm2/builtin/XML.decl.d.ts +275 -0
  279. package/dist/avm2/builtin/XML.decl.d.ts.map +1 -0
  280. package/dist/avm2/builtin/XML.decl.js +97 -0
  281. package/dist/avm2/builtin/XML.decl.js.map +1 -0
  282. package/dist/avm2/builtin/XML.js +283 -0
  283. package/dist/avm2/builtin/XML.js.map +1 -0
  284. package/dist/avm2/builtin/XMLList.d.ts +2 -0
  285. package/dist/avm2/builtin/XMLList.d.ts.map +1 -0
  286. package/dist/avm2/builtin/XMLList.decl.d.ts +201 -0
  287. package/dist/avm2/builtin/XMLList.decl.d.ts.map +1 -0
  288. package/dist/avm2/builtin/XMLList.decl.js +74 -0
  289. package/dist/avm2/builtin/XMLList.decl.js.map +1 -0
  290. package/dist/avm2/builtin/XMLList.js +253 -0
  291. package/dist/avm2/builtin/XMLList.js.map +1 -0
  292. package/dist/avm2/builtin/__AS3__/vec/Vector$double.decl.d.ts +200 -0
  293. package/dist/avm2/builtin/__AS3__/vec/Vector$double.decl.d.ts.map +1 -0
  294. package/dist/avm2/builtin/__AS3__/vec/Vector$double.decl.js +168 -0
  295. package/dist/avm2/builtin/__AS3__/vec/Vector$double.decl.js.map +1 -0
  296. package/dist/avm2/builtin/__AS3__/vec/Vector$int.decl.d.ts +200 -0
  297. package/dist/avm2/builtin/__AS3__/vec/Vector$int.decl.d.ts.map +1 -0
  298. package/dist/avm2/builtin/__AS3__/vec/Vector$int.decl.js +164 -0
  299. package/dist/avm2/builtin/__AS3__/vec/Vector$int.decl.js.map +1 -0
  300. package/dist/avm2/builtin/__AS3__/vec/Vector$object.decl.d.ts +198 -0
  301. package/dist/avm2/builtin/__AS3__/vec/Vector$object.decl.d.ts.map +1 -0
  302. package/dist/avm2/builtin/__AS3__/vec/Vector$object.decl.js +168 -0
  303. package/dist/avm2/builtin/__AS3__/vec/Vector$object.decl.js.map +1 -0
  304. package/dist/avm2/builtin/__AS3__/vec/Vector$uint.decl.d.ts +200 -0
  305. package/dist/avm2/builtin/__AS3__/vec/Vector$uint.decl.d.ts.map +1 -0
  306. package/dist/avm2/builtin/__AS3__/vec/Vector$uint.decl.js +168 -0
  307. package/dist/avm2/builtin/__AS3__/vec/Vector$uint.decl.js.map +1 -0
  308. package/dist/avm2/builtin/__AS3__/vec/Vector.decl.d.ts +14 -0
  309. package/dist/avm2/builtin/__AS3__/vec/Vector.decl.d.ts.map +1 -0
  310. package/dist/avm2/builtin/__AS3__/vec/Vector.decl.js +10 -0
  311. package/dist/avm2/builtin/__AS3__/vec/Vector.decl.js.map +1 -0
  312. package/dist/avm2/builtin/bind.d.ts +44 -0
  313. package/dist/avm2/builtin/bind.d.ts.map +1 -0
  314. package/dist/avm2/builtin/bind.js +173 -0
  315. package/dist/avm2/builtin/bind.js.map +1 -0
  316. package/dist/avm2/builtin/declare.d.ts +137 -0
  317. package/dist/avm2/builtin/declare.d.ts.map +1 -0
  318. package/dist/avm2/builtin/declare.js +14 -0
  319. package/dist/avm2/builtin/declare.js.map +1 -0
  320. package/dist/avm2/builtin/flash/concurrent/Condition.decl.d.ts +44 -0
  321. package/dist/avm2/builtin/flash/concurrent/Condition.decl.d.ts.map +1 -0
  322. package/dist/avm2/builtin/flash/concurrent/Condition.decl.js +18 -0
  323. package/dist/avm2/builtin/flash/concurrent/Condition.decl.js.map +1 -0
  324. package/dist/avm2/builtin/flash/concurrent/Mutex.decl.d.ts +37 -0
  325. package/dist/avm2/builtin/flash/concurrent/Mutex.decl.d.ts.map +1 -0
  326. package/dist/avm2/builtin/flash/concurrent/Mutex.decl.js +17 -0
  327. package/dist/avm2/builtin/flash/concurrent/Mutex.decl.js.map +1 -0
  328. package/dist/avm2/builtin/flash/errors/EOFError.decl.d.ts +14 -0
  329. package/dist/avm2/builtin/flash/errors/EOFError.decl.d.ts.map +1 -0
  330. package/dist/avm2/builtin/flash/errors/EOFError.decl.js +15 -0
  331. package/dist/avm2/builtin/flash/errors/EOFError.decl.js.map +1 -0
  332. package/dist/avm2/builtin/flash/errors/IOError.decl.d.ts +14 -0
  333. package/dist/avm2/builtin/flash/errors/IOError.decl.d.ts.map +1 -0
  334. package/dist/avm2/builtin/flash/errors/IOError.decl.js +15 -0
  335. package/dist/avm2/builtin/flash/errors/IOError.decl.js.map +1 -0
  336. package/dist/avm2/builtin/flash/errors/IllegalOperationError.decl.d.ts +14 -0
  337. package/dist/avm2/builtin/flash/errors/IllegalOperationError.decl.d.ts.map +1 -0
  338. package/dist/avm2/builtin/flash/errors/IllegalOperationError.decl.js +15 -0
  339. package/dist/avm2/builtin/flash/errors/IllegalOperationError.decl.js.map +1 -0
  340. package/dist/avm2/builtin/flash/errors/MemoryError.decl.d.ts +14 -0
  341. package/dist/avm2/builtin/flash/errors/MemoryError.decl.d.ts.map +1 -0
  342. package/dist/avm2/builtin/flash/errors/MemoryError.decl.js +15 -0
  343. package/dist/avm2/builtin/flash/errors/MemoryError.decl.js.map +1 -0
  344. package/dist/avm2/builtin/flash/net/DynamicPropertyOutput.decl.d.ts +20 -0
  345. package/dist/avm2/builtin/flash/net/DynamicPropertyOutput.decl.d.ts.map +1 -0
  346. package/dist/avm2/builtin/flash/net/DynamicPropertyOutput.decl.js +13 -0
  347. package/dist/avm2/builtin/flash/net/DynamicPropertyOutput.decl.js.map +1 -0
  348. package/dist/avm2/builtin/flash/net/IDynamicPropertyOutput.decl.d.ts +16 -0
  349. package/dist/avm2/builtin/flash/net/IDynamicPropertyOutput.decl.d.ts.map +1 -0
  350. package/dist/avm2/builtin/flash/net/IDynamicPropertyOutput.decl.js +16 -0
  351. package/dist/avm2/builtin/flash/net/IDynamicPropertyOutput.decl.js.map +1 -0
  352. package/dist/avm2/builtin/flash/net/IDynamicPropertyWriter.decl.d.ts +16 -0
  353. package/dist/avm2/builtin/flash/net/IDynamicPropertyWriter.decl.d.ts.map +1 -0
  354. package/dist/avm2/builtin/flash/net/IDynamicPropertyWriter.decl.js +16 -0
  355. package/dist/avm2/builtin/flash/net/IDynamicPropertyWriter.decl.js.map +1 -0
  356. package/dist/avm2/builtin/flash/net/ObjectEncoding.decl.d.ts +38 -0
  357. package/dist/avm2/builtin/flash/net/ObjectEncoding.decl.d.ts.map +1 -0
  358. package/dist/avm2/builtin/flash/net/ObjectEncoding.decl.js +28 -0
  359. package/dist/avm2/builtin/flash/net/ObjectEncoding.decl.js.map +1 -0
  360. package/dist/avm2/builtin/flash/utils/ByteArray.d.ts +151 -0
  361. package/dist/avm2/builtin/flash/utils/ByteArray.d.ts.map +1 -0
  362. package/dist/avm2/builtin/flash/utils/ByteArray.decl.d.ts +260 -0
  363. package/dist/avm2/builtin/flash/utils/ByteArray.decl.d.ts.map +1 -0
  364. package/dist/avm2/builtin/flash/utils/ByteArray.decl.js +105 -0
  365. package/dist/avm2/builtin/flash/utils/ByteArray.decl.js.map +1 -0
  366. package/dist/avm2/builtin/flash/utils/ByteArray.js +1009 -0
  367. package/dist/avm2/builtin/flash/utils/ByteArray.js.map +1 -0
  368. package/dist/avm2/builtin/flash/utils/CompressionAlgorithm.decl.d.ts +27 -0
  369. package/dist/avm2/builtin/flash/utils/CompressionAlgorithm.decl.d.ts.map +1 -0
  370. package/dist/avm2/builtin/flash/utils/CompressionAlgorithm.decl.js +15 -0
  371. package/dist/avm2/builtin/flash/utils/CompressionAlgorithm.decl.js.map +1 -0
  372. package/dist/avm2/builtin/flash/utils/Dictionary.d.ts +2 -0
  373. package/dist/avm2/builtin/flash/utils/Dictionary.d.ts.map +1 -0
  374. package/dist/avm2/builtin/flash/utils/Dictionary.decl.d.ts +19 -0
  375. package/dist/avm2/builtin/flash/utils/Dictionary.decl.d.ts.map +1 -0
  376. package/dist/avm2/builtin/flash/utils/Dictionary.decl.js +9 -0
  377. package/dist/avm2/builtin/flash/utils/Dictionary.decl.js.map +1 -0
  378. package/dist/avm2/builtin/flash/utils/Dictionary.js +21 -0
  379. package/dist/avm2/builtin/flash/utils/Dictionary.js.map +1 -0
  380. package/dist/avm2/builtin/flash/utils/IDataInput.decl.d.ts +92 -0
  381. package/dist/avm2/builtin/flash/utils/IDataInput.decl.d.ts.map +1 -0
  382. package/dist/avm2/builtin/flash/utils/IDataInput.decl.js +71 -0
  383. package/dist/avm2/builtin/flash/utils/IDataInput.decl.js.map +1 -0
  384. package/dist/avm2/builtin/flash/utils/IDataInput2.decl.d.ts +13 -0
  385. package/dist/avm2/builtin/flash/utils/IDataInput2.decl.d.ts.map +1 -0
  386. package/dist/avm2/builtin/flash/utils/IDataInput2.decl.js +11 -0
  387. package/dist/avm2/builtin/flash/utils/IDataInput2.decl.js.map +1 -0
  388. package/dist/avm2/builtin/flash/utils/IDataOutput.decl.d.ts +74 -0
  389. package/dist/avm2/builtin/flash/utils/IDataOutput.decl.d.ts.map +1 -0
  390. package/dist/avm2/builtin/flash/utils/IDataOutput.decl.js +35 -0
  391. package/dist/avm2/builtin/flash/utils/IDataOutput.decl.js.map +1 -0
  392. package/dist/avm2/builtin/flash/utils/IDataOutput2.decl.d.ts +13 -0
  393. package/dist/avm2/builtin/flash/utils/IDataOutput2.decl.d.ts.map +1 -0
  394. package/dist/avm2/builtin/flash/utils/IDataOutput2.decl.js +11 -0
  395. package/dist/avm2/builtin/flash/utils/IDataOutput2.decl.js.map +1 -0
  396. package/dist/avm2/builtin/flash/utils/IExternalizable.decl.d.ts +20 -0
  397. package/dist/avm2/builtin/flash/utils/IExternalizable.decl.d.ts.map +1 -0
  398. package/dist/avm2/builtin/flash/utils/IExternalizable.decl.js +21 -0
  399. package/dist/avm2/builtin/flash/utils/IExternalizable.decl.js.map +1 -0
  400. package/dist/avm2/builtin/flash/utils/ObjectInput.decl.d.ts +95 -0
  401. package/dist/avm2/builtin/flash/utils/ObjectInput.decl.d.ts.map +1 -0
  402. package/dist/avm2/builtin/flash/utils/ObjectInput.decl.js +36 -0
  403. package/dist/avm2/builtin/flash/utils/ObjectInput.decl.js.map +1 -0
  404. package/dist/avm2/builtin/flash/utils/ObjectOutput.decl.d.ts +93 -0
  405. package/dist/avm2/builtin/flash/utils/ObjectOutput.decl.d.ts.map +1 -0
  406. package/dist/avm2/builtin/flash/utils/ObjectOutput.decl.js +33 -0
  407. package/dist/avm2/builtin/flash/utils/ObjectOutput.decl.js.map +1 -0
  408. package/dist/avm2/builtin/flash/utils/Proxy.d.ts +2 -0
  409. package/dist/avm2/builtin/flash/utils/Proxy.d.ts.map +1 -0
  410. package/dist/avm2/builtin/flash/utils/Proxy.decl.d.ts +61 -0
  411. package/dist/avm2/builtin/flash/utils/Proxy.decl.d.ts.map +1 -0
  412. package/dist/avm2/builtin/flash/utils/Proxy.decl.js +21 -0
  413. package/dist/avm2/builtin/flash/utils/Proxy.decl.js.map +1 -0
  414. package/dist/avm2/builtin/flash/utils/Proxy.js +112 -0
  415. package/dist/avm2/builtin/flash/utils/Proxy.js.map +1 -0
  416. package/dist/avm2/builtin/index.d.ts +5 -0
  417. package/dist/avm2/builtin/index.d.ts.map +1 -0
  418. package/dist/avm2/builtin/index.js +48 -0
  419. package/dist/avm2/builtin/index.js.map +1 -0
  420. package/dist/avm2/builtin/int.d.ts +2 -0
  421. package/dist/avm2/builtin/int.d.ts.map +1 -0
  422. package/dist/avm2/builtin/int.decl.d.ts +52 -0
  423. package/dist/avm2/builtin/int.decl.d.ts.map +1 -0
  424. package/dist/avm2/builtin/int.decl.js +21 -0
  425. package/dist/avm2/builtin/int.decl.js.map +1 -0
  426. package/dist/avm2/builtin/int.js +27 -0
  427. package/dist/avm2/builtin/int.js.map +1 -0
  428. package/dist/avm2/builtin/regexp/compile.d.ts +22 -0
  429. package/dist/avm2/builtin/regexp/compile.d.ts.map +1 -0
  430. package/dist/avm2/builtin/regexp/compile.js +435 -0
  431. package/dist/avm2/builtin/regexp/compile.js.map +1 -0
  432. package/dist/avm2/builtin/scripts.d.ts +3 -0
  433. package/dist/avm2/builtin/scripts.d.ts.map +1 -0
  434. package/dist/avm2/builtin/scripts.js +1001 -0
  435. package/dist/avm2/builtin/scripts.js.map +1 -0
  436. package/dist/avm2/builtin/thunks.d.ts +4 -0
  437. package/dist/avm2/builtin/thunks.d.ts.map +1 -0
  438. package/dist/avm2/builtin/thunks.js +1322 -0
  439. package/dist/avm2/builtin/thunks.js.map +1 -0
  440. package/dist/avm2/builtin/uint.d.ts +2 -0
  441. package/dist/avm2/builtin/uint.d.ts.map +1 -0
  442. package/dist/avm2/builtin/uint.decl.d.ts +52 -0
  443. package/dist/avm2/builtin/uint.decl.d.ts.map +1 -0
  444. package/dist/avm2/builtin/uint.decl.js +21 -0
  445. package/dist/avm2/builtin/uint.decl.js.map +1 -0
  446. package/dist/avm2/builtin/uint.js +27 -0
  447. package/dist/avm2/builtin/uint.js.map +1 -0
  448. package/dist/avm2/builtin/xml/chars.d.ts +9 -0
  449. package/dist/avm2/builtin/xml/chars.d.ts.map +1 -0
  450. package/dist/avm2/builtin/xml/chars.js +113 -0
  451. package/dist/avm2/builtin/xml/chars.js.map +1 -0
  452. package/dist/avm2/builtin/xml/escape.d.ts +5 -0
  453. package/dist/avm2/builtin/xml/escape.d.ts.map +1 -0
  454. package/dist/avm2/builtin/xml/escape.js +39 -0
  455. package/dist/avm2/builtin/xml/escape.js.map +1 -0
  456. package/dist/avm2/builtin/xml/node.d.ts +94 -0
  457. package/dist/avm2/builtin/xml/node.d.ts.map +1 -0
  458. package/dist/avm2/builtin/xml/node.js +273 -0
  459. package/dist/avm2/builtin/xml/node.js.map +1 -0
  460. package/dist/avm2/builtin/xml/parser.d.ts +51 -0
  461. package/dist/avm2/builtin/xml/parser.d.ts.map +1 -0
  462. package/dist/avm2/builtin/xml/parser.js +357 -0
  463. package/dist/avm2/builtin/xml/parser.js.map +1 -0
  464. package/dist/avm2/builtin/xml/xml.d.ts +106 -0
  465. package/dist/avm2/builtin/xml/xml.d.ts.map +1 -0
  466. package/dist/avm2/builtin/xml/xml.js +1856 -0
  467. package/dist/avm2/builtin/xml/xml.js.map +1 -0
  468. package/dist/avm2/builtin-library.d.ts +2 -0
  469. package/dist/avm2/builtin-library.d.ts.map +1 -0
  470. package/dist/avm2/builtin-library.js +22 -0
  471. package/dist/avm2/builtin-library.js.map +1 -0
  472. package/dist/avm2/cache-fill.d.ts +14 -0
  473. package/dist/avm2/cache-fill.d.ts.map +1 -0
  474. package/dist/avm2/cache-fill.js +87 -0
  475. package/dist/avm2/cache-fill.js.map +1 -0
  476. package/dist/avm2/classes.d.ts +17 -0
  477. package/dist/avm2/classes.d.ts.map +1 -0
  478. package/dist/avm2/classes.js +212 -0
  479. package/dist/avm2/classes.js.map +1 -0
  480. package/dist/avm2/definitions.d.ts +28 -0
  481. package/dist/avm2/definitions.d.ts.map +1 -0
  482. package/dist/avm2/definitions.js +70 -0
  483. package/dist/avm2/definitions.js.map +1 -0
  484. package/dist/avm2/descriptors.d.ts +118 -0
  485. package/dist/avm2/descriptors.d.ts.map +1 -0
  486. package/dist/avm2/descriptors.js +6 -0
  487. package/dist/avm2/descriptors.js.map +1 -0
  488. package/dist/avm2/dictionary-keys.d.ts +73 -0
  489. package/dist/avm2/dictionary-keys.d.ts.map +1 -0
  490. package/dist/avm2/dictionary-keys.js +296 -0
  491. package/dist/avm2/dictionary-keys.js.map +1 -0
  492. package/dist/avm2/domain-memory.d.ts +23 -0
  493. package/dist/avm2/domain-memory.d.ts.map +1 -0
  494. package/dist/avm2/domain-memory.js +76 -0
  495. package/dist/avm2/domain-memory.js.map +1 -0
  496. package/dist/avm2/domain.d.ts +108 -0
  497. package/dist/avm2/domain.d.ts.map +1 -0
  498. package/dist/avm2/domain.js +281 -0
  499. package/dist/avm2/domain.js.map +1 -0
  500. package/dist/avm2/dynamic-properties.d.ts +62 -0
  501. package/dist/avm2/dynamic-properties.d.ts.map +1 -0
  502. package/dist/avm2/dynamic-properties.js +183 -0
  503. package/dist/avm2/dynamic-properties.js.map +1 -0
  504. package/dist/avm2/enumeration.d.ts +75 -0
  505. package/dist/avm2/enumeration.d.ts.map +1 -0
  506. package/dist/avm2/enumeration.js +394 -0
  507. package/dist/avm2/enumeration.js.map +1 -0
  508. package/dist/avm2/errors.d.ts +20 -0
  509. package/dist/avm2/errors.d.ts.map +1 -0
  510. package/dist/avm2/errors.js +46 -0
  511. package/dist/avm2/errors.js.map +1 -0
  512. package/dist/avm2/float-library.d.ts +2 -0
  513. package/dist/avm2/float-library.d.ts.map +1 -0
  514. package/dist/avm2/float-library.js +67 -0
  515. package/dist/avm2/float-library.js.map +1 -0
  516. package/dist/avm2/float.d.ts +9 -0
  517. package/dist/avm2/float.d.ts.map +1 -0
  518. package/dist/avm2/float.js +27 -0
  519. package/dist/avm2/float.js.map +1 -0
  520. package/dist/avm2/hooks.d.ts +77 -0
  521. package/dist/avm2/hooks.d.ts.map +1 -0
  522. package/dist/avm2/hooks.js +20 -0
  523. package/dist/avm2/hooks.js.map +1 -0
  524. package/dist/avm2/index.d.ts +32 -0
  525. package/dist/avm2/index.d.ts.map +1 -0
  526. package/dist/avm2/index.js +39 -0
  527. package/dist/avm2/index.js.map +1 -0
  528. package/dist/avm2/messages.d.ts +2 -0
  529. package/dist/avm2/messages.d.ts.map +1 -0
  530. package/dist/avm2/messages.js +178 -0
  531. package/dist/avm2/messages.js.map +1 -0
  532. package/dist/avm2/method-factories.d.ts +35 -0
  533. package/dist/avm2/method-factories.d.ts.map +1 -0
  534. package/dist/avm2/method-factories.js +96 -0
  535. package/dist/avm2/method-factories.js.map +1 -0
  536. package/dist/avm2/modules.d.ts +40 -0
  537. package/dist/avm2/modules.d.ts.map +1 -0
  538. package/dist/avm2/modules.js +106 -0
  539. package/dist/avm2/modules.js.map +1 -0
  540. package/dist/avm2/names.d.ts +143 -0
  541. package/dist/avm2/names.d.ts.map +1 -0
  542. package/dist/avm2/names.js +249 -0
  543. package/dist/avm2/names.js.map +1 -0
  544. package/dist/avm2/natives/aliases.d.ts +3 -0
  545. package/dist/avm2/natives/aliases.d.ts.map +1 -0
  546. package/dist/avm2/natives/aliases.js +48 -0
  547. package/dist/avm2/natives/aliases.js.map +1 -0
  548. package/dist/avm2/natives/array.d.ts +5 -0
  549. package/dist/avm2/natives/array.d.ts.map +1 -0
  550. package/dist/avm2/natives/array.js +391 -0
  551. package/dist/avm2/natives/array.js.map +1 -0
  552. package/dist/avm2/natives/bytearray.d.ts +180 -0
  553. package/dist/avm2/natives/bytearray.d.ts.map +1 -0
  554. package/dist/avm2/natives/bytearray.js +1228 -0
  555. package/dist/avm2/natives/bytearray.js.map +1 -0
  556. package/dist/avm2/natives/case.d.ts +5 -0
  557. package/dist/avm2/natives/case.d.ts.map +1 -0
  558. package/dist/avm2/natives/case.js +89 -0
  559. package/dist/avm2/natives/case.js.map +1 -0
  560. package/dist/avm2/natives/concurrent.d.ts +24 -0
  561. package/dist/avm2/natives/concurrent.d.ts.map +1 -0
  562. package/dist/avm2/natives/concurrent.js +200 -0
  563. package/dist/avm2/natives/concurrent.js.map +1 -0
  564. package/dist/avm2/natives/date.d.ts +5 -0
  565. package/dist/avm2/natives/date.d.ts.map +1 -0
  566. package/dist/avm2/natives/date.js +582 -0
  567. package/dist/avm2/natives/date.js.map +1 -0
  568. package/dist/avm2/natives/define.d.ts +58 -0
  569. package/dist/avm2/natives/define.d.ts.map +1 -0
  570. package/dist/avm2/natives/define.js +131 -0
  571. package/dist/avm2/natives/define.js.map +1 -0
  572. package/dist/avm2/natives/describe.d.ts +3 -0
  573. package/dist/avm2/natives/describe.d.ts.map +1 -0
  574. package/dist/avm2/natives/describe.js +352 -0
  575. package/dist/avm2/natives/describe.js.map +1 -0
  576. package/dist/avm2/natives/dictionary.d.ts +3 -0
  577. package/dist/avm2/natives/dictionary.d.ts.map +1 -0
  578. package/dist/avm2/natives/dictionary.js +13 -0
  579. package/dist/avm2/natives/dictionary.js.map +1 -0
  580. package/dist/avm2/natives/float-vector.d.ts +20 -0
  581. package/dist/avm2/natives/float-vector.d.ts.map +1 -0
  582. package/dist/avm2/natives/float-vector.js +82 -0
  583. package/dist/avm2/natives/float-vector.js.map +1 -0
  584. package/dist/avm2/natives/float.d.ts +5 -0
  585. package/dist/avm2/natives/float.d.ts.map +1 -0
  586. package/dist/avm2/natives/float.js +97 -0
  587. package/dist/avm2/natives/float.js.map +1 -0
  588. package/dist/avm2/natives/index.d.ts +7 -0
  589. package/dist/avm2/natives/index.d.ts.map +1 -0
  590. package/dist/avm2/natives/index.js +65 -0
  591. package/dist/avm2/natives/index.js.map +1 -0
  592. package/dist/avm2/natives/json.d.ts +3 -0
  593. package/dist/avm2/natives/json.d.ts.map +1 -0
  594. package/dist/avm2/natives/json.js +515 -0
  595. package/dist/avm2/natives/json.js.map +1 -0
  596. package/dist/avm2/natives/number.d.ts +15 -0
  597. package/dist/avm2/natives/number.d.ts.map +1 -0
  598. package/dist/avm2/natives/number.js +163 -0
  599. package/dist/avm2/natives/number.js.map +1 -0
  600. package/dist/avm2/natives/object.d.ts +8 -0
  601. package/dist/avm2/natives/object.d.ts.map +1 -0
  602. package/dist/avm2/natives/object.js +238 -0
  603. package/dist/avm2/natives/object.js.map +1 -0
  604. package/dist/avm2/natives/proxy.d.ts +5 -0
  605. package/dist/avm2/natives/proxy.d.ts.map +1 -0
  606. package/dist/avm2/natives/proxy.js +76 -0
  607. package/dist/avm2/natives/proxy.js.map +1 -0
  608. package/dist/avm2/natives/regexp.d.ts +21 -0
  609. package/dist/avm2/natives/regexp.d.ts.map +1 -0
  610. package/dist/avm2/natives/regexp.js +486 -0
  611. package/dist/avm2/natives/regexp.js.map +1 -0
  612. package/dist/avm2/natives/shell-workers.d.ts +140 -0
  613. package/dist/avm2/natives/shell-workers.d.ts.map +1 -0
  614. package/dist/avm2/natives/shell-workers.js +405 -0
  615. package/dist/avm2/natives/shell-workers.js.map +1 -0
  616. package/dist/avm2/natives/shell.d.ts +12 -0
  617. package/dist/avm2/natives/shell.d.ts.map +1 -0
  618. package/dist/avm2/natives/shell.js +558 -0
  619. package/dist/avm2/natives/shell.js.map +1 -0
  620. package/dist/avm2/natives/sort.d.ts +7 -0
  621. package/dist/avm2/natives/sort.d.ts.map +1 -0
  622. package/dist/avm2/natives/sort.js +378 -0
  623. package/dist/avm2/natives/sort.js.map +1 -0
  624. package/dist/avm2/natives/string.d.ts +5 -0
  625. package/dist/avm2/natives/string.d.ts.map +1 -0
  626. package/dist/avm2/natives/string.js +133 -0
  627. package/dist/avm2/natives/string.js.map +1 -0
  628. package/dist/avm2/natives/sync.d.ts +215 -0
  629. package/dist/avm2/natives/sync.d.ts.map +1 -0
  630. package/dist/avm2/natives/sync.js +822 -0
  631. package/dist/avm2/natives/sync.js.map +1 -0
  632. package/dist/avm2/natives/toplevel.d.ts +5 -0
  633. package/dist/avm2/natives/toplevel.d.ts.map +1 -0
  634. package/dist/avm2/natives/toplevel.js +140 -0
  635. package/dist/avm2/natives/toplevel.js.map +1 -0
  636. package/dist/avm2/natives/vector-elements.d.ts +10 -0
  637. package/dist/avm2/natives/vector-elements.d.ts.map +1 -0
  638. package/dist/avm2/natives/vector-elements.js +47 -0
  639. package/dist/avm2/natives/vector-elements.js.map +1 -0
  640. package/dist/avm2/natives/vector.d.ts +5 -0
  641. package/dist/avm2/natives/vector.d.ts.map +1 -0
  642. package/dist/avm2/natives/vector.js +407 -0
  643. package/dist/avm2/natives/vector.js.map +1 -0
  644. package/dist/avm2/natives/xml/access.d.ts +34 -0
  645. package/dist/avm2/natives/xml/access.d.ts.map +1 -0
  646. package/dist/avm2/natives/xml/access.js +634 -0
  647. package/dist/avm2/natives/xml/access.js.map +1 -0
  648. package/dist/avm2/natives/xml/build.d.ts +11 -0
  649. package/dist/avm2/natives/xml/build.d.ts.map +1 -0
  650. package/dist/avm2/natives/xml/build.js +292 -0
  651. package/dist/avm2/natives/xml/build.js.map +1 -0
  652. package/dist/avm2/natives/xml/chars.d.ts +9 -0
  653. package/dist/avm2/natives/xml/chars.d.ts.map +1 -0
  654. package/dist/avm2/natives/xml/chars.js +113 -0
  655. package/dist/avm2/natives/xml/chars.js.map +1 -0
  656. package/dist/avm2/natives/xml/escape.d.ts +5 -0
  657. package/dist/avm2/natives/xml/escape.d.ts.map +1 -0
  658. package/dist/avm2/natives/xml/escape.js +39 -0
  659. package/dist/avm2/natives/xml/escape.js.map +1 -0
  660. package/dist/avm2/natives/xml/names.d.ts +46 -0
  661. package/dist/avm2/natives/xml/names.d.ts.map +1 -0
  662. package/dist/avm2/natives/xml/names.js +205 -0
  663. package/dist/avm2/natives/xml/names.js.map +1 -0
  664. package/dist/avm2/natives/xml/node.d.ts +94 -0
  665. package/dist/avm2/natives/xml/node.d.ts.map +1 -0
  666. package/dist/avm2/natives/xml/node.js +273 -0
  667. package/dist/avm2/natives/xml/node.js.map +1 -0
  668. package/dist/avm2/natives/xml/operators.d.ts +7 -0
  669. package/dist/avm2/natives/xml/operators.d.ts.map +1 -0
  670. package/dist/avm2/natives/xml/operators.js +70 -0
  671. package/dist/avm2/natives/xml/operators.js.map +1 -0
  672. package/dist/avm2/natives/xml/parser.d.ts +51 -0
  673. package/dist/avm2/natives/xml/parser.d.ts.map +1 -0
  674. package/dist/avm2/natives/xml/parser.js +357 -0
  675. package/dist/avm2/natives/xml/parser.js.map +1 -0
  676. package/dist/avm2/natives/xml/strings.d.ts +10 -0
  677. package/dist/avm2/natives/xml/strings.d.ts.map +1 -0
  678. package/dist/avm2/natives/xml/strings.js +192 -0
  679. package/dist/avm2/natives/xml/strings.js.map +1 -0
  680. package/dist/avm2/natives/xml/values.d.ts +48 -0
  681. package/dist/avm2/natives/xml/values.d.ts.map +1 -0
  682. package/dist/avm2/natives/xml/values.js +123 -0
  683. package/dist/avm2/natives/xml/values.js.map +1 -0
  684. package/dist/avm2/natives/xml/xml.d.ts +5 -0
  685. package/dist/avm2/natives/xml/xml.d.ts.map +1 -0
  686. package/dist/avm2/natives/xml/xml.js +646 -0
  687. package/dist/avm2/natives/xml/xml.js.map +1 -0
  688. package/dist/avm2/number-strings.d.ts +28 -0
  689. package/dist/avm2/number-strings.d.ts.map +1 -0
  690. package/dist/avm2/number-strings.js +111 -0
  691. package/dist/avm2/number-strings.js.map +1 -0
  692. package/dist/avm2/numbers.d.ts +12 -0
  693. package/dist/avm2/numbers.d.ts.map +1 -0
  694. package/dist/avm2/numbers.js +559 -0
  695. package/dist/avm2/numbers.js.map +1 -0
  696. package/dist/avm2/options.d.ts +105 -0
  697. package/dist/avm2/options.d.ts.map +1 -0
  698. package/dist/avm2/options.js +17 -0
  699. package/dist/avm2/options.js.map +1 -0
  700. package/dist/avm2/player-messages.d.ts +3 -0
  701. package/dist/avm2/player-messages.d.ts.map +1 -0
  702. package/dist/avm2/player-messages.js +551 -0
  703. package/dist/avm2/player-messages.js.map +1 -0
  704. package/dist/avm2/property-cache.d.ts +61 -0
  705. package/dist/avm2/property-cache.d.ts.map +1 -0
  706. package/dist/avm2/property-cache.js +136 -0
  707. package/dist/avm2/property-cache.js.map +1 -0
  708. package/dist/avm2/runtime.d.ts +588 -0
  709. package/dist/avm2/runtime.d.ts.map +1 -0
  710. package/dist/avm2/runtime.js +2645 -0
  711. package/dist/avm2/runtime.js.map +1 -0
  712. package/dist/avm2/traits.d.ts +233 -0
  713. package/dist/avm2/traits.d.ts.map +1 -0
  714. package/dist/avm2/traits.js +510 -0
  715. package/dist/avm2/traits.js.map +1 -0
  716. package/dist/avm2/weak-keys.d.ts +25 -0
  717. package/dist/avm2/weak-keys.d.ts.map +1 -0
  718. package/dist/avm2/weak-keys.js +81 -0
  719. package/dist/avm2/weak-keys.js.map +1 -0
  720. package/dist/index.d.ts +8 -0
  721. package/dist/index.d.ts.map +1 -0
  722. package/dist/index.js +8 -0
  723. package/dist/index.js.map +1 -0
  724. package/package.json +43 -3
  725. package/src/avm1/activation.ts +114 -0
  726. package/src/avm1/case.ts +257 -0
  727. package/src/avm1/clips.ts +440 -0
  728. package/src/avm1/control.ts +339 -0
  729. package/src/avm1/errors.ts +60 -0
  730. package/src/avm1/functions.ts +271 -0
  731. package/src/avm1/globals/array.ts +676 -0
  732. package/src/avm1/globals/broadcaster.ts +185 -0
  733. package/src/avm1/globals/date.ts +548 -0
  734. package/src/avm1/globals/global.ts +420 -0
  735. package/src/avm1/globals/math.ts +152 -0
  736. package/src/avm1/globals/number.ts +122 -0
  737. package/src/avm1/globals/string.ts +254 -0
  738. package/src/avm1/globals/timers.ts +144 -0
  739. package/src/avm1/host.ts +155 -0
  740. package/src/avm1/index.ts +69 -0
  741. package/src/avm1/inheritance.ts +159 -0
  742. package/src/avm1/numbers.ts +348 -0
  743. package/src/avm1/objects.ts +1080 -0
  744. package/src/avm1/operators.ts +229 -0
  745. package/src/avm1/realm.ts +704 -0
  746. package/src/avm1/runtime.ts +1291 -0
  747. package/src/avm1/scope.ts +482 -0
  748. package/src/avm1/urls.ts +226 -0
  749. package/src/avm1/values.ts +145 -0
  750. package/src/avm2/amf-classes.ts +80 -0
  751. package/src/avm2/amf.ts +913 -0
  752. package/src/avm2/array-conversion.ts +117 -0
  753. package/src/avm2/builtin-library.ts +28 -0
  754. package/src/avm2/cache-fill.ts +124 -0
  755. package/src/avm2/classes.ts +235 -0
  756. package/src/avm2/definitions.ts +93 -0
  757. package/src/avm2/descriptors.ts +137 -0
  758. package/src/avm2/dictionary-keys.ts +345 -0
  759. package/src/avm2/domain-memory.ts +95 -0
  760. package/src/avm2/domain.ts +335 -0
  761. package/src/avm2/dynamic-properties.ts +209 -0
  762. package/src/avm2/enumeration.ts +506 -0
  763. package/src/avm2/errors.ts +54 -0
  764. package/src/avm2/float-library.ts +66 -0
  765. package/src/avm2/float.ts +31 -0
  766. package/src/avm2/hooks.ts +97 -0
  767. package/src/avm2/index.ts +84 -0
  768. package/src/avm2/messages.ts +178 -0
  769. package/src/avm2/method-factories.ts +130 -0
  770. package/src/avm2/modules.ts +120 -0
  771. package/src/avm2/names.ts +292 -0
  772. package/src/avm2/natives/aliases.ts +59 -0
  773. package/src/avm2/natives/array.ts +482 -0
  774. package/src/avm2/natives/bytearray.ts +1474 -0
  775. package/src/avm2/natives/case.ts +98 -0
  776. package/src/avm2/natives/concurrent.ts +268 -0
  777. package/src/avm2/natives/date.ts +678 -0
  778. package/src/avm2/natives/define.ts +176 -0
  779. package/src/avm2/natives/describe.ts +426 -0
  780. package/src/avm2/natives/dictionary.ts +18 -0
  781. package/src/avm2/natives/float-vector.ts +99 -0
  782. package/src/avm2/natives/float.ts +116 -0
  783. package/src/avm2/natives/index.ts +70 -0
  784. package/src/avm2/natives/json.ts +600 -0
  785. package/src/avm2/natives/number.ts +194 -0
  786. package/src/avm2/natives/object.ts +272 -0
  787. package/src/avm2/natives/proxy.ts +98 -0
  788. package/src/avm2/natives/regexp.ts +580 -0
  789. package/src/avm2/natives/shell-workers.ts +474 -0
  790. package/src/avm2/natives/shell.ts +707 -0
  791. package/src/avm2/natives/sort.ts +438 -0
  792. package/src/avm2/natives/string.ts +158 -0
  793. package/src/avm2/natives/sync.ts +964 -0
  794. package/src/avm2/natives/toplevel.ts +163 -0
  795. package/src/avm2/natives/vector-elements.ts +61 -0
  796. package/src/avm2/natives/vector.ts +511 -0
  797. package/src/avm2/natives/xml/access.ts +767 -0
  798. package/src/avm2/natives/xml/build.ts +381 -0
  799. package/src/avm2/natives/xml/chars.ts +127 -0
  800. package/src/avm2/natives/xml/escape.ts +46 -0
  801. package/src/avm2/natives/xml/names.ts +256 -0
  802. package/src/avm2/natives/xml/node.ts +339 -0
  803. package/src/avm2/natives/xml/operators.ts +90 -0
  804. package/src/avm2/natives/xml/parser.ts +414 -0
  805. package/src/avm2/natives/xml/strings.ts +241 -0
  806. package/src/avm2/natives/xml/values.ts +162 -0
  807. package/src/avm2/natives/xml/xml.ts +829 -0
  808. package/src/avm2/number-strings.ts +127 -0
  809. package/src/avm2/numbers.ts +605 -0
  810. package/src/avm2/options.ts +125 -0
  811. package/src/avm2/player-messages.ts +552 -0
  812. package/src/avm2/property-cache.ts +160 -0
  813. package/src/avm2/runtime.ts +3274 -0
  814. package/src/avm2/traits.ts +584 -0
  815. package/src/index.ts +8 -0
@@ -0,0 +1,335 @@
1
+ // Application domains, as avmplus' DomainMgr keeps them: the scripts each
2
+ // one's modules define, by name, and what each has found, from which a
3
+ // name's definition is looked up along a domain's chain.
4
+
5
+ import type { Abc, AsObject, CompileUnit, FoundDefinition, ScriptDesc } from "./descriptors.js";
6
+ import { type Multiname, type Namespace, NS_Private } from "./names.js";
7
+ import type { ClassRef } from "./traits.js";
8
+
9
+ /** A script: its descriptor, its global object once made, and whether it has run. */
10
+ export interface Script {
11
+ desc: ScriptDesc;
12
+ abc: Abc;
13
+ global: AsObject | null;
14
+ /** Not run, running, run, or failed: its initializer threw, which avmplus keeps as run. */
15
+ state: 0 | 1 | 2 | 3;
16
+ }
17
+
18
+ export interface GlobalName {
19
+ ns: Namespace;
20
+ version: number;
21
+ script: Script;
22
+ }
23
+
24
+ /**
25
+ * An application domain, as avmplus' Domain: the scripts its modules
26
+ * define, by name, a name its chain defines already not again (see
27
+ * Runtime.abc); the definitions it has found, by name, which it keeps
28
+ * (see Runtime.findScript), as names and, apart, as types; and the ABCs
29
+ * loaded into it, by hash.
30
+ */
31
+ export class Domain {
32
+ readonly globals = new Map<string, GlobalName[]>();
33
+ readonly cached = new Map<string, GlobalName[]>();
34
+ /** As avmplus' m_cachedTraits, which a name's lookup never fills, nor a type's m_cachedScripts. */
35
+ readonly types = new Map<string, GlobalName[]>();
36
+ readonly classRefs = new Map<Namespace, Map<string, ClassRef>>();
37
+ /**
38
+ * The classes classNamed found here, by qualified name: what a name
39
+ * finds in a domain is kept once found, so a player's lookups by name,
40
+ * one for each object it makes, need not name it anew each time.
41
+ */
42
+ readonly named = new Map<string, AsObject>();
43
+ /** The same, of the classes code finds by name, at user code's version (classNamedByCode). */
44
+ readonly namedByCode = new Map<string, AsObject>();
45
+ readonly own: string[] = [];
46
+ /** Each of its ABCs' place among all the runtime loads. */
47
+ readonly ownOrder: number[] = [];
48
+
49
+ constructor(
50
+ readonly parent: Domain | null,
51
+ /** Its number in its runtime, which a host's compiler knows it by: the root's is 0. */
52
+ readonly id: number,
53
+ ) {}
54
+
55
+ /**
56
+ * The ABCs a module loaded into it now is compiled after: its own and
57
+ * its ancestors', including those loaded after it was made, in the order
58
+ * they loaded.
59
+ */
60
+ chain(): string[] {
61
+ if (!this.parent) {
62
+ return [...this.own];
63
+ }
64
+
65
+ const loads: [number, string][] = [];
66
+ for (let d: Domain | null = this; d; d = d.parent) {
67
+ const { own, ownOrder } = d;
68
+ for (let i = 0; i < own.length; i++) {
69
+ loads.push([ownOrder[i], own[i]]);
70
+ }
71
+ }
72
+
73
+ return loads.sort((a, b) => a[0] - b[0]).map(([, hash]) => hash);
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Each frame's site, "script:line:column", innermost first, or null for a
79
+ * frame line it cannot read: V8's "at f (script:1:2)" and "at script:1:2",
80
+ * and SpiderMonkey's and JavaScriptCore's "f@script:1:2". Lines that are
81
+ * no frame, as V8's heading "Error", are left out. The site is read so
82
+ * that nothing a name holds can stand for it: in V8's frames, inside the
83
+ * last parentheses; in the others, after the first "@", since URLs may
84
+ * hold one ("/npm/p@1.0/m.js") and the names a SWF's code can have
85
+ * cannot (codegen spells them from [A-Za-z0-9_$]). One without a line and
86
+ * column is unread: JavaScriptCore's for code a Function or eval made,
87
+ * whatever its sourceURL ("f@"), and for native code ("f@[native code]"),
88
+ * and V8's "native", "<anonymous>" or "index 0".
89
+ */
90
+ export function frameSites(stack: string | undefined): (string | null)[] {
91
+ const lines = stack?.split("\n") ?? [];
92
+ const v8 = lines.some((line) => /^\s*at /.test(line));
93
+ const sites: (string | null)[] = [];
94
+ for (const line of lines) {
95
+ if (v8 ? !/^\s*at /.test(line) : !line.includes("@")) {
96
+ continue;
97
+ }
98
+
99
+ let site: string;
100
+ if (v8) {
101
+ const text = line.replace(/^\s*at /, "");
102
+ const open = text.lastIndexOf(" (");
103
+ site =
104
+ text.endsWith(")") && open >= 0 ? text.slice(open + 2, -1) : text.replace(/^async /, "");
105
+ } else {
106
+ site = line.slice(line.indexOf("@") + 1);
107
+ }
108
+
109
+ sites.push(/:\d+:\d+$/.test(site) ? site : null);
110
+ }
111
+
112
+ return sites;
113
+ }
114
+
115
+ /** A frame site's script: "script:1:2" without its line and column. */
116
+ export function siteScript(site: string): string | null {
117
+ const script = /^(.+):\d+:\d+$/.exec(site)?.[1];
118
+ // Deferred entries have separate debugger files but their module's code context.
119
+ return script?.replace(/^(swf2es-\d+\.js)\/\$f\d+\.js$/, "$1") ?? null;
120
+ }
121
+
122
+ /**
123
+ * The script each of a stack's frames names, innermost first, or null for
124
+ * a frame that names none or a line it cannot read (see frameSites). For
125
+ * security checks, where such a frame must not be passed over;
126
+ * frameScripts leaves them out.
127
+ */
128
+ export function stackFrames(stack: string | undefined): (string | null)[] {
129
+ return frameSites(stack).map((site) => (site === null ? null : siteScript(site)));
130
+ }
131
+
132
+ /** The scripts a stack's frames name, innermost first, those that name none left out. */
133
+ export function frameScripts(stack: string | undefined): string[] {
134
+ return stackFrames(stack).filter((at) => at !== null);
135
+ }
136
+
137
+ /** The definition of a table's that `mn` names: its namespaces in order, each at a version it sees. */
138
+ function match(table: Map<string, GlobalName[]>, mn: Multiname, name: string): GlobalName | null {
139
+ const list = table.get(name);
140
+ if (!list) {
141
+ return null;
142
+ }
143
+
144
+ for (let i = 0; i < mn.namespaces.length; i++) {
145
+ const ns = mn.namespaces[i];
146
+ for (const g of list) {
147
+ if (g.ns === ns && g.version <= mn.versions[i]) {
148
+ return g;
149
+ }
150
+ }
151
+ }
152
+
153
+ return null;
154
+ }
155
+
156
+ /** Add a definition to a table, unless it has one of that name in that namespace. */
157
+ export function add(table: Map<string, GlobalName[]>, g: GlobalName, name: string): void {
158
+ let list = table.get(name);
159
+ if (!list) {
160
+ list = [];
161
+ table.set(name, list);
162
+ }
163
+
164
+ if (!list.some((other) => other.ns === g.ns)) {
165
+ list.push(g);
166
+ }
167
+ }
168
+
169
+ /**
170
+ * The script that defines `mn` for `domain`, or null, as
171
+ * DomainMgr::findScriptInDomainByMultinameImpl finds it: a definition a
172
+ * domain of the chain has found before, from the name's own up; else the
173
+ * first loaded, from the root down. Either is kept by the name's domain,
174
+ * and one loaded by the domain that loaded it, so a child that found its
175
+ * own keeps it when its parent defines the name later. A type is found
176
+ * the same way through caches of its own (`asType`), as avmplus finds
177
+ * traits, so a class a child found by name is not the type it finds.
178
+ */
179
+ export function findScript(domain: Domain, mn: Multiname, asType: boolean): Script | null {
180
+ const name = mn.name;
181
+ if (name === null) {
182
+ return null;
183
+ }
184
+
185
+ const cache = (d: Domain) => (asType ? d.types : d.cached);
186
+ for (let d: Domain | null = domain; d; d = d.parent) {
187
+ const found = match(cache(d), mn, name);
188
+ if (found) {
189
+ if (d !== domain) {
190
+ add(cache(domain), found, name);
191
+ }
192
+
193
+ return found.script;
194
+ }
195
+ }
196
+
197
+ const chain: Domain[] = [];
198
+ for (let d: Domain | null = domain; d; d = d.parent) {
199
+ chain.push(d);
200
+ }
201
+
202
+ for (let k = chain.length - 1; k >= 0; k--) {
203
+ const found = match(chain[k].globals, mn, name);
204
+ if (found) {
205
+ add(cache(chain[k]), found, name);
206
+ add(cache(domain), found, name);
207
+ return found.script;
208
+ }
209
+ }
210
+
211
+ return null;
212
+ }
213
+
214
+ /**
215
+ * The script of the first definition of `mn` from the root down to
216
+ * `domain`, what no cache has changed, and caching none: for a question
217
+ * that must not decide what a later lookup finds.
218
+ */
219
+ export function firstDefinition(domain: Domain, mn: Multiname): Script | null {
220
+ const name = mn.name;
221
+ if (name === null) {
222
+ return null;
223
+ }
224
+
225
+ const chain: Domain[] = [];
226
+ for (let d: Domain | null = domain; d; d = d.parent) {
227
+ chain.push(d);
228
+ }
229
+
230
+ for (let k = chain.length - 1; k >= 0; k--) {
231
+ const found = match(chain[k].globals, mn, name);
232
+ if (found) {
233
+ return found.script;
234
+ }
235
+ }
236
+
237
+ return null;
238
+ }
239
+
240
+ /** What an ABC loaded into `domain` now compiles in. */
241
+ export function compileUnit(domain: Domain): CompileUnit {
242
+ const domains: number[] = [];
243
+ for (let d: Domain | null = domain; d; d = d.parent) {
244
+ domains.push(d.id);
245
+ }
246
+
247
+ return { linked: domain.chain(), domains, found: foundIn(domain) };
248
+ }
249
+
250
+ /**
251
+ * What `domain` finds, by name and as a type, that is not the first
252
+ * definition from the root down: what a cache of its chain holds, from
253
+ * the domain up. The root's caches hold only its own first definitions.
254
+ */
255
+ function foundIn(domain: Domain): FoundDefinition[] {
256
+ const found: FoundDefinition[] = [];
257
+ for (const asType of [false, true]) {
258
+ const seen = new Set<string>();
259
+ for (let d: Domain | null = domain; d?.parent; d = d.parent) {
260
+ for (const [name, list] of asType ? d.types : d.cached) {
261
+ for (const g of list) {
262
+ const key = `${g.ns.kind}:${g.ns.uri}::${name}`;
263
+ if (seen.has(key) || g.ns.uri === null || g.ns.kind === NS_Private) {
264
+ continue;
265
+ }
266
+
267
+ seen.add(key);
268
+ if (firstLoaded(domain, name, g.ns) !== g.script) {
269
+ const abc = g.script.abc;
270
+ found.push({
271
+ nsKind: g.ns.kind,
272
+ uri: g.ns.uri,
273
+ name,
274
+ domain: abc.domain.id,
275
+ index: abc.index,
276
+ hash: abc.hash,
277
+ asType,
278
+ });
279
+ }
280
+ }
281
+ }
282
+ }
283
+ }
284
+
285
+ return found;
286
+ }
287
+
288
+ /** The script that first defines `name` in `ns` for `domain`, from the root down. */
289
+ function firstLoaded(domain: Domain, name: string, ns: Namespace): Script | null {
290
+ const chain: Domain[] = [];
291
+ for (let d: Domain | null = domain; d; d = d.parent) {
292
+ chain.push(d);
293
+ }
294
+
295
+ for (let k = chain.length - 1; k >= 0; k--) {
296
+ const g = chain[k].globals.get(name)?.find((other) => other.ns === ns);
297
+ if (g) {
298
+ return g.script;
299
+ }
300
+ }
301
+
302
+ return null;
303
+ }
304
+
305
+ /** Whether `domain`'s chain defines `name` in `ns`, cached or loaded, without keeping what it finds. */
306
+ export function definedInChain(domain: Domain, name: string, ns: Namespace): boolean {
307
+ for (let d: Domain | null = domain; d; d = d.parent) {
308
+ if (
309
+ d.cached.get(name)?.some((g) => g.ns === ns) ||
310
+ d.globals.get(name)?.some((g) => g.ns === ns)
311
+ ) {
312
+ return true;
313
+ }
314
+ }
315
+
316
+ return false;
317
+ }
318
+
319
+ /**
320
+ * The names `domain`'s own modules define, private ones left out, as
321
+ * Flash's ApplicationDomain.getQualifiedDefinitionNames lists them:
322
+ * "pkg::Name", or the name alone in the top-level package.
323
+ */
324
+ export function definitionNames(domain: Domain): string[] {
325
+ const names: string[] = [];
326
+ for (const [name, list] of domain.globals) {
327
+ for (const g of list) {
328
+ if (g.ns.kind !== NS_Private) {
329
+ names.push(g.ns.uri ? `${g.ns.uri}::${name}` : name);
330
+ }
331
+ }
332
+ }
333
+
334
+ return names;
335
+ }
@@ -0,0 +1,209 @@
1
+ // A dynamic object's properties, and the slots a for-in goes through them
2
+ // by. As avmplus' hashtable, where a name, its value and its place in a
3
+ // for-in are one slot, the properties keep the slots themselves, as they
4
+ // are set and deleted: a for-in reads a slot at each step, with no lookup,
5
+ // and finds at its start only what changed since the last, with no list of
6
+ // names to build and compare. An object no for-in has gone through keeps no
7
+ // slots, and its properties are a Map as any other.
8
+
9
+ import type { Value } from "./descriptors.js";
10
+
11
+ /**
12
+ * The slots of an object's names, as avmplus' hashtable keeps them: a name
13
+ * keeps its slot while it is there, so that a for-in started inside another
14
+ * never moves the outer one's names. One deleted stays in its slot, which a
15
+ * for-in passes over, until a for-in next starts: then its slot is free.
16
+ * Names added since take the free slots, lowest first, in the order they
17
+ * were added, and only with none free does the list grow; set again before
18
+ * its slot is freed, a name takes it back.
19
+ */
20
+ /** A slot's name deleted, or the slot free: passed over. */
21
+ export const GONE = 0;
22
+ /** A slot's name there. */
23
+ const THERE = 1;
24
+ /** A slot's name set again after it was deleted, its slot still in `deleted`. */
25
+ const BACK = 2;
26
+
27
+ export class Walk {
28
+ /** Each slot's name, null where free. */
29
+ readonly slots: (string | null)[];
30
+ /** Whether each slot's name is there: GONE, THERE or BACK. */
31
+ readonly live: number[];
32
+ private readonly slotOf: Map<string, number>;
33
+ /** The names added since a for-in last placed them, oldest first, some since deleted or added again. */
34
+ private added: string[] = [];
35
+ /** The count of those at which the ones deleted are dropped and each kept once, so that none pile up. */
36
+ private addedLimit = 64;
37
+ /** The slots of the names deleted since a for-in last started, to free when one next does. */
38
+ private readonly deleted: number[] = [];
39
+ /** The free slots, lowest first. */
40
+ private readonly free: number[] = [];
41
+
42
+ constructor(names: string[]) {
43
+ this.slots = names;
44
+ this.live = new Array<number>(names.length).fill(THERE);
45
+ this.slotOf = new Map();
46
+ for (let i = 0; i < names.length; i++) {
47
+ this.slotOf.set(names[i], i);
48
+ }
49
+ }
50
+
51
+ /** `name`, not there, set: back in its slot if it still has one, else to take one. */
52
+ noteAdded(name: string, properties: Map<string, Value>): void {
53
+ const i = this.slotOf.get(name);
54
+ if (i !== undefined) {
55
+ // In `deleted` still: set again and deleted over and over, it is there once.
56
+ this.live[i] = BACK;
57
+ return;
58
+ }
59
+
60
+ this.added.push(name);
61
+ if (this.added.length >= this.addedLimit) {
62
+ this.added = this.settle(properties);
63
+ this.addedLimit = Math.max(64, this.added.length * 2);
64
+ }
65
+ }
66
+
67
+ /** `name`, there, deleted: passed over in its slot, if it has one, until a for-in next starts. */
68
+ noteDeleted(name: string): void {
69
+ const i = this.slotOf.get(name);
70
+ if (i === undefined) {
71
+ return;
72
+ }
73
+
74
+ if (this.live[i] === THERE) {
75
+ this.deleted.push(i);
76
+ }
77
+
78
+ this.live[i] = GONE;
79
+ }
80
+
81
+ /** At a for-in's start: the slots of the names deleted since the last are free. */
82
+ freeDeleted(): void {
83
+ const deleted = this.deleted;
84
+ if (deleted.length === 0) {
85
+ return;
86
+ }
87
+
88
+ const slots = this.slots;
89
+ for (let n = 0; n < deleted.length; n++) {
90
+ const i = deleted[n];
91
+ if (this.live[i] === BACK) {
92
+ this.live[i] = THERE;
93
+ } else {
94
+ this.slotOf.delete(slots[i] as string);
95
+ slots[i] = null;
96
+ this.free.push(i);
97
+ }
98
+ }
99
+
100
+ deleted.length = 0;
101
+ this.free.sort((a, b) => a - b);
102
+ }
103
+
104
+ /** The names added since this was last called, in the slots free, then after them. */
105
+ place(properties: Map<string, Value>): void {
106
+ if (this.added.length === 0) {
107
+ return;
108
+ }
109
+
110
+ const names = this.settle(properties);
111
+ const slots = this.slots;
112
+ const free = this.free;
113
+ let taken = 0;
114
+ for (let n = 0; n < names.length; n++) {
115
+ const name = names[n];
116
+ const i = taken < free.length ? free[taken++] : slots.length;
117
+ slots[i] = name;
118
+ this.live[i] = THERE;
119
+ this.slotOf.set(name, i);
120
+ }
121
+
122
+ free.splice(0, taken);
123
+ this.added = [];
124
+ this.addedLimit = 64;
125
+ }
126
+
127
+ /**
128
+ * The names of `added` still there and without a slot, each once, in the
129
+ * order the properties have them: by when each was last added.
130
+ */
131
+ private settle(properties: Map<string, Value>): string[] {
132
+ const added = this.added;
133
+ const kept: string[] = [];
134
+ const seen = new Set<string>();
135
+ for (let n = added.length - 1; n >= 0; n--) {
136
+ const name = added[n];
137
+ if (!seen.has(name) && properties.has(name) && !this.slotOf.has(name)) {
138
+ seen.add(name);
139
+ kept.push(name);
140
+ }
141
+ }
142
+
143
+ return kept.reverse();
144
+ }
145
+ }
146
+
147
+ /** An object's dynamic properties, by name, which keep their slots once a for-in has gone through them. */
148
+ export class DynamicProperties extends Map<string, Value> {
149
+ /** The slots, from the first for-in over the object. */
150
+ walk: Walk | null = null;
151
+ /**
152
+ * Whether every name was found hidden, as a prototype's methods are, so
153
+ * that a for-in passing through need not look at each again: until a
154
+ * name is set, or one shown (setPropertyIsEnumerable).
155
+ */
156
+ allHidden = false;
157
+
158
+ override set(name: string, value: Value): this {
159
+ this.allHidden = false;
160
+ // Undefined while the Map's constructor runs, before the field is set.
161
+ const walk = this.walk;
162
+ if (walk && !super.has(name)) {
163
+ walk.noteAdded(name, this);
164
+ }
165
+
166
+ return super.set(name, value);
167
+ }
168
+
169
+ override delete(name: string): boolean {
170
+ if (!super.delete(name)) {
171
+ return false;
172
+ }
173
+
174
+ this.walk?.noteDeleted(name);
175
+ return true;
176
+ }
177
+
178
+ override clear(): void {
179
+ const walk = this.walk;
180
+ if (walk) {
181
+ for (const name of super.keys()) {
182
+ walk.noteDeleted(name);
183
+ }
184
+ }
185
+
186
+ super.clear();
187
+ }
188
+
189
+ /**
190
+ * The slots at the start of a for-in over the names (`starting`), whose
191
+ * deleted names' slots are then free, or going on to them from an Array's
192
+ * elements, whose start freed them: with the names added since in them.
193
+ */
194
+ startWalk(starting: boolean): Walk {
195
+ let walk = this.walk;
196
+ if (walk === null) {
197
+ walk = new Walk([...super.keys()]);
198
+ this.walk = walk;
199
+ return walk;
200
+ }
201
+
202
+ if (starting) {
203
+ walk.freeDeleted();
204
+ }
205
+
206
+ walk.place(this);
207
+ return walk;
208
+ }
209
+ }