@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,378 @@
1
+ // Array's and Vector's sort and sortOn, as avmplus' ArraySort does them:
2
+ // its own quicksort, not stable, so that elements that compare equal end
3
+ // up in the order avmplus leaves them; undefined elements after the
4
+ // others, and missing ones last; and its options and comparisons, with the
5
+ // bug compatibility of the latest SWF version (bugzillas 524122, 532454).
6
+ //
7
+ // Translated from avmplus' core/ArrayClass.cpp, this file is subject to the
8
+ // Mozilla Public License, v. 2.0: http://mozilla.org/MPL/2.0/.
9
+ import { FloatValue } from "../float.js";
10
+ import { publicQname } from "../names.js";
11
+ import { SEALED_ELEMENTS } from "../runtime.js";
12
+ import { lowerCase } from "./case.js";
13
+ import { getElement, isObject, lengthOf } from "./define.js";
14
+ import { FloatVector } from "./float-vector.js";
15
+ const kCaseInsensitive = 1;
16
+ const kDescending = 2;
17
+ const kUniqueSort = 4;
18
+ const kReturnIndexedArray = 8;
19
+ const kNumeric = 16;
20
+ function stringCompare(rt, lower) {
21
+ return (x, y) => {
22
+ let a = rt.toString(x);
23
+ let b = rt.toString(y);
24
+ if (lower) {
25
+ a = lowerCase(a);
26
+ b = lowerCase(b);
27
+ }
28
+ return a < b ? -1 : a > b ? 1 : 0;
29
+ };
30
+ }
31
+ function numericCompare(rt) {
32
+ return (x, y) => {
33
+ const a = rt.toNumber(x);
34
+ const b = rt.toNumber(y);
35
+ const diff = a - b;
36
+ if (!Number.isNaN(diff)) {
37
+ return diff < 0 ? -1 : diff > 0 ? 1 : 0;
38
+ }
39
+ return !Number.isNaN(b) ? 1 : !Number.isNaN(a) ? -1 : 0;
40
+ };
41
+ }
42
+ /** The comparison options name, without a compare function. */
43
+ function compareOf(rt, options) {
44
+ const compare = options & kNumeric ? numericCompare(rt) : stringCompare(rt, (options & kCaseInsensitive) !== 0);
45
+ return options & kDescending ? (x, y) => compare(y, x) : compare;
46
+ }
47
+ /** As ArrayClass::generic_sort: sort(), sort(compare), sort(options) or sort(compare, options). */
48
+ export function sort(rt, d, args) {
49
+ if (!isObject(d)) {
50
+ return undefined;
51
+ }
52
+ let compare = null;
53
+ let options = 0;
54
+ let numeric = false;
55
+ if (args.length >= 1) {
56
+ const arg0 = args[0];
57
+ if (isObject(arg0)) {
58
+ if (!arg0.$f) {
59
+ throw rt.error("TypeError", 1034, rt.describe(arg0), "Function");
60
+ }
61
+ // The comparator's result counts by its sign, as a Number. Its arguments go in one pair for
62
+ // the sort, not one a comparison: the comparator has $f, which callValue calls with apply,
63
+ // and apply copies the pair into the call's own parameters, rest or arguments, a native's
64
+ // as an AS3 method's, keeping no reference to it. A comparator that sorts inside itself has
65
+ // its own sort's pair.
66
+ const pair = [undefined, undefined];
67
+ compare = (x, y) => {
68
+ pair[0] = x;
69
+ pair[1] = y;
70
+ const result = rt.toNumber(rt.callValue(arg0, d, pair, null));
71
+ return result > 0 ? 1 : result < 0 ? -1 : 0;
72
+ };
73
+ if (args.length >= 2) {
74
+ if (typeof args[1] !== "number" && !(args[1] instanceof FloatValue)) {
75
+ throw rt.error("TypeError", 1034, rt.describe(args[1]), "Number");
76
+ }
77
+ options = rt.toInt(args[1]);
78
+ }
79
+ }
80
+ else if (typeof arg0 === "number" || arg0 instanceof FloatValue) {
81
+ options = rt.toInt(arg0);
82
+ }
83
+ else {
84
+ throw rt.error("TypeError", 1034, rt.describe(arg0), "Function");
85
+ }
86
+ }
87
+ if (compare === null) {
88
+ numeric = (options & kNumeric) !== 0;
89
+ compare = compareOf(rt, options);
90
+ }
91
+ else if (options & kDescending) {
92
+ const ascending = compare;
93
+ compare = (x, y) => ascending(y, x);
94
+ }
95
+ return sortWith(rt, d, options, compare, numeric, null);
96
+ }
97
+ /** As ArrayClass::generic_sortOn: by one field or several, each with its options. */
98
+ export function sortOn(rt, d, names, optionsIn) {
99
+ if (!isObject(d)) {
100
+ return undefined;
101
+ }
102
+ const fields = [];
103
+ let options = 0;
104
+ if (typeof names === "string") {
105
+ options = rt.toInt(optionsIn);
106
+ fields.push({ name: names, options });
107
+ }
108
+ else if (names?.$a && names.$traits.name === "Array") {
109
+ for (const n of names.$a) {
110
+ fields.push({ name: rt.toString(n), options: 0 });
111
+ }
112
+ if (optionsIn?.$a && optionsIn.$traits.name === "Array") {
113
+ const list = optionsIn.$a;
114
+ if (list.length === fields.length) {
115
+ options = rt.toInt(list[0]);
116
+ fields.forEach((f, i) => {
117
+ f.options = rt.toInt(list[i]);
118
+ });
119
+ }
120
+ }
121
+ else {
122
+ options = rt.toInt(optionsIn);
123
+ for (const f of fields) {
124
+ f.options = options;
125
+ }
126
+ }
127
+ }
128
+ // One field sorts by its values (sortWith), which needs no comparison of the elements.
129
+ const compare = fields.length === 1 ? unused : fieldCompare(rt, fields, options);
130
+ return sortWith(rt, d, options, compare, false, fields);
131
+ }
132
+ /** No comparison: sortWith makes its own where it is given this. */
133
+ const unused = () => 0;
134
+ /** As ArraySort::FieldCompare: by each field in turn, until one differs. */
135
+ function fieldCompare(rt, fields, options) {
136
+ // Each field's name and comparison made once for the sort, not for each comparison.
137
+ const names = fields.map((field) => publicQname(field.name, rt.userVersions));
138
+ const compares = fields.map((field) => field.options & kNumeric
139
+ ? numericCompare(rt)
140
+ : stringCompare(rt, (field.options & kCaseInsensitive) !== 0));
141
+ return (j, k) => {
142
+ let opt = options;
143
+ let result = 0;
144
+ const objJ = isObject(j) ? j : null;
145
+ const objK = isObject(k) ? k : null;
146
+ if (!(objJ && objK)) {
147
+ result = objK ? 1 : objJ ? -1 : 0;
148
+ return opt & kDescending ? -result : result;
149
+ }
150
+ for (let f = 0; f < fields.length; f++) {
151
+ const name = names[f];
152
+ opt = fields[f].options;
153
+ const x = rt.getProperty(objJ, name);
154
+ const y = rt.getProperty(objK, name);
155
+ const defX = x !== undefined;
156
+ const defY = y !== undefined;
157
+ if (!(defX && defY)) {
158
+ if (defY) {
159
+ result = 1;
160
+ }
161
+ else if (defX) {
162
+ result = -1;
163
+ }
164
+ else {
165
+ const hasX = rt.hasProperty(objJ, name);
166
+ const hasY = rt.hasProperty(objK, name);
167
+ result = !hasX && hasY ? 1 : hasX && !hasY ? -1 : 0;
168
+ }
169
+ }
170
+ else {
171
+ result = compares[f](x, y);
172
+ }
173
+ if (result !== 0) {
174
+ break;
175
+ }
176
+ }
177
+ return opt & kDescending ? -result : result;
178
+ };
179
+ }
180
+ /**
181
+ * As ArraySort's constructor: split the elements into defined, undefined
182
+ * and missing ones, quicksort the defined, then write them back, or
183
+ * return their order.
184
+ */
185
+ function sortWith(rt, d, options, compareIn, numeric, fields) {
186
+ // The length as getLengthProperty reads it: an Array subclass may
187
+ // override its getter. An Array's or a Vector's elements are in their
188
+ // storage; anything else's are its properties.
189
+ const len = lengthOf(rt, d);
190
+ const storage = d.$a;
191
+ const a = storage !== undefined && storage !== SEALED_ELEMENTS ? storage : null;
192
+ // As ArraySort, which leaves what it cannot index unsorted.
193
+ if (len === 0 || len >= 0x10000000) {
194
+ return d;
195
+ }
196
+ const index = new Array(len);
197
+ const atoms = new Array(len);
198
+ let fieldAtoms = null;
199
+ let compare = compareIn;
200
+ let j = len;
201
+ let newlen = len;
202
+ // An element that sorts after the others: undefined ones next, then missing ones.
203
+ const partition = (i) => {
204
+ j--;
205
+ const temp = index[i];
206
+ index[i] = index[j];
207
+ // As hasUintProperty: a Proxy is asked through its hasProperty.
208
+ if (!(a !== null ? i in a : rt.in(i, d))) {
209
+ newlen--;
210
+ index[j] = index[newlen];
211
+ index[newlen] = temp;
212
+ }
213
+ else {
214
+ index[j] = temp;
215
+ }
216
+ };
217
+ if (fields && fields.length === 1) {
218
+ // One field: sort by its values, then write back the elements.
219
+ fieldAtoms = new Array(len);
220
+ const name = publicQname(fields[0].name, rt.userVersions);
221
+ for (let i = len - 1; i >= 0; i--) {
222
+ index[i] = i;
223
+ const v = getElement(rt, d, i);
224
+ fieldAtoms[i] = v;
225
+ if (isObject(v)) {
226
+ atoms[i] = rt.getProperty(v, name);
227
+ }
228
+ else {
229
+ partition(i);
230
+ }
231
+ }
232
+ compare = compareOf(rt, fields[0].options);
233
+ }
234
+ else {
235
+ for (let i = len - 1; i >= 0; i--) {
236
+ index[i] = i;
237
+ // As getUintProperty: a hole finds the prototype's element.
238
+ atoms[i] = getElement(rt, d, i);
239
+ if (numeric &&
240
+ typeof atoms[i] !== "number" &&
241
+ !(atoms[i] instanceof FloatValue) &&
242
+ Number.isNaN(rt.toNumber(atoms[i]))) {
243
+ throw rt.error("TypeError", 1034, rt.describe(atoms[i]), "Number");
244
+ }
245
+ if (atoms[i] === undefined) {
246
+ partition(i);
247
+ }
248
+ }
249
+ }
250
+ const cmp = (l, r) => compare(atoms[index[l]], atoms[index[r]]);
251
+ const swap = (l, r) => {
252
+ const t = index[l];
253
+ index[l] = index[r];
254
+ index[r] = t;
255
+ };
256
+ if (j > 1) {
257
+ qsort(0, j - 1, cmp, swap);
258
+ }
259
+ if (options & kUniqueSort) {
260
+ for (let i = 0; i < len - 1; i++) {
261
+ if (cmp(i, i + 1) === 0) {
262
+ return 0;
263
+ }
264
+ }
265
+ }
266
+ if (options & kReturnIndexedArray) {
267
+ return rt.array(index.slice());
268
+ }
269
+ // Into the elements as they are now: a comparison may have set a
270
+ // Vector's length, which gives it a new array. Read through the order from
271
+ // the sort's own copy of them.
272
+ const source = fieldAtoms ?? atoms;
273
+ const target = d.$a;
274
+ if (target === undefined || target === SEALED_ELEMENTS) {
275
+ // As setUintProperty and delUintProperty: the length is left as it is.
276
+ for (let i = 0; i < newlen; i++) {
277
+ rt.setProperty(d, rt.publicName(i), source[index[i]]);
278
+ }
279
+ for (let i = newlen; i < len; i++) {
280
+ rt.deleteProperty(d, rt.publicName(i));
281
+ }
282
+ return d;
283
+ }
284
+ if (target instanceof FloatVector) {
285
+ if (target.length < newlen) {
286
+ target.length = newlen;
287
+ }
288
+ for (let i = 0; i < newlen; i++) {
289
+ target.data[i] = rt.toNumber(source[index[i]]);
290
+ }
291
+ return d;
292
+ }
293
+ for (let i = 0; i < newlen; i++) {
294
+ target[i] = source[index[i]];
295
+ }
296
+ for (let i = newlen; i < len; i++) {
297
+ delete target[i];
298
+ }
299
+ return d;
300
+ }
301
+ /** As ArraySort::qsort: iterative, the middle element as pivot, the smaller partition first. */
302
+ function qsort(loIn, hiIn, compare, swap) {
303
+ let lo = loIn;
304
+ let hi = hiIn;
305
+ // Each frame's lo and hi, flat: a pair for each was garbage of the sort.
306
+ const stack = [];
307
+ if (lo >= hi) {
308
+ return;
309
+ }
310
+ for (;;) {
311
+ const size = hi - lo + 1;
312
+ if (size < 4) {
313
+ if (size === 3) {
314
+ if (compare(lo, lo + 1) > 0) {
315
+ swap(lo, lo + 1);
316
+ if (compare(lo + 1, lo + 2) > 0) {
317
+ swap(lo + 1, lo + 2);
318
+ if (compare(lo, lo + 1) > 0) {
319
+ swap(lo, lo + 1);
320
+ }
321
+ }
322
+ }
323
+ else if (compare(lo + 1, lo + 2) > 0) {
324
+ swap(lo + 1, lo + 2);
325
+ if (compare(lo, lo + 1) > 0) {
326
+ swap(lo, lo + 1);
327
+ }
328
+ }
329
+ }
330
+ else if (size === 2 && compare(lo, lo + 1) > 0) {
331
+ swap(lo, lo + 1);
332
+ }
333
+ }
334
+ else {
335
+ swap(lo + Math.floor(size / 2), lo);
336
+ let left = lo;
337
+ let right = hi + 1;
338
+ for (;;) {
339
+ do {
340
+ left++;
341
+ } while (left <= hi && compare(left, lo) <= 0);
342
+ do {
343
+ right--;
344
+ } while (right > lo && compare(right, lo) >= 0);
345
+ if (right < left) {
346
+ break;
347
+ }
348
+ swap(left, right);
349
+ }
350
+ swap(lo, right);
351
+ // Unsigned in avmplus: right - 1 - lo wraps when right is lo.
352
+ if ((right - 1 - lo) >>> 0 >= (hi - left) >>> 0) {
353
+ if (lo + 1 < right) {
354
+ stack.push(lo, right - 1);
355
+ }
356
+ if (left < hi) {
357
+ lo = left;
358
+ continue;
359
+ }
360
+ }
361
+ else {
362
+ if (left < hi) {
363
+ stack.push(left, hi);
364
+ }
365
+ if (lo + 1 < right) {
366
+ hi = right - 1;
367
+ continue;
368
+ }
369
+ }
370
+ }
371
+ if (stack.length === 0) {
372
+ return;
373
+ }
374
+ hi = stack.pop();
375
+ lo = stack.pop();
376
+ }
377
+ }
378
+ //# sourceMappingURL=sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../src/avm2/natives/sort.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ClassHook } from "../hooks.js";
2
+ import { type Natives } from "./define.js";
3
+ export declare const stringNatives: Natives;
4
+ export declare const stringHooks: Record<string, ClassHook>;
5
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../src/avm2/natives/string.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAmB,KAAK,OAAO,EAAS,MAAM,aAAa,CAAC;AAenE,eAAO,MAAM,aAAa,EAAE,OAqI3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAEjD,CAAC"}
@@ -0,0 +1,133 @@
1
+ // String: `this` is the string.
2
+ import { lowerCase, upperCase } from "./case.js";
3
+ import { AS3, conversion, plain } from "./define.js";
4
+ import { compile, matchArray, replacement as replacementOf } from "./regexp.js";
5
+ /** Flash resolves a negative end (start + length) from the string's end. */
6
+ function substr(s, start, length) {
7
+ if (!(length < 0)) {
8
+ return s.substr(start, length);
9
+ }
10
+ const offset = Math.trunc(start) || 0;
11
+ const at = offset < 0 ? Math.max(0, s.length + offset) : Math.min(offset, s.length);
12
+ const end = at + Math.trunc(length);
13
+ return end < 0 ? s.slice(at, end) : "";
14
+ }
15
+ export const stringNatives = {
16
+ "String#get:length": plain(function () {
17
+ return this.length;
18
+ }),
19
+ [`String.${AS3}::fromCharCode`]: (rt) => (...codes) => {
20
+ return String.fromCharCode(...codes.map((c) => rt.toUint(c) & 0xffff));
21
+ },
22
+ [`String#${AS3}::charAt`]: (rt) => function (i = 0) {
23
+ return this.charAt(rt.toNumber(i));
24
+ },
25
+ [`String#${AS3}::charCodeAt`]: (rt) => function (i = 0) {
26
+ return this.charCodeAt(rt.toNumber(i));
27
+ },
28
+ [`String#${AS3}::indexOf`]: (rt) => function (s = "undefined", i = 0) {
29
+ return this.indexOf(rt.toString(s), rt.toNumber(i));
30
+ },
31
+ [`String#${AS3}::lastIndexOf`]: (rt) => function (s = "undefined", i = 0x7fffffff) {
32
+ // As String::lastIndexOf, from INTCLAMP: from before the start nothing matches.
33
+ const at = rt.toNumber(i);
34
+ return at <= -1 ? -1 : this.lastIndexOf(rt.toString(s), at);
35
+ },
36
+ [`String#${AS3}::localeCompare`]: (rt) => function (other) {
37
+ // As String::Compare: the first difference of their character codes,
38
+ // else which is longer.
39
+ const o = rt.toString(other);
40
+ const n = Math.min(this.length, o.length);
41
+ for (let i = 0; i < n; i++) {
42
+ const d = this.charCodeAt(i) - o.charCodeAt(i);
43
+ if (d) {
44
+ return d;
45
+ }
46
+ }
47
+ return Math.sign(this.length - o.length);
48
+ },
49
+ [`String#${AS3}::slice`]: (rt) => function (start = 0, end = 0x7fffffff) {
50
+ return this.slice(rt.toNumber(start), rt.toNumber(end));
51
+ },
52
+ [`String#${AS3}::substring`]: (rt) => function (start = 0, end = 0x7fffffff) {
53
+ return this.substring(rt.toNumber(start), rt.toNumber(end));
54
+ },
55
+ [`String#${AS3}::substr`]: (rt) => function (start = 0, length = 0x7fffffff) {
56
+ return substr(this, rt.toNumber(start), rt.toNumber(length));
57
+ },
58
+ [`String#${AS3}::toLowerCase`]: plain(function () {
59
+ return lowerCase(this);
60
+ }),
61
+ [`String#${AS3}::toUpperCase`]: plain(function () {
62
+ return upperCase(this);
63
+ }),
64
+ "String#String::_indexOf": plain(function (s, i = 0) {
65
+ return this.indexOf(s, i);
66
+ }),
67
+ "String#String::_lastIndexOf": plain(function (s, i = 0x7fffffff) {
68
+ return i < 0 ? -1 : this.lastIndexOf(s, i);
69
+ }),
70
+ "String#String::_slice": plain(function (start = 0, end = 0x7fffffff) {
71
+ return this.slice(start, end);
72
+ }),
73
+ "String#String::_substring": plain(function (start = 0, end = 0x7fffffff) {
74
+ return this.substring(start, end);
75
+ }),
76
+ "String#String::_substr": plain(function (start = 0, length = 0x7fffffff) {
77
+ return substr(this, start, length);
78
+ }),
79
+ "String.String::_replace": (rt) => (s, pattern, replacement) => {
80
+ const p = pattern?.$re instanceof RegExp ? pattern.$re : rt.toString(pattern);
81
+ if (replacement !== null && typeof replacement === "object" && replacement.$f) {
82
+ // The function gets the match, its groups, its position and the string.
83
+ return s.replace(p, (...a) => {
84
+ const args = typeof a[a.length - 1] === "object" ? a.slice(0, -1) : a;
85
+ return rt.toString(rt.callValue(replacement, null, args, null));
86
+ });
87
+ }
88
+ const text = rt.toString(replacement);
89
+ return s.replace(p, p instanceof RegExp ? replacementOf(p, text) : text);
90
+ },
91
+ // A string pattern is a RegExp's, as avmplus makes one of it.
92
+ "String.String::_search": (rt) => (s, pattern) => s.search(pattern?.$re instanceof RegExp ? pattern.$re : compile(rt.toString(pattern), "")),
93
+ "String.String::_match": (rt) => (s, pattern) => {
94
+ const re = pattern?.$re instanceof RegExp ? pattern.$re : compile(rt.toString(pattern), "");
95
+ if (!re.global) {
96
+ const m = s.match(re);
97
+ return m ? matchArray(rt, m) : null;
98
+ }
99
+ // As RegExpObject::match: each match from where the last ended, until
100
+ // one fails or is empty, so none is an empty Array; lastIndex is then
101
+ // where the last try ended, 0 for a failed one, one on if it was there.
102
+ const old = re.lastIndex;
103
+ const found = [];
104
+ let at = 0;
105
+ for (;;) {
106
+ re.lastIndex = at;
107
+ const m = re.exec(s);
108
+ const last = at;
109
+ at = m ? m.index + m[0].length : 0;
110
+ if (!m || at === last) {
111
+ break;
112
+ }
113
+ found.push(m[0]);
114
+ }
115
+ re.lastIndex = at === old ? at + 1 : at;
116
+ return rt.array(found);
117
+ },
118
+ "String.String::_split": (rt) => (s, delimiter, limit) => {
119
+ // The empty string splits to itself, whatever the delimiter, as avmplus has it.
120
+ if (s === "") {
121
+ return rt.array(limit === 0 ? [] : [""]);
122
+ }
123
+ if (delimiter?.$re instanceof RegExp) {
124
+ return rt.array(s.split(delimiter.$re, limit >= 0 ? limit : undefined));
125
+ }
126
+ const parts = s.split(rt.toString(delimiter));
127
+ return rt.array(limit >= 0 && limit < parts.length ? parts.slice(0, limit) : parts);
128
+ },
129
+ };
130
+ export const stringHooks = {
131
+ String: conversion((rt, args) => (args.length ? rt.toString(args[0]) : "")),
132
+ };
133
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../src/avm2/natives/string.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAIhC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhF,4EAA4E;AAC5E,SAAS,MAAM,CAAC,CAAS,EAAE,KAAa,EAAE,MAAc;IACtD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,mBAAmB,EAAE,KAAK,CAAC;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC,CAAC;IACF,CAAC,UAAU,GAAG,gBAAgB,CAAC,EAC7B,CAAC,EAAE,EAAE,EAAE,CACP,CAAC,GAAG,KAAc,EAAE,EAAE;QACpB,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACzE,CAAC;IACH,CAAC,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAChC,UAAwB,CAAC,GAAU,CAAC;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACH,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CACpC,UAAwB,CAAC,GAAU,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IACH,CAAC,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CACjC,UAAwB,CAAC,GAAU,WAAW,EAAE,CAAC,GAAU,CAAC;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IACH,CAAC,UAAU,GAAG,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CACrC,UAAwB,CAAC,GAAU,WAAW,EAAE,CAAC,GAAU,UAAU;QACnE,gFAAgF;QAChF,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IACH,CAAC,UAAU,GAAG,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CACvC,UAAwB,KAAY;QAClC,qEAAqE;QACrE,wBAAwB;QACxB,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC;gBACN,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACH,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAC/B,UAAwB,KAAK,GAAU,CAAC,EAAE,GAAG,GAAU,UAAU;QAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACH,CAAC,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CACnC,UAAwB,KAAK,GAAU,CAAC,EAAE,GAAG,GAAU,UAAU;QAC/D,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IACH,CAAC,UAAU,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAChC,UAAwB,KAAK,GAAU,CAAC,EAAE,MAAM,GAAU,UAAU;QAClE,OAAO,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;IACH,CAAC,UAAU,GAAG,eAAe,CAAC,EAAE,KAAK,CAAC;QACpC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,CAAC,UAAU,GAAG,eAAe,CAAC,EAAE,KAAK,CAAC;QACpC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,yBAAyB,EAAE,KAAK,CAAC,UAAwB,CAAS,EAAE,CAAC,GAAG,CAAC;QACvE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,6BAA6B,EAAE,KAAK,CAAC,UAAwB,CAAS,EAAE,CAAC,GAAG,UAAU;QACpF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;IACF,uBAAuB,EAAE,KAAK,CAAC,UAAwB,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,UAAU;QAChF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC;IACF,2BAA2B,EAAE,KAAK,CAAC,UAAwB,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,UAAU;QACpF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,wBAAwB,EAAE,KAAK,CAAC,UAAwB,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU;QACpF,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,yBAAyB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,OAAc,EAAE,WAAkB,EAAE,EAAE;QACnF,MAAM,CAAC,GAAG,OAAO,EAAE,GAAG,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,WAAW,KAAK,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;YAC9E,wEAAwE;YACxE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAU,EAAE,EAAE;gBACpC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,YAAY,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IACD,8DAA8D;IAC9D,wBAAwB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,OAAc,EAAE,EAAE,CAC9D,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5F,uBAAuB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,OAAc,EAAE,EAAE;QAC7D,MAAM,EAAE,GACN,OAAO,EAAE,GAAG,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtC,CAAC;QAED,sEAAsE;QACtE,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC;QACzB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,SAAS,CAAC;YACR,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACtB,MAAM;YACR,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QAED,EAAE,CAAC,SAAS,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,uBAAuB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,SAAgB,EAAE,KAAa,EAAE,EAAE;QAC9E,gFAAgF;QAChF,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACb,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,SAAS,EAAE,GAAG,YAAY,MAAM,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACtF,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC5E,CAAC"}