@swf2es/player-hosts 0.0.0-stage → 0.1.0

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 (405) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.third-party +759 -0
  3. package/README.md +43 -2
  4. package/dist/indexeddb.d.ts +27 -0
  5. package/dist/indexeddb.d.ts.map +1 -0
  6. package/dist/indexeddb.js +170 -0
  7. package/dist/indexeddb.js.map +1 -0
  8. package/dist/node-worker.d.ts +2 -0
  9. package/dist/node-worker.d.ts.map +1 -0
  10. package/dist/node-worker.js +12 -0
  11. package/dist/node-worker.js.map +1 -0
  12. package/dist/node.d.ts +8 -0
  13. package/dist/node.d.ts.map +1 -0
  14. package/dist/node.js +43 -0
  15. package/dist/node.js.map +1 -0
  16. package/dist/precompiled.d.ts +31 -0
  17. package/dist/precompiled.d.ts.map +1 -0
  18. package/dist/precompiled.js +125 -0
  19. package/dist/precompiled.js.map +1 -0
  20. package/dist/stage3d.d.ts +13 -0
  21. package/dist/stage3d.d.ts.map +1 -0
  22. package/dist/stage3d.js +61 -0
  23. package/dist/stage3d.js.map +1 -0
  24. package/dist/thread/codegen/codegen.js +308 -0
  25. package/dist/thread/codegen/index.js +405 -0
  26. package/dist/thread/format/abc-names.js +126 -0
  27. package/dist/thread/format/actions.js +222 -0
  28. package/dist/thread/format/air-descriptor.js +63 -0
  29. package/dist/thread/format/api-versions.js +22 -0
  30. package/dist/thread/format/bitmap.js +199 -0
  31. package/dist/thread/format/button.js +60 -0
  32. package/dist/thread/format/compression.js +200 -0
  33. package/dist/thread/format/display.js +305 -0
  34. package/dist/thread/format/filters.js +136 -0
  35. package/dist/thread/format/font.js +168 -0
  36. package/dist/thread/format/index.js +26 -0
  37. package/dist/thread/format/pbj.js +484 -0
  38. package/dist/thread/format/shape.js +411 -0
  39. package/dist/thread/format/sound.js +91 -0
  40. package/dist/thread/format/swf.js +163 -0
  41. package/dist/thread/format/tags.js +58 -0
  42. package/dist/thread/format/text.js +135 -0
  43. package/dist/thread/format/zip.js +91 -0
  44. package/dist/thread/native/audio/binary.js +3 -0
  45. package/dist/thread/native/audio/index.js +72 -0
  46. package/dist/thread/native/base64.js +9 -0
  47. package/dist/thread/native/compress/binary.js +3 -0
  48. package/dist/thread/native/compress/index.js +145 -0
  49. package/dist/thread/native/instance.js +49 -0
  50. package/dist/thread/native/mp3/binary.js +3 -0
  51. package/dist/thread/native/mp3/index.js +48 -0
  52. package/dist/thread/native/render/binary.js +3 -0
  53. package/dist/thread/native/render/bitmap-kernel.js +591 -0
  54. package/dist/thread/native/render/draw-kernel.js +204 -0
  55. package/dist/thread/native/render/dxt-encoder.js +94 -0
  56. package/dist/thread/native/render/index.js +10 -0
  57. package/dist/thread/native/render/lines.js +122 -0
  58. package/dist/thread/native/render/module.js +26 -0
  59. package/dist/thread/native/render/pixel-ops.js +235 -0
  60. package/dist/thread/native/render/tessellator.js +250 -0
  61. package/dist/thread/player/avm1/amf.js +507 -0
  62. package/dist/thread/player/avm1/avm1.js +1304 -0
  63. package/dist/thread/player/avm1/bindings.js +214 -0
  64. package/dist/thread/player/avm1/classes.js +75 -0
  65. package/dist/thread/player/avm1/clips.js +229 -0
  66. package/dist/thread/player/avm1/compile.js +140 -0
  67. package/dist/thread/player/avm1/external.js +79 -0
  68. package/dist/thread/player/avm1/focus.js +278 -0
  69. package/dist/thread/player/avm1/globals/BitmapData.js +542 -0
  70. package/dist/thread/player/avm1/globals/Button.js +31 -0
  71. package/dist/thread/player/avm1/globals/Color.js +115 -0
  72. package/dist/thread/player/avm1/globals/ExternalInterface.js +310 -0
  73. package/dist/thread/player/avm1/globals/FileReference.js +217 -0
  74. package/dist/thread/player/avm1/globals/Key.js +60 -0
  75. package/dist/thread/player/avm1/globals/LoadVars.js +208 -0
  76. package/dist/thread/player/avm1/globals/LocalConnection.js +92 -0
  77. package/dist/thread/player/avm1/globals/MovieClip.js +1070 -0
  78. package/dist/thread/player/avm1/globals/MovieClipLoader.js +90 -0
  79. package/dist/thread/player/avm1/globals/NetConnection.js +261 -0
  80. package/dist/thread/player/avm1/globals/PrintJob.js +37 -0
  81. package/dist/thread/player/avm1/globals/Selection.js +62 -0
  82. package/dist/thread/player/avm1/globals/SharedObject.js +245 -0
  83. package/dist/thread/player/avm1/globals/Sound.js +238 -0
  84. package/dist/thread/player/avm1/globals/Stage.js +12 -0
  85. package/dist/thread/player/avm1/globals/StyleSheet.js +205 -0
  86. package/dist/thread/player/avm1/globals/TextField.js +396 -0
  87. package/dist/thread/player/avm1/globals/TextFormat.js +194 -0
  88. package/dist/thread/player/avm1/globals/TextSnapshot.js +88 -0
  89. package/dist/thread/player/avm1/globals/XML.js +396 -0
  90. package/dist/thread/player/avm1/globals/XMLNode.js +413 -0
  91. package/dist/thread/player/avm1/globals/XMLSocket.js +205 -0
  92. package/dist/thread/player/avm1/globals/drawing.js +202 -0
  93. package/dist/thread/player/avm1/globals/filters.js +635 -0
  94. package/dist/thread/player/avm1/globals/geom.js +600 -0
  95. package/dist/thread/player/avm1/input.js +483 -0
  96. package/dist/thread/player/avm1/keyboard.js +113 -0
  97. package/dist/thread/player/avm1/loads.js +352 -0
  98. package/dist/thread/player/avm1/net.js +219 -0
  99. package/dist/thread/player/avm1/paths.js +104 -0
  100. package/dist/thread/player/avm1/pointer.js +512 -0
  101. package/dist/thread/player/avm1/queue.js +303 -0
  102. package/dist/thread/player/avm1/sound.js +106 -0
  103. package/dist/thread/player/avm1/swf.js +141 -0
  104. package/dist/thread/player/avm1/timers.js +113 -0
  105. package/dist/thread/player/bitmap/bitmap.js +627 -0
  106. package/dist/thread/player/bitmap/draw.js +68 -0
  107. package/dist/thread/player/bitmap/dxt.js +11 -0
  108. package/dist/thread/player/bitmap/filters.js +656 -0
  109. package/dist/thread/player/bitmap/images.js +240 -0
  110. package/dist/thread/player/bitmap/kernel.js +65 -0
  111. package/dist/thread/player/bitmap/ops.js +1239 -0
  112. package/dist/thread/player/bitmap/pixel-bender.js +911 -0
  113. package/dist/thread/player/bitmap/png.js +139 -0
  114. package/dist/thread/player/bitmap/turbulence.js +89 -0
  115. package/dist/thread/player/clock.js +182 -0
  116. package/dist/thread/player/display/bitmapobject.js +25 -0
  117. package/dist/thread/player/display/bounds.js +520 -0
  118. package/dist/thread/player/display/buttonobject.js +305 -0
  119. package/dist/thread/player/display/color.js +40 -0
  120. package/dist/thread/player/display/container.js +150 -0
  121. package/dist/thread/player/display/display.js +14 -0
  122. package/dist/thread/player/display/displayobject.js +664 -0
  123. package/dist/thread/player/display/drawing.js +613 -0
  124. package/dist/thread/player/display/filters.js +285 -0
  125. package/dist/thread/player/display/geometry.js +189 -0
  126. package/dist/thread/player/display/gradients.js +117 -0
  127. package/dist/thread/player/display/graphicsdata.js +592 -0
  128. package/dist/thread/player/display/instantiate.js +71 -0
  129. package/dist/thread/player/display/matrix3d.js +373 -0
  130. package/dist/thread/player/display/morph.js +226 -0
  131. package/dist/thread/player/display/movieclip.js +680 -0
  132. package/dist/thread/player/display/perspective.js +193 -0
  133. package/dist/thread/player/display/scale9.js +236 -0
  134. package/dist/thread/player/display/shapeobject.js +131 -0
  135. package/dist/thread/player/display/shapes.js +407 -0
  136. package/dist/thread/player/display/textobjects.js +222 -0
  137. package/dist/thread/player/display/timeline.js +471 -0
  138. package/dist/thread/player/display/value-lists.js +40 -0
  139. package/dist/thread/player/display/videoobject.js +6 -0
  140. package/dist/thread/player/display/walk.js +127 -0
  141. package/dist/thread/player/files.js +334 -0
  142. package/dist/thread/player/hosts.js +207 -0
  143. package/dist/thread/player/input/avm1.js +82 -0
  144. package/dist/thread/player/input/context-menu.js +63 -0
  145. package/dist/thread/player/input/keyboard.js +458 -0
  146. package/dist/thread/player/input/pointer.js +863 -0
  147. package/dist/thread/player/input/text-editor.js +319 -0
  148. package/dist/thread/player/input/touch.js +209 -0
  149. package/dist/thread/player/localconnection.js +90 -0
  150. package/dist/thread/player/media/audio.js +376 -0
  151. package/dist/thread/player/media/dynamic-sound.js +90 -0
  152. package/dist/thread/player/media/extract.js +135 -0
  153. package/dist/thread/player/media/mp3.js +152 -0
  154. package/dist/thread/player/media/sounds.js +507 -0
  155. package/dist/thread/player/media/streaming-audio.js +133 -0
  156. package/dist/thread/player/player.js +616 -0
  157. package/dist/thread/player/playerglobal/air/net/WebSocket.js +250 -0
  158. package/dist/thread/player/playerglobal/air-library.js +8 -0
  159. package/dist/thread/player/playerglobal/flash/accessibility/Accessibility.js +21 -0
  160. package/dist/thread/player/playerglobal/flash/crypto/generateRandomBytes.js +32 -0
  161. package/dist/thread/player/playerglobal/flash/data/EncryptedLocalStore.js +61 -0
  162. package/dist/thread/player/playerglobal/flash/desktop/Clipboard.js +173 -0
  163. package/dist/thread/player/playerglobal/flash/desktop/NativeApplication.js +179 -0
  164. package/dist/thread/player/playerglobal/flash/display/AVM1Movie.js +19 -0
  165. package/dist/thread/player/playerglobal/flash/display/Bitmap.js +58 -0
  166. package/dist/thread/player/playerglobal/flash/display/BitmapData.js +633 -0
  167. package/dist/thread/player/playerglobal/flash/display/DisplayObject.js +614 -0
  168. package/dist/thread/player/playerglobal/flash/display/DisplayObjectContainer.js +224 -0
  169. package/dist/thread/player/playerglobal/flash/display/Graphics.js +345 -0
  170. package/dist/thread/player/playerglobal/flash/display/InteractiveObject.js +87 -0
  171. package/dist/thread/player/playerglobal/flash/display/Loader.js +79 -0
  172. package/dist/thread/player/playerglobal/flash/display/LoaderInfo.js +128 -0
  173. package/dist/thread/player/playerglobal/flash/display/MovieClip.js +194 -0
  174. package/dist/thread/player/playerglobal/flash/display/NativeWindow.js +245 -0
  175. package/dist/thread/player/playerglobal/flash/display/Shader.js +26 -0
  176. package/dist/thread/player/playerglobal/flash/display/ShaderData.js +85 -0
  177. package/dist/thread/player/playerglobal/flash/display/ShaderInput.js +64 -0
  178. package/dist/thread/player/playerglobal/flash/display/ShaderJob.js +181 -0
  179. package/dist/thread/player/playerglobal/flash/display/ShaderParameter.js +23 -0
  180. package/dist/thread/player/playerglobal/flash/display/Shape.js +13 -0
  181. package/dist/thread/player/playerglobal/flash/display/SimpleButton.js +103 -0
  182. package/dist/thread/player/playerglobal/flash/display/Sprite.js +84 -0
  183. package/dist/thread/player/playerglobal/flash/display/Stage.js +231 -0
  184. package/dist/thread/player/playerglobal/flash/display/Stage3D.js +54 -0
  185. package/dist/thread/player/playerglobal/flash/display/shaders.js +228 -0
  186. package/dist/thread/player/playerglobal/flash/events/Event.js +58 -0
  187. package/dist/thread/player/playerglobal/flash/events/EventDispatcher.js +103 -0
  188. package/dist/thread/player/playerglobal/flash/events/GestureEvent.js +34 -0
  189. package/dist/thread/player/playerglobal/flash/events/HTTPStatusEvent.js +8 -0
  190. package/dist/thread/player/playerglobal/flash/events/KeyboardEvent.js +51 -0
  191. package/dist/thread/player/playerglobal/flash/events/MouseEvent.js +59 -0
  192. package/dist/thread/player/playerglobal/flash/events/PressAndTapGestureEvent.js +30 -0
  193. package/dist/thread/player/playerglobal/flash/events/TimerEvent.js +16 -0
  194. package/dist/thread/player/playerglobal/flash/events/TouchEvent.js +45 -0
  195. package/dist/thread/player/playerglobal/flash/external/ExternalInterface.js +73 -0
  196. package/dist/thread/player/playerglobal/flash/filesystem/File.js +340 -0
  197. package/dist/thread/player/playerglobal/flash/filesystem/FileStream.js +453 -0
  198. package/dist/thread/player/playerglobal/flash/filesystem/paths.js +156 -0
  199. package/dist/thread/player/playerglobal/flash/filesystem/writes.js +143 -0
  200. package/dist/thread/player/playerglobal/flash/filters/BevelFilter.js +4 -0
  201. package/dist/thread/player/playerglobal/flash/filters/BitmapFilter.js +205 -0
  202. package/dist/thread/player/playerglobal/flash/filters/BlurFilter.js +4 -0
  203. package/dist/thread/player/playerglobal/flash/filters/ColorMatrixFilter.js +11 -0
  204. package/dist/thread/player/playerglobal/flash/filters/ConvolutionFilter.js +26 -0
  205. package/dist/thread/player/playerglobal/flash/filters/DisplacementMapFilter.js +51 -0
  206. package/dist/thread/player/playerglobal/flash/filters/DropShadowFilter.js +4 -0
  207. package/dist/thread/player/playerglobal/flash/filters/GlowFilter.js +4 -0
  208. package/dist/thread/player/playerglobal/flash/filters/GradientBevelFilter.js +4 -0
  209. package/dist/thread/player/playerglobal/flash/filters/GradientGlowFilter.js +4 -0
  210. package/dist/thread/player/playerglobal/flash/filters/ShaderFilter.js +53 -0
  211. package/dist/thread/player/playerglobal/flash/geom/Matrix3D.js +361 -0
  212. package/dist/thread/player/playerglobal/flash/geom/PerspectiveProjection.js +122 -0
  213. package/dist/thread/player/playerglobal/flash/geom/Transform.js +245 -0
  214. package/dist/thread/player/playerglobal/flash/geom/Utils3D.js +85 -0
  215. package/dist/thread/player/playerglobal/flash/globalization/Collator.js +149 -0
  216. package/dist/thread/player/playerglobal/flash/globalization/CurrencyFormatter.js +272 -0
  217. package/dist/thread/player/playerglobal/flash/globalization/CurrencyParseResult.js +21 -0
  218. package/dist/thread/player/playerglobal/flash/globalization/DateTimeFormatter.js +463 -0
  219. package/dist/thread/player/playerglobal/flash/globalization/LocaleID.js +144 -0
  220. package/dist/thread/player/playerglobal/flash/globalization/NumberFormatter.js +444 -0
  221. package/dist/thread/player/playerglobal/flash/globalization/NumberParseResult.js +22 -0
  222. package/dist/thread/player/playerglobal/flash/globalization/StringTools.js +59 -0
  223. package/dist/thread/player/playerglobal/flash/globalization/locale.js +190 -0
  224. package/dist/thread/player/playerglobal/flash/media/Camera.js +89 -0
  225. package/dist/thread/player/playerglobal/flash/media/Microphone.js +126 -0
  226. package/dist/thread/player/playerglobal/flash/media/Sound.js +543 -0
  227. package/dist/thread/player/playerglobal/flash/media/SoundMixer.js +74 -0
  228. package/dist/thread/player/playerglobal/flash/media/SoundTransform.js +40 -0
  229. package/dist/thread/player/playerglobal/flash/media/Video.js +43 -0
  230. package/dist/thread/player/playerglobal/flash/net/FileFilter.js +27 -0
  231. package/dist/thread/player/playerglobal/flash/net/FileReference.js +197 -0
  232. package/dist/thread/player/playerglobal/flash/net/LocalConnection.js +167 -0
  233. package/dist/thread/player/playerglobal/flash/net/NetConnection.js +155 -0
  234. package/dist/thread/player/playerglobal/flash/net/SharedObject.js +299 -0
  235. package/dist/thread/player/playerglobal/flash/net/Socket.js +282 -0
  236. package/dist/thread/player/playerglobal/flash/net/URLRequest.js +93 -0
  237. package/dist/thread/player/playerglobal/flash/net/URLStream.js +146 -0
  238. package/dist/thread/player/playerglobal/flash/net/XMLSocket.js +14 -0
  239. package/dist/thread/player/playerglobal/flash/net/local-modern.js +142 -0
  240. package/dist/thread/player/playerglobal/flash/net/local-values.js +217 -0
  241. package/dist/thread/player/playerglobal/flash/net/navigateToURL.js +29 -0
  242. package/dist/thread/player/playerglobal/flash/profiler/Telemetry.js +25 -0
  243. package/dist/thread/player/playerglobal/flash/sensors/Accelerometer.js +12 -0
  244. package/dist/thread/player/playerglobal/flash/system/ApplicationDomain.js +69 -0
  245. package/dist/thread/player/playerglobal/flash/system/Capabilities.js +163 -0
  246. package/dist/thread/player/playerglobal/flash/system/FSCommandHost.js +17 -0
  247. package/dist/thread/player/playerglobal/flash/system/Security.js +46 -0
  248. package/dist/thread/player/playerglobal/flash/system/SecurityDomain.js +21 -0
  249. package/dist/thread/player/playerglobal/flash/system/System.js +73 -0
  250. package/dist/thread/player/playerglobal/flash/system/Worker.js +112 -0
  251. package/dist/thread/player/playerglobal/flash/text/Font.js +95 -0
  252. package/dist/thread/player/playerglobal/flash/text/StaticText.js +16 -0
  253. package/dist/thread/player/playerglobal/flash/text/StyleSheet.js +65 -0
  254. package/dist/thread/player/playerglobal/flash/text/TextField.js +707 -0
  255. package/dist/thread/player/playerglobal/flash/text/TextRenderer.js +77 -0
  256. package/dist/thread/player/playerglobal/flash/text/engine/FontDescription.js +141 -0
  257. package/dist/thread/player/playerglobal/flash/text/engine/TabStop.js +46 -0
  258. package/dist/thread/player/playerglobal/flash/trace/Trace.js +17 -0
  259. package/dist/thread/player/playerglobal/flash/ui/ContextMenu.js +17 -0
  260. package/dist/thread/player/playerglobal/flash/ui/GameInput.js +19 -0
  261. package/dist/thread/player/playerglobal/flash/ui/Keyboard.js +27 -0
  262. package/dist/thread/player/playerglobal/flash/ui/Mouse.js +127 -0
  263. package/dist/thread/player/playerglobal/flash/ui/Multitouch.js +46 -0
  264. package/dist/thread/player/playerglobal/flash/utils/ByteArray.js +155 -0
  265. package/dist/thread/player/playerglobal/flash/utils/Timer.js +25 -0
  266. package/dist/thread/player/playerglobal/flash/xml/XMLDocument.js +74 -0
  267. package/dist/thread/player/playerglobal/index.js +224 -0
  268. package/dist/thread/player/playerglobal/libraries.js +10 -0
  269. package/dist/thread/player/playerglobal/playerglobal-library.js +22 -0
  270. package/dist/thread/player/playerglobal/toplevel.js +122 -0
  271. package/dist/thread/player/scripting/clipboard.js +146 -0
  272. package/dist/thread/player/scripting/code.js +900 -0
  273. package/dist/thread/player/scripting/evaluate.js +144 -0
  274. package/dist/thread/player/scripting/events.js +172 -0
  275. package/dist/thread/player/scripting/handover.js +182 -0
  276. package/dist/thread/player/scripting/lazy.js +38 -0
  277. package/dist/thread/player/scripting/lifecycle.js +272 -0
  278. package/dist/thread/player/scripting/loads.js +860 -0
  279. package/dist/thread/player/scripting/sha256.js +95 -0
  280. package/dist/thread/player/scripting/symbols.js +348 -0
  281. package/dist/thread/player/scripting/timers.js +434 -0
  282. package/dist/thread/player/scripting/workers.js +923 -0
  283. package/dist/thread/player/scripting.js +1018 -0
  284. package/dist/thread/player/stage.js +4 -0
  285. package/dist/thread/player/text/csm.js +113 -0
  286. package/dist/thread/player/text/css.js +167 -0
  287. package/dist/thread/player/text/fonts.js +97 -0
  288. package/dist/thread/player/text/layout.js +393 -0
  289. package/dist/thread/player/text/static.js +109 -0
  290. package/dist/thread/player/text/text.js +431 -0
  291. package/dist/thread/player/workers/thread.js +159 -0
  292. package/dist/thread/player/workers/wire.js +198 -0
  293. package/dist/thread/player-hosts/web-worker.js +19 -0
  294. package/dist/thread/runtime/avm1/activation.js +89 -0
  295. package/dist/thread/runtime/avm1/case.js +249 -0
  296. package/dist/thread/runtime/avm1/clips.js +334 -0
  297. package/dist/thread/runtime/avm1/control.js +280 -0
  298. package/dist/thread/runtime/avm1/errors.js +50 -0
  299. package/dist/thread/runtime/avm1/functions.js +249 -0
  300. package/dist/thread/runtime/avm1/globals/array.js +549 -0
  301. package/dist/thread/runtime/avm1/globals/broadcaster.js +131 -0
  302. package/dist/thread/runtime/avm1/globals/date.js +436 -0
  303. package/dist/thread/runtime/avm1/globals/global.js +344 -0
  304. package/dist/thread/runtime/avm1/globals/math.js +139 -0
  305. package/dist/thread/runtime/avm1/globals/number.js +93 -0
  306. package/dist/thread/runtime/avm1/globals/string.js +201 -0
  307. package/dist/thread/runtime/avm1/globals/timers.js +129 -0
  308. package/dist/thread/runtime/avm1/host.js +5 -0
  309. package/dist/thread/runtime/avm1/index.js +14 -0
  310. package/dist/thread/runtime/avm1/inheritance.js +132 -0
  311. package/dist/thread/runtime/avm1/numbers.js +298 -0
  312. package/dist/thread/runtime/avm1/objects.js +896 -0
  313. package/dist/thread/runtime/avm1/operators.js +170 -0
  314. package/dist/thread/runtime/avm1/realm.js +529 -0
  315. package/dist/thread/runtime/avm1/runtime.js +882 -0
  316. package/dist/thread/runtime/avm1/scope.js +385 -0
  317. package/dist/thread/runtime/avm1/urls.js +180 -0
  318. package/dist/thread/runtime/avm1/values.js +97 -0
  319. package/dist/thread/runtime/avm2/amf-classes.js +66 -0
  320. package/dist/thread/runtime/avm2/amf.js +801 -0
  321. package/dist/thread/runtime/avm2/array-conversion.js +100 -0
  322. package/dist/thread/runtime/avm2/builtin-library.js +21 -0
  323. package/dist/thread/runtime/avm2/cache-fill.js +86 -0
  324. package/dist/thread/runtime/avm2/classes.js +211 -0
  325. package/dist/thread/runtime/avm2/definitions.js +69 -0
  326. package/dist/thread/runtime/avm2/descriptors.js +5 -0
  327. package/dist/thread/runtime/avm2/dictionary-keys.js +295 -0
  328. package/dist/thread/runtime/avm2/domain-memory.js +75 -0
  329. package/dist/thread/runtime/avm2/domain.js +280 -0
  330. package/dist/thread/runtime/avm2/dynamic-properties.js +182 -0
  331. package/dist/thread/runtime/avm2/enumeration.js +393 -0
  332. package/dist/thread/runtime/avm2/errors.js +45 -0
  333. package/dist/thread/runtime/avm2/float-library.js +66 -0
  334. package/dist/thread/runtime/avm2/float.js +26 -0
  335. package/dist/thread/runtime/avm2/hooks.js +19 -0
  336. package/dist/thread/runtime/avm2/index.js +38 -0
  337. package/dist/thread/runtime/avm2/messages.js +177 -0
  338. package/dist/thread/runtime/avm2/method-factories.js +95 -0
  339. package/dist/thread/runtime/avm2/modules.js +105 -0
  340. package/dist/thread/runtime/avm2/names.js +248 -0
  341. package/dist/thread/runtime/avm2/natives/aliases.js +47 -0
  342. package/dist/thread/runtime/avm2/natives/array.js +390 -0
  343. package/dist/thread/runtime/avm2/natives/bytearray.js +1227 -0
  344. package/dist/thread/runtime/avm2/natives/case.js +88 -0
  345. package/dist/thread/runtime/avm2/natives/concurrent.js +199 -0
  346. package/dist/thread/runtime/avm2/natives/date.js +581 -0
  347. package/dist/thread/runtime/avm2/natives/define.js +130 -0
  348. package/dist/thread/runtime/avm2/natives/describe.js +351 -0
  349. package/dist/thread/runtime/avm2/natives/dictionary.js +12 -0
  350. package/dist/thread/runtime/avm2/natives/float-vector.js +81 -0
  351. package/dist/thread/runtime/avm2/natives/float.js +96 -0
  352. package/dist/thread/runtime/avm2/natives/index.js +64 -0
  353. package/dist/thread/runtime/avm2/natives/json.js +514 -0
  354. package/dist/thread/runtime/avm2/natives/number.js +162 -0
  355. package/dist/thread/runtime/avm2/natives/object.js +237 -0
  356. package/dist/thread/runtime/avm2/natives/proxy.js +75 -0
  357. package/dist/thread/runtime/avm2/natives/regexp.js +485 -0
  358. package/dist/thread/runtime/avm2/natives/shell-workers.js +404 -0
  359. package/dist/thread/runtime/avm2/natives/shell.js +557 -0
  360. package/dist/thread/runtime/avm2/natives/sort.js +377 -0
  361. package/dist/thread/runtime/avm2/natives/string.js +132 -0
  362. package/dist/thread/runtime/avm2/natives/sync.js +821 -0
  363. package/dist/thread/runtime/avm2/natives/toplevel.js +139 -0
  364. package/dist/thread/runtime/avm2/natives/vector-elements.js +46 -0
  365. package/dist/thread/runtime/avm2/natives/vector.js +406 -0
  366. package/dist/thread/runtime/avm2/natives/xml/access.js +633 -0
  367. package/dist/thread/runtime/avm2/natives/xml/build.js +291 -0
  368. package/dist/thread/runtime/avm2/natives/xml/chars.js +112 -0
  369. package/dist/thread/runtime/avm2/natives/xml/escape.js +38 -0
  370. package/dist/thread/runtime/avm2/natives/xml/names.js +204 -0
  371. package/dist/thread/runtime/avm2/natives/xml/node.js +272 -0
  372. package/dist/thread/runtime/avm2/natives/xml/operators.js +69 -0
  373. package/dist/thread/runtime/avm2/natives/xml/parser.js +356 -0
  374. package/dist/thread/runtime/avm2/natives/xml/strings.js +191 -0
  375. package/dist/thread/runtime/avm2/natives/xml/values.js +122 -0
  376. package/dist/thread/runtime/avm2/natives/xml/xml.js +645 -0
  377. package/dist/thread/runtime/avm2/number-strings.js +110 -0
  378. package/dist/thread/runtime/avm2/numbers.js +558 -0
  379. package/dist/thread/runtime/avm2/options.js +16 -0
  380. package/dist/thread/runtime/avm2/player-messages.js +550 -0
  381. package/dist/thread/runtime/avm2/property-cache.js +135 -0
  382. package/dist/thread/runtime/avm2/runtime.js +2644 -0
  383. package/dist/thread/runtime/avm2/traits.js +509 -0
  384. package/dist/thread/runtime/index.js +7 -0
  385. package/dist/web-worker.d.ts +2 -0
  386. package/dist/web-worker.d.ts.map +1 -0
  387. package/dist/web-worker.js +20 -0
  388. package/dist/web-worker.js.map +1 -0
  389. package/dist/websocket.d.ts +4 -0
  390. package/dist/websocket.d.ts.map +1 -0
  391. package/dist/websocket.js +27 -0
  392. package/dist/websocket.js.map +1 -0
  393. package/dist/workers.d.ts +35 -0
  394. package/dist/workers.d.ts.map +1 -0
  395. package/dist/workers.js +171 -0
  396. package/dist/workers.js.map +1 -0
  397. package/package.json +62 -3
  398. package/src/indexeddb.ts +227 -0
  399. package/src/node-worker.ts +13 -0
  400. package/src/node.ts +49 -0
  401. package/src/precompiled.ts +166 -0
  402. package/src/stage3d.ts +76 -0
  403. package/src/web-worker.ts +24 -0
  404. package/src/websocket.ts +32 -0
  405. package/src/workers.ts +255 -0
@@ -0,0 +1,90 @@
1
+ // MovieClipLoader, AS2's loadMovie with events, as Ruffle's
2
+ // (https://github.com/ruffle-rs/ruffle) core/src/avm1/globals/movie_clip_loader.rs
3
+ // has it: MIT OR Apache-2.0, Copyright (c) 2018-2022 Ruffle LLC and Ruffle
4
+ // contributors. A loader is a broadcaster, itself its first listener; the
5
+ // player tells its listeners of each load (loads.ts, "loadClip"):
6
+ // onLoadStart, onLoadProgress, onLoadComplete or onLoadError as the load
7
+ // arrives, and onLoadInit once the loaded movie's first frame's actions
8
+ // have run.
9
+ import { avm1 } from "../../../runtime/index.js";
10
+ const FIXED = avm1.DONT_ENUM | avm1.DONT_DELETE;
11
+ /** A level's number as Rust's `as i32` casts one: cut toward zero, saturated, NaN 0. */
12
+ function levelNumber(n) {
13
+ return Number.isNaN(n) ? 0 : Math.trunc(Math.max(-0x80000000, Math.min(0x7fffffff, n)));
14
+ }
15
+ /** `_global.MovieClipLoader`. */
16
+ export function movieClipLoaderClass(host, version) {
17
+ const realm = host.realm;
18
+ const proto = new avm1.Avm1Object(realm.objectProto);
19
+ avm1.initializeBroadcaster(proto, realm, version);
20
+ const constr = realm.classOf(proto, (self, _, v) => {
21
+ self.define("_listeners", realm.newArray([self], v), avm1.DONT_ENUM);
22
+ return self;
23
+ }, () => undefined);
24
+ /**
25
+ * The display object a target names: a path from the code's target, a
26
+ * level by number (made for a load), a display object's AVM1 object;
27
+ * null for anything else.
28
+ */
29
+ const targetOf = (value, v, load) => {
30
+ if (typeof value === "number") {
31
+ const n = levelNumber(value);
32
+ return load ? host.levelToLoad(n) : host.level(n);
33
+ }
34
+ if (typeof value === "string" || value instanceof avm1.Avm1Object) {
35
+ return host.resolve(value, v);
36
+ }
37
+ return null;
38
+ };
39
+ // The URL must be a string; true where the target names a clip.
40
+ proto.define("loadClip", realm.method((self, args, v) => {
41
+ if (args.length < 2) {
42
+ return undefined;
43
+ }
44
+ const url = args[0];
45
+ if (typeof url !== "string") {
46
+ return false;
47
+ }
48
+ const target = targetOf(args[1], v, true);
49
+ if (target === null) {
50
+ return false;
51
+ }
52
+ return host.loadClip(self, target, url);
53
+ }), FIXED);
54
+ // Each of the target's SWF's size, as it came; an object without either where the target
55
+ // names nothing, undefined for no target or an object that is no display object's.
56
+ proto.define("getProgress", realm.method((_, args, v) => {
57
+ if (args.length === 0) {
58
+ return undefined;
59
+ }
60
+ const value = args[0];
61
+ if (value instanceof avm1.Avm1Object && value.display === null) {
62
+ return undefined;
63
+ }
64
+ if (typeof value !== "string" &&
65
+ typeof value !== "number" &&
66
+ !(value instanceof avm1.Avm1Object)) {
67
+ return undefined;
68
+ }
69
+ const result = new avm1.Avm1Object(null);
70
+ const target = targetOf(value, v, false);
71
+ if (target !== null) {
72
+ const size = host.sizeOf(target);
73
+ result.define("bytesLoaded", size, 0);
74
+ result.define("bytesTotal", size, 0);
75
+ }
76
+ return result;
77
+ }), FIXED);
78
+ proto.define("unloadClip", realm.method((_, args, v) => {
79
+ if (args.length === 0) {
80
+ return undefined;
81
+ }
82
+ const target = targetOf(args[0], v, false);
83
+ if (target === null) {
84
+ return false;
85
+ }
86
+ host.unloadMovie(target);
87
+ return true;
88
+ }), FIXED);
89
+ return constr;
90
+ }
@@ -0,0 +1,261 @@
1
+ // NetConnection's AS2 face, as Ruffle's (https://github.com/ruffle-rs/ruffle)
2
+ // core/src/avm1/globals/netconnection.rs and core/src/net_connection.rs
3
+ // have it: MIT OR Apache-2.0, Copyright (c) 2018-2022 Ruffle LLC and Ruffle
4
+ // contributors. connect(null) is the local connection, connected at once;
5
+ // an http or https URL is Flash Remoting: each call is queued, and the
6
+ // frame's calls go together as one AMF0 packet POSTed to the URL, the
7
+ // connection's headers with them, each call's answer, /n/onResult or
8
+ // /n/onStatus, going to its responder. Any other URL connects nothing.
9
+ import { avm1 } from "../../../runtime/index.js";
10
+ import { Reader, Writer } from "../amf.js";
11
+ const encoder = new TextEncoder();
12
+ const decoder = new TextDecoder();
13
+ /** Bytes, joined once. */
14
+ function join(chunks) {
15
+ const out = new Uint8Array(chunks.reduce((n, c) => n + c.length, 0));
16
+ let at = 0;
17
+ for (const chunk of chunks) {
18
+ out.set(chunk, at);
19
+ at += chunk.length;
20
+ }
21
+ return out;
22
+ }
23
+ /**
24
+ * A call's arguments as AMF0, a strict array of them, written with one
25
+ * table of references, the array itself the first (adl: an argument met
26
+ * twice, or an array or object holding itself, is a reference, the first
27
+ * argument's object 1); or with `first` 0, a header's value, itself the
28
+ * first (adl).
29
+ */
30
+ export function remotingValue(v, typedName, version, xml, first = 0) {
31
+ const w = new Writer(typedName, version, null, { xmlText: xml, first });
32
+ if (first === 1 && Array.isArray(v)) {
33
+ w.arguments(v);
34
+ }
35
+ else {
36
+ w.value(v);
37
+ }
38
+ return w.finish();
39
+ }
40
+ /** A u16-long UTF-8 string, no marker. */
41
+ function utf(text) {
42
+ const b = encoder.encode(text).subarray(0, 0xffff);
43
+ return join([Uint8Array.of(b.length >> 8, b.length & 0xff), b]);
44
+ }
45
+ const u16 = (n) => Uint8Array.of((n >> 8) & 0xff, n & 0xff);
46
+ const u32 = (n) => Uint8Array.of((n >>> 24) & 0xff, (n >>> 16) & 0xff, (n >>> 8) & 0xff, n & 0xff);
47
+ /** An AMF0 remoting packet: version 0, the headers, the calls, each answered at /1, /2... */
48
+ function packet(headers, calls) {
49
+ const out = [u16(0), u16(headers.length)];
50
+ for (const h of headers) {
51
+ out.push(utf(h.name), Uint8Array.of(h.mustUnderstand ? 1 : 0), u32(h.value.length), h.value);
52
+ }
53
+ out.push(u16(calls.length));
54
+ calls.forEach((call, i) => {
55
+ out.push(utf(call.method), utf(`/${i + 1}`), u32(call.args.length), call.args);
56
+ });
57
+ return join(out);
58
+ }
59
+ /** A packet's messages' targets and values read, null where it is no packet. */
60
+ function messagesOf(bytes, realm, version) {
61
+ try {
62
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
63
+ let at = 2;
64
+ const text = () => {
65
+ const n = view.getUint16(at);
66
+ at += 2;
67
+ if (at + n > bytes.length) {
68
+ throw new RangeError("past the end");
69
+ }
70
+ const s = decoder.decode(bytes.subarray(at, at + n));
71
+ at += n;
72
+ return s;
73
+ };
74
+ const value = () => {
75
+ const reader = new Reader(bytes.subarray(at), realm, version);
76
+ const v = reader.value();
77
+ at += reader.at;
78
+ return v;
79
+ };
80
+ const headers = view.getUint16(at);
81
+ at += 2;
82
+ for (let i = 0; i < headers; i++) {
83
+ text();
84
+ at += 5;
85
+ value();
86
+ }
87
+ const count = view.getUint16(at);
88
+ at += 2;
89
+ const messages = [];
90
+ for (let i = 0; i < count; i++) {
91
+ const target = text();
92
+ text();
93
+ at += 4;
94
+ messages.push([target, value()]);
95
+ }
96
+ return messages;
97
+ }
98
+ catch {
99
+ return null;
100
+ }
101
+ }
102
+ /**
103
+ * The connections open, held by their objects weakly, and those with calls
104
+ * waiting, sent a packet each at the end of a frame and let go.
105
+ */
106
+ export class Remoting {
107
+ host;
108
+ connections = new WeakMap();
109
+ waiting = new Set();
110
+ constructor(host) {
111
+ this.host = host;
112
+ }
113
+ /** `c`'s call queued for the frame's end. */
114
+ queue(c, call) {
115
+ c.queue.push(call);
116
+ this.waiting.add(c);
117
+ }
118
+ /** A frame's end: each connection's calls sent as one packet. */
119
+ flush() {
120
+ const waiting = this.waiting;
121
+ this.waiting = new Set();
122
+ for (const c of waiting) {
123
+ if (c.url === null || c.queue.length === 0 || this.connections.get(c.self) !== c) {
124
+ continue;
125
+ }
126
+ const calls = c.queue;
127
+ c.queue = [];
128
+ const body = packet(c.headers, calls);
129
+ this.host.net.fetch({
130
+ url: c.url,
131
+ method: "POST",
132
+ headers: [["Content-Type", "application/x-amf"]],
133
+ body,
134
+ }, (result) => this.answered(c, calls, result.bytes));
135
+ }
136
+ }
137
+ answered(c, calls, bytes) {
138
+ const host = this.host;
139
+ if (bytes === null) {
140
+ // A failed request: the connection's onStatus with nothing, if it is still open.
141
+ if (this.connections.get(c.self) === c) {
142
+ host.callback(c.self, "onStatus", []);
143
+ }
144
+ return;
145
+ }
146
+ // Flash ignores an answer that is no packet.
147
+ for (const [target, value] of messagesOf(bytes, host.realm, host.version) ?? []) {
148
+ const m = /^\/(\d+)\/(onResult|onStatus)$/.exec(target);
149
+ const responder = m ? calls[Number(m[1]) - 1]?.responder : null;
150
+ if (m && responder) {
151
+ host.callback(responder, m[2], [value]);
152
+ }
153
+ }
154
+ }
155
+ connection(self) {
156
+ return this.connections.get(self);
157
+ }
158
+ /** `self` connected to `url`, local for null; the connection it had closed first. */
159
+ open(self, url) {
160
+ if (this.connections.has(self)) {
161
+ this.close(self, false);
162
+ }
163
+ this.connections.set(self, { self, url, headers: [], queue: [] });
164
+ if (url === null) {
165
+ this.status(self, "NetConnection.Connect.Success");
166
+ }
167
+ }
168
+ /** `self`'s connection closed: Closed, and where a script closed remoting, onStatus with nothing. */
169
+ close(self, explicit) {
170
+ const c = this.connections.get(self);
171
+ if (c === undefined) {
172
+ return;
173
+ }
174
+ this.connections.delete(self);
175
+ this.waiting.delete(c);
176
+ this.status(self, "NetConnection.Connect.Closed");
177
+ if (explicit && c.url !== null) {
178
+ this.host.callback(self, "onStatus", []);
179
+ }
180
+ }
181
+ status(self, code) {
182
+ const { realm, version } = this.host;
183
+ const event = realm.newObject(version);
184
+ avm1.set(event, "code", code, version);
185
+ avm1.set(event, "level", "status", version);
186
+ this.host.callback(self, "onStatus", [event]);
187
+ }
188
+ }
189
+ /** `NetConnection`. */
190
+ export function netConnectionClass(host, remoting) {
191
+ const realm = host.realm;
192
+ const made = new WeakSet();
193
+ const proto = new avm1.Avm1Object(realm.objectProto);
194
+ const constr = realm.classOf(proto, (self) => {
195
+ made.add(self);
196
+ return self;
197
+ }, () => undefined);
198
+ const FIXED = avm1.DONT_ENUM | avm1.DONT_DELETE;
199
+ const typedName = (c) => host.registeredName(c);
200
+ const xml = (o) => host.xmlText(o);
201
+ // A subclass's `super.call(...)` is the connection's call: super's `this` is it.
202
+ const connectionOf = (self) => {
203
+ const o = self instanceof avm1.Avm1Super ? self.self : self;
204
+ return made.has(o) ? o : null;
205
+ };
206
+ const getter = (name, get) => {
207
+ const p = proto.add(name, undefined, 0);
208
+ p.get = realm.method((self) => {
209
+ const o = connectionOf(self);
210
+ return o === null ? undefined : get(remoting.connection(o));
211
+ });
212
+ };
213
+ const method = (name, f) => proto.define(name, realm.method((self, args, v) => {
214
+ const o = connectionOf(self);
215
+ if (o !== null) {
216
+ f(o, args, v);
217
+ }
218
+ return undefined;
219
+ }), FIXED);
220
+ getter("protocol", (c) => (c !== undefined && c.url === null ? "rtmp" : undefined));
221
+ method("connect", (self, args, v) => {
222
+ const url = args[0];
223
+ if (url === undefined || url === null) {
224
+ remoting.open(self, null);
225
+ return;
226
+ }
227
+ const text = avm1.stringOf(url, v);
228
+ if (/^https?:\/\//i.test(text)) {
229
+ remoting.open(self, text);
230
+ }
231
+ });
232
+ method("close", (self) => remoting.close(self, true));
233
+ method("call", (self, args, v) => {
234
+ const method = avm1.stringOf(args[0], v);
235
+ const values = args.slice(2);
236
+ const c = remoting.connection(self);
237
+ if (c === undefined) {
238
+ return;
239
+ }
240
+ // The local connection sends nothing, so writes nothing.
241
+ if (c.url === null) {
242
+ return;
243
+ }
244
+ const responder = args.length > 1 ? (args[1] instanceof avm1.Avm1Object ? args[1] : realm.newObject(v)) : null;
245
+ remoting.queue(c, { method, args: remotingValue(values, typedName, v, xml, 1), responder });
246
+ });
247
+ method("addHeader", (self, args, v) => {
248
+ const name = avm1.stringOf(args[0], v);
249
+ const mustUnderstand = args.length > 1 ? avm1.toBoolean(args[1], v) : true;
250
+ const value = remotingValue(args.length > 2 ? args[2] : null, typedName, v, xml);
251
+ const c = remoting.connection(self);
252
+ if (c !== undefined) {
253
+ // One header of a name, its case aside: the last set.
254
+ c.headers = c.headers.filter((h) => h.name.toLowerCase() !== name.toLowerCase());
255
+ c.headers.push({ name, mustUnderstand, value });
256
+ }
257
+ });
258
+ getter("isConnected", (c) => c !== undefined && c.url === null);
259
+ getter("uri", (c) => (c === undefined ? undefined : (c.url ?? "null")));
260
+ return constr;
261
+ }
@@ -0,0 +1,37 @@
1
+ // PrintJob's AS2 face, as Ruffle's (https://github.com/ruffle-rs/ruffle)
2
+ // core/src/avm1/globals/print_job.rs has it: MIT OR Apache-2.0, Copyright
3
+ // (c) 2018-2022 Ruffle LLC and Ruffle contributors. Nothing prints: start
4
+ // gives false, as Flash does where the user cancels the print dialog, so
5
+ // addPage gives false and send does nothing.
6
+ import { avm1 } from "../../../runtime/index.js";
7
+ const FIXED = avm1.DONT_ENUM | avm1.DONT_DELETE;
8
+ /** The page's and paper's measures, which a job reads once started: 0 before. */
9
+ const MEASURES = ["paperHeight", "paperWidth", "pageHeight", "pageWidth", "orientation"];
10
+ /** `PrintJob`. */
11
+ export function printJobClass(realm) {
12
+ // Flash's prototype has its constructor before its __proto__, which SWF 7
13
+ // on sees: up to 6 it inherits nothing, not even toString (adl).
14
+ const proto = new avm1.Avm1Object();
15
+ const jobs = new WeakSet();
16
+ let measured = false;
17
+ const constr = realm.classOf(proto, (self) => {
18
+ jobs.add(self);
19
+ // The first job made adds the measures to the prototype, over what a
20
+ // script set there, in its place; later jobs add none again, not even
21
+ // one deleted. Read of anything but a job, they are undefined (adl).
22
+ if (!measured) {
23
+ measured = true;
24
+ for (const name of MEASURES) {
25
+ const p = proto.define(name, undefined, 0);
26
+ p.get = realm.method((job) => (jobs.has(job) ? 0 : undefined));
27
+ p.set = realm.method(() => undefined);
28
+ }
29
+ }
30
+ return self;
31
+ }, () => undefined);
32
+ proto.define("__proto__", realm.objectProto, FIXED | avm1.VERSION_7);
33
+ proto.define("start", realm.method(() => false), FIXED | avm1.VERSION_7);
34
+ proto.define("addPage", realm.method(() => false), FIXED | avm1.VERSION_7);
35
+ proto.define("send", realm.method(() => undefined), FIXED | avm1.VERSION_7);
36
+ return constr;
37
+ }
@@ -0,0 +1,62 @@
1
+ // Selection, the focus's AS2 face, as Ruffle's (https://github.com/ruffle-rs/
2
+ // ruffle) core/src/avm1/globals/selection.rs has it: MIT OR Apache-2.0,
3
+ // Copyright (c) 2018-2022 Ruffle LLC and Ruffle contributors. A
4
+ // broadcaster, whose listeners hear onSetFocus(old, new) as the focus moves
5
+ // (focus.ts). The text selection is the focused text field's.
6
+ import { avm1 } from "../../../runtime/index.js";
7
+ import { TextObject } from "../../display/display.js";
8
+ import { stateOf } from "./TextField.js";
9
+ const FIXED = avm1.DONT_ENUM | avm1.DONT_DELETE | avm1.READ_ONLY;
10
+ /** `_global.Selection`. */
11
+ export function selectionObject(realm, focus, version) {
12
+ const selection = new avm1.Avm1Object(realm.objectProto);
13
+ avm1.initializeBroadcaster(selection, realm, version);
14
+ // Nothing given is false; undefined or null take the focus away; anything
15
+ // else focuses what it names, where that may have the focus.
16
+ selection.define("setFocus", realm.method((_, args, v) => {
17
+ if (args.length === 0) {
18
+ return false;
19
+ }
20
+ const value = args[0];
21
+ if (value === undefined || value === null) {
22
+ focus.focus(null);
23
+ return true;
24
+ }
25
+ const d = focus.resolve(value, v);
26
+ if (d === null || !focus.focusable(d)) {
27
+ return false;
28
+ }
29
+ focus.focus(d);
30
+ return true;
31
+ }), FIXED);
32
+ selection.define("getFocus", realm.method(() => (focus.focused ? focus.pathOf(focus.focused) : null)), FIXED);
33
+ // The focused field's selection, -1 without one.
34
+ const field = () => (focus.focused instanceof TextObject ? focus.focused : null);
35
+ const selected = () => {
36
+ const f = field();
37
+ return f !== null && stateOf(f).selected ? f : null;
38
+ };
39
+ const indices = [
40
+ ["getBeginIndex", (f) => f.selection[0]],
41
+ ["getEndIndex", (f) => f.selection[1]],
42
+ ["getCaretIndex", (f) => f.caret],
43
+ ];
44
+ for (const [name, index] of indices) {
45
+ selection.define(name, realm.method(() => {
46
+ const f = selected();
47
+ return f === null ? -1 : index(f);
48
+ }), FIXED);
49
+ }
50
+ // From begin to end, each at least 0; no end is the text's.
51
+ selection.define("setSelection", realm.method((_, args, v) => {
52
+ const f = field();
53
+ if (f !== null && args.length > 0) {
54
+ const begin = Math.max(0, avm1.toNumber(args[0], v) | 0);
55
+ const end = args.length > 1 ? Math.max(0, avm1.toNumber(args[1], v) | 0) : 0x7fffffff;
56
+ stateOf(f).selected = true;
57
+ f.select(begin, end);
58
+ }
59
+ return undefined;
60
+ }), FIXED);
61
+ return selection;
62
+ }