@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,205 @@
1
+ // E4X's names: property names coerced to XML names, and the Namespaces
2
+ // and QNames E4X makes and compares.
3
+ //
4
+ // Translated from avmplus' core/XMLObject.cpp, XMLListObject.cpp and E4X's
5
+ // parts of Toplevel.cpp and AvmCore.cpp, this file is subject to the
6
+ // Mozilla Public License, v. 2.0: http://mozilla.org/MPL/2.0/.
7
+ import { CONSTANT_Qname, CONSTANT_QnameA, Namespace, NS_Public, namespace, prefixedNamespace, prefixOf, publicNs, } from "../../names.js";
8
+ import { isXMLName } from "./chars.js";
9
+ import { ATTRIBUTE, ELEMENT, matches } from "./node.js";
10
+ import { ANY, e4x, NAMESPACE_WITH_PREFIX_AND_NO_URI } from "./values.js";
11
+ // Names.
12
+ /** As String::parseIndex: a name's index, or -1. */
13
+ export function parseIndex(name) {
14
+ const c = name.charCodeAt(0);
15
+ if (!(c >= 0x30 && c <= 0x39)) {
16
+ return -1;
17
+ }
18
+ const i = Number(name);
19
+ return i >>> 0 === i && i !== 0xffffffff && String(i) === name ? i : -1;
20
+ }
21
+ /** An index name: not any name, nor an attribute's. */
22
+ export const indexOf = (n) => n.attribute || n.local === null ? -1 : parseIndex(n.local);
23
+ /** Whether `ns` is `other`, prefix, URI and kind, as CoerceE4XMultiname compares them. */
24
+ const sameNamespace = (ns, other) => ns !== null && ns.uri === other.uri && ns.kind === other.kind && prefixOf(ns) === prefixOf(other);
25
+ /**
26
+ * As CoerceE4XMultiname: an unqualified name in the default XML namespace
27
+ * too, and a name of "*" or starting with "@" as any name or an
28
+ * attribute's.
29
+ */
30
+ export function coerce(rt, n) {
31
+ let namespaces = n.namespaces;
32
+ if (!n.qualified && namespaces !== null) {
33
+ const dxns = rt.defaultXmlNamespace;
34
+ if (!namespaces.some((ns) => sameNamespace(ns, dxns))) {
35
+ namespaces = [...namespaces, dxns];
36
+ }
37
+ }
38
+ let local = n.local;
39
+ let attribute = n.attribute;
40
+ if (local === "*") {
41
+ local = null;
42
+ }
43
+ else if (local !== null && local.charCodeAt(0) === 0x40 && !attribute) {
44
+ local = local === "@*" ? null : local.slice(1);
45
+ attribute = true;
46
+ }
47
+ if (namespaces === n.namespaces && local === n.local && attribute === n.attribute) {
48
+ return n;
49
+ }
50
+ return { local, namespaces, attribute, qualified: n.qualified };
51
+ }
52
+ /** A property's multiname as E4X names: a Qname is qualified, its namespace null for any. */
53
+ export function fromMultiname(mn) {
54
+ const qualified = mn.kind === CONSTANT_Qname || mn.kind === CONSTANT_QnameA;
55
+ const all = mn.namespaces;
56
+ let namespaces;
57
+ if (qualified) {
58
+ namespaces = all[0] ? [all[0]] : null;
59
+ }
60
+ else {
61
+ namespaces = all.some((ns) => ns === null) ? null : all;
62
+ }
63
+ return { local: mn.name, namespaces, attribute: mn.attribute, qualified };
64
+ }
65
+ /**
66
+ * As ToXMLName: a name for a method's argument, as XML's child() takes
67
+ * one. A QName is its local name, in a namespace of its URI; anything else
68
+ * is its string, in the public namespace: "@name" an attribute's, "*" any.
69
+ */
70
+ export function toXMLName(rt, p) {
71
+ if (p === null || p === undefined) {
72
+ throw rt.error("TypeError", 1010);
73
+ }
74
+ let s;
75
+ if (p instanceof Namespace) {
76
+ s = p.uri ?? "";
77
+ }
78
+ else if (p.$local !== undefined) {
79
+ // avmplus makes the namespace of the URI's string: "null" for any.
80
+ return {
81
+ local: p.$local,
82
+ namespaces: [namespace(NS_Public, p.$ns ? p.$ns.uri : "null")],
83
+ attribute: p.$attr === true,
84
+ qualified: false,
85
+ };
86
+ }
87
+ else {
88
+ s = rt.toString(p);
89
+ }
90
+ let local = s;
91
+ let attribute = false;
92
+ if (s.charCodeAt(0) === 0x40) {
93
+ local = s.slice(1);
94
+ attribute = true;
95
+ }
96
+ if (local === "*") {
97
+ local = null;
98
+ }
99
+ return { local, namespaces: [publicNs], attribute, qualified: false };
100
+ }
101
+ /** As ToAttributeName and then ToXMLName: an attribute's name for XML's attribute(). */
102
+ export function toAttributeName(rt, v) {
103
+ if (v === null || v === undefined || typeof v === "number" || typeof v === "boolean") {
104
+ throw rt.error("TypeError", 1010);
105
+ }
106
+ if (typeof v === "object" && !(v instanceof Namespace) && v.$local !== undefined) {
107
+ return { ...toXMLName(rt, v), attribute: true };
108
+ }
109
+ const s = v instanceof Namespace ? (v.uri ?? "") : rt.toString(v);
110
+ const uri = s === "*" ? "null" : rt.defaultXmlNamespace.uri;
111
+ return {
112
+ local: s === "*" ? null : s,
113
+ namespaces: [namespace(NS_Public, uri)],
114
+ attribute: true,
115
+ qualified: false,
116
+ };
117
+ }
118
+ /** Whether `n` names child `child`: only an element has a name to match. */
119
+ export const matchesChild = (n, child) => matches(n, child.kind === ELEMENT ? child : null);
120
+ // Namespaces and QNames.
121
+ /** As AvmCore::newNamespace(uri): a Namespace's own, a QName's URI's, or of a string. */
122
+ export function newNamespace(rt, uri) {
123
+ if (uri instanceof Namespace) {
124
+ return uri;
125
+ }
126
+ if (typeof uri === "object" && uri !== null && uri.$local !== undefined && uri.$ns) {
127
+ return namespace(NS_Public, uri.$ns.uri);
128
+ }
129
+ return namespace(NS_Public, rt.toString(uri));
130
+ }
131
+ /**
132
+ * As AvmCore::newNamespace(prefix, uri): a namespace with a prefix, none
133
+ * if it is not an XML name, or null for a prefix of the empty URI.
134
+ */
135
+ export function newPrefixedNamespace(rt, prefix, uri) {
136
+ const u = typeof uri === "object" && uri !== null && uri.$local !== undefined && uri.$ns
137
+ ? uri.$ns.uri
138
+ : rt.toString(uri);
139
+ if (u === "") {
140
+ return prefix === undefined || rt.toString(prefix) === "" ? publicNs : null;
141
+ }
142
+ if (prefix === undefined) {
143
+ return namespace(NS_Public, u);
144
+ }
145
+ const p = rt.toString(prefix);
146
+ if (p !== "" && !isXMLName(p)) {
147
+ return namespace(NS_Public, u);
148
+ }
149
+ return prefixedNamespace(p, u);
150
+ }
151
+ /** As NamespaceClass::construct: Namespace(), Namespace(uri) or Namespace(prefix, uri). */
152
+ export function constructNamespace(rt, args) {
153
+ if (args.length === 0) {
154
+ return publicNs;
155
+ }
156
+ if (args.length === 1) {
157
+ return newNamespace(rt, args[0]);
158
+ }
159
+ const p = rt.toString(args[0]);
160
+ if (p.length && !rt.toString(args[1]).length) {
161
+ throw rt.error("TypeError", NAMESPACE_WITH_PREFIX_AND_NO_URI, p);
162
+ }
163
+ return newPrefixedNamespace(rt, args[0], args[1]) ?? publicNs;
164
+ }
165
+ /** A QName object of a node's name, as XML's name() gives it. */
166
+ export function qnameOf(rt, node) {
167
+ const q = e4x(rt).qname.instance();
168
+ q.$ns = node.ns;
169
+ q.$local = node.name;
170
+ q.$attr = node.kind === ATTRIBUTE;
171
+ return q;
172
+ }
173
+ /**
174
+ * As QNameObject(name), with no namespace: a QName's name, else any name
175
+ * in any namespace for "*", or the name in the default XML namespace.
176
+ */
177
+ export function qnameName(rt, name) {
178
+ if (typeof name === "object" && name !== null && name.$local !== undefined) {
179
+ return {
180
+ local: name.$local,
181
+ namespaces: name.$ns ? [name.$ns] : null,
182
+ attribute: name.$attr === true,
183
+ qualified: name.$ns !== null,
184
+ };
185
+ }
186
+ const s = name === undefined ? "" : rt.toString(name);
187
+ if (s === "*") {
188
+ return ANY;
189
+ }
190
+ return { local: s, namespaces: [rt.defaultXmlNamespace], attribute: false, qualified: true };
191
+ }
192
+ /** As GetNamespace: the namespace of `ns`'s URI among `list`, else one of its URI. */
193
+ export function getNamespace(ns, list) {
194
+ for (const ns2 of list) {
195
+ if (ns2.uri === ns.uri) {
196
+ return ns2;
197
+ }
198
+ }
199
+ return namespace(NS_Public, ns.uri);
200
+ }
201
+ export const hasPrefix = (ns) => {
202
+ const p = prefixOf(ns);
203
+ return p !== undefined && p !== "";
204
+ };
205
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../../../src/avm2/natives/xml/names.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import type { AsObject, Value } from "../../descriptors.js";
2
+ import { type Namespace } from "../../names.js";
3
+ export declare const ATTRIBUTE = 2;
4
+ export declare const TEXT = 4;
5
+ /** Text, written back as CDATA. */
6
+ export declare const CDATA = 8;
7
+ export declare const COMMENT = 16;
8
+ export declare const PROCESSING_INSTRUCTION = 32;
9
+ export declare const ELEMENT = 64;
10
+ /**
11
+ * A name as E4X matches one against a node's, as avmplus' Multiname: its
12
+ * local name, null for any; its namespaces, null for any; whether it names
13
+ * attributes; and whether it is qualified, one namespace given, as ns::*,
14
+ * not a set of them, as a plain *.
15
+ */
16
+ export interface XName {
17
+ local: string | null;
18
+ namespaces: Namespace[] | null;
19
+ attribute: boolean;
20
+ qualified: boolean;
21
+ }
22
+ export declare class XMLNode {
23
+ readonly kind: number;
24
+ parent: XMLNode | null;
25
+ /** Its local name; null for a node without one (text, CDATA, a comment). */
26
+ name: string | null;
27
+ /** Its name's namespace, when it has a name: public for none. */
28
+ ns: Namespace;
29
+ /** The value of a node that is not an element. */
30
+ value: string;
31
+ /** An element's attributes, in order. */
32
+ readonly attributes: XMLNode[];
33
+ /** The namespaces an element declares. */
34
+ readonly namespaces: Namespace[];
35
+ /** An element's children. */
36
+ readonly children: XMLNode[];
37
+ /** A function called on changes to an element, as setNotification sets it. */
38
+ notification: Value;
39
+ /** The XML object that stands for this node, once made. */
40
+ object: AsObject | null;
41
+ constructor(kind: number, value?: string);
42
+ /** As setQName: a name in no namespace, or the public one, is kept as public. */
43
+ setName(name: string | null, ns: Namespace | null): void;
44
+ /**
45
+ * As getQName: its name, if it has one; qualified unless public, which
46
+ * E4X then looks up in the default namespace too.
47
+ */
48
+ xname(): XName | null;
49
+ /** As _append: `child` its last child. */
50
+ append(child: XMLNode): void;
51
+ /**
52
+ * As ElementE4XNode::_addInScopeNamespace: declare `ns` here, replacing
53
+ * one with its prefix but another URI; the name, and attributes', in a
54
+ * namespace with its prefix lose the prefix.
55
+ */
56
+ addInScopeNamespace(ns: Namespace | null): void;
57
+ /**
58
+ * As FindMatchingNamespace: the index of a declared namespace with `ns`'s
59
+ * URI and, if it has one, its prefix; -1 if none, or if one with its URI
60
+ * has the empty prefix.
61
+ */
62
+ findMatchingNamespace(ns: Namespace): number;
63
+ /**
64
+ * As BuildInScopeNamespaceList: the namespaces declared here and up the
65
+ * ancestors, the nearest first, each prefix (or, without one, URI) once.
66
+ */
67
+ inScopeNamespaces(): Namespace[];
68
+ hasSimpleContent(): boolean;
69
+ hasComplexContent(): boolean;
70
+ /** Its index among its parent's children, or -1 for none or an attribute. */
71
+ childIndex(): number;
72
+ nodeKind(): string;
73
+ /** As _deleteByIndex: child i removed, no longer its child. */
74
+ deleteByIndex(i: number): void;
75
+ /**
76
+ * As _deepCopy: a copy of this node and all below it, with no parent;
77
+ * comments and processing instructions the settings ignore left out.
78
+ */
79
+ deepCopy(ignoreComments: boolean, ignoreProcessingInstructions: boolean): XMLNode;
80
+ /**
81
+ * As _equals: the same kind, name, attributes, value and children. The
82
+ * namespaces declared are not compared: those that matter are in names.
83
+ */
84
+ equals(v: XMLNode): boolean;
85
+ }
86
+ /**
87
+ * As Multiname::matches: whether `name` names `node`. With a name, the
88
+ * node is an attribute if the name names attributes; an unqualified any
89
+ * name matches every node, one without a name too; otherwise the local
90
+ * names are the same, and the node's namespace is one of the name's, by
91
+ * URI and kind, if the name is not in any namespace.
92
+ */
93
+ export declare function matches(name: XName, node: XMLNode | null): boolean;
94
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../src/avm2/natives/xml/node.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,KAAK,SAAS,EAAoD,MAAM,gBAAgB,CAAC;AAGlG,eAAO,MAAM,SAAS,IAAO,CAAC;AAC9B,eAAO,MAAM,IAAI,IAAO,CAAC;AACzB,mCAAmC;AACnC,eAAO,MAAM,KAAK,IAAO,CAAC;AAC1B,eAAO,MAAM,OAAO,KAAO,CAAC;AAC5B,eAAO,MAAM,sBAAsB,KAAO,CAAC;AAC3C,eAAO,MAAM,OAAO,KAAO,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,OAAO;IAoBhB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAnBvB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAQ;IAC9B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC3B,iEAAiE;IACjE,EAAE,EAAE,SAAS,CAAY;IACzB,kDAAkD;IAClD,KAAK,SAAM;IACX,yCAAyC;IACzC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAM;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAM;IACtC,6BAA6B;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAM;IAClC,8EAA8E;IAC9E,YAAY,EAAE,KAAK,CAAQ;IAC3B,2DAA2D;IAC3D,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAE/B,YACW,IAAI,EAAE,MAAM,EACrB,KAAK,SAAK,EAGX;IAED,iFAAiF;IACjF,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAOvD;IAED;;;OAGG;IACH,KAAK,IAAI,KAAK,GAAG,IAAI,CAWpB;IAED,0CAA0C;IAC1C,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAG3B;IAED;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CA+B9C;IAED;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAmB3C;IAED;;;OAGG;IACH,iBAAiB,IAAI,SAAS,EAAE,CAe/B;IAED,gBAAgB,IAAI,OAAO,CAM1B;IAED,iBAAiB,IAAI,OAAO,CAM3B;IAED,6EAA6E;IAC7E,UAAU,IAAI,MAAM,CAMnB;IAED,QAAQ,IAAI,MAAM,CAcjB;IAED,+DAA+D;IAC/D,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAS7B;IAED;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,4BAA4B,EAAE,OAAO,GAAG,OAAO,CA6BhF;IAED;;;OAGG;IACH,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAmC1B;CACF;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAuBlE"}
@@ -0,0 +1,273 @@
1
+ // E4X's tree, as avmplus' E4XNode: elements with their attributes, the
2
+ // namespaces they declare and their children; text, CDATA, comments,
3
+ // processing instructions and attributes with their values. Each node has
4
+ // its parent, and one XML object stands for it (see values.ts), so that XML
5
+ // values compare by the node they are.
6
+ //
7
+ // Translated from avmplus' core/E4XNode.cpp, this file is subject to the
8
+ // Mozilla Public License, v. 2.0: http://mozilla.org/MPL/2.0/.
9
+ import { NS_Public, prefixedNamespace, prefixOf, publicNs } from "../../names.js";
10
+ // The node kinds, as E4XNode's NodeTypes: bits, so a set of them is a mask.
11
+ export const ATTRIBUTE = 0x02;
12
+ export const TEXT = 0x04;
13
+ /** Text, written back as CDATA. */
14
+ export const CDATA = 0x08;
15
+ export const COMMENT = 0x10;
16
+ export const PROCESSING_INSTRUCTION = 0x20;
17
+ export const ELEMENT = 0x40;
18
+ export class XMLNode {
19
+ kind;
20
+ parent = null;
21
+ /** Its local name; null for a node without one (text, CDATA, a comment). */
22
+ name = null;
23
+ /** Its name's namespace, when it has a name: public for none. */
24
+ ns = publicNs;
25
+ /** The value of a node that is not an element. */
26
+ value = "";
27
+ /** An element's attributes, in order. */
28
+ attributes = [];
29
+ /** The namespaces an element declares. */
30
+ namespaces = [];
31
+ /** An element's children. */
32
+ children = [];
33
+ /** A function called on changes to an element, as setNotification sets it. */
34
+ notification = null;
35
+ /** The XML object that stands for this node, once made. */
36
+ object = null;
37
+ constructor(kind, value = "") {
38
+ this.kind = kind;
39
+ this.value = value;
40
+ }
41
+ /** As setQName: a name in no namespace, or the public one, is kept as public. */
42
+ setName(name, ns) {
43
+ this.name = name;
44
+ if (!ns || (ns.kind === NS_Public && ns.uri === "")) {
45
+ this.ns = publicNs;
46
+ }
47
+ else {
48
+ this.ns = ns;
49
+ }
50
+ }
51
+ /**
52
+ * As getQName: its name, if it has one; qualified unless public, which
53
+ * E4X then looks up in the default namespace too.
54
+ */
55
+ xname() {
56
+ if (this.name === null) {
57
+ return null;
58
+ }
59
+ return {
60
+ local: this.name,
61
+ namespaces: [this.ns],
62
+ attribute: this.kind === ATTRIBUTE,
63
+ qualified: this.ns !== publicNs,
64
+ };
65
+ }
66
+ /** As _append: `child` its last child. */
67
+ append(child) {
68
+ child.parent = this;
69
+ this.children.push(child);
70
+ }
71
+ /**
72
+ * As ElementE4XNode::_addInScopeNamespace: declare `ns` here, replacing
73
+ * one with its prefix but another URI; the name, and attributes', in a
74
+ * namespace with its prefix lose the prefix.
75
+ */
76
+ addInScopeNamespace(ns) {
77
+ if (this.kind !== ELEMENT || !ns || prefixOf(ns) === undefined) {
78
+ return;
79
+ }
80
+ const prefix = prefixOf(ns);
81
+ if (prefix === "" && this.name !== null && this.ns.uri === "") {
82
+ return;
83
+ }
84
+ let index = -1;
85
+ for (let i = 0; i < this.namespaces.length; i++) {
86
+ if (prefixOf(this.namespaces[i]) === prefix) {
87
+ index = i;
88
+ }
89
+ }
90
+ if (index !== -1 && this.namespaces[index].uri !== ns.uri) {
91
+ this.namespaces.splice(index, 1);
92
+ }
93
+ this.namespaces.push(ns);
94
+ if (this.name !== null && prefixOf(this.ns) === prefix) {
95
+ this.setName(this.name, prefixedNamespace(undefined, this.ns.uri ?? ""));
96
+ }
97
+ for (const attribute of this.attributes) {
98
+ if (attribute.name !== null && prefixOf(attribute.ns) === prefix) {
99
+ attribute.setName(attribute.name, prefixedNamespace(undefined, attribute.ns.uri ?? ""));
100
+ }
101
+ }
102
+ }
103
+ /**
104
+ * As FindMatchingNamespace: the index of a declared namespace with `ns`'s
105
+ * URI and, if it has one, its prefix; -1 if none, or if one with its URI
106
+ * has the empty prefix.
107
+ */
108
+ findMatchingNamespace(ns) {
109
+ for (let i = 0; i < this.namespaces.length; i++) {
110
+ const ns2 = this.namespaces[i];
111
+ if (ns2.uri === ns.uri) {
112
+ if (prefixOf(ns) === undefined) {
113
+ return i;
114
+ }
115
+ if (prefixOf(ns2) === "") {
116
+ return -1;
117
+ }
118
+ if (prefixOf(ns2) === prefixOf(ns)) {
119
+ return i;
120
+ }
121
+ }
122
+ }
123
+ return -1;
124
+ }
125
+ /**
126
+ * As BuildInScopeNamespaceList: the namespaces declared here and up the
127
+ * ancestors, the nearest first, each prefix (or, without one, URI) once.
128
+ */
129
+ inScopeNamespaces() {
130
+ const list = [];
131
+ for (let y = this; y; y = y.parent) {
132
+ for (const ns1 of y.namespaces) {
133
+ const p1 = prefixOf(ns1);
134
+ const seen = list.some((ns2) => p1 === undefined ? ns1.uri === ns2.uri : p1 === prefixOf(ns2));
135
+ if (!seen) {
136
+ list.push(ns1);
137
+ }
138
+ }
139
+ }
140
+ return list;
141
+ }
142
+ hasSimpleContent() {
143
+ if (this.kind & (COMMENT | PROCESSING_INSTRUCTION)) {
144
+ return false;
145
+ }
146
+ return !this.children.some((c) => c.kind === ELEMENT);
147
+ }
148
+ hasComplexContent() {
149
+ if (this.kind & (TEXT | COMMENT | PROCESSING_INSTRUCTION | ATTRIBUTE | CDATA)) {
150
+ return false;
151
+ }
152
+ return this.children.some((c) => c.kind === ELEMENT);
153
+ }
154
+ /** Its index among its parent's children, or -1 for none or an attribute. */
155
+ childIndex() {
156
+ if (!this.parent || this.kind === ATTRIBUTE) {
157
+ return -1;
158
+ }
159
+ return this.parent.children.indexOf(this);
160
+ }
161
+ nodeKind() {
162
+ switch (this.kind) {
163
+ case ATTRIBUTE:
164
+ return "attribute";
165
+ case TEXT:
166
+ case CDATA:
167
+ return "text";
168
+ case COMMENT:
169
+ return "comment";
170
+ case PROCESSING_INSTRUCTION:
171
+ return "processing-instruction";
172
+ default:
173
+ return "element";
174
+ }
175
+ }
176
+ /** As _deleteByIndex: child i removed, no longer its child. */
177
+ deleteByIndex(i) {
178
+ if (i >= 0 && i < this.children.length) {
179
+ const child = this.children[i];
180
+ if (child) {
181
+ child.parent = null;
182
+ }
183
+ this.children.splice(i, 1);
184
+ }
185
+ }
186
+ /**
187
+ * As _deepCopy: a copy of this node and all below it, with no parent;
188
+ * comments and processing instructions the settings ignore left out.
189
+ */
190
+ deepCopy(ignoreComments, ignoreProcessingInstructions) {
191
+ const x = new XMLNode(this.kind, this.value);
192
+ if (this.name !== null) {
193
+ x.setName(this.name, this.ns);
194
+ }
195
+ if (this.kind === ELEMENT) {
196
+ x.namespaces.push(...this.namespaces);
197
+ for (const a of this.attributes) {
198
+ const b = a.deepCopy(ignoreComments, ignoreProcessingInstructions);
199
+ b.parent = x;
200
+ x.attributes.push(b);
201
+ }
202
+ for (const child of this.children) {
203
+ if ((child.kind === COMMENT && ignoreComments) ||
204
+ (child.kind === PROCESSING_INSTRUCTION && ignoreProcessingInstructions)) {
205
+ continue;
206
+ }
207
+ const c = child.deepCopy(ignoreComments, ignoreProcessingInstructions);
208
+ c.parent = x;
209
+ x.children.push(c);
210
+ }
211
+ }
212
+ return x;
213
+ }
214
+ /**
215
+ * As _equals: the same kind, name, attributes, value and children. The
216
+ * namespaces declared are not compared: those that matter are in names.
217
+ */
218
+ equals(v) {
219
+ if (this === v) {
220
+ return true;
221
+ }
222
+ if (this.kind !== v.kind) {
223
+ return false;
224
+ }
225
+ const name = this.xname();
226
+ if (name ? v.name === null || !matches(name, v) : v.name !== null) {
227
+ return false;
228
+ }
229
+ if (this.attributes.length !== v.attributes.length ||
230
+ this.children.length !== v.children.length ||
231
+ this.value !== v.value) {
232
+ return false;
233
+ }
234
+ for (const a1 of this.attributes) {
235
+ if (!v.attributes.some((a2) => a1.equals(a2))) {
236
+ return false;
237
+ }
238
+ }
239
+ for (let i = 0; i < this.children.length; i++) {
240
+ if (!this.children[i].equals(v.children[i])) {
241
+ return false;
242
+ }
243
+ }
244
+ return true;
245
+ }
246
+ }
247
+ /**
248
+ * As Multiname::matches: whether `name` names `node`. With a name, the
249
+ * node is an attribute if the name names attributes; an unqualified any
250
+ * name matches every node, one without a name too; otherwise the local
251
+ * names are the same, and the node's namespace is one of the name's, by
252
+ * URI and kind, if the name is not in any namespace.
253
+ */
254
+ export function matches(name, node) {
255
+ const named = node !== null && node.name !== null;
256
+ if (named && name.attribute !== (node.kind === ATTRIBUTE)) {
257
+ return false;
258
+ }
259
+ if (name.local === null && !name.qualified) {
260
+ return true;
261
+ }
262
+ if (!named) {
263
+ return false;
264
+ }
265
+ if (name.local !== null && name.local !== node.name) {
266
+ return false;
267
+ }
268
+ if (name.namespaces === null) {
269
+ return true;
270
+ }
271
+ return name.namespaces.some((ns) => ns.uri === node.ns.uri && ns.kind === node.ns.kind);
272
+ }
273
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../src/avm2/natives/xml/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Value } from "../../descriptors.js";
2
+ import type { Runtime } from "../../runtime.js";
3
+ /** E4X's == (11.5.1) where either side is XML or an XMLList, else undefined. */
4
+ export declare function equals(rt: Runtime, a: Value, b: Value): boolean | undefined;
5
+ /** E4X's + (11.4.1): XML and XMLLists into one XMLList. */
6
+ export declare function add(rt: Runtime, a: Value, b: Value): Value;
7
+ //# sourceMappingURL=operators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../../../../src/avm2/natives/xml/operators.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAY,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAoChD,gFAAgF;AAChF,wBAAgB,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,SAAS,CAiC3E;AAED,2DAA2D;AAC3D,wBAAgB,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAS1D"}