@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,482 @@
1
+ // AVM1's variables: names looked up along an activation's scope chain, and
2
+ // names that are paths, `a.b:c` or `/a/b:c`, resolved to an object and a
3
+ // name on it, as Ruffle's (https://github.com/ruffle-rs/ruffle)
4
+ // core/src/avm1/scope.rs and activation.rs (get_variable, set_variable,
5
+ // define_local, resolve_target_path) have them: MIT OR Apache-2.0,
6
+ // Copyright (c) 2018-2022 Ruffle LLC and Ruffle contributors.
7
+ //
8
+ // A path walks objects, and a clip's children by name, which only the
9
+ // player has: it gives them through the host (`child`, `parent`, `root`,
10
+ // `level`), as step 10 of docs/avm1.md fills in; until then a path walks
11
+ // objects' properties only.
12
+ import type { Host, Target } from "./host.js";
13
+ import { PRIMITIVE } from "./inheritance.js";
14
+ import {
15
+ type Avm1Object,
16
+ find,
17
+ fold,
18
+ foundValue,
19
+ get,
20
+ has,
21
+ Avm1Object as ObjectClass,
22
+ removeOwn,
23
+ set,
24
+ } from "./objects.js";
25
+ import type { Value } from "./values.js";
26
+
27
+ /** `_global`, at the bottom of every chain. */
28
+ export const SCOPE_Global = 0;
29
+ /** A clip whose timeline's code runs: where a variable set without one is made. */
30
+ export const SCOPE_Target = 1;
31
+ /** A function's activation object. */
32
+ export const SCOPE_Local = 2;
33
+ /** A `with`'s object. */
34
+ export const SCOPE_With = 3;
35
+
36
+ /**
37
+ * How many scopes a chain may hold, `_global` included: a With that would
38
+ * make it longer skips its body, as adl does (docs/avm1.md, "With and Try").
39
+ */
40
+ export const MAX_SCOPES = 15;
41
+
42
+ export class Scope {
43
+ constructor(
44
+ readonly parent: Scope | null,
45
+ readonly kind: number,
46
+ readonly object: Avm1Object,
47
+ /** How many scopes the chain holds, as adl counts them for MAX_SCOPES. */
48
+ readonly depth: number = parent === null ? 1 : parent.depth + 1,
49
+ ) {}
50
+ }
51
+
52
+ /** What variables need of an activation. */
53
+ export interface Variables {
54
+ scope: Scope;
55
+ /** `this`. */
56
+ self: Value;
57
+ /** The global object, `_global`. */
58
+ readonly global: Avm1Object;
59
+ readonly host: Host;
60
+ /** The clip whose code runs, whose `_root` a path's starts from. */
61
+ readonly base: Target;
62
+ }
63
+
64
+ /** Whether `c` ends a path's object part: `:`, and `.` from SWF 5. */
65
+ const separates = (c: number, version: number) => c === 0x3a || (c === 0x2e && version >= 5);
66
+
67
+ /** Where a name's last `:` or `.` is, the variable after it, -1 for a name without a path. */
68
+ function lastSeparator(name: string, version: number): number {
69
+ for (let i = name.length - 1; i >= 0; i--) {
70
+ if (separates(name.charCodeAt(i), version)) {
71
+ return i;
72
+ }
73
+ }
74
+
75
+ return -1;
76
+ }
77
+
78
+ /** Whether `a` and `b` are the same name for a SWF of `version`. */
79
+ const sameName = (a: string, b: string, version: number) =>
80
+ a === b || (version <= 6 && fold(a) === fold(b));
81
+
82
+ /** Whether `name` is `this`: case-insensitively up to SWF 6, in a function too (adl; Ruffle has a SWF 5 function's case-sensitive). */
83
+ function isThis(name: string, version: number): boolean {
84
+ if (name.length !== 4 || version < 5) {
85
+ return false;
86
+ }
87
+
88
+ if (name === "this") {
89
+ return true;
90
+ }
91
+
92
+ return version < 7 && fold(name) === "this";
93
+ }
94
+
95
+ /**
96
+ * `_root`, `_parent`, `_global` (from SWF 6) and `_levelN`: what a name
97
+ * the scope chain lacks may still be.
98
+ */
99
+ function pathProperty(cx: Variables, name: string, version: number): Value {
100
+ if (version < 5 || name.length < 5 || name.charCodeAt(0) !== 0x5f) {
101
+ return undefined;
102
+ }
103
+
104
+ if (sameName(name, "_root", version)) {
105
+ return cx.host.root?.(cx.base);
106
+ }
107
+
108
+ if (sameName(name, "_parent", version)) {
109
+ return cx.host.parent?.(cx.scope.object);
110
+ }
111
+
112
+ if (version >= 6 && sameName(name, "_global", version)) {
113
+ return cx.global;
114
+ }
115
+
116
+ return level(cx, name, version);
117
+ }
118
+
119
+ /** Whether `name` starts `_level` or `_flash`, a level's name whatever follows. */
120
+ function isLevel(name: string, version: number): boolean {
121
+ const prefix = name.slice(0, 6);
122
+ return sameName(prefix, "_level", version) || sameName(prefix, "_flash", version);
123
+ }
124
+
125
+ /**
126
+ * `_levelN` or `_flashN`: level N, if the host has it. N is a sign and the
127
+ * digits up to anything else, wrapping, none 0, as Ruffle's parse_level
128
+ * reads it: `_level0:x` and `_levelx` are level 0.
129
+ */
130
+ function level(cx: Variables, name: string, version: number): Value {
131
+ if (!isLevel(name, version)) {
132
+ return undefined;
133
+ }
134
+
135
+ const negative = name.charCodeAt(6) === 0x2d;
136
+ let n = 0;
137
+ for (let i = negative ? 7 : 6; i < name.length; i++) {
138
+ const d = name.charCodeAt(i) - 0x30;
139
+ if (d < 0 || d > 9) {
140
+ break;
141
+ }
142
+
143
+ n = (Math.imul(n, 10) + d) | 0;
144
+ }
145
+
146
+ return cx.host.level?.(negative ? -n | 0 : n);
147
+ }
148
+
149
+ /** A name without a path along the scope chain, as GetVariable and NewObject find it. */
150
+ export function resolve(cx: Variables, name: string, version: number): Value {
151
+ if (isThis(name, version)) {
152
+ return cx.self;
153
+ }
154
+
155
+ for (let s: Scope | null = cx.scope; s !== null; s = s.parent) {
156
+ const p = find(s.object, name, version);
157
+ if (p !== undefined) {
158
+ // The first property found is what get finds too, where its version sees it.
159
+ return foundValue(p, s.object, name, version);
160
+ }
161
+ }
162
+
163
+ return pathProperty(cx, name, version);
164
+ }
165
+
166
+ /** What `resolveCallable` found a function on, for CallFunction's `this`. */
167
+ export let foundOn: Value;
168
+ /** Whether that was a function's activation object. */
169
+ export let foundLocal = false;
170
+
171
+ /** As `resolve`, setting `foundOn` to the object that had the name, undefined for none. */
172
+ export function resolveCallable(cx: Variables, name: string, version: number): Value {
173
+ foundOn = undefined;
174
+ foundLocal = false;
175
+ const separator = lastSeparator(name, version);
176
+ if (separator >= 0 || (version >= 5 && name.includes("/"))) {
177
+ return getVariable(cx, name, version);
178
+ }
179
+
180
+ if (isThis(name, version)) {
181
+ return cx.self;
182
+ }
183
+
184
+ for (let s: Scope | null = cx.scope; s !== null; s = s.parent) {
185
+ if (has(s.object, name, version)) {
186
+ const value = get(s.object, name, version);
187
+ foundOn = s.object;
188
+ foundLocal = s.kind === SCOPE_Local;
189
+ return value;
190
+ }
191
+ }
192
+
193
+ return pathProperty(cx, name, version);
194
+ }
195
+
196
+ /**
197
+ * GetVariable: a name, or a path to an object and a name on it, the path
198
+ * tried from each scope in turn; a path without a variable is the object
199
+ * it names, from SWF 5.
200
+ */
201
+ export function getVariable(cx: Variables, name: string, version: number): Value {
202
+ const separator = lastSeparator(name, version);
203
+ if (separator >= 0) {
204
+ if (separator === 0) {
205
+ return undefined;
206
+ }
207
+
208
+ const path = name.slice(0, separator);
209
+ const variable = name.slice(separator + 1);
210
+ for (let s: Scope | null = cx.scope; s !== null; s = s.parent) {
211
+ const object = targetPath(cx, s.object, path, true, true, version);
212
+ if (object !== null && has(object, variable, version)) {
213
+ // After the getter, which may call functions of its own.
214
+ const value = get(object, variable, version);
215
+ foundOn = object;
216
+ return value;
217
+ }
218
+ }
219
+
220
+ return undefined;
221
+ }
222
+
223
+ if (version >= 5 && name.includes("/")) {
224
+ for (let s: Scope | null = cx.scope; s !== null; s = s.parent) {
225
+ const object = targetPath(cx, s.object, name, false, false, version);
226
+ if (object !== null) {
227
+ return object;
228
+ }
229
+ }
230
+ }
231
+
232
+ return resolve(cx, name, version);
233
+ }
234
+
235
+ /**
236
+ * SetVariable: a path's object takes the name, the first a scope resolves
237
+ * it to; a name without one is set where the scope chain has it, else on
238
+ * the target's clip. `this` from SWF 5 sets the activation's `this`.
239
+ */
240
+ export function setVariable(cx: Variables, name: string, value: Value, version: number): void {
241
+ if (name === "") {
242
+ return;
243
+ }
244
+
245
+ if (isThis(name, version)) {
246
+ cx.self = value;
247
+ return;
248
+ }
249
+
250
+ // A path's separators are `:` and `.` here in every version, and its
251
+ // `this` is no object in a timeline's code (adl sets nothing for `this.x`
252
+ // there), but is in a function's (the corpus's `path_string`).
253
+ const separator = lastSeparator(name, 5);
254
+ if (separator >= 0) {
255
+ const path = name.slice(0, separator);
256
+ const variable = name.slice(separator + 1);
257
+ const handleThis = inLocalScope(cx);
258
+ for (let s: Scope | null = cx.scope; s !== null; s = s.parent) {
259
+ const object = targetPath(cx, s.object, path, true, handleThis, version);
260
+ if (object !== null) {
261
+ set(object, variable, value, version);
262
+ return;
263
+ }
264
+ }
265
+
266
+ return;
267
+ }
268
+
269
+ let s = cx.scope;
270
+ for (;;) {
271
+ if (s.kind === SCOPE_Target || has(s.object, name, version) || s.parent === null) {
272
+ set(s.object, name, value, version);
273
+ return;
274
+ }
275
+
276
+ s = s.parent;
277
+ }
278
+ }
279
+
280
+ /** Whether the activation's chain reaches a function's scope before a clip's. */
281
+ function inLocalScope(cx: Variables): boolean {
282
+ for (let s: Scope | null = cx.scope; s !== null; s = s.parent) {
283
+ if (s.kind === SCOPE_Local) {
284
+ return true;
285
+ }
286
+
287
+ if (s.kind === SCOPE_Target) {
288
+ return false;
289
+ }
290
+ }
291
+
292
+ return false;
293
+ }
294
+
295
+ /** Whether a name has a `:` or a `.`, a path, in every version. */
296
+ const isPath = (name: string) => lastSeparator(name, 5) >= 0;
297
+
298
+ /** Set `name` on the top scope, or on the first below a `with` that lacks it. */
299
+ function defineOn(scope: Scope, name: string, value: Value, version: number): void {
300
+ let s = scope;
301
+ while (s.kind === SCOPE_With && s.parent !== null && s.object.own(name, version) === undefined) {
302
+ s = s.parent;
303
+ }
304
+
305
+ set(s.object, name, value, version);
306
+ }
307
+
308
+ /** DefineLocal: a variable of the activation's top scope; a path outside a function is set as SetVariable sets it. */
309
+ export function defineLocal(cx: Variables, name: string, value: Value, version: number): void {
310
+ if (!inLocalScope(cx) && isPath(name)) {
311
+ setVariable(cx, name, value, version);
312
+ } else {
313
+ defineOn(cx.scope, name, value, version);
314
+ }
315
+ }
316
+
317
+ /** DefineLocal2: as DefineLocal of undefined, where the variable is not there yet. */
318
+ export function defineLocal2(cx: Variables, name: string, version: number): void {
319
+ if (!inLocalScope(cx) && isPath(name)) {
320
+ if (getVariable(cx, name, version) === undefined) {
321
+ setVariable(cx, name, undefined, version);
322
+ }
323
+ } else if (!has(cx.scope.object, name, version)) {
324
+ defineOn(cx.scope, name, undefined, version);
325
+ }
326
+ }
327
+
328
+ /** Delete2: a path's variable on its object, or a name on the first scope that has it. */
329
+ export function deleteVariable(cx: Variables, name: string, version: number): boolean {
330
+ const separator = lastSeparator(name, 5);
331
+ if (separator >= 0) {
332
+ const object = getVariable(cx, name.slice(0, separator), version);
333
+ // A primitive where the object would be writes Flash's line of it (the corpus's `delete2`).
334
+ if (!(object instanceof ObjectClass)) {
335
+ if (object !== undefined && object !== null && version >= 5) {
336
+ cx.host.trace(PRIMITIVE);
337
+ }
338
+
339
+ return false;
340
+ }
341
+
342
+ return removeOwn(object, name.slice(separator + 1), version);
343
+ }
344
+
345
+ for (let s: Scope | null = cx.scope; s !== null; s = s.parent) {
346
+ if (has(s.object, name, version)) {
347
+ return removeOwn(s.object, name, version);
348
+ }
349
+ }
350
+
351
+ return false;
352
+ }
353
+
354
+ /**
355
+ * The object a target path names from `start`: names separated by `.`,
356
+ * `:` or `/`, `..` the parent, a leading `/` the root, `this`, `_root` and
357
+ * `_levelN` first; each name a clip's child, else a property. Null where a
358
+ * step is no object.
359
+ */
360
+ export function targetPath(
361
+ cx: Variables,
362
+ start: Avm1Object,
363
+ path: string,
364
+ firstElement: boolean,
365
+ handleThis: boolean,
366
+ version: number,
367
+ ): Avm1Object | null {
368
+ stoppedAtPrimitive = false;
369
+ if (path === "") {
370
+ return start;
371
+ }
372
+
373
+ const swf5 = version >= 5;
374
+ let object: Value = start;
375
+ let slash = false;
376
+ let i = 0;
377
+ /** The delimiter that ended the last step, 0 for none. */
378
+ let prev = 0;
379
+ if (path.charCodeAt(0) === 0x2f) {
380
+ i = 1;
381
+ prev = 0x2f;
382
+ firstElement = false;
383
+ slash = true;
384
+ object = cx.host.root?.(cx.base);
385
+ if (!(object instanceof ObjectClass)) {
386
+ return null;
387
+ }
388
+ }
389
+
390
+ const n = path.length;
391
+ while (i < n) {
392
+ if (swf5) {
393
+ // A path that ends in one goes on to an empty name, as Ruffle's does: none.
394
+ while (i < n && path.charCodeAt(i) === 0x3a) {
395
+ i++;
396
+ }
397
+ }
398
+
399
+ let value: Value;
400
+ const c2 = path.charCodeAt(i + 2);
401
+ if (
402
+ path.charCodeAt(i) === 0x2e &&
403
+ path.charCodeAt(i + 1) === 0x2e &&
404
+ (i + 2 >= n || c2 === 0x2f || (swf5 && c2 === 0x3a))
405
+ ) {
406
+ if (c2 === 0x2f) {
407
+ slash = true;
408
+ }
409
+
410
+ i += 3;
411
+ prev = c2;
412
+ value = cx.host.parent?.(object as Avm1Object);
413
+ // A level's parent is the level, but where a slash follows (the corpus's `target_paths`).
414
+ if (value === undefined) {
415
+ if (c2 === 0x2f) {
416
+ return null;
417
+ }
418
+
419
+ value = object;
420
+ }
421
+ } else {
422
+ let end = i;
423
+ for (; end < n; end++) {
424
+ const c = path.charCodeAt(end);
425
+ if ((c === 0x3a && swf5) || (c === 0x2e && swf5 && !slash)) {
426
+ break;
427
+ }
428
+
429
+ if (c === 0x2f) {
430
+ slash = true;
431
+ break;
432
+ }
433
+ }
434
+
435
+ const name = path.slice(i, end);
436
+ const after = prev;
437
+ prev = end < n ? path.charCodeAt(end) : 0;
438
+ i = end + 1;
439
+ // An empty name is nothing first, after a slash, or at the end after a
440
+ // colon, else no step at all (`//a`, `.a` and `a::` name nothing, `a:/`
441
+ // and `a..` name `a`: the corpus's `target_paths` and `path_string`).
442
+ if (name === "") {
443
+ if (after === 0x2f || after === 0 || (end >= n && after === 0x3a)) {
444
+ return null;
445
+ }
446
+
447
+ value = object;
448
+ } else if (swf5 && handleThis && sameName(name, "this", version)) {
449
+ value = cx.self;
450
+ } else if (swf5 && firstElement && sameName(name, "_root", version)) {
451
+ value = cx.host.root?.(cx.base);
452
+ } else if (version >= 6 && firstElement && sameName(name, "_global", version)) {
453
+ value = cx.global;
454
+ } else if (firstElement && isLevel(name, version)) {
455
+ value = level(cx, name, version);
456
+ } else {
457
+ const o = object as Avm1Object;
458
+ value = cx.host.child?.(o, name, version > 6);
459
+ if (value === undefined) {
460
+ value = get(o, name, version);
461
+ }
462
+ }
463
+ }
464
+
465
+ firstElement = false;
466
+ if (!(value instanceof ObjectClass)) {
467
+ stoppedAtPrimitive = value !== undefined && value !== null;
468
+ return null;
469
+ }
470
+
471
+ object = value;
472
+ }
473
+
474
+ return object as Avm1Object;
475
+ }
476
+
477
+ /**
478
+ * Whether the last `targetPath` that named no object stopped at a
479
+ * primitive, which a clip's path taken as an object writes Flash's line
480
+ * of to the log for (the corpus's `target_paths`).
481
+ */
482
+ export let stoppedAtPrimitive = false;
@@ -0,0 +1,226 @@
1
+ // AVM1's GetURL and GetURL2, which getURL, fscommand, loadMovie,
2
+ // loadMovieNum, unloadMovie, loadVariables and loadVariablesNum compile
3
+ // to, as Ruffle's (https://github.com/ruffle-rs/ruffle)
4
+ // core/src/avm1/activation.rs (action_get_url, action_get_url_2,
5
+ // object_into_form_values), core/src/avm1/fscommand.rs and
6
+ // core/src/backend/navigator.rs (normalize_navigate_target) have them:
7
+ // MIT OR Apache-2.0, Copyright (c) 2018-2022 Ruffle LLC and Ruffle
8
+ // contributors.
9
+ //
10
+ // The runtime only routes: what each request does is the host's
11
+ // (host.ts), and a host without the hook drops it.
12
+ import type { Activation } from "./activation.js";
13
+ import { pathTarget, targetOrRoot } from "./clips.js";
14
+ import { Avm1Throw } from "./errors.js";
15
+ import type { Target, UrlForm } from "./host.js";
16
+ import { Avm1Object, get, keys } from "./objects.js";
17
+ import { stringOf, type Value } from "./values.js";
18
+
19
+ /** GetURL2's flags past the method (decode.ts reads a method of 3 as none). */
20
+ const METHOD_MASK = 3;
21
+ const LOAD_TARGET = 0x40;
22
+ const LOAD_VARIABLES = 0x80;
23
+
24
+ /** The command of an `FSCommand:` URL, in any case; null for any other URL. */
25
+ function fsCommandOf(url: string): string | null {
26
+ return url.length >= 10 && url.slice(0, 10).toLowerCase() === "fscommand:" ? url.slice(10) : null;
27
+ }
28
+
29
+ /** "blank" with or without its underscore, in any case, as "_blank"; any other window as given. */
30
+ function windowOf(target: string): string {
31
+ return /^_?blank$/i.test(target) ? "_blank" : target;
32
+ }
33
+
34
+ /** A level's number as Rust's i32 parse reads it: a sign and digits only, in range, else null. */
35
+ function levelInt(text: string): number | null {
36
+ if (!/^[+-]?\d+$/.test(text)) {
37
+ return null;
38
+ }
39
+
40
+ const n = Number(text);
41
+ return n >= -0x80000000 && n <= 0x7fffffff ? n : null;
42
+ }
43
+
44
+ /** A level's number as Rust's f64 parse reads it and `as i32` truncates it, saturated; null for no number. */
45
+ function levelFloat(text: string): number | null {
46
+ if (!/^[+-]?(\d+\.?\d*([eE][+-]?\d+)?|\.\d+([eE][+-]?\d+)?|inf|infinity|nan)$/i.test(text)) {
47
+ return null;
48
+ }
49
+
50
+ const body = text.replace(/^[+-]/, "").toLowerCase();
51
+ const n = body === "inf" || body === "infinity" ? Infinity : Number(body);
52
+ if (Number.isNaN(n)) {
53
+ return 0;
54
+ }
55
+
56
+ const signed = text.startsWith("-") ? -n : n;
57
+ return Math.max(-0x80000000, Math.min(0x7fffffff, Math.trunc(signed))) | 0;
58
+ }
59
+
60
+ /**
61
+ * The variables a request with a method sends: the innermost scope's
62
+ * object's, as for..in lists them, each as a string; one whose getter
63
+ * throws is "undefined", as Ruffle has it.
64
+ */
65
+ function formOf(cx: Activation, flags: number, version: number): UrlForm | null {
66
+ const method = flags & METHOD_MASK;
67
+ if (method === 0) {
68
+ return null;
69
+ }
70
+
71
+ const object = cx.scope.object;
72
+ const vars: [string, string][] = [];
73
+ for (const name of keys(object, version)) {
74
+ let text: string;
75
+ try {
76
+ text = stringOf(get(object, name, version), version);
77
+ } catch (error) {
78
+ if (!(error instanceof Avm1Throw)) {
79
+ throw error;
80
+ }
81
+
82
+ text = "undefined";
83
+ }
84
+
85
+ vars.push([name, text]);
86
+ }
87
+
88
+ return { method: method === 1 ? "GET" : "POST", vars };
89
+ }
90
+
91
+ /**
92
+ * GetURL: `FSCommand:` to the host's fscommand, the target the arguments;
93
+ * a target `_levelN` loads the URL into that level, or with an empty one
94
+ * unloads it, nothing where N is no number; any other target is a window
95
+ * the page opens in.
96
+ */
97
+ export function getUrl(cx: Activation, url: string, target: string): void {
98
+ if (target.startsWith("_level") && target.length > 6) {
99
+ const level = levelInt(target.slice(6));
100
+ if (level !== null) {
101
+ cx.host.loadMovie?.(level, url, null);
102
+ }
103
+
104
+ return;
105
+ }
106
+
107
+ const command = fsCommandOf(url);
108
+ if (command !== null) {
109
+ cx.host.fsCommand?.(command, target);
110
+ return;
111
+ }
112
+
113
+ cx.host.navigate?.(url, windowOf(target), null);
114
+ }
115
+
116
+ /**
117
+ * MovieClip.getURL(url, window, method), from the code `cx` runs:
118
+ * `FSCommand:` as GetURL's, the window the arguments; else the page, with
119
+ * the scope's variables where the method is "GET" or "POST" in any case.
120
+ */
121
+ export function getUrlMethod(cx: Activation, args: Value[], version: number): void {
122
+ if (args.length === 0) {
123
+ return;
124
+ }
125
+
126
+ const url = stringOf(args[0], version);
127
+ const command = fsCommandOf(url);
128
+ if (command !== null) {
129
+ cx.host.fsCommand?.(command, stringOf(args[1], version));
130
+ return;
131
+ }
132
+
133
+ const window = args.length > 1 ? stringOf(args[1], version) : "";
134
+ const method = typeof args[2] === "string" ? args[2].toLowerCase() : "";
135
+ const flags = method === "get" ? 1 : method === "post" ? 2 : 0;
136
+ cx.host.navigate?.(url, windowOf(window), formOf(cx, flags, version));
137
+ }
138
+
139
+ /**
140
+ * GetURL2, its target popped first and converted first: `FSCommand:` as
141
+ * GetURL's; else by its flags, loadVariables into a clip or a level (or,
142
+ * named by a path but not the root, a page after all), loadMovie into a
143
+ * clip or a level, loadMovieNum into a level the target names, or the page
144
+ * a window opens; those of a method send the scope's variables, but
145
+ * loadMovieNum and a page without one.
146
+ */
147
+ export function getUrl2(
148
+ cx: Activation,
149
+ targetValue: Value,
150
+ urlValue: Value,
151
+ flags: number,
152
+ version: number,
153
+ ): void {
154
+ const target = stringOf(targetValue, version);
155
+ const url = stringOf(urlValue, version);
156
+ const command = fsCommandOf(url);
157
+ if (command !== null) {
158
+ cx.host.fsCommand?.(command, target);
159
+ return;
160
+ }
161
+
162
+ let level = -1;
163
+ if (target.startsWith("_level")) {
164
+ level = levelFloat(target.slice(6)) ?? (target.length === 6 ? 0 : -1);
165
+ }
166
+
167
+ const loadVariables = (flags & LOAD_VARIABLES) !== 0;
168
+ const loadTarget = (flags & LOAD_TARGET) !== 0;
169
+ let clip: Target | null = null;
170
+ if (level > -1) {
171
+ clip = levelClip(cx, level);
172
+ } else if (loadVariables || loadTarget) {
173
+ clip = clipOf(cx, targetValue, version);
174
+ }
175
+
176
+ if (loadVariables) {
177
+ let into = loadTarget || level > -1;
178
+ // A path's clip that is not the root is a page to open.
179
+ if (!into && targetValue instanceof Avm1Object && clip !== null) {
180
+ into = clip === rootClip(cx);
181
+ }
182
+
183
+ if (into) {
184
+ if (clip !== null) {
185
+ cx.host.loadVariables?.(clip, url, formOf(cx, flags, version));
186
+ }
187
+
188
+ return;
189
+ }
190
+ } else if (loadTarget) {
191
+ if (url === "") {
192
+ if (clip !== null) {
193
+ cx.host.loadMovie?.(clip, "", null);
194
+ }
195
+ } else if (clip !== null || level > -1) {
196
+ cx.host.loadMovie?.(clip ?? level, url, formOf(cx, flags, version));
197
+ }
198
+
199
+ return;
200
+ } else if (level > -1) {
201
+ cx.host.loadMovie?.(clip ?? level, url, null);
202
+ return;
203
+ }
204
+
205
+ cx.host.navigate?.(url, windowOf(target), formOf(cx, flags, version));
206
+ }
207
+
208
+ /** The clip of level `level`, null where there is none yet. */
209
+ function levelClip(cx: Activation, level: number): Target | null {
210
+ const object = cx.host.level?.(level);
211
+ return object instanceof Avm1Object ? (cx.host.clipOf?.(object) ?? null) : null;
212
+ }
213
+
214
+ function rootClip(cx: Activation): Target | null {
215
+ const root = cx.host.root?.(cx.base);
216
+ return root instanceof Avm1Object ? (cx.host.clipOf?.(root) ?? null) : null;
217
+ }
218
+
219
+ /** The clip a target names: a clip's object itself, none for any other object, else its path from the target. */
220
+ function clipOf(cx: Activation, value: Value, version: number): Target | null {
221
+ if (value instanceof Avm1Object) {
222
+ return cx.host.clipOf?.(value) ?? null;
223
+ }
224
+
225
+ return pathTarget(cx, targetOrRoot(cx), stringOf(value, version), version);
226
+ }