@swf2es/runtime 0.0.0-stage → 0.1.1

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 (459) 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-library.d.ts +2 -0
  117. package/dist/avm2/builtin-library.d.ts.map +1 -0
  118. package/dist/avm2/builtin-library.js +22 -0
  119. package/dist/avm2/builtin-library.js.map +1 -0
  120. package/dist/avm2/cache-fill.d.ts +14 -0
  121. package/dist/avm2/cache-fill.d.ts.map +1 -0
  122. package/dist/avm2/cache-fill.js +87 -0
  123. package/dist/avm2/cache-fill.js.map +1 -0
  124. package/dist/avm2/classes.d.ts +17 -0
  125. package/dist/avm2/classes.d.ts.map +1 -0
  126. package/dist/avm2/classes.js +212 -0
  127. package/dist/avm2/classes.js.map +1 -0
  128. package/dist/avm2/definitions.d.ts +28 -0
  129. package/dist/avm2/definitions.d.ts.map +1 -0
  130. package/dist/avm2/definitions.js +70 -0
  131. package/dist/avm2/definitions.js.map +1 -0
  132. package/dist/avm2/descriptors.d.ts +118 -0
  133. package/dist/avm2/descriptors.d.ts.map +1 -0
  134. package/dist/avm2/descriptors.js +6 -0
  135. package/dist/avm2/descriptors.js.map +1 -0
  136. package/dist/avm2/dictionary-keys.d.ts +73 -0
  137. package/dist/avm2/dictionary-keys.d.ts.map +1 -0
  138. package/dist/avm2/dictionary-keys.js +296 -0
  139. package/dist/avm2/dictionary-keys.js.map +1 -0
  140. package/dist/avm2/domain-memory.d.ts +23 -0
  141. package/dist/avm2/domain-memory.d.ts.map +1 -0
  142. package/dist/avm2/domain-memory.js +76 -0
  143. package/dist/avm2/domain-memory.js.map +1 -0
  144. package/dist/avm2/domain.d.ts +108 -0
  145. package/dist/avm2/domain.d.ts.map +1 -0
  146. package/dist/avm2/domain.js +281 -0
  147. package/dist/avm2/domain.js.map +1 -0
  148. package/dist/avm2/dynamic-properties.d.ts +62 -0
  149. package/dist/avm2/dynamic-properties.d.ts.map +1 -0
  150. package/dist/avm2/dynamic-properties.js +183 -0
  151. package/dist/avm2/dynamic-properties.js.map +1 -0
  152. package/dist/avm2/enumeration.d.ts +75 -0
  153. package/dist/avm2/enumeration.d.ts.map +1 -0
  154. package/dist/avm2/enumeration.js +394 -0
  155. package/dist/avm2/enumeration.js.map +1 -0
  156. package/dist/avm2/errors.d.ts +20 -0
  157. package/dist/avm2/errors.d.ts.map +1 -0
  158. package/dist/avm2/errors.js +46 -0
  159. package/dist/avm2/errors.js.map +1 -0
  160. package/dist/avm2/float-library.d.ts +2 -0
  161. package/dist/avm2/float-library.d.ts.map +1 -0
  162. package/dist/avm2/float-library.js +67 -0
  163. package/dist/avm2/float-library.js.map +1 -0
  164. package/dist/avm2/float.d.ts +9 -0
  165. package/dist/avm2/float.d.ts.map +1 -0
  166. package/dist/avm2/float.js +27 -0
  167. package/dist/avm2/float.js.map +1 -0
  168. package/dist/avm2/hooks.d.ts +77 -0
  169. package/dist/avm2/hooks.d.ts.map +1 -0
  170. package/dist/avm2/hooks.js +20 -0
  171. package/dist/avm2/hooks.js.map +1 -0
  172. package/dist/avm2/index.d.ts +32 -0
  173. package/dist/avm2/index.d.ts.map +1 -0
  174. package/dist/avm2/index.js +39 -0
  175. package/dist/avm2/index.js.map +1 -0
  176. package/dist/avm2/messages.d.ts +2 -0
  177. package/dist/avm2/messages.d.ts.map +1 -0
  178. package/dist/avm2/messages.js +178 -0
  179. package/dist/avm2/messages.js.map +1 -0
  180. package/dist/avm2/method-factories.d.ts +35 -0
  181. package/dist/avm2/method-factories.d.ts.map +1 -0
  182. package/dist/avm2/method-factories.js +96 -0
  183. package/dist/avm2/method-factories.js.map +1 -0
  184. package/dist/avm2/modules.d.ts +40 -0
  185. package/dist/avm2/modules.d.ts.map +1 -0
  186. package/dist/avm2/modules.js +106 -0
  187. package/dist/avm2/modules.js.map +1 -0
  188. package/dist/avm2/names.d.ts +143 -0
  189. package/dist/avm2/names.d.ts.map +1 -0
  190. package/dist/avm2/names.js +249 -0
  191. package/dist/avm2/names.js.map +1 -0
  192. package/dist/avm2/natives/aliases.d.ts +3 -0
  193. package/dist/avm2/natives/aliases.d.ts.map +1 -0
  194. package/dist/avm2/natives/aliases.js +48 -0
  195. package/dist/avm2/natives/aliases.js.map +1 -0
  196. package/dist/avm2/natives/array.d.ts +5 -0
  197. package/dist/avm2/natives/array.d.ts.map +1 -0
  198. package/dist/avm2/natives/array.js +391 -0
  199. package/dist/avm2/natives/array.js.map +1 -0
  200. package/dist/avm2/natives/bytearray.d.ts +180 -0
  201. package/dist/avm2/natives/bytearray.d.ts.map +1 -0
  202. package/dist/avm2/natives/bytearray.js +1228 -0
  203. package/dist/avm2/natives/bytearray.js.map +1 -0
  204. package/dist/avm2/natives/case.d.ts +5 -0
  205. package/dist/avm2/natives/case.d.ts.map +1 -0
  206. package/dist/avm2/natives/case.js +89 -0
  207. package/dist/avm2/natives/case.js.map +1 -0
  208. package/dist/avm2/natives/concurrent.d.ts +24 -0
  209. package/dist/avm2/natives/concurrent.d.ts.map +1 -0
  210. package/dist/avm2/natives/concurrent.js +200 -0
  211. package/dist/avm2/natives/concurrent.js.map +1 -0
  212. package/dist/avm2/natives/date.d.ts +5 -0
  213. package/dist/avm2/natives/date.d.ts.map +1 -0
  214. package/dist/avm2/natives/date.js +582 -0
  215. package/dist/avm2/natives/date.js.map +1 -0
  216. package/dist/avm2/natives/define.d.ts +58 -0
  217. package/dist/avm2/natives/define.d.ts.map +1 -0
  218. package/dist/avm2/natives/define.js +131 -0
  219. package/dist/avm2/natives/define.js.map +1 -0
  220. package/dist/avm2/natives/describe.d.ts +3 -0
  221. package/dist/avm2/natives/describe.d.ts.map +1 -0
  222. package/dist/avm2/natives/describe.js +352 -0
  223. package/dist/avm2/natives/describe.js.map +1 -0
  224. package/dist/avm2/natives/dictionary.d.ts +3 -0
  225. package/dist/avm2/natives/dictionary.d.ts.map +1 -0
  226. package/dist/avm2/natives/dictionary.js +13 -0
  227. package/dist/avm2/natives/dictionary.js.map +1 -0
  228. package/dist/avm2/natives/float-vector.d.ts +20 -0
  229. package/dist/avm2/natives/float-vector.d.ts.map +1 -0
  230. package/dist/avm2/natives/float-vector.js +82 -0
  231. package/dist/avm2/natives/float-vector.js.map +1 -0
  232. package/dist/avm2/natives/float.d.ts +5 -0
  233. package/dist/avm2/natives/float.d.ts.map +1 -0
  234. package/dist/avm2/natives/float.js +97 -0
  235. package/dist/avm2/natives/float.js.map +1 -0
  236. package/dist/avm2/natives/index.d.ts +7 -0
  237. package/dist/avm2/natives/index.d.ts.map +1 -0
  238. package/dist/avm2/natives/index.js +65 -0
  239. package/dist/avm2/natives/index.js.map +1 -0
  240. package/dist/avm2/natives/json.d.ts +3 -0
  241. package/dist/avm2/natives/json.d.ts.map +1 -0
  242. package/dist/avm2/natives/json.js +515 -0
  243. package/dist/avm2/natives/json.js.map +1 -0
  244. package/dist/avm2/natives/number.d.ts +15 -0
  245. package/dist/avm2/natives/number.d.ts.map +1 -0
  246. package/dist/avm2/natives/number.js +163 -0
  247. package/dist/avm2/natives/number.js.map +1 -0
  248. package/dist/avm2/natives/object.d.ts +8 -0
  249. package/dist/avm2/natives/object.d.ts.map +1 -0
  250. package/dist/avm2/natives/object.js +238 -0
  251. package/dist/avm2/natives/object.js.map +1 -0
  252. package/dist/avm2/natives/proxy.d.ts +5 -0
  253. package/dist/avm2/natives/proxy.d.ts.map +1 -0
  254. package/dist/avm2/natives/proxy.js +76 -0
  255. package/dist/avm2/natives/proxy.js.map +1 -0
  256. package/dist/avm2/natives/regexp.d.ts +21 -0
  257. package/dist/avm2/natives/regexp.d.ts.map +1 -0
  258. package/dist/avm2/natives/regexp.js +486 -0
  259. package/dist/avm2/natives/regexp.js.map +1 -0
  260. package/dist/avm2/natives/shell-workers.d.ts +140 -0
  261. package/dist/avm2/natives/shell-workers.d.ts.map +1 -0
  262. package/dist/avm2/natives/shell-workers.js +405 -0
  263. package/dist/avm2/natives/shell-workers.js.map +1 -0
  264. package/dist/avm2/natives/shell.d.ts +12 -0
  265. package/dist/avm2/natives/shell.d.ts.map +1 -0
  266. package/dist/avm2/natives/shell.js +558 -0
  267. package/dist/avm2/natives/shell.js.map +1 -0
  268. package/dist/avm2/natives/sort.d.ts +7 -0
  269. package/dist/avm2/natives/sort.d.ts.map +1 -0
  270. package/dist/avm2/natives/sort.js +378 -0
  271. package/dist/avm2/natives/sort.js.map +1 -0
  272. package/dist/avm2/natives/string.d.ts +5 -0
  273. package/dist/avm2/natives/string.d.ts.map +1 -0
  274. package/dist/avm2/natives/string.js +133 -0
  275. package/dist/avm2/natives/string.js.map +1 -0
  276. package/dist/avm2/natives/sync.d.ts +215 -0
  277. package/dist/avm2/natives/sync.d.ts.map +1 -0
  278. package/dist/avm2/natives/sync.js +822 -0
  279. package/dist/avm2/natives/sync.js.map +1 -0
  280. package/dist/avm2/natives/toplevel.d.ts +5 -0
  281. package/dist/avm2/natives/toplevel.d.ts.map +1 -0
  282. package/dist/avm2/natives/toplevel.js +140 -0
  283. package/dist/avm2/natives/toplevel.js.map +1 -0
  284. package/dist/avm2/natives/vector-elements.d.ts +10 -0
  285. package/dist/avm2/natives/vector-elements.d.ts.map +1 -0
  286. package/dist/avm2/natives/vector-elements.js +47 -0
  287. package/dist/avm2/natives/vector-elements.js.map +1 -0
  288. package/dist/avm2/natives/vector.d.ts +5 -0
  289. package/dist/avm2/natives/vector.d.ts.map +1 -0
  290. package/dist/avm2/natives/vector.js +407 -0
  291. package/dist/avm2/natives/vector.js.map +1 -0
  292. package/dist/avm2/natives/xml/access.d.ts +34 -0
  293. package/dist/avm2/natives/xml/access.d.ts.map +1 -0
  294. package/dist/avm2/natives/xml/access.js +634 -0
  295. package/dist/avm2/natives/xml/access.js.map +1 -0
  296. package/dist/avm2/natives/xml/build.d.ts +11 -0
  297. package/dist/avm2/natives/xml/build.d.ts.map +1 -0
  298. package/dist/avm2/natives/xml/build.js +292 -0
  299. package/dist/avm2/natives/xml/build.js.map +1 -0
  300. package/dist/avm2/natives/xml/chars.d.ts +9 -0
  301. package/dist/avm2/natives/xml/chars.d.ts.map +1 -0
  302. package/dist/avm2/natives/xml/chars.js +113 -0
  303. package/dist/avm2/natives/xml/chars.js.map +1 -0
  304. package/dist/avm2/natives/xml/escape.d.ts +5 -0
  305. package/dist/avm2/natives/xml/escape.d.ts.map +1 -0
  306. package/dist/avm2/natives/xml/escape.js +39 -0
  307. package/dist/avm2/natives/xml/escape.js.map +1 -0
  308. package/dist/avm2/natives/xml/names.d.ts +46 -0
  309. package/dist/avm2/natives/xml/names.d.ts.map +1 -0
  310. package/dist/avm2/natives/xml/names.js +205 -0
  311. package/dist/avm2/natives/xml/names.js.map +1 -0
  312. package/dist/avm2/natives/xml/node.d.ts +94 -0
  313. package/dist/avm2/natives/xml/node.d.ts.map +1 -0
  314. package/dist/avm2/natives/xml/node.js +273 -0
  315. package/dist/avm2/natives/xml/node.js.map +1 -0
  316. package/dist/avm2/natives/xml/operators.d.ts +7 -0
  317. package/dist/avm2/natives/xml/operators.d.ts.map +1 -0
  318. package/dist/avm2/natives/xml/operators.js +70 -0
  319. package/dist/avm2/natives/xml/operators.js.map +1 -0
  320. package/dist/avm2/natives/xml/parser.d.ts +51 -0
  321. package/dist/avm2/natives/xml/parser.d.ts.map +1 -0
  322. package/dist/avm2/natives/xml/parser.js +357 -0
  323. package/dist/avm2/natives/xml/parser.js.map +1 -0
  324. package/dist/avm2/natives/xml/strings.d.ts +10 -0
  325. package/dist/avm2/natives/xml/strings.d.ts.map +1 -0
  326. package/dist/avm2/natives/xml/strings.js +192 -0
  327. package/dist/avm2/natives/xml/strings.js.map +1 -0
  328. package/dist/avm2/natives/xml/values.d.ts +48 -0
  329. package/dist/avm2/natives/xml/values.d.ts.map +1 -0
  330. package/dist/avm2/natives/xml/values.js +123 -0
  331. package/dist/avm2/natives/xml/values.js.map +1 -0
  332. package/dist/avm2/natives/xml/xml.d.ts +5 -0
  333. package/dist/avm2/natives/xml/xml.d.ts.map +1 -0
  334. package/dist/avm2/natives/xml/xml.js +646 -0
  335. package/dist/avm2/natives/xml/xml.js.map +1 -0
  336. package/dist/avm2/number-strings.d.ts +28 -0
  337. package/dist/avm2/number-strings.d.ts.map +1 -0
  338. package/dist/avm2/number-strings.js +111 -0
  339. package/dist/avm2/number-strings.js.map +1 -0
  340. package/dist/avm2/numbers.d.ts +12 -0
  341. package/dist/avm2/numbers.d.ts.map +1 -0
  342. package/dist/avm2/numbers.js +559 -0
  343. package/dist/avm2/numbers.js.map +1 -0
  344. package/dist/avm2/options.d.ts +105 -0
  345. package/dist/avm2/options.d.ts.map +1 -0
  346. package/dist/avm2/options.js +17 -0
  347. package/dist/avm2/options.js.map +1 -0
  348. package/dist/avm2/player-messages.d.ts +3 -0
  349. package/dist/avm2/player-messages.d.ts.map +1 -0
  350. package/dist/avm2/player-messages.js +551 -0
  351. package/dist/avm2/player-messages.js.map +1 -0
  352. package/dist/avm2/property-cache.d.ts +61 -0
  353. package/dist/avm2/property-cache.d.ts.map +1 -0
  354. package/dist/avm2/property-cache.js +136 -0
  355. package/dist/avm2/property-cache.js.map +1 -0
  356. package/dist/avm2/runtime.d.ts +588 -0
  357. package/dist/avm2/runtime.d.ts.map +1 -0
  358. package/dist/avm2/runtime.js +2645 -0
  359. package/dist/avm2/runtime.js.map +1 -0
  360. package/dist/avm2/traits.d.ts +233 -0
  361. package/dist/avm2/traits.d.ts.map +1 -0
  362. package/dist/avm2/traits.js +510 -0
  363. package/dist/avm2/traits.js.map +1 -0
  364. package/dist/index.d.ts +8 -0
  365. package/dist/index.d.ts.map +1 -0
  366. package/dist/index.js +8 -0
  367. package/dist/index.js.map +1 -0
  368. package/package.json +43 -3
  369. package/src/avm1/activation.ts +114 -0
  370. package/src/avm1/case.ts +257 -0
  371. package/src/avm1/clips.ts +440 -0
  372. package/src/avm1/control.ts +339 -0
  373. package/src/avm1/errors.ts +60 -0
  374. package/src/avm1/functions.ts +271 -0
  375. package/src/avm1/globals/array.ts +676 -0
  376. package/src/avm1/globals/broadcaster.ts +185 -0
  377. package/src/avm1/globals/date.ts +548 -0
  378. package/src/avm1/globals/global.ts +420 -0
  379. package/src/avm1/globals/math.ts +152 -0
  380. package/src/avm1/globals/number.ts +122 -0
  381. package/src/avm1/globals/string.ts +254 -0
  382. package/src/avm1/globals/timers.ts +144 -0
  383. package/src/avm1/host.ts +155 -0
  384. package/src/avm1/index.ts +69 -0
  385. package/src/avm1/inheritance.ts +159 -0
  386. package/src/avm1/numbers.ts +348 -0
  387. package/src/avm1/objects.ts +1080 -0
  388. package/src/avm1/operators.ts +229 -0
  389. package/src/avm1/realm.ts +704 -0
  390. package/src/avm1/runtime.ts +1291 -0
  391. package/src/avm1/scope.ts +482 -0
  392. package/src/avm1/urls.ts +226 -0
  393. package/src/avm1/values.ts +145 -0
  394. package/src/avm2/amf-classes.ts +80 -0
  395. package/src/avm2/amf.ts +913 -0
  396. package/src/avm2/array-conversion.ts +117 -0
  397. package/src/avm2/builtin-library.ts +28 -0
  398. package/src/avm2/cache-fill.ts +124 -0
  399. package/src/avm2/classes.ts +235 -0
  400. package/src/avm2/definitions.ts +93 -0
  401. package/src/avm2/descriptors.ts +137 -0
  402. package/src/avm2/dictionary-keys.ts +345 -0
  403. package/src/avm2/domain-memory.ts +95 -0
  404. package/src/avm2/domain.ts +335 -0
  405. package/src/avm2/dynamic-properties.ts +209 -0
  406. package/src/avm2/enumeration.ts +506 -0
  407. package/src/avm2/errors.ts +54 -0
  408. package/src/avm2/float-library.ts +66 -0
  409. package/src/avm2/float.ts +31 -0
  410. package/src/avm2/hooks.ts +97 -0
  411. package/src/avm2/index.ts +84 -0
  412. package/src/avm2/messages.ts +178 -0
  413. package/src/avm2/method-factories.ts +130 -0
  414. package/src/avm2/modules.ts +120 -0
  415. package/src/avm2/names.ts +292 -0
  416. package/src/avm2/natives/aliases.ts +59 -0
  417. package/src/avm2/natives/array.ts +482 -0
  418. package/src/avm2/natives/bytearray.ts +1474 -0
  419. package/src/avm2/natives/case.ts +98 -0
  420. package/src/avm2/natives/concurrent.ts +268 -0
  421. package/src/avm2/natives/date.ts +678 -0
  422. package/src/avm2/natives/define.ts +176 -0
  423. package/src/avm2/natives/describe.ts +426 -0
  424. package/src/avm2/natives/dictionary.ts +18 -0
  425. package/src/avm2/natives/float-vector.ts +99 -0
  426. package/src/avm2/natives/float.ts +116 -0
  427. package/src/avm2/natives/index.ts +70 -0
  428. package/src/avm2/natives/json.ts +600 -0
  429. package/src/avm2/natives/number.ts +194 -0
  430. package/src/avm2/natives/object.ts +272 -0
  431. package/src/avm2/natives/proxy.ts +98 -0
  432. package/src/avm2/natives/regexp.ts +580 -0
  433. package/src/avm2/natives/shell-workers.ts +474 -0
  434. package/src/avm2/natives/shell.ts +707 -0
  435. package/src/avm2/natives/sort.ts +438 -0
  436. package/src/avm2/natives/string.ts +158 -0
  437. package/src/avm2/natives/sync.ts +964 -0
  438. package/src/avm2/natives/toplevel.ts +163 -0
  439. package/src/avm2/natives/vector-elements.ts +61 -0
  440. package/src/avm2/natives/vector.ts +511 -0
  441. package/src/avm2/natives/xml/access.ts +767 -0
  442. package/src/avm2/natives/xml/build.ts +381 -0
  443. package/src/avm2/natives/xml/chars.ts +127 -0
  444. package/src/avm2/natives/xml/escape.ts +46 -0
  445. package/src/avm2/natives/xml/names.ts +256 -0
  446. package/src/avm2/natives/xml/node.ts +339 -0
  447. package/src/avm2/natives/xml/operators.ts +90 -0
  448. package/src/avm2/natives/xml/parser.ts +414 -0
  449. package/src/avm2/natives/xml/strings.ts +241 -0
  450. package/src/avm2/natives/xml/values.ts +162 -0
  451. package/src/avm2/natives/xml/xml.ts +829 -0
  452. package/src/avm2/number-strings.ts +127 -0
  453. package/src/avm2/numbers.ts +605 -0
  454. package/src/avm2/options.ts +125 -0
  455. package/src/avm2/player-messages.ts +552 -0
  456. package/src/avm2/property-cache.ts +160 -0
  457. package/src/avm2/runtime.ts +3274 -0
  458. package/src/avm2/traits.ts +584 -0
  459. package/src/index.ts +8 -0
@@ -0,0 +1,181 @@
1
+ import { pathTarget, targetOrRoot } from "./clips.js";
2
+ import { Avm1Throw } from "./errors.js";
3
+ import { Avm1Object, get, keys } from "./objects.js";
4
+ import { stringOf } from "./values.js";
5
+ /** GetURL2's flags past the method (decode.ts reads a method of 3 as none). */
6
+ const METHOD_MASK = 3;
7
+ const LOAD_TARGET = 0x40;
8
+ const LOAD_VARIABLES = 0x80;
9
+ /** The command of an `FSCommand:` URL, in any case; null for any other URL. */
10
+ function fsCommandOf(url) {
11
+ return url.length >= 10 && url.slice(0, 10).toLowerCase() === "fscommand:" ? url.slice(10) : null;
12
+ }
13
+ /** "blank" with or without its underscore, in any case, as "_blank"; any other window as given. */
14
+ function windowOf(target) {
15
+ return /^_?blank$/i.test(target) ? "_blank" : target;
16
+ }
17
+ /** A level's number as Rust's i32 parse reads it: a sign and digits only, in range, else null. */
18
+ function levelInt(text) {
19
+ if (!/^[+-]?\d+$/.test(text)) {
20
+ return null;
21
+ }
22
+ const n = Number(text);
23
+ return n >= -0x80000000 && n <= 0x7fffffff ? n : null;
24
+ }
25
+ /** A level's number as Rust's f64 parse reads it and `as i32` truncates it, saturated; null for no number. */
26
+ function levelFloat(text) {
27
+ if (!/^[+-]?(\d+\.?\d*([eE][+-]?\d+)?|\.\d+([eE][+-]?\d+)?|inf|infinity|nan)$/i.test(text)) {
28
+ return null;
29
+ }
30
+ const body = text.replace(/^[+-]/, "").toLowerCase();
31
+ const n = body === "inf" || body === "infinity" ? Infinity : Number(body);
32
+ if (Number.isNaN(n)) {
33
+ return 0;
34
+ }
35
+ const signed = text.startsWith("-") ? -n : n;
36
+ return Math.max(-0x80000000, Math.min(0x7fffffff, Math.trunc(signed))) | 0;
37
+ }
38
+ /**
39
+ * The variables a request with a method sends: the innermost scope's
40
+ * object's, as for..in lists them, each as a string; one whose getter
41
+ * throws is "undefined", as Ruffle has it.
42
+ */
43
+ function formOf(cx, flags, version) {
44
+ const method = flags & METHOD_MASK;
45
+ if (method === 0) {
46
+ return null;
47
+ }
48
+ const object = cx.scope.object;
49
+ const vars = [];
50
+ for (const name of keys(object, version)) {
51
+ let text;
52
+ try {
53
+ text = stringOf(get(object, name, version), version);
54
+ }
55
+ catch (error) {
56
+ if (!(error instanceof Avm1Throw)) {
57
+ throw error;
58
+ }
59
+ text = "undefined";
60
+ }
61
+ vars.push([name, text]);
62
+ }
63
+ return { method: method === 1 ? "GET" : "POST", vars };
64
+ }
65
+ /**
66
+ * GetURL: `FSCommand:` to the host's fscommand, the target the arguments;
67
+ * a target `_levelN` loads the URL into that level, or with an empty one
68
+ * unloads it, nothing where N is no number; any other target is a window
69
+ * the page opens in.
70
+ */
71
+ export function getUrl(cx, url, target) {
72
+ if (target.startsWith("_level") && target.length > 6) {
73
+ const level = levelInt(target.slice(6));
74
+ if (level !== null) {
75
+ cx.host.loadMovie?.(level, url, null);
76
+ }
77
+ return;
78
+ }
79
+ const command = fsCommandOf(url);
80
+ if (command !== null) {
81
+ cx.host.fsCommand?.(command, target);
82
+ return;
83
+ }
84
+ cx.host.navigate?.(url, windowOf(target), null);
85
+ }
86
+ /**
87
+ * MovieClip.getURL(url, window, method), from the code `cx` runs:
88
+ * `FSCommand:` as GetURL's, the window the arguments; else the page, with
89
+ * the scope's variables where the method is "GET" or "POST" in any case.
90
+ */
91
+ export function getUrlMethod(cx, args, version) {
92
+ if (args.length === 0) {
93
+ return;
94
+ }
95
+ const url = stringOf(args[0], version);
96
+ const command = fsCommandOf(url);
97
+ if (command !== null) {
98
+ cx.host.fsCommand?.(command, stringOf(args[1], version));
99
+ return;
100
+ }
101
+ const window = args.length > 1 ? stringOf(args[1], version) : "";
102
+ const method = typeof args[2] === "string" ? args[2].toLowerCase() : "";
103
+ const flags = method === "get" ? 1 : method === "post" ? 2 : 0;
104
+ cx.host.navigate?.(url, windowOf(window), formOf(cx, flags, version));
105
+ }
106
+ /**
107
+ * GetURL2, its target popped first and converted first: `FSCommand:` as
108
+ * GetURL's; else by its flags, loadVariables into a clip or a level (or,
109
+ * named by a path but not the root, a page after all), loadMovie into a
110
+ * clip or a level, loadMovieNum into a level the target names, or the page
111
+ * a window opens; those of a method send the scope's variables, but
112
+ * loadMovieNum and a page without one.
113
+ */
114
+ export function getUrl2(cx, targetValue, urlValue, flags, version) {
115
+ const target = stringOf(targetValue, version);
116
+ const url = stringOf(urlValue, version);
117
+ const command = fsCommandOf(url);
118
+ if (command !== null) {
119
+ cx.host.fsCommand?.(command, target);
120
+ return;
121
+ }
122
+ let level = -1;
123
+ if (target.startsWith("_level")) {
124
+ level = levelFloat(target.slice(6)) ?? (target.length === 6 ? 0 : -1);
125
+ }
126
+ const loadVariables = (flags & LOAD_VARIABLES) !== 0;
127
+ const loadTarget = (flags & LOAD_TARGET) !== 0;
128
+ let clip = null;
129
+ if (level > -1) {
130
+ clip = levelClip(cx, level);
131
+ }
132
+ else if (loadVariables || loadTarget) {
133
+ clip = clipOf(cx, targetValue, version);
134
+ }
135
+ if (loadVariables) {
136
+ let into = loadTarget || level > -1;
137
+ // A path's clip that is not the root is a page to open.
138
+ if (!into && targetValue instanceof Avm1Object && clip !== null) {
139
+ into = clip === rootClip(cx);
140
+ }
141
+ if (into) {
142
+ if (clip !== null) {
143
+ cx.host.loadVariables?.(clip, url, formOf(cx, flags, version));
144
+ }
145
+ return;
146
+ }
147
+ }
148
+ else if (loadTarget) {
149
+ if (url === "") {
150
+ if (clip !== null) {
151
+ cx.host.loadMovie?.(clip, "", null);
152
+ }
153
+ }
154
+ else if (clip !== null || level > -1) {
155
+ cx.host.loadMovie?.(clip ?? level, url, formOf(cx, flags, version));
156
+ }
157
+ return;
158
+ }
159
+ else if (level > -1) {
160
+ cx.host.loadMovie?.(clip ?? level, url, null);
161
+ return;
162
+ }
163
+ cx.host.navigate?.(url, windowOf(target), formOf(cx, flags, version));
164
+ }
165
+ /** The clip of level `level`, null where there is none yet. */
166
+ function levelClip(cx, level) {
167
+ const object = cx.host.level?.(level);
168
+ return object instanceof Avm1Object ? (cx.host.clipOf?.(object) ?? null) : null;
169
+ }
170
+ function rootClip(cx) {
171
+ const root = cx.host.root?.(cx.base);
172
+ return root instanceof Avm1Object ? (cx.host.clipOf?.(root) ?? null) : null;
173
+ }
174
+ /** The clip a target names: a clip's object itself, none for any other object, else its path from the target. */
175
+ function clipOf(cx, value, version) {
176
+ if (value instanceof Avm1Object) {
177
+ return cx.host.clipOf?.(value) ?? null;
178
+ }
179
+ return pathTarget(cx, targetOrRoot(cx), stringOf(value, version), version);
180
+ }
181
+ //# sourceMappingURL=urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/avm1/urls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ export type Primitive = undefined | null | boolean | number | string;
2
+ /**
3
+ * An AVM1 value: a JavaScript primitive, a number always a double, as
4
+ * AVM1 has no int, or an object, which the objects' step (docs/avm1.md,
5
+ * step 6) makes an `Avm1Object`.
6
+ */
7
+ export type Value = Primitive | object;
8
+ /**
9
+ * What converting an object asks of it, by calling its `valueOf` or
10
+ * `toString`, which the step that brings objects (6) and the one that
11
+ * brings their classes (9) give; until then each throws NotYet, ending the
12
+ * block, as an action not done yet does. They are set once, on this
13
+ * object, never per version: the version is an argument.
14
+ */
15
+ export interface ObjectConversions {
16
+ /**
17
+ * `valueOf()`, as ToNumber, Less2 and Equals2 call it: the object itself
18
+ * where it gives no primitive.
19
+ */
20
+ valueOf(object: object, version: number): Value;
21
+ /**
22
+ * Add2's: `valueOf()`, but a Date's `toString()` from SWF 6; the object
23
+ * itself where neither gives a primitive.
24
+ */
25
+ toPrimitive(object: object, version: number): Value;
26
+ /**
27
+ * `toString()`, a clip's path, or "[type Object]" or "[type Function]"
28
+ * where it gives no string.
29
+ */
30
+ toString(object: object, version: number): string;
31
+ /** "object", "function" or "movieclip". */
32
+ typeOf(object: object): string;
33
+ }
34
+ export declare const objects: ObjectConversions;
35
+ export declare const isPrimitive: (value: Value) => value is Primitive;
36
+ /**
37
+ * A value as a condition: a string by its number up to SWF 6 ("0" and "a"
38
+ * are false), by its length from SWF 7; an object is true.
39
+ */
40
+ export declare function toBoolean(value: Value, version: number): boolean;
41
+ /**
42
+ * A primitive as a number: undefined and null are 0 up to SWF 6 and NaN
43
+ * from 7, and an object a `valueOf` left is 0 up to SWF 4 and NaN after.
44
+ */
45
+ export declare function primitiveToNumber(value: Value, version: number): number;
46
+ /** A value as a number, an object by its `valueOf`. */
47
+ export declare function toNumber(value: Value, version: number): number;
48
+ /** A value as a string: undefined is "" up to SWF 6, and a boolean 1 or 0 up to SWF 4. */
49
+ export declare function stringOf(value: Value, version: number): string;
50
+ /** `typeof`, the same in every version. */
51
+ export declare function typeOf(value: Value): string;
52
+ //# sourceMappingURL=values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/avm1/values.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAErE;;;;GAIG;AACH,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAChD;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IACpD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAClD,2CAA2C;IAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAMD,eAAO,MAAM,OAAO,EAAE,iBAKrB,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,KAAK,KAAG,KAAK,IAAI,SAC0B,CAAC;AAE/E;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAmBhE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAiBvE;AAED,uDAAuD;AACvD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAiB9D;AAED,2CAA2C;AAC3C,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAU3C"}
@@ -0,0 +1,98 @@
1
+ // AVM1's values and their conversions, by the version of the SWF whose
2
+ // code converts them, as Ruffle's (https://github.com/ruffle-rs/ruffle)
3
+ // core/src/avm1/value.rs has them (as_bool, coerce_to_f64,
4
+ // coerce_to_string, to_primitive): MIT OR Apache-2.0, Copyright (c)
5
+ // 2018-2022 Ruffle LLC and Ruffle contributors.
6
+ import { NotYet } from "./errors.js";
7
+ import { numberToString, stringToNumber } from "./numbers.js";
8
+ const notYet = (what) => () => {
9
+ throw new NotYet(what);
10
+ };
11
+ export const objects = {
12
+ valueOf: notYet("valueOf of an object"),
13
+ toPrimitive: notYet("an object to a primitive"),
14
+ toString: notYet("toString of an object"),
15
+ typeOf: notYet("typeof of an object"),
16
+ };
17
+ export const isPrimitive = (value) => value === null || (typeof value !== "object" && typeof value !== "function");
18
+ /**
19
+ * A value as a condition: a string by its number up to SWF 6 ("0" and "a"
20
+ * are false), by its length from SWF 7; an object is true.
21
+ */
22
+ export function toBoolean(value, version) {
23
+ switch (typeof value) {
24
+ case "boolean":
25
+ return value;
26
+ case "number":
27
+ return value !== 0 && !Number.isNaN(value);
28
+ case "string": {
29
+ if (version >= 7) {
30
+ return value.length > 0;
31
+ }
32
+ const n = stringToNumber(value, version);
33
+ return n !== 0 && !Number.isNaN(n);
34
+ }
35
+ case "undefined":
36
+ return false;
37
+ default:
38
+ return value !== null;
39
+ }
40
+ }
41
+ /**
42
+ * A primitive as a number: undefined and null are 0 up to SWF 6 and NaN
43
+ * from 7, and an object a `valueOf` left is 0 up to SWF 4 and NaN after.
44
+ */
45
+ export function primitiveToNumber(value, version) {
46
+ switch (typeof value) {
47
+ case "number":
48
+ return value;
49
+ case "boolean":
50
+ return value ? 1 : 0;
51
+ case "string":
52
+ return stringToNumber(value, version);
53
+ case "undefined":
54
+ return version < 7 ? 0 : Number.NaN;
55
+ default:
56
+ if (value === null) {
57
+ return version < 7 ? 0 : Number.NaN;
58
+ }
59
+ return version < 5 ? 0 : Number.NaN;
60
+ }
61
+ }
62
+ /** A value as a number, an object by its `valueOf`. */
63
+ export function toNumber(value, version) {
64
+ return isPrimitive(value)
65
+ ? primitiveToNumber(value, version)
66
+ : primitiveToNumber(objects.valueOf(value, version), version);
67
+ }
68
+ /** A value as a string: undefined is "" up to SWF 6, and a boolean 1 or 0 up to SWF 4. */
69
+ export function stringOf(value, version) {
70
+ switch (typeof value) {
71
+ case "undefined":
72
+ return version >= 7 ? "undefined" : "";
73
+ case "boolean":
74
+ if (version < 5) {
75
+ return value ? "1" : "0";
76
+ }
77
+ return value ? "true" : "false";
78
+ case "number":
79
+ return numberToString(value);
80
+ case "string":
81
+ return value;
82
+ default:
83
+ return value === null ? "null" : objects.toString(value, version);
84
+ }
85
+ }
86
+ /** `typeof`, the same in every version. */
87
+ export function typeOf(value) {
88
+ switch (typeof value) {
89
+ case "undefined":
90
+ case "number":
91
+ case "boolean":
92
+ case "string":
93
+ return typeof value;
94
+ default:
95
+ return value === null ? "null" : objects.typeOf(value);
96
+ }
97
+ }
98
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/avm1/values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { AsObject } from "./descriptors.js";
2
+ import type { Runtime } from "./runtime.js";
3
+ import type { Traits } from "./traits.js";
4
+ export declare class AmfClasses {
5
+ private readonly rt;
6
+ /** Class aliases, as registerClassAlias sets them, both ways. */
7
+ private readonly aliases;
8
+ private readonly aliasByTraits;
9
+ private byteArrayCls;
10
+ private dictionaryCls;
11
+ private vectorCls;
12
+ constructor(rt: Runtime);
13
+ /**
14
+ * As Toplevel::registerClassAlias: a class by a name, replacing what the
15
+ * name had. The class the name had loses its alias, even one it has under
16
+ * another name since, as Flash's does (tests/unit/runtime/class-aliases).
17
+ */
18
+ registerClassAlias(name: string, cls: AsObject): void;
19
+ /** The alias of a class's instances' traits, or "". */
20
+ aliasOf(traits: Traits): string;
21
+ /** The class of an alias: as getClassByAlias, ReferenceError 1014 if none, or Object if `orObject`. */
22
+ classByAlias(name: string, orObject: boolean): AsObject;
23
+ byteArrayClass(): AsObject;
24
+ dictionaryClass(): AsObject;
25
+ /** Vector.<T>, for a class T or null for *. */
26
+ vectorClass(param: AsObject | null): AsObject;
27
+ }
28
+ //# sourceMappingURL=amf-classes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amf-classes.d.ts","sourceRoot":"","sources":["../../src/avm2/amf-classes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,qBAAa,UAAU;IAQT,OAAO,CAAC,QAAQ,CAAC,EAAE;IAP/B,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,SAAS,CAAyB;IAE1C,YAA6B,EAAE,EAAE,OAAO,EAAI;IAE5C;;;;OAIG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAQpD;IAED,uDAAuD;IACvD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9B;IAED,uGAAuG;IACvG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAWtD;IAKD,cAAc,IAAI,QAAQ,CAIzB;IAED,eAAe,IAAI,QAAQ,CAI1B;IAED,+CAA+C;IAC/C,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAS5C;CACF"}
@@ -0,0 +1,67 @@
1
+ // The classes AMF reads and writes objects by: the class aliases
2
+ // registerClassAlias sets, both ways, and ByteArray, Dictionary and Vector,
3
+ // which AMF makes for each value it reads, resolved once.
4
+ import { NS_Public, namespace } from "./names.js";
5
+ export class AmfClasses {
6
+ rt;
7
+ /** Class aliases, as registerClassAlias sets them, both ways. */
8
+ aliases = new Map();
9
+ aliasByTraits = new Map();
10
+ byteArrayCls = null;
11
+ dictionaryCls = null;
12
+ vectorCls = null;
13
+ constructor(rt) {
14
+ this.rt = rt;
15
+ }
16
+ /**
17
+ * As Toplevel::registerClassAlias: a class by a name, replacing what the
18
+ * name had. The class the name had loses its alias, even one it has under
19
+ * another name since, as Flash's does (tests/unit/runtime/class-aliases).
20
+ */
21
+ registerClassAlias(name, cls) {
22
+ const previous = this.aliases.get(name);
23
+ if (previous) {
24
+ this.aliasByTraits.delete(previous.$it);
25
+ }
26
+ this.aliases.set(name, cls);
27
+ this.aliasByTraits.set(cls.$it, name);
28
+ }
29
+ /** The alias of a class's instances' traits, or "". */
30
+ aliasOf(traits) {
31
+ return this.aliasByTraits.get(traits) ?? "";
32
+ }
33
+ /** The class of an alias: as getClassByAlias, ReferenceError 1014 if none, or Object if `orObject`. */
34
+ classByAlias(name, orObject) {
35
+ const cls = this.aliases.get(name);
36
+ if (cls) {
37
+ return cls;
38
+ }
39
+ if (orObject) {
40
+ return this.rt.builtinClass("Object");
41
+ }
42
+ throw this.rt.error("ReferenceError", 1014, name);
43
+ }
44
+ // By a reference in the domain loading at the first call, as builtinClass
45
+ // resolves its names: any domain finds a builtin's in the root first.
46
+ byteArrayClass() {
47
+ const rt = this.rt;
48
+ this.byteArrayCls ??= rt.resolve(rt.cls(namespace(NS_Public, "flash.utils"), "ByteArray"));
49
+ return this.byteArrayCls;
50
+ }
51
+ dictionaryClass() {
52
+ const rt = this.rt;
53
+ this.dictionaryCls ??= rt.resolve(rt.cls(namespace(NS_Public, "flash.utils"), "Dictionary"));
54
+ return this.dictionaryCls;
55
+ }
56
+ /** Vector.<T>, for a class T or null for *. */
57
+ vectorClass(param) {
58
+ const rt = this.rt;
59
+ const specialized = rt.vectorClasses.get(param);
60
+ if (specialized) {
61
+ return specialized;
62
+ }
63
+ this.vectorCls ??= rt.resolve(rt.cls(namespace(NS_Public, "__AS3__.vec"), "Vector"));
64
+ return rt.applyType(this.vectorCls, [param]);
65
+ }
66
+ }
67
+ //# sourceMappingURL=amf-classes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amf-classes.js","sourceRoot":"","sources":["../../src/avm2/amf-classes.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,4EAA4E;AAC5E,0DAA0D;AAG1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIlD,MAAM,OAAO,UAAU;IAQQ,EAAE;IAP/B,iEAAiE;IAChD,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IACtC,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IACnD,YAAY,GAAoB,IAAI,CAAC;IACrC,aAAa,GAAoB,IAAI,CAAC;IACtC,SAAS,GAAoB,IAAI,CAAC;IAE1C,YAA6B,EAAW;kBAAX,EAAE;IAAY,CAAC;IAE5C;;;;OAIG;IACH,kBAAkB,CAAC,IAAY,EAAE,GAAa;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,uDAAuD;IACvD,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,uGAAuG;IACvG,YAAY,CAAC,IAAY,EAAE,QAAiB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,0EAA0E;IAC1E,sEAAsE;IAEtE,cAAc;QACZ,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;QAC3F,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,eAAe;QACb,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAC7F,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,+CAA+C;IAC/C,WAAW,CAAC,KAAsB;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrF,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -0,0 +1,96 @@
1
+ import type { Value } from "./descriptors.js";
2
+ import { type Bytes } from "./natives/bytearray.js";
3
+ import type { Runtime } from "./runtime.js";
4
+ /**
5
+ * Where an IExternalizable's writeExternal writes or its readExternal
6
+ * reads, as flash.utils' ObjectOutput and ObjectInput see the stream: its
7
+ * ByteArray, and the byte order and encoding of their own, big-endian AMF3
8
+ * until set, whatever the ByteArray's.
9
+ */
10
+ export interface ExternalStream {
11
+ readonly bytes: Bytes;
12
+ littleEndian: boolean;
13
+ objectEncoding: number;
14
+ }
15
+ /** An AMF3 writer over a ByteArray, for one writeObject. */
16
+ export declare class Writer implements ExternalStream {
17
+ private readonly rt;
18
+ private readonly out;
19
+ private readonly strings;
20
+ private readonly objects;
21
+ private readonly traits;
22
+ littleEndian: boolean;
23
+ objectEncoding: number;
24
+ constructor(rt: Runtime, out: Bytes);
25
+ get bytes(): Bytes;
26
+ private u8;
27
+ /** As WriteUint29: 1 to 4 bytes; 2^29 and above a RangeError. */
28
+ private uint29;
29
+ private double;
30
+ /** As WriteString: the empty string as 1, else a reference to it or its UTF-8. */
31
+ string(s: string): void;
32
+ /** A reference to an object already written, or false, adding it to the table. */
33
+ private reference;
34
+ /** As WriteAtom. */
35
+ value(v: Value): void;
36
+ /**
37
+ * As WriteDictionary: a reference, or how many entries, whether its keys
38
+ * are weak, then each key and value. A name is a string, as avmplus writes
39
+ * the integer names its table holds, and an object key the object.
40
+ */
41
+ private dictionary;
42
+ /** As WriteArray: the dense part up to the first hole or function, then the rest by name. */
43
+ private array;
44
+ /** As WriteTypedVector. */
45
+ private vector;
46
+ /** As WriteScriptObject: its class, by reference or described, then its sealed and dynamic properties. */
47
+ private object;
48
+ /**
49
+ * As ObjectEncoding.dynamicPropertyWriter has it: its
50
+ * writeDynamicProperties called with the object and a
51
+ * DynamicPropertyOutput that writes here, if it is an object.
52
+ */
53
+ private dynamicProperties;
54
+ /** As WriteDynamicProperty: a name and its value, whatever they are. */
55
+ dynamicProperty(name: string, value: Value): void;
56
+ }
57
+ /** An AMF3 reader over a ByteArray, for one readObject. */
58
+ export declare class Reader implements ExternalStream {
59
+ private readonly rt;
60
+ private readonly input;
61
+ private readonly strings;
62
+ private readonly objects;
63
+ private readonly classes;
64
+ littleEndian: boolean;
65
+ objectEncoding: number;
66
+ constructor(rt: Runtime, input: Bytes);
67
+ get bytes(): Bytes;
68
+ private u8;
69
+ /** As ReadUint29. */
70
+ private uint29;
71
+ private double;
72
+ private u32;
73
+ private find;
74
+ /** As ReadString. */
75
+ string(): string;
76
+ /**
77
+ * As ObjectInput::SetObjectProperty: a property that cannot be set, as on
78
+ * a sealed class, is skipped, the error written to the console.
79
+ */
80
+ private set;
81
+ /** As ReadAtom. */
82
+ /** As ReadDictionary: a reference, or its entries, each key a string or an object; anything else is 2004. */
83
+ private dictionary;
84
+ value(): Value;
85
+ /** As ReadArray: the named part first, then the dense one. */
86
+ private array;
87
+ /** As ReadTypedVector. */
88
+ private vector;
89
+ /** As ReadScriptObject: its class, by reference or described, an instance of it, then its properties. */
90
+ private object;
91
+ }
92
+ /** As Toplevel::writeObject: AMF3 only, as avmshell has no AMF0. */
93
+ export declare function writeObject(rt: Runtime, b: Bytes, v: Value): void;
94
+ /** As Toplevel::readObject. */
95
+ export declare function readObject(rt: Runtime, b: Bytes): Value;
96
+ //# sourceMappingURL=amf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amf.d.ts","sourceRoot":"","sources":["../../src/avm2/amf.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAY,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,EAAE,KAAK,KAAK,EAA2B,MAAM,wBAAwB,CAAC;AAE7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAsC5C;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAyFD,4DAA4D;AAC5D,qBAAa,MAAO,YAAW,cAAc;IAQzC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG;IARtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,YAAY,UAAS;IACrB,cAAc,SAAK;IAEnB,YACmB,EAAE,EAAE,OAAO,EACX,GAAG,EAAE,KAAK,EACzB;IAEJ,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,OAAO,CAAC,EAAE;IAKV,iEAAiE;IACjE,OAAO,CAAC,MAAM;IAoBd,OAAO,CAAC,MAAM;IAKd,kFAAkF;IAClF,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAgBtB;IAED,kFAAkF;IAClF,OAAO,CAAC,SAAS;IAWjB,oBAAoB;IACpB,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CA8EpB;IAED;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAsBlB,6FAA6F;IAC7F,OAAO,CAAC,KAAK;IA4Cb,2BAA2B;IAC3B,OAAO,CAAC,MAAM;IAsCd,0GAA0G;IAC1G,OAAO,CAAC,MAAM;IAsDd;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAezB,wEAAwE;IACxE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAGhD;CACF;AAED,2DAA2D;AAC3D,qBAAa,MAAO,YAAW,cAAc;IAQzC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IARxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,YAAY,UAAS;IACrB,cAAc,SAAK;IAEnB,YACmB,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,KAAK,EAC3B;IAEJ,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,OAAO,CAAC,EAAE;IAKV,qBAAqB;IACrB,OAAO,CAAC,MAAM;IAsBd,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,IAAI;IAQZ,qBAAqB;IACrB,MAAM,IAAI,MAAM,CAiCf;IAED;;;OAGG;IACH,OAAO,CAAC,GAAG;IAYX,mBAAmB;IACnB,6GAA6G;IAC7G,OAAO,CAAC,UAAU;IA0BlB,KAAK,IAAI,KAAK,CA4Eb;IAED,8DAA8D;IAC9D,OAAO,CAAC,KAAK;IA0Bb,0BAA0B;IAC1B,OAAO,CAAC,MAAM;IA6Ed,yGAAyG;IACzG,OAAO,CAAC,MAAM;CA0Df;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAMjE;AAED,+BAA+B;AAC/B,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAMvD"}