@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,254 @@
1
+ // String, as Ruffle's (https://github.com/ruffle-rs/ruffle)
2
+ // core/src/avm1/globals/string.rs has it: MIT OR Apache-2.0, Copyright (c)
3
+ // 2018-2022 Ruffle LLC and Ruffle contributors. Where adl parts from
4
+ // Ruffle, adl decides (docs/avm1.md, "Array and String").
5
+ //
6
+ // The methods take `this` unboxed: a string's method call makes no String
7
+ // object. Up to SWF 5 a string is its bytes, each a code unit here, which
8
+ // the methods count and cut as they are. From SWF 6 they cut UTF-16 code
9
+ // units, and keep half a surrogate pair as it is, which joins its other
10
+ // half again (adl), unlike StringExtract's (operators.ts).
11
+
12
+ import { lowerCase, upperCase } from "../case.js";
13
+ import {
14
+ type Avm1Function,
15
+ Avm1Object,
16
+ DONT_DELETE,
17
+ DONT_ENUM,
18
+ type RawNative,
19
+ } from "../objects.js";
20
+ import type { Realm } from "../realm.js";
21
+ import { stringOf, toNumber, type Value } from "../values.js";
22
+
23
+ const toInt = (value: Value, version: number) => toNumber(value, version) | 0;
24
+
25
+ /** An index as slice and substr take one: from the end where negative, within 0 and `length`. */
26
+ function wrapping(i: number, length: number): number {
27
+ return i < 0 ? Math.max(length + i, 0) : Math.min(i, length);
28
+ }
29
+
30
+ /** An index as substring takes one: within 0 and `length`. */
31
+ const clamped = (i: number, length: number) => (i < 0 ? 0 : Math.min(i, length));
32
+
33
+ /** Each code unit of `s` mapped by `map`; up to SWF 5, a byte's mapping only to a byte. */
34
+ function mapped(s: string, map: (c: number) => number, bytes: boolean): string {
35
+ let out = "";
36
+ let changed = false;
37
+ for (let i = 0; i < s.length; i++) {
38
+ const c = s.charCodeAt(i);
39
+ let m = map(c);
40
+ if (bytes && m > 0xff) {
41
+ m = c;
42
+ }
43
+
44
+ changed ||= m !== c;
45
+ out += String.fromCharCode(m);
46
+ }
47
+
48
+ return changed ? out : s;
49
+ }
50
+
51
+ /** The class: its constructor, prototype and methods. */
52
+ export function stringClass(realm: Realm): { constr: Avm1Function; proto: Avm1Object } {
53
+ const proto = new Avm1Object();
54
+ const constr = realm.classOf(
55
+ proto,
56
+ (self, args, version) => {
57
+ const s = args.length > 0 ? stringOf(args[0], version) : "";
58
+ self.primitive = s;
59
+ self.define("length", s.length, DONT_ENUM | DONT_DELETE);
60
+ return self;
61
+ },
62
+ (_, args, version) => (args.length > 0 ? stringOf(args[0], version) : ""),
63
+ );
64
+ proto.define("__proto__", realm.objectProto, DONT_ENUM | DONT_DELETE);
65
+
66
+ /** `this` as the string the methods work on: a String's own, else what it converts to. */
67
+ const text = (self: Value, version: number): string => {
68
+ if (typeof self === "string") {
69
+ return self;
70
+ }
71
+
72
+ const o = realm.box(self, version);
73
+ return typeof o.primitive === "string" ? o.primitive : stringOf(o, version);
74
+ };
75
+ const define = (name: string, native: RawNative) =>
76
+ proto.define(name, realm.rawMethod(native), DONT_ENUM | DONT_DELETE);
77
+
78
+ // A String's own string, but undefined for anything else; valueOf gives
79
+ // anything else as a string, by its toString (adl; Ruffle gives undefined).
80
+ const own = (self: Value): Value => {
81
+ if (typeof self === "string") {
82
+ return self;
83
+ }
84
+
85
+ return self instanceof Avm1Object && typeof self.primitive === "string"
86
+ ? self.primitive
87
+ : undefined;
88
+ };
89
+ define("valueOf", (self, _, version) => own(self) ?? text(self, version));
90
+ define("toString", (self) => own(self));
91
+ define("toUpperCase", (self, _, version) => mapped(text(self, version), upperCase, version < 6));
92
+ define("toLowerCase", (self, _, version) => mapped(text(self, version), lowerCase, version < 6));
93
+ define("charAt", (self, args, version) => {
94
+ const s = text(self, version);
95
+ const i = toInt(args.length > 0 ? args[0] : undefined, version);
96
+ if (i < 0 || i >= s.length) {
97
+ return "";
98
+ }
99
+
100
+ return s[i];
101
+ });
102
+ define("charCodeAt", (self, args, version) => {
103
+ const s = text(self, version);
104
+ const i = toInt(args.length > 0 ? args[0] : undefined, version);
105
+ if (i >= 0 && i < s.length) {
106
+ return s.charCodeAt(i);
107
+ }
108
+
109
+ // A SWF 5 has 0 past the end.
110
+ return i >= 0 && version === 5 ? 0 : Number.NaN;
111
+ });
112
+ define("concat", (self, args, version) => {
113
+ let s = text(self, version);
114
+ for (const arg of args) {
115
+ s += stringOf(arg, version);
116
+ }
117
+
118
+ return s;
119
+ });
120
+ define("indexOf", (self, args, version) => {
121
+ const s = text(self, version);
122
+ if (args.length === 0) {
123
+ return undefined;
124
+ }
125
+
126
+ const pattern = stringOf(args[0], version);
127
+ const start =
128
+ args.length > 1 && args[1] !== undefined ? Math.max(toInt(args[1], version), 0) : 0;
129
+ return start > s.length ? -1 : s.indexOf(pattern, start);
130
+ });
131
+ define("lastIndexOf", (self, args, version) => {
132
+ const s = text(self, version);
133
+ if (args.length === 0) {
134
+ return undefined;
135
+ }
136
+
137
+ const pattern = stringOf(args[0], version);
138
+ let end = s.length;
139
+ if (args.length > 1 && args[1] !== undefined) {
140
+ const i = toInt(args[1], version);
141
+ if (i < 0) {
142
+ return -1;
143
+ }
144
+
145
+ end = Math.min(i + pattern.length, s.length);
146
+ }
147
+
148
+ const found = s.lastIndexOf(pattern, end - pattern.length);
149
+ return found >= 0 && found + pattern.length <= end ? found : -1;
150
+ });
151
+ define("slice", (self, args, version) => {
152
+ if (args.length === 0) {
153
+ return undefined;
154
+ }
155
+
156
+ const s = text(self, version);
157
+ const start = wrapping(toInt(args[0], version), s.length);
158
+ const end =
159
+ args.length > 1 && args[1] !== undefined
160
+ ? wrapping(toInt(args[1], version), s.length)
161
+ : s.length;
162
+ return start < end ? s.slice(start, end) : "";
163
+ });
164
+ define("substring", (self, args, version) => {
165
+ if (args.length === 0) {
166
+ return undefined;
167
+ }
168
+
169
+ const s = text(self, version);
170
+ let start = clamped(toInt(args[0], version), s.length);
171
+ // adl: nothing from the end on, whatever the end (Ruffle swaps first).
172
+ if (start >= s.length) {
173
+ return "";
174
+ }
175
+
176
+ let end =
177
+ args.length > 1 && args[1] !== undefined
178
+ ? clamped(toInt(args[1], version), s.length)
179
+ : s.length;
180
+ if (end < start) {
181
+ [start, end] = [end, start];
182
+ }
183
+
184
+ return s.slice(start, end);
185
+ });
186
+ define("split", (self, args, version) => {
187
+ const s = text(self, version);
188
+ const limitArg = args.length > 1 ? args[1] : undefined;
189
+ const limit =
190
+ limitArg === undefined ? Number.POSITIVE_INFINITY : Math.max(toInt(limitArg, version), 0);
191
+ const d = args.length > 0 ? args[0] : undefined;
192
+ const take = (parts: string[]) =>
193
+ realm.newArray(limit < parts.length ? parts.slice(0, limit) : parts, version);
194
+ // A SWF 5 splits at commas by default, and only at one character: an
195
+ // empty delimiter leaves the string whole whatever the limit, a longer
196
+ // one within it (adl).
197
+ if (version < 6) {
198
+ const delimiter = d === undefined ? "," : stringOf(d, version);
199
+ if (delimiter === "") {
200
+ return realm.newArray([s], version);
201
+ }
202
+
203
+ return take(delimiter.length === 1 ? s.split(delimiter) : [s]);
204
+ }
205
+
206
+ // Without a delimiter, the string whole whatever the limit; an empty
207
+ // string so too, but split by "" (adl).
208
+ if (d === undefined) {
209
+ return realm.newArray([s], version);
210
+ }
211
+
212
+ const delimiter = stringOf(d, version);
213
+ if (s === "" && delimiter !== "") {
214
+ return realm.newArray([s], version);
215
+ }
216
+
217
+ return take(delimiter === "" ? s.split("") : s.split(delimiter));
218
+ });
219
+ define("substr", (self, args, version) => {
220
+ if (args.length === 0) {
221
+ return undefined;
222
+ }
223
+
224
+ const s = text(self, version);
225
+ const start = wrapping(toInt(args[0], version), s.length);
226
+ const count = args.length > 1 && args[1] !== undefined ? toInt(args[1], version) : s.length;
227
+ const end = wrapping(start + count, s.length);
228
+ return start < end ? s.slice(start, end) : "";
229
+ });
230
+
231
+ constr.define(
232
+ "fromCharCode",
233
+ realm.method((_, args, version) => {
234
+ let s = "";
235
+ for (const arg of args) {
236
+ const code = toNumber(arg, version) & 0xffff;
237
+ if (code === 0) {
238
+ break;
239
+ }
240
+
241
+ // A SWF 5's string is bytes: a code past 0xFF is two, the high one first.
242
+ s +=
243
+ version < 6 && code > 0xff
244
+ ? String.fromCharCode(code >> 8, code & 0xff)
245
+ : String.fromCharCode(code);
246
+ }
247
+
248
+ return s;
249
+ }),
250
+ DONT_ENUM | DONT_DELETE,
251
+ );
252
+
253
+ return { constr, proto };
254
+ }
@@ -0,0 +1,144 @@
1
+ // setInterval, setTimeout, clearInterval and clearTimeout (docs/avm1.md,
2
+ // "Time"), as Ruffle's (https://github.com/ruffle-rs/ruffle)
3
+ // core/src/timer.rs and avm1/globals.rs (create_timer) have them: MIT OR
4
+ // Apache-2.0, Copyright (c) 2018-2022 Ruffle LLC and Ruffle contributors.
5
+ // The timers are the runtime's, the clock the player's: it tells the
6
+ // runtime the time and asks it to fire what is due between frames.
7
+
8
+ import { Avm1Function, Avm1Object, type Native } from "../objects.js";
9
+ import { toInt32 } from "../operators.js";
10
+ import type { Realm } from "../realm.js";
11
+ import { stringOf, type Value } from "../values.js";
12
+
13
+ /** The shortest interval a timer has, in ms, as Ruffle has it: Flash fires none much faster. */
14
+ const MIN_INTERVAL = 10;
15
+
16
+ /** A timer: a function to call, or an object and the name of its method, every `interval` ms. */
17
+ export class Timer {
18
+ constructor(
19
+ readonly id: number,
20
+ readonly callback: Avm1Object,
21
+ /** The method's name, null where `callback` is the function. */
22
+ readonly method: string | null,
23
+ readonly args: Value[],
24
+ readonly interval: number,
25
+ /** When it falls due next, in the clock's ms. */
26
+ public due: number,
27
+ /** setTimeout's: it fires once. */
28
+ readonly once: boolean,
29
+ /** Its place among those due at once: the one set first fires first. */
30
+ public seq: number,
31
+ ) {}
32
+ }
33
+
34
+ /** A runtime's timers, by when they fall due. */
35
+ export class Timers {
36
+ /** The time now on the player's clock, in ms: a timer set now counts from it. */
37
+ now = 0;
38
+ private counter = 0;
39
+ private seq = 0;
40
+ private readonly list: Timer[] = [];
41
+
42
+ get size(): number {
43
+ return this.list.length;
44
+ }
45
+
46
+ /** A new timer, its id: from 1, as Flash never gives 0. */
47
+ add(
48
+ callback: Avm1Object,
49
+ method: string | null,
50
+ args: Value[],
51
+ interval: number,
52
+ once: boolean,
53
+ ): number {
54
+ this.counter = (this.counter + 1) | 0;
55
+ const ms = Math.max(interval, MIN_INTERVAL);
56
+ this.list.push(
57
+ new Timer(this.counter, callback, method, args, ms, this.now + ms, once, this.seq++),
58
+ );
59
+ return this.counter;
60
+ }
61
+
62
+ /** Clear timer `id`: whether there was one. */
63
+ remove(id: number): boolean {
64
+ const i = this.list.findIndex((t) => t.id === id);
65
+ if (i < 0) {
66
+ return false;
67
+ }
68
+
69
+ this.list.splice(i, 1);
70
+ return true;
71
+ }
72
+
73
+ has(timer: Timer): boolean {
74
+ return this.list.includes(timer);
75
+ }
76
+
77
+ /** The timer due first by `time`, of two due at once the one set first; null for none. */
78
+ due(time: number): Timer | null {
79
+ let first: Timer | null = null;
80
+ for (const t of this.list) {
81
+ if (
82
+ t.due <= time &&
83
+ (first === null || t.due < first.due || (t.due === first.due && t.seq < first.seq))
84
+ ) {
85
+ first = t;
86
+ }
87
+ }
88
+
89
+ return first;
90
+ }
91
+
92
+ /** `timer` fired: due again an interval on, or gone for a timeout. */
93
+ fired(timer: Timer): void {
94
+ if (timer.once) {
95
+ this.remove(timer.id);
96
+ } else {
97
+ timer.due += timer.interval;
98
+ timer.seq = this.seq++;
99
+ }
100
+ }
101
+
102
+ clear(): void {
103
+ this.list.length = 0;
104
+ }
105
+ }
106
+
107
+ /**
108
+ * setInterval's and setTimeout's native: `(function, interval, ...args)`
109
+ * or `(object, name, interval, ...args)`; undefined where there is no
110
+ * callback or no interval.
111
+ */
112
+ function create(realm: Realm, args: Value[], version: number, once: boolean): Value {
113
+ const first = args.length > 0 ? args[0] : undefined;
114
+ if (!(first instanceof Avm1Object)) {
115
+ return undefined;
116
+ }
117
+
118
+ const isFunction = first instanceof Avm1Function;
119
+ const interval = isFunction ? args[1] : args[2];
120
+ if (interval === undefined) {
121
+ return undefined;
122
+ }
123
+
124
+ const method = isFunction ? null : stringOf(args.length > 1 ? args[1] : undefined, version);
125
+ const rest = args.slice(isFunction ? 2 : 3);
126
+ return realm.timers.add(first, method, rest, toInt32(interval, version), once);
127
+ }
128
+
129
+ /** The timer natives, in Flash's order on `_global`, and ASnative(250, i): setInterval, clearInterval, setTimeout. */
130
+ export function timerFunctions(realm: Realm): [string, Native][] {
131
+ const setInterval: Native = (_, args, version) => create(realm, args, version, false);
132
+ const setTimeout: Native = (_, args, version) => create(realm, args, version, true);
133
+ const clear: Native = (_, args, version) => {
134
+ realm.timers.remove(toInt32(args.length > 0 ? args[0] : undefined, version));
135
+ return undefined;
136
+ };
137
+ realm.natives.set(250, (i) => [setInterval, clear, setTimeout][i] ?? null);
138
+ return [
139
+ ["setInterval", setInterval],
140
+ ["clearTimeout", clear],
141
+ ["clearInterval", clear],
142
+ ["setTimeout", setTimeout],
143
+ ];
144
+ }
@@ -0,0 +1,155 @@
1
+ // What AVM1 code asks of the player, which has the display list the
2
+ // runtime does not (docs/avm1.md, "Where each piece lives"). A clip is the
3
+ // player's, opaque here.
4
+
5
+ import type { Avm1Object } from "./objects.js";
6
+ import type { Value } from "./values.js";
7
+
8
+ /** A display object the player gives the runtime, as an activation's target. */
9
+ export type Target = object;
10
+
11
+ /** What a display object's AVM1 object found for a name that is none of its own properties: nothing. */
12
+ export const ABSENT: unique symbol = Symbol("absent");
13
+
14
+ /**
15
+ * A display object's side of its AVM1 object (docs/avm1.md, "Hosting AVM1
16
+ * objects"): what the object has beyond its own properties, looked up
17
+ * after them and before its prototypes', as Ruffle's stage_object.rs has
18
+ * it. The player gives each clip, button and text field one.
19
+ */
20
+ export interface DisplayNative {
21
+ /** What `typeof` says of the object: "movieclip" for a clip, else "object". */
22
+ readonly type: string;
23
+ /** The display object. */
24
+ readonly target: Target;
25
+ /**
26
+ * `_root`, `_parent`, `_global` and `_levelN`, in the version's case; a
27
+ * child by its instance name; a display property (`_x`...), in any case;
28
+ * ABSENT for none of them.
29
+ */
30
+ get(name: string, version: number): Value | typeof ABSENT;
31
+ /**
32
+ * A set of a display property by name, which the object takes where it
33
+ * has no property of its own of the name: whether it was one.
34
+ */
35
+ set(name: string, value: Value, version: number): boolean;
36
+ /**
37
+ * Any property of the object set, before it is stored: a text field
38
+ * bound to the name as a variable shows the value (Ruffle's
39
+ * notify_property_change).
40
+ */
41
+ changed?(name: string, value: Value, version: number): void;
42
+ /** Its children's names, the highest depth first, which for..in lists after its own properties. */
43
+ keys(out: string[]): void;
44
+ /** Its path, `_level0.a.b`, which TargetPath gives, and a clip converts to as a string. */
45
+ path(): string;
46
+ /**
47
+ * The AVM1 object a reference to this one reaches now: itself, or once
48
+ * its display object is gone, the one placed at its path since (a clip's
49
+ * reference is its path in Flash), null where there is none.
50
+ */
51
+ live(): Avm1Object | null;
52
+ /** GetProperty's property `index` (0 `_x` to 21 `_ymouse`), undefined for none. */
53
+ property(index: number, version: number): Value;
54
+ /** SetProperty's property `index` set: false where there is none. */
55
+ setProperty(index: number, value: Value, version: number): boolean;
56
+ }
57
+
58
+ /** What timeline actions do to a clip. */
59
+ export interface Timeline {
60
+ readonly currentFrame: number;
61
+ readonly totalFrames: number;
62
+ /** A goto of frame `frame`, 1 the first, past the last the last, after the clip is played or stopped. */
63
+ goto(frame: number, play: boolean): void;
64
+ /** The frame of label `label`, in any ASCII case, undefined for none. */
65
+ labelFrame(label: string): number | undefined;
66
+ /** The actions of frame `frame` run now, as CallFrame runs them. */
67
+ call(frame: number): void;
68
+ }
69
+
70
+ /**
71
+ * The variables a getURL, loadMovie or loadVariables sends, the code's
72
+ * locals as strings in for..in's order, and how: in the query or the body.
73
+ */
74
+ export interface UrlForm {
75
+ method: "GET" | "POST";
76
+ vars: [name: string, value: string][];
77
+ }
78
+
79
+ export interface Host {
80
+ /**
81
+ * A trace's text, as it is: Flash's log breaks its lines at a carriage
82
+ * return as at a line feed, which is the host's to do where it writes one.
83
+ */
84
+ trace(text: string): void;
85
+ /** Play or stop `target`'s timeline. */
86
+ play(target: Target): void;
87
+ stop(target: Target): void;
88
+ /**
89
+ * Stop the whole SWF, every timeline and every action of it, as Flash
90
+ * does at an action it cannot read.
91
+ */
92
+ halt(): void;
93
+ /**
94
+ * What paths need of the display list (docs/avm1.md, "Scopes, targets
95
+ * and names"), each a clip's AVM1 object: the `_root` of the code whose
96
+ * clip is `base` (its level, or the clip below it that locks the root),
97
+ * `_levelN`, a clip's parent, and a clip's child by its instance name,
98
+ * found in its case from SWF 7. A host without a display list leaves
99
+ * them out.
100
+ */
101
+ root?(base: Target): Value;
102
+ level?(level: number): Value;
103
+ parent?(clip: object): Value;
104
+ child?(clip: object, name: string, caseSensitive: boolean): Value;
105
+ /** The display object whose AVM1 object `object` is, where it is one's. */
106
+ clipOf?(object: object): Target | undefined;
107
+ /** The AVM1 object of `target`. */
108
+ objectOf?(target: Target): Avm1Object;
109
+ /** Whether `target` has been removed: SetTarget in its code finds no clip. */
110
+ removed?(target: Target): boolean;
111
+ /** The timeline of `target` where it is a clip, null for anything else. */
112
+ timeline?(target: Target): Timeline | null;
113
+ /** StopSounds: every sound playing stops. */
114
+ stopSounds?(): void;
115
+ /** GetTime: ms since the movie started, on the player's clock. */
116
+ time?(): number;
117
+ /**
118
+ * CloneSprite: `target` duplicated as `name` at timeline depth `depth`,
119
+ * as duplicateMovieClip does it, without an init object.
120
+ */
121
+ duplicate?(target: Target, name: string, depth: number): void;
122
+ /** RemoveSprite: `target` removed, where it is at a depth a script may remove. */
123
+ remove?(target: Target): void;
124
+ /**
125
+ * StartDrag: `target` follows the pointer, its registration point under
126
+ * it where `lockCenter`, kept within `bounds` (left, top, right, bottom
127
+ * in its parent's space) where given; one drag at a time.
128
+ */
129
+ startDrag?(target: Target, lockCenter: boolean, bounds: number[] | null): void;
130
+ /** EndDrag: the drag ends. */
131
+ stopDrag?(): void;
132
+ /**
133
+ * A function of the SWF's that code called by CallFunction or
134
+ * CallMethod returned: Flash runs the initialize events queued by then.
135
+ */
136
+ returned?(): void;
137
+ /** ToggleQuality: the stage's quality from high or best to low, or back. */
138
+ toggleQuality?(): void;
139
+ /** fscommand: a GetURL's or GetURL2's URL `FSCommand:command`, its target the arguments. */
140
+ fsCommand?(command: string, args: string): void;
141
+ /**
142
+ * getURL: the page `url`, as the SWF gave it, opened in the browser
143
+ * window or frame named `window` ("_blank" in any spelling as
144
+ * "_blank"), with `form`'s variables where a method was given.
145
+ */
146
+ navigate?(url: string, window: string, form: UrlForm | null): void;
147
+ /**
148
+ * loadMovie and loadMovieNum: the SWF or image at `url` into a clip, or
149
+ * into the level of a number, which the load makes where there is none;
150
+ * an empty URL unloads what is there.
151
+ */
152
+ loadMovie?(into: Target | number, url: string, form: UrlForm | null): void;
153
+ /** loadVariables and loadVariablesNum: the variables at `url` set on a clip. */
154
+ loadVariables?(into: Target, url: string, form: UrlForm | null): void;
155
+ }
@@ -0,0 +1,69 @@
1
+ /** The AVM1 (AS1 and AS2) runtime: values, their conversions by version, and what modules call. */
2
+
3
+ export { goto } from "./clips.js";
4
+ export { Avm1Super, ScriptFunction } from "./functions.js";
5
+ export { broadcastMessage, initializeBroadcaster } from "./globals/broadcaster.js";
6
+ export { DateCell } from "./globals/date.js";
7
+ export { escapeAvm1, parseIntAvm1, unescapeAvm1 } from "./globals/global.js";
8
+ export {
9
+ ABSENT,
10
+ type DisplayNative,
11
+ type Host,
12
+ type Target,
13
+ type Timeline,
14
+ type UrlForm,
15
+ } from "./host.js";
16
+ export { numberToString, parseFloatAvm1, stringToNumber } from "./numbers.js";
17
+ export {
18
+ Avm1Function,
19
+ Avm1Object,
20
+ allowed,
21
+ caseSensitive,
22
+ DONT_DELETE,
23
+ DONT_ENUM,
24
+ find,
25
+ fold,
26
+ get,
27
+ has,
28
+ invoke,
29
+ keys,
30
+ markNames,
31
+ type Native,
32
+ Property,
33
+ READ_ONLY,
34
+ removeOwn,
35
+ set,
36
+ VERSION_6,
37
+ VERSION_7,
38
+ VERSION_8,
39
+ } from "./objects.js";
40
+ export { Realm } from "./realm.js";
41
+ export {
42
+ Activation,
43
+ Avm1Throw,
44
+ type Blocks,
45
+ Disabled,
46
+ type Factory,
47
+ Halt,
48
+ NotYet,
49
+ type Operations,
50
+ OwnUnits,
51
+ type Region,
52
+ Runtime,
53
+ TimedOut,
54
+ type Units,
55
+ type UnitTable,
56
+ } from "./runtime.js";
57
+ export { Scope, targetPath } from "./scope.js";
58
+ export { getUrlMethod } from "./urls.js";
59
+ export {
60
+ isPrimitive,
61
+ type ObjectConversions,
62
+ objects,
63
+ type Primitive,
64
+ stringOf,
65
+ toBoolean,
66
+ toNumber,
67
+ typeOf,
68
+ type Value,
69
+ } from "./values.js";