@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,132 @@
1
+ // AsBroadcaster, which Flash writes in ActionScript and Ruffle in Rust
2
+ // (https://github.com/ruffle-rs/ruffle, core/src/avm1/globals/
3
+ // as_broadcaster.rs: MIT OR Apache-2.0, Copyright (c) 2018-2022 Ruffle LLC
4
+ // and Ruffle contributors), here in TypeScript as adl runs it (docs/avm1.md,
5
+ // "AsBroadcaster"): addListener removes the listener, then pushes it, so
6
+ // it comes last; removeListener splices out the first one equal to it;
7
+ // initialize copies AsBroadcaster's addListener and removeListener onto
8
+ // the object and gives it a new broadcastMessage, each hidden from SWF 5.
9
+ import { Avm1Function, Avm1Object, DONT_DELETE, DONT_ENUM, foundDepth, get, invoke, lengthOf, set, VERSION_6, } from "../objects.js";
10
+ import { looselyEquals } from "../operators.js";
11
+ import { stringOf, toNumber } from "../values.js";
12
+ /** `o.name(...args)`, as code calls a method. */
13
+ function callMethod(o, name, args, realm, version) {
14
+ if (o instanceof Avm1Object) {
15
+ const method = get(o, name, version);
16
+ return invoke(method, o, args, version, Math.max(foundDepth, 1));
17
+ }
18
+ if (o === undefined || o === null) {
19
+ return undefined;
20
+ }
21
+ return invoke(realm.primitiveMember(o, name, version), o, args, version, 1);
22
+ }
23
+ /** broadcastMessage(name, ...args): each listener's method of that name called, the listeners as they were. */
24
+ function broadcast() {
25
+ return (self, args, version) => {
26
+ if (args.length === 0) {
27
+ return undefined;
28
+ }
29
+ return broadcastMessage(self, stringOf(args[0], version), args.slice(1), version);
30
+ };
31
+ }
32
+ /**
33
+ * `self`'s broadcastMessage of `name` with `rest`, as the player sends Key's
34
+ * and Mouse's: undefined where it has no listeners, else true. A listener
35
+ * `removed` says is a clip taken off the display list hears nothing: a
36
+ * clip is found by its path, at which there is none (the corpus's
37
+ * `string_paths_keyevents`).
38
+ */
39
+ export function broadcastMessage(self, name, rest, version, removed) {
40
+ const listeners = get(self, "_listeners", version);
41
+ if (!(listeners instanceof Avm1Object)) {
42
+ return undefined;
43
+ }
44
+ const n = lengthOf(listeners, version);
45
+ if (n <= 0) {
46
+ return undefined;
47
+ }
48
+ // From SWF 7 the listeners as the call found them; up to 6 the array as it is
49
+ // by then, so that one a listener removes is not called (adl).
50
+ const snapshot = version >= 7 ? [] : null;
51
+ if (snapshot !== null) {
52
+ for (let i = 0; i < n; i++) {
53
+ snapshot.push(get(listeners, String(i), version));
54
+ }
55
+ }
56
+ for (let i = 0; i < n; i++) {
57
+ const listener = snapshot === null ? get(listeners, String(i), version) : snapshot[i];
58
+ if (!(listener instanceof Avm1Object) || removed?.(listener)) {
59
+ continue;
60
+ }
61
+ if (name === "") {
62
+ invoke(listener, listener, rest, version);
63
+ }
64
+ else {
65
+ const method = get(listener, name, version, listener, false);
66
+ invoke(method, listener, rest, version, Math.max(foundDepth, 1));
67
+ }
68
+ }
69
+ return true;
70
+ }
71
+ /**
72
+ * `o` made a broadcaster, as AsBroadcaster.initialize makes it: its
73
+ * broadcastMessage, addListener, removeListener and an empty `_listeners`,
74
+ * hidden from SWF 5 as ASSetPropFlags(o, names, 131) hides them.
75
+ */
76
+ export function initializeBroadcaster(o, realm, version) {
77
+ const constr = realm.AsBroadcaster.constr;
78
+ const hidden = DONT_ENUM | DONT_DELETE | VERSION_6;
79
+ const install = (name, value) => {
80
+ set(o, name, value, version);
81
+ const p = o.own(name, version);
82
+ if (p !== undefined) {
83
+ p.flags |= hidden;
84
+ }
85
+ };
86
+ install("broadcastMessage", realm.method(broadcast()));
87
+ install("addListener", get(constr, "addListener", version));
88
+ install("removeListener", get(constr, "removeListener", version));
89
+ install("_listeners", realm.newArray([], version));
90
+ }
91
+ export function broadcasterClass(realm) {
92
+ const proto = new Avm1Object();
93
+ const constr = new Avm1Function(undefined, realm, () => undefined, (self) => self);
94
+ // `prototype` last, as adl lists it.
95
+ constr.define("constructor", realm.Function, DONT_ENUM | DONT_DELETE);
96
+ constr.define("__proto__", realm.functionProto, DONT_ENUM | DONT_DELETE | VERSION_6);
97
+ constr.define("prototype", proto, DONT_ENUM | DONT_DELETE | VERSION_6);
98
+ proto.define("constructor", constr, DONT_ENUM | DONT_DELETE);
99
+ proto.define("__proto__", realm.objectProto, DONT_ENUM | DONT_DELETE);
100
+ const flags = DONT_ENUM | DONT_DELETE | VERSION_6;
101
+ constr.define("broadcastMessage", realm.method(broadcast()), flags);
102
+ constr.define("addListener", realm.method((self, args, version) => {
103
+ const listener = args.length > 0 ? args[0] : undefined;
104
+ callMethod(self, "removeListener", [listener], realm, version);
105
+ callMethod(get(self, "_listeners", version), "push", [listener], realm, version);
106
+ return true;
107
+ }), flags);
108
+ constr.define("removeListener", realm.method((self, args, version) => {
109
+ const listener = args.length > 0 ? args[0] : undefined;
110
+ const listeners = get(self, "_listeners", version);
111
+ if (!(listeners instanceof Avm1Object)) {
112
+ return false;
113
+ }
114
+ const n = toNumber(get(listeners, "length", version), version) | 0;
115
+ for (let i = 0; i < n; i++) {
116
+ if (looselyEquals(get(listeners, String(i), version), listener, version)) {
117
+ callMethod(listeners, "splice", [i, 1], realm, version);
118
+ return true;
119
+ }
120
+ }
121
+ return false;
122
+ }), flags);
123
+ constr.define("initialize", realm.method((_, args, version) => {
124
+ const o = args.length > 0 ? args[0] : undefined;
125
+ if (o instanceof Avm1Object) {
126
+ initializeBroadcaster(o, realm, version);
127
+ }
128
+ return undefined;
129
+ }), flags);
130
+ return { constr, proto };
131
+ }
132
+ //# sourceMappingURL=broadcaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcaster.js","sourceRoot":"","sources":["../../../src/avm1/globals/broadcaster.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Class, Realm } from "../realm.js";
2
+ /** What a Date object holds, in its `primitive`: the time, in ms since 1970 UTC, or NaN. */
3
+ export declare class DateCell {
4
+ time: number;
5
+ constructor(time: number);
6
+ }
7
+ /** As Flash writes a date: "Thu Oct 15 12:34:56 GMT+0300 2026", local. */
8
+ export declare function dateString(time: number): string;
9
+ export declare function dateClass(realm: Realm): Class;
10
+ //# sourceMappingURL=date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../src/avm1/globals/date.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGhD,4FAA4F;AAC5F,qBAAa,QAAQ;IACA,IAAI,EAAE,MAAM;IAA/B,YAAmB,IAAI,EAAE,MAAM,EAAI;CACpC;AAgQD,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAa/C;AAgOD,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAwB7C"}
@@ -0,0 +1,437 @@
1
+ // Date, as Ruffle's (https://github.com/ruffle-rs/ruffle)
2
+ // core/src/avm1/globals/date.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, "Date").
5
+ //
6
+ // The calendar is ECMA-262's, in Ruffle's arithmetic (its int casts
7
+ // included). Local time is Flash's on Windows, as adl has it: today's
8
+ // standard offset in every year, and today's daylight saving rule applied
9
+ // to every year, 1900 and 2050 alike, by its month, weekday and time, not
10
+ // the zone's history (Ruffle adds a constant offset, no daylight saving).
11
+ // A local time is taken back to UTC by the rule's local times, so a time
12
+ // in the spring-forward gap is an hour earlier and one in the hour that
13
+ // repeats as it falls back the later one.
14
+ import { Avm1Object, DONT_DELETE, DONT_ENUM, READ_ONLY, } from "../objects.js";
15
+ import { clampInt } from "../operators.js";
16
+ import { toNumber } from "../values.js";
17
+ /** What a Date object holds, in its `primitive`: the time, in ms since 1970 UTC, or NaN. */
18
+ export class DateCell {
19
+ time;
20
+ constructor(time) {
21
+ this.time = time;
22
+ }
23
+ }
24
+ const MS_PER_SECOND = 1000;
25
+ const MS_PER_MINUTE = 60000;
26
+ const MS_PER_HOUR = 3600000;
27
+ const MS_PER_DAY = 86400000;
28
+ const MONTH_OFFSETS = [
29
+ [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365],
30
+ [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366],
31
+ ];
32
+ /** `a mod n` taken non-negative, then cast as Ruffle casts it. */
33
+ function remEuclid(a, n) {
34
+ const r = clampInt(a % n);
35
+ return r < 0 ? r + n : r;
36
+ }
37
+ const day = (t) => Math.floor(t / MS_PER_DAY);
38
+ const dayFromYear = (year) => 365 * (year - 1970) +
39
+ Math.floor((year - 1969) / 4) -
40
+ Math.floor((year - 1901) / 100) +
41
+ Math.floor((year - 1601) / 400);
42
+ const timeFromYear = (year) => MS_PER_DAY * dayFromYear(year);
43
+ const isLeap = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
44
+ function yearOf(t) {
45
+ const d = day(t);
46
+ let low = clampInt(Math.floor(d / (t < 0 ? 365 : 366))) + 1970;
47
+ let high = clampInt(Math.ceil(d / (t < 0 ? 366 : 365))) + 1970;
48
+ while (low < high) {
49
+ const pivot = clampInt((low + high) / 2);
50
+ if (timeFromYear(pivot) <= t) {
51
+ if (timeFromYear(pivot + 1) > t) {
52
+ return pivot;
53
+ }
54
+ low = pivot + 1;
55
+ }
56
+ else {
57
+ high = pivot - 1;
58
+ }
59
+ }
60
+ return low;
61
+ }
62
+ const dayWithinYear = (t) => clampInt(day(t) - dayFromYear(yearOf(t)));
63
+ function monthOf(t) {
64
+ const d = dayWithinYear(t);
65
+ const offsets = MONTH_OFFSETS[isLeap(yearOf(t)) ? 1 : 0];
66
+ for (let i = 0; i < 11; i++) {
67
+ if (d < offsets[i + 1]) {
68
+ return i;
69
+ }
70
+ }
71
+ return 11;
72
+ }
73
+ const dateOf = (t) => dayWithinYear(t) - MONTH_OFFSETS[isLeap(yearOf(t)) ? 1 : 0][monthOf(t)] + 1;
74
+ const weekDay = (t) => remEuclid(day(t) + 4, 7);
75
+ const hoursOf = (t) => remEuclid(Math.floor((t + 0.5) / MS_PER_HOUR), 24);
76
+ const minutesOf = (t) => remEuclid(Math.floor(t / MS_PER_MINUTE), 60);
77
+ const secondsOf = (t) => remEuclid(Math.floor(t / MS_PER_SECOND), 60);
78
+ const msOf = (t) => remEuclid(t, MS_PER_SECOND);
79
+ /** Up to SWF 7 the remainder takes the sign of the time, as Ruffle has it. */
80
+ const timeWithinDay = (t, version) => version > 7 ? ((t % MS_PER_DAY) + MS_PER_DAY) % MS_PER_DAY : t % MS_PER_DAY;
81
+ function makeTime(h, m, s, ms) {
82
+ return (Math.floor(h) * MS_PER_HOUR +
83
+ Math.floor(m) * MS_PER_MINUTE +
84
+ Math.floor(s) * MS_PER_SECOND +
85
+ Math.floor(ms));
86
+ }
87
+ function dayFromMonth(year, month) {
88
+ const y = clampInt(year);
89
+ const m = clampInt(Math.floor(month));
90
+ if (m < 0 || m > 11) {
91
+ return Number.NaN;
92
+ }
93
+ return dayFromYear(y) + MONTH_OFFSETS[isLeap(y) ? 1 : 0][m];
94
+ }
95
+ function makeDay(year, month, date) {
96
+ let y = Math.floor(year);
97
+ const m = Math.floor(month);
98
+ y += Math.floor(m / 12);
99
+ return dayFromMonth(y, ((m % 12) + 12) % 12) + Math.floor(date) - 1;
100
+ }
101
+ const makeDate = (d, time) => d * MS_PER_DAY + time;
102
+ /** TimeClip: NaN past 100 million days either side of 1970, else whole. */
103
+ function clip(t) {
104
+ return !Number.isFinite(t) || Math.abs(t) > 1e8 * MS_PER_DAY ? Number.NaN : Math.floor(t);
105
+ }
106
+ /** A date's fields, a year below 100 taken as 1900's. */
107
+ function fromFields(args) {
108
+ let year = args[0];
109
+ if (year < 100) {
110
+ year += 1900;
111
+ }
112
+ return makeDate(makeDay(year, args[1], args.length > 2 ? args[2] : 1), makeTime(args.length > 3 ? args[3] : 0, args.length > 4 ? args[4] : 0, args.length > 5 ? args[5] : 0, args.length > 6 ? args[6] : 0));
113
+ }
114
+ let zone = null;
115
+ const hostOffset = (t) => -new Date(t).getTimezoneOffset() * MS_PER_MINUTE;
116
+ /** The first instant of `[from, to)` whose offset is not `from`'s, to the minute. */
117
+ function transition(from, to) {
118
+ const before = hostOffset(from);
119
+ while (to - from > MS_PER_MINUTE) {
120
+ const mid = from + Math.floor((to - from) / MS_PER_MINUTE / 2) * MS_PER_MINUTE;
121
+ if (hostOffset(mid) === before) {
122
+ from = mid;
123
+ }
124
+ else {
125
+ to = mid;
126
+ }
127
+ }
128
+ return to;
129
+ }
130
+ /** A transition at `t` as a rule, its standard local time's month, weekday and week. */
131
+ function ruleOf(t, standard) {
132
+ const local = t + standard;
133
+ const date = dateOf(local);
134
+ const length = MONTH_OFFSETS[isLeap(yearOf(local)) ? 1 : 0];
135
+ const month = monthOf(local);
136
+ const last = date + 7 > length[month + 1] - length[month];
137
+ return {
138
+ month,
139
+ weekday: weekDay(local),
140
+ week: last ? 5 : Math.floor((date - 1) / 7) + 1,
141
+ time: remEuclid(local, MS_PER_DAY),
142
+ };
143
+ }
144
+ /** The host's zone, read from its offsets this year, again as the year changes. */
145
+ function hostZone() {
146
+ const now = Date.now();
147
+ if (zone !== null && now < zone.until) {
148
+ return zone;
149
+ }
150
+ const year = new Date(now).getUTCFullYear();
151
+ const months = [];
152
+ for (let m = 0; m <= 12; m++) {
153
+ months.push(Date.UTC(year, m, 1));
154
+ }
155
+ const offsets = months.map(hostOffset);
156
+ const standard = Math.min(...offsets);
157
+ const saving = Math.max(...offsets) - standard;
158
+ let start = null;
159
+ let end = null;
160
+ for (let m = 0; m < 12; m++) {
161
+ if (offsets[m] !== offsets[m + 1]) {
162
+ const t = transition(months[m], months[m + 1]);
163
+ if (hostOffset(t) > offsets[m]) {
164
+ start = ruleOf(t, standard);
165
+ }
166
+ else {
167
+ end = ruleOf(t, standard);
168
+ }
169
+ }
170
+ }
171
+ zone = { year, until: months[12], standard, saving, start, end };
172
+ return zone;
173
+ }
174
+ /** The instant a rule falls on in `year`. */
175
+ function instant(rule, year, standard) {
176
+ const first = makeDay(year, rule.month, 1);
177
+ let date = 1 + ((rule.weekday - weekDay(first * MS_PER_DAY) + 7) % 7) + (rule.week - 1) * 7;
178
+ const length = makeDay(year, rule.month + 1, 1) - first;
179
+ while (date > length) {
180
+ date -= 7;
181
+ }
182
+ return makeDate(first + date - 1, rule.time) - standard;
183
+ }
184
+ /** The offset east of UTC at `t`, in ms: the standard offset, and daylight saving's by today's rule. */
185
+ function offsetAt(t) {
186
+ const z = hostZone();
187
+ if (z.start === null || z.end === null || !Number.isFinite(t)) {
188
+ return z.standard;
189
+ }
190
+ const year = yearOf(t + z.standard);
191
+ const start = instant(z.start, year, z.standard);
192
+ const end = instant(z.end, year, z.standard);
193
+ const saving = start < end ? t >= start && t < end : !(t >= end && t < start);
194
+ return saving ? z.standard + z.saving : z.standard;
195
+ }
196
+ const localTime = (t) => t + offsetAt(t);
197
+ /**
198
+ * A local time back to UTC, daylight saving's taken where the local time
199
+ * is past the rule's local standard time, as Windows compares them: a
200
+ * time in the spring-forward gap is an hour earlier, one in the hour
201
+ * that repeats as it falls back the later, standard one.
202
+ */
203
+ const utcOf = (local) => local - offsetAt(local - hostZone().standard);
204
+ const DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
205
+ const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
206
+ const two = (n) => (n < 10 ? `0${n}` : String(n));
207
+ /** As Flash writes a date: "Thu Oct 15 12:34:56 GMT+0300 2026", local. */
208
+ export function dateString(time) {
209
+ if (!Number.isFinite(time)) {
210
+ return "Invalid Date";
211
+ }
212
+ const t = localTime(time);
213
+ const offset = clampInt((t - time) / MS_PER_MINUTE);
214
+ const abs = Math.abs(offset);
215
+ return `${DAYS[weekDay(t)]} ${MONTHS[monthOf(t)]} ${dateOf(t)} ${two(hoursOf(t))}:${two(minutesOf(t))}:${two(secondsOf(t))} GMT${offset < 0 ? "-" : "+"}${two(Math.floor(abs / 60))}${two(abs % 60)} ${yearOf(t)}`;
216
+ }
217
+ // The methods' ASnative(103, i) indices, a UTC method 128 past its local one.
218
+ const GET_FULL_YEAR = 0;
219
+ const GET_YEAR = 1;
220
+ const GET_MONTH = 2;
221
+ const GET_DATE = 3;
222
+ const GET_DAY = 4;
223
+ const GET_HOURS = 5;
224
+ const GET_MINUTES = 6;
225
+ const GET_SECONDS = 7;
226
+ const GET_MILLISECONDS = 8;
227
+ const SET_FULL_YEAR = 9;
228
+ const SET_MONTH = 10;
229
+ const SET_DATE = 11;
230
+ const SET_HOURS = 12;
231
+ const SET_MINUTES = 13;
232
+ const SET_SECONDS = 14;
233
+ const SET_MILLISECONDS = 15;
234
+ const GET_TIME = 16;
235
+ const SET_TIME = 17;
236
+ const GET_TIMEZONE_OFFSET = 18;
237
+ const TO_STRING = 19;
238
+ const SET_YEAR = 20;
239
+ const CONSTRUCTOR = 256;
240
+ const UTC = 257;
241
+ const UTC_OFFSET = 128;
242
+ /** The arguments as Date's natives take them: numbers, up to 7, to the first undefined. */
243
+ function numbers(args, version) {
244
+ const out = [];
245
+ for (let i = 0; i < args.length && i < 7; i++) {
246
+ if (args[i] === undefined) {
247
+ break;
248
+ }
249
+ out.push(toNumber(args[i], version));
250
+ }
251
+ return out;
252
+ }
253
+ function now(version) {
254
+ const t = Date.now();
255
+ return version > 7 ? Math.round(t) : t;
256
+ }
257
+ /** ASnative(103, index): a Date method, the constructor, or Date.UTC. */
258
+ function dateNative(index) {
259
+ return (self, rawArgs, version) => {
260
+ const args = numbers(rawArgs, version);
261
+ if (index === CONSTRUCTOR) {
262
+ let time;
263
+ if (args.length === 0) {
264
+ time = now(version);
265
+ }
266
+ else if (args.length === 1) {
267
+ time = args[0];
268
+ }
269
+ else {
270
+ time = utcOf(fromFields(args));
271
+ }
272
+ self.primitive = new DateCell(time);
273
+ return self;
274
+ }
275
+ if (index === UTC) {
276
+ return args.length < 2 ? undefined : fromFields(args);
277
+ }
278
+ const cell = self.primitive;
279
+ if (!(cell instanceof DateCell)) {
280
+ return undefined;
281
+ }
282
+ const time = cell.time;
283
+ switch (index) {
284
+ case GET_TIME:
285
+ return time;
286
+ case SET_TIME:
287
+ cell.time = clip(args.length > 0 ? args[0] : Number.NaN);
288
+ return cell.time;
289
+ case GET_TIMEZONE_OFFSET:
290
+ return (time - localTime(time)) / MS_PER_MINUTE;
291
+ }
292
+ const utc = index >= UTC_OFFSET;
293
+ let i = utc ? index - UTC_OFFSET : index;
294
+ if (i <= GET_MILLISECONDS && Number.isNaN(time)) {
295
+ return Number.NaN;
296
+ }
297
+ const setYear = i === SET_YEAR;
298
+ if (setYear) {
299
+ i = SET_FULL_YEAR;
300
+ }
301
+ const arg = (field) => field >= i && field - i < args.length
302
+ ? args[field - i]
303
+ : field === i
304
+ ? Number.NaN
305
+ : undefined;
306
+ const t = utc ? time : localTime(time);
307
+ const store = (d, within) => {
308
+ let value = makeDate(d, within);
309
+ if (!utc) {
310
+ value = utcOf(value);
311
+ }
312
+ cell.time = clip(value);
313
+ return cell.time;
314
+ };
315
+ switch (i) {
316
+ case GET_FULL_YEAR:
317
+ return yearOf(t);
318
+ case GET_YEAR:
319
+ return yearOf(t) - 1900;
320
+ case GET_MONTH:
321
+ return monthOf(t);
322
+ case GET_DATE:
323
+ return dateOf(t);
324
+ case GET_DAY:
325
+ return weekDay(t);
326
+ case GET_HOURS:
327
+ return hoursOf(t);
328
+ case GET_MINUTES:
329
+ return minutesOf(t);
330
+ case GET_SECONDS:
331
+ return secondsOf(t);
332
+ case GET_MILLISECONDS:
333
+ return msOf(t);
334
+ case SET_FULL_YEAR:
335
+ case SET_MONTH:
336
+ case SET_DATE: {
337
+ let year = arg(SET_FULL_YEAR) ?? yearOf(t);
338
+ if (setYear && year >= 0 && year <= 99) {
339
+ year += 1900;
340
+ }
341
+ let month = arg(SET_MONTH) ?? monthOf(t);
342
+ // setMonth() of nothing is January.
343
+ if (i === SET_MONTH && Number.isNaN(month)) {
344
+ month = 0;
345
+ }
346
+ let date = arg(SET_DATE);
347
+ if (date === undefined) {
348
+ date = dateOf(t);
349
+ // From SWF 7, setMonth keeps the day within the month it sets (adl).
350
+ const m = Math.floor(month);
351
+ if (i === SET_MONTH && version > 6 && m >= 0 && m <= 11) {
352
+ const length = MONTH_OFFSETS[isLeap(clampInt(year)) ? 1 : 0];
353
+ date = Math.min(date, length[m + 1] - length[m]);
354
+ }
355
+ }
356
+ return store(makeDay(year, month, date), timeWithinDay(t, version));
357
+ }
358
+ case SET_HOURS:
359
+ case SET_MINUTES:
360
+ case SET_SECONDS:
361
+ case SET_MILLISECONDS: {
362
+ const hours = arg(SET_HOURS) ?? hoursOf(t);
363
+ let minutes = arg(SET_MINUTES) ?? minutesOf(t);
364
+ let seconds = arg(SET_SECONDS) ?? secondsOf(t);
365
+ let ms = arg(SET_MILLISECONDS) ?? msOf(t);
366
+ if (i === SET_MINUTES) {
367
+ minutes = clampInt(minutes);
368
+ seconds = clampInt(seconds);
369
+ ms = clampInt(ms);
370
+ }
371
+ return store(day(t), makeTime(hours, minutes, seconds, ms));
372
+ }
373
+ case TO_STRING:
374
+ return dateString(time);
375
+ default:
376
+ return undefined;
377
+ }
378
+ };
379
+ }
380
+ const PROTO = [
381
+ ["getFullYear", GET_FULL_YEAR],
382
+ ["getYear", GET_YEAR],
383
+ ["getMonth", GET_MONTH],
384
+ ["getDate", GET_DATE],
385
+ ["getDay", GET_DAY],
386
+ ["getHours", GET_HOURS],
387
+ ["getMinutes", GET_MINUTES],
388
+ ["getSeconds", GET_SECONDS],
389
+ ["getMilliseconds", GET_MILLISECONDS],
390
+ ["setFullYear", SET_FULL_YEAR],
391
+ ["setMonth", SET_MONTH],
392
+ ["setDate", SET_DATE],
393
+ ["setHours", SET_HOURS],
394
+ ["setMinutes", SET_MINUTES],
395
+ ["setSeconds", SET_SECONDS],
396
+ ["setMilliseconds", SET_MILLISECONDS],
397
+ ["getTime", GET_TIME],
398
+ ["setTime", SET_TIME],
399
+ ["getTimezoneOffset", GET_TIMEZONE_OFFSET],
400
+ ["toString", TO_STRING],
401
+ ["setYear", SET_YEAR],
402
+ ["getUTCFullYear", UTC_OFFSET + GET_FULL_YEAR],
403
+ ["getUTCYear", UTC_OFFSET + GET_YEAR],
404
+ ["getUTCMonth", UTC_OFFSET + GET_MONTH],
405
+ ["getUTCDate", UTC_OFFSET + GET_DATE],
406
+ ["getUTCDay", UTC_OFFSET + GET_DAY],
407
+ ["getUTCHours", UTC_OFFSET + GET_HOURS],
408
+ ["getUTCMinutes", UTC_OFFSET + GET_MINUTES],
409
+ ["getUTCSeconds", UTC_OFFSET + GET_SECONDS],
410
+ ["getUTCMilliseconds", UTC_OFFSET + GET_MILLISECONDS],
411
+ ["setUTCFullYear", UTC_OFFSET + SET_FULL_YEAR],
412
+ ["setUTCMonth", UTC_OFFSET + SET_MONTH],
413
+ ["setUTCDate", UTC_OFFSET + SET_DATE],
414
+ ["setUTCHours", UTC_OFFSET + SET_HOURS],
415
+ ["setUTCMinutes", UTC_OFFSET + SET_MINUTES],
416
+ ["setUTCSeconds", UTC_OFFSET + SET_SECONDS],
417
+ ["setUTCMilliseconds", UTC_OFFSET + SET_MILLISECONDS],
418
+ ["valueOf", GET_TIME],
419
+ ];
420
+ export function dateClass(realm) {
421
+ const proto = new Avm1Object();
422
+ // Its `prototype` read-only, as Object's and Number's are (adl).
423
+ const constr = realm.classOf(proto, dateNative(CONSTRUCTOR), (_, __, version) => dateString(now(version)), READ_ONLY);
424
+ proto.define("__proto__", realm.objectProto, DONT_ENUM | DONT_DELETE);
425
+ for (const [name, index] of PROTO) {
426
+ proto.define(name, realm.method(dateNative(index)), DONT_ENUM | DONT_DELETE);
427
+ }
428
+ constr.define("UTC", realm.method(dateNative(UTC)), DONT_ENUM | DONT_DELETE | READ_ONLY);
429
+ realm.natives.set(103, (i) => i <= SET_YEAR ||
430
+ i === CONSTRUCTOR ||
431
+ i === UTC ||
432
+ (i >= UTC_OFFSET && i <= UTC_OFFSET + SET_MILLISECONDS)
433
+ ? dateNative(i)
434
+ : null);
435
+ return { constr, proto };
436
+ }
437
+ //# sourceMappingURL=date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../../src/avm1/globals/date.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type Native } from "../objects.js";
2
+ import type { Realm } from "../realm.js";
3
+ import { type Value } from "../values.js";
4
+ /** escape: every byte but a letter or a digit as %XX. */
5
+ export declare function escapeAvm1(s: string, version: number): string;
6
+ /**
7
+ * unescape: %XX the byte XX, + a space; a % before what is no hex digit
8
+ * drops that character. The bytes are a SWF 5's string, and from SWF 6
9
+ * read as its strings' UTF-8 is (decodeLenient).
10
+ */
11
+ export declare function unescapeAvm1(s: string, version: number): string;
12
+ /**
13
+ * parseInt, as Ruffle has it and adl agrees: "0x" after a sign is NaN
14
+ * unless the radix reads it, a leading "0x" is hex whatever the radix, a
15
+ * leading 0 octal where every digit after it is, spaces and a sign after
16
+ * the prefix, NaN without a digit.
17
+ */
18
+ export declare function parseIntAvm1(s: string, radixValue: Value, hasRadix: boolean, version: number): number;
19
+ /** ASnative(category, index): a new function of the table's native, undefined for no table. */
20
+ export declare function asnative(realm: Realm, category: number, index: number): Value;
21
+ /** The global functions, defined on `_global` in Flash's order by `define`. */
22
+ export declare function globalFunctions(realm: Realm, define: (name: string, native: Native) => void): void;
23
+ //# sourceMappingURL=global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../../../src/avm1/globals/global.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,MAAM,EAOZ,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAsB,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AA4B9D,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAa7D;AAWD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA0C/D;AAmDD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,CAAC,EAAE,MAAM,EACT,UAAU,EAAE,KAAK,EACjB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,MAAM,GACd,MAAM,CAyER;AA4DD,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAS7E;AA2CD,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,QA4C3F"}