@swf2es/player-hosts 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 (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,146 @@
1
+ // flash.net.URLStream: bytes fetched by the host, read through ByteArray's
2
+ // DataInput implementation and delivered to scripts on a later frame.
3
+ import { avm2 } from "../../../../runtime/index.js";
4
+ import { dispatchEvent } from "../../../scripting/events.js";
5
+ export function urlStreamNatives(s) {
6
+ const natives = {};
7
+ const bufferOf = (stream) => (stream.$buffer ??= s.rt.construct(s.rt.classNamed("flash.utils::ByteArray")));
8
+ const read = (stream, method, ...args) => s.rt.callProperty(bufferOf(stream), s.rt.publicName(method), ...args);
9
+ const stop = (stream) => {
10
+ stream.$generation = (stream.$generation ?? 0) + 1;
11
+ stream.$abort?.abort();
12
+ stream.$abort = null;
13
+ stream.$connected = false;
14
+ };
15
+ class URLStreamNatives {
16
+ load(request) {
17
+ if (request === null || request === undefined) {
18
+ throw s.rt.error("TypeError", 2007, "request");
19
+ }
20
+ this.$abort?.abort();
21
+ const generation = (this.$generation ?? 0) + 1;
22
+ this.$generation = generation;
23
+ this.$connected = false;
24
+ this.$buffer = undefined;
25
+ const abort = new AbortController();
26
+ this.$abort = abort;
27
+ const source = request;
28
+ s.loads.requestBytes(source, abort.signal, ({ bytes, status, local }, url) => {
29
+ if (this.$generation !== generation) {
30
+ return;
31
+ }
32
+ this.$abort = null;
33
+ if (bytes === null) {
34
+ this.$connected = false;
35
+ dispatchEvent(s, this, s.httpStatus(status));
36
+ if (this.$generation !== generation) {
37
+ return;
38
+ }
39
+ dispatchEvent(s, this, s.rt.construct(s.rt.classNamed("flash.events::IOErrorEvent"), "ioError", false, false, s.loads.streamError(url, local)));
40
+ return;
41
+ }
42
+ this.$connected = true;
43
+ dispatchEvent(s, this, s.event("open"));
44
+ if (this.$generation !== generation) {
45
+ return;
46
+ }
47
+ const buffer = avm2.bytesOf(s.rt, bufferOf(this));
48
+ buffer.write(bytes);
49
+ buffer.position = 0;
50
+ dispatchEvent(s, this, s.rt.construct(s.rt.classNamed("flash.events::ProgressEvent"), "progress", false, false, bytes.length, bytes.length));
51
+ if (this.$generation !== generation) {
52
+ return;
53
+ }
54
+ dispatchEvent(s, this, s.httpStatus(status));
55
+ if (this.$generation !== generation) {
56
+ return;
57
+ }
58
+ dispatchEvent(s, this, s.event("complete"));
59
+ });
60
+ }
61
+ get connected() {
62
+ return this.$connected ?? false;
63
+ }
64
+ get bytesAvailable() {
65
+ return avm2.bytesOf(s.rt, bufferOf(this)).available;
66
+ }
67
+ close() {
68
+ if (!this.$abort && !this.$connected) {
69
+ throw s.rt.error("flash.errors::IOError", 2029);
70
+ }
71
+ stop(this);
72
+ }
73
+ stop() {
74
+ stop(this);
75
+ }
76
+ readBytes(bytes, offset = 0, length = 0) {
77
+ read(this, "readBytes", bytes, offset, length);
78
+ }
79
+ readBoolean() {
80
+ return read(this, "readBoolean");
81
+ }
82
+ readByte() {
83
+ return read(this, "readByte");
84
+ }
85
+ readUnsignedByte() {
86
+ return read(this, "readUnsignedByte");
87
+ }
88
+ readShort() {
89
+ return read(this, "readShort");
90
+ }
91
+ readUnsignedShort() {
92
+ return read(this, "readUnsignedShort");
93
+ }
94
+ readInt() {
95
+ return read(this, "readInt");
96
+ }
97
+ readUnsignedInt() {
98
+ return read(this, "readUnsignedInt");
99
+ }
100
+ readFloat() {
101
+ return read(this, "readFloat");
102
+ }
103
+ readDouble() {
104
+ return read(this, "readDouble");
105
+ }
106
+ readUTF() {
107
+ return read(this, "readUTF");
108
+ }
109
+ readUTFBytes(length) {
110
+ return read(this, "readUTFBytes", length);
111
+ }
112
+ readMultiByte(length, charset) {
113
+ return read(this, "readMultiByte", length, charset);
114
+ }
115
+ readObject() {
116
+ return read(this, "readObject");
117
+ }
118
+ get objectEncoding() {
119
+ return s.rt.getProperty(bufferOf(this), s.rt.publicName("objectEncoding"));
120
+ }
121
+ set objectEncoding(value) {
122
+ s.rt.setProperty(bufferOf(this), s.rt.publicName("objectEncoding"), value);
123
+ }
124
+ get endian() {
125
+ return s.rt.getProperty(bufferOf(this), s.rt.publicName("endian"));
126
+ }
127
+ set endian(value) {
128
+ s.rt.setProperty(bufferOf(this), s.rt.publicName("endian"), value);
129
+ }
130
+ get diskCacheEnabled() {
131
+ return false;
132
+ }
133
+ get position() {
134
+ return avm2.bytesOf(s.rt, bufferOf(this)).position;
135
+ }
136
+ set position(value) {
137
+ // As ByteArray's setter: a uint32 of its own, not toUint's (see Bytes).
138
+ avm2.bytesOf(s.rt, bufferOf(this)).position = s.rt.toUint(value) >>> 0;
139
+ }
140
+ get length() {
141
+ return avm2.bytesOf(s.rt, bufferOf(this)).length;
142
+ }
143
+ }
144
+ avm2.registerNativeClass(natives, "flash.net::URLStream", URLStreamNatives);
145
+ return natives;
146
+ }
@@ -0,0 +1,14 @@
1
+ // flash.net.XMLSocket: AS3 over a Socket (as3/playerglobal); connect with a
2
+ // null host asks here for the SWF's own domain.
3
+ import { avm2 } from "../../../../runtime/index.js";
4
+ import { swfDomain } from "./LocalConnection.js";
5
+ export function xmlSocketNatives(s) {
6
+ const natives = {};
7
+ class XMLSocketNatives {
8
+ get "flash.net:XMLSocket::domain"() {
9
+ return swfDomain(s.url);
10
+ }
11
+ }
12
+ avm2.registerNativeClass(natives, "flash.net::XMLSocket", XMLSocketNatives);
13
+ return natives;
14
+ }
@@ -0,0 +1,142 @@
1
+ // AS3 peers retain AMF3's ByteArray, XML, Vector and alias semantics.
2
+ // Reuse the runtime's codec through its public API, with a bounded output
3
+ // and scratch buffers leased separately for reentrant serialization.
4
+ import { avm2 } from "../../../../runtime/index.js";
5
+ import { MAX_DEPTH } from "../../../avm1/amf.js";
6
+ import { LOCAL_MESSAGE_LIMIT } from "../../../localconnection.js";
7
+ class MessageBytes extends avm2.Bytes {
8
+ setLength(length, fromSetter = false) {
9
+ if (length > LOCAL_MESSAGE_LIMIT) {
10
+ throw new RangeError("LocalConnection message too large");
11
+ }
12
+ super.setLength(length, fromSetter);
13
+ }
14
+ write(source, offset = 0, count = source.length) {
15
+ if (count > LOCAL_MESSAGE_LIMIT - this.position) {
16
+ throw new RangeError("LocalConnection message too large");
17
+ }
18
+ super.write(source, offset, count);
19
+ }
20
+ }
21
+ class MessageWriter extends avm2.Amf3Writer {
22
+ runtime;
23
+ depth = 0;
24
+ escaped = false;
25
+ externalizable;
26
+ constructor(runtime, bytes) {
27
+ super(runtime, bytes);
28
+ this.runtime = runtime;
29
+ this.externalizable = runtime.classNamed("flash.utils::IExternalizable");
30
+ }
31
+ string(value) {
32
+ if (value.length > LOCAL_MESSAGE_LIMIT - this.bytes.position) {
33
+ throw new RangeError("LocalConnection message too large");
34
+ }
35
+ super.string(value);
36
+ }
37
+ value(value) {
38
+ if (value?.$traits?.isSubtypeOf(this.externalizable.$it) ||
39
+ this.runtime.dynamicPropertyWriter) {
40
+ this.escaped = true;
41
+ }
42
+ if (this.depth >= MAX_DEPTH || value?.$bytes?.length > LOCAL_MESSAGE_LIMIT) {
43
+ throw new RangeError("LocalConnection message too large");
44
+ }
45
+ if (value?.$node) {
46
+ const text = this.runtime.callProperty(value, this.runtime.publicName("toXMLString"));
47
+ if (text.length > LOCAL_MESSAGE_LIMIT) {
48
+ throw new RangeError("LocalConnection message too large");
49
+ }
50
+ }
51
+ this.depth++;
52
+ try {
53
+ super.value(value);
54
+ }
55
+ finally {
56
+ this.depth--;
57
+ }
58
+ }
59
+ }
60
+ const writers = new WeakMap();
61
+ const readers = new WeakMap();
62
+ const empty = new Uint8Array(0);
63
+ const emptyView = new DataView(empty.buffer);
64
+ class MessageReader extends avm2.Amf3Reader {
65
+ escaped = false;
66
+ externalizable;
67
+ constructor(rt, bytes) {
68
+ super(rt, bytes);
69
+ this.externalizable = rt.classNamed("flash.utils::IExternalizable");
70
+ }
71
+ value() {
72
+ try {
73
+ const value = super.value();
74
+ if (value?.$traits?.isSubtypeOf(this.externalizable.$it)) {
75
+ this.escaped = true;
76
+ }
77
+ return value;
78
+ }
79
+ catch (error) {
80
+ this.escaped = true;
81
+ throw error;
82
+ }
83
+ }
84
+ }
85
+ export function writeModernValues(rt, args) {
86
+ let pool = writers.get(rt);
87
+ if (!pool) {
88
+ pool = [];
89
+ writers.set(rt, pool);
90
+ }
91
+ let bytes = pool.pop();
92
+ if (!bytes) {
93
+ const owner = rt.construct(rt.classNamed("flash.utils::ByteArray"));
94
+ bytes = new MessageBytes(rt, owner);
95
+ owner.$bytes = bytes;
96
+ }
97
+ const writer = new MessageWriter(rt, bytes);
98
+ try {
99
+ writer.value(rt.newArray(args));
100
+ return bytes.buffer.slice(0, bytes.length);
101
+ }
102
+ finally {
103
+ // An externalizable may retain its ObjectOutput; that stream must stay independent.
104
+ if (!writer.escaped) {
105
+ bytes.position = 0;
106
+ bytes.setLength(0);
107
+ if (pool.length < 2) {
108
+ pool.push(bytes);
109
+ }
110
+ }
111
+ }
112
+ }
113
+ export function readModernValues(rt, data) {
114
+ let pool = readers.get(rt);
115
+ if (!pool) {
116
+ pool = [];
117
+ readers.set(rt, pool);
118
+ }
119
+ let bytes = pool.pop();
120
+ if (!bytes) {
121
+ const owner = rt.construct(rt.classNamed("flash.utils::ByteArray"));
122
+ bytes = avm2.bytesOf(rt, owner);
123
+ }
124
+ bytes.buffer = data;
125
+ bytes.view = new DataView(data.buffer, data.byteOffset, data.byteLength);
126
+ bytes.length = data.length;
127
+ const reader = new MessageReader(rt, bytes);
128
+ try {
129
+ return reader.value().$a;
130
+ }
131
+ finally {
132
+ if (!reader.escaped) {
133
+ bytes.buffer = empty;
134
+ bytes.view = emptyView;
135
+ bytes.position = 0;
136
+ bytes.length = 0;
137
+ if (pool.length < 2) {
138
+ pool.push(bytes);
139
+ }
140
+ }
141
+ }
142
+ }
@@ -0,0 +1,217 @@
1
+ // AMF0 values crossing LocalConnection's VM boundary. The AS2 codec owns
2
+ // the byte format; this adapter creates and reads AS3 objects without
3
+ // retaining either VM's live arguments in a queued message.
4
+ import { avm2 } from "../../../../runtime/index.js";
5
+ import * as A from "../../../avm1/amf.js";
6
+ import { LOCAL_MESSAGE_LIMIT } from "../../../localconnection.js";
7
+ const encoder = new TextEncoder();
8
+ const decoder = new TextDecoder();
9
+ export function writeLocalValues(rt, args) {
10
+ // The original AMF3 payload is already bounded; AMF0 can expand small integers.
11
+ const out = new A.Writer(() => null, 8, null, null);
12
+ const references = new Map();
13
+ let next = 1;
14
+ const write = (value, depth) => {
15
+ if (depth >= A.MAX_DEPTH - 2) {
16
+ out.bytes(A.UNDEFINED);
17
+ return;
18
+ }
19
+ if (value instanceof avm2.FloatValue) {
20
+ out.value(value.value);
21
+ return;
22
+ }
23
+ if (value === null || (typeof value !== "object" && typeof value !== "function")) {
24
+ out.value(value);
25
+ return;
26
+ }
27
+ if (value.$display) {
28
+ out.bytes(A.UNDEFINED);
29
+ return;
30
+ }
31
+ const traits = rt.traitsOf(value);
32
+ if ("$time" in value) {
33
+ out.bytes(A.DATE);
34
+ out.double(value.$time);
35
+ out.u16(0);
36
+ return;
37
+ }
38
+ if (traits.name === "XML" || traits.name === "flash.xml::XMLDocument") {
39
+ const text = rt.toString(rt.callProperty(value, rt.publicName(traits.name === "XML" ? "toXMLString" : "toString")));
40
+ if (text.length > LOCAL_MESSAGE_LIMIT) {
41
+ throw new RangeError("LocalConnection message too large");
42
+ }
43
+ const bytes = encoder.encode(text);
44
+ out.bytes(A.XML);
45
+ out.u32(bytes.length);
46
+ out.push(bytes);
47
+ return;
48
+ }
49
+ const seen = references.get(value);
50
+ if (seen !== undefined) {
51
+ out.bytes(A.REFERENCE);
52
+ out.u16(seen);
53
+ return;
54
+ }
55
+ references.set(value, next++);
56
+ if (value.$a) {
57
+ const array = value.$a;
58
+ const properties = value.$d;
59
+ if (properties?.size) {
60
+ out.bytes(A.ECMA_ARRAY);
61
+ out.u32(array.length);
62
+ for (const key of Object.keys(array)) {
63
+ out.name(key);
64
+ write(array[Number(key)], depth + 1);
65
+ }
66
+ for (const [key, field] of properties) {
67
+ out.name(key);
68
+ write(field, depth + 1);
69
+ }
70
+ out.bytes(0, 0, A.OBJECT_END);
71
+ return;
72
+ }
73
+ if (array.length > LOCAL_MESSAGE_LIMIT) {
74
+ throw new RangeError("LocalConnection message too large");
75
+ }
76
+ out.bytes(A.STRICT_ARRAY);
77
+ out.u32(array.length);
78
+ for (let i = 0; i < array.length; i++) {
79
+ write(array[i], depth + 1);
80
+ }
81
+ return;
82
+ }
83
+ const alias = rt.aliasOf(traits);
84
+ out.bytes(alias === "" ? A.OBJECT : A.TYPED_OBJECT);
85
+ if (alias !== "") {
86
+ out.name(alias);
87
+ }
88
+ const names = new Set();
89
+ for (let t = traits; t !== null; t = t.base) {
90
+ for (const [name, bindings] of t.bindings) {
91
+ for (const binding of bindings) {
92
+ if (binding.ns.kind === avm2.publicNs.kind &&
93
+ binding.ns.uri === "" &&
94
+ (binding.value & 7) === 2) {
95
+ names.add(name);
96
+ }
97
+ }
98
+ }
99
+ }
100
+ for (const name of value.$d?.keys() ?? []) {
101
+ names.add(name);
102
+ }
103
+ for (const name of names) {
104
+ const field = rt.getProperty(value, rt.publicName(name));
105
+ if (typeof field === "function" || (field && typeof field === "object" && field.$f)) {
106
+ continue;
107
+ }
108
+ out.name(name);
109
+ write(field, depth + 1);
110
+ }
111
+ out.bytes(0, 0, A.OBJECT_END);
112
+ };
113
+ out.bytes(A.STRICT_ARRAY);
114
+ out.u32(args.length);
115
+ for (const value of args) {
116
+ write(value, 0);
117
+ }
118
+ return out.finish();
119
+ }
120
+ export function readLocalValues(rt, bytes) {
121
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
122
+ const references = [];
123
+ let at = 0;
124
+ const u16 = () => {
125
+ const n = view.getUint16(at);
126
+ at += 2;
127
+ return n;
128
+ };
129
+ const u32 = () => {
130
+ const n = view.getUint32(at);
131
+ at += 4;
132
+ return n;
133
+ };
134
+ const utf = (length) => {
135
+ if (length > bytes.length - at) {
136
+ throw new RangeError("LocalConnection message ended early");
137
+ }
138
+ const text = decoder.decode(bytes.subarray(at, at + length));
139
+ at += length;
140
+ return text;
141
+ };
142
+ const name = () => utf(u16());
143
+ const read = (depth) => {
144
+ if (depth >= A.MAX_DEPTH) {
145
+ throw new RangeError("LocalConnection arguments nested too deeply");
146
+ }
147
+ const marker = bytes[at++];
148
+ switch (marker) {
149
+ case A.NUMBER: {
150
+ const n = view.getFloat64(at);
151
+ at += 8;
152
+ return n;
153
+ }
154
+ case A.BOOLEAN:
155
+ return bytes[at++] !== 0;
156
+ case A.STRING:
157
+ return name();
158
+ case A.LONG_STRING:
159
+ return utf(u32());
160
+ case A.NULL:
161
+ return null;
162
+ case A.UNDEFINED:
163
+ case A.UNSUPPORTED:
164
+ return undefined;
165
+ case A.REFERENCE:
166
+ return references[u16()];
167
+ case A.DATE: {
168
+ const time = view.getFloat64(at);
169
+ at += 10;
170
+ return rt.construct(rt.classNamed("Date"), time);
171
+ }
172
+ case A.XML:
173
+ return rt.construct(rt.classNamed("flash.xml::XMLDocument"), utf(u32()));
174
+ case A.STRICT_ARRAY: {
175
+ const count = u32();
176
+ if (count > bytes.length - at) {
177
+ throw new RangeError("LocalConnection message ended early");
178
+ }
179
+ const result = rt.newArray([]);
180
+ references.push(result);
181
+ for (let i = 0; i < count; i++) {
182
+ result.$a.push(read(depth + 1));
183
+ }
184
+ return result;
185
+ }
186
+ case A.OBJECT:
187
+ case A.TYPED_OBJECT:
188
+ case A.ECMA_ARRAY: {
189
+ let result;
190
+ if (marker === A.TYPED_OBJECT) {
191
+ result = rt.allocate(rt.classByAlias(name(), true)) ?? rt.newObject([]);
192
+ }
193
+ else {
194
+ result = marker === A.ECMA_ARRAY ? rt.newArray([]) : rt.newObject([]);
195
+ }
196
+ const length = marker === A.ECMA_ARRAY ? u32() : 0;
197
+ references.push(result);
198
+ for (;;) {
199
+ const key = name();
200
+ if (key === "" && bytes[at] === A.OBJECT_END) {
201
+ at++;
202
+ break;
203
+ }
204
+ rt.setProperty(result, rt.publicName(key), read(depth + 1));
205
+ }
206
+ if (marker === A.ECMA_ARRAY && length > result.$a.length) {
207
+ result.$a.length = length;
208
+ }
209
+ return result;
210
+ }
211
+ default:
212
+ throw new RangeError("Invalid LocalConnection AMF0 marker");
213
+ }
214
+ };
215
+ const result = read(0);
216
+ return result.$a;
217
+ }
@@ -0,0 +1,29 @@
1
+ export function navigateNatives(s) {
2
+ const checked = (rt, request) => {
3
+ if (request === null || request === undefined) {
4
+ throw rt.error("TypeError", 2007, "request");
5
+ }
6
+ if (request.$url === null || request.$url === undefined) {
7
+ throw rt.error("TypeError", 2007, "url");
8
+ }
9
+ return request;
10
+ };
11
+ return {
12
+ "flash.net::navigateToURL": (rt) => (request, window) => {
13
+ const page = checked(rt, request);
14
+ const name = window === null || window === undefined ? null : rt.toString(window);
15
+ s.loads.navigateTo(page, name === null ? null : target(name));
16
+ },
17
+ "flash.net::sendToURL": (rt) => (request) => {
18
+ s.loads.sendTo(checked(rt, request));
19
+ },
20
+ };
21
+ }
22
+ /**
23
+ * "blank" in any case, with or without its underscore, as "_blank", and any
24
+ * other name as given, as Ruffle's navigateToURL_target_normalize records
25
+ * Flash Player doing.
26
+ */
27
+ function target(name) {
28
+ return /^_?blank$/i.test(name) ? "_blank" : name;
29
+ }
@@ -0,0 +1,25 @@
1
+ // flash.profiler.Telemetry: no profiler is ever connected, so metrics go
2
+ // nowhere and no command handler is called. Crossbridge sends metrics as it
3
+ // runs.
4
+ import { avm2 } from "../../../../runtime/index.js";
5
+ export function telemetryNatives() {
6
+ const natives = {};
7
+ class TelemetryNatives {
8
+ static get connected() {
9
+ return false;
10
+ }
11
+ static get spanMarker() {
12
+ return 0;
13
+ }
14
+ static sendMetric(_name, _value) { }
15
+ static sendSpanMetric(_name, _start, _value) { }
16
+ static registerCommandHandler(_name, _f) {
17
+ return false;
18
+ }
19
+ static unregisterCommandHandler(_name) {
20
+ return false;
21
+ }
22
+ }
23
+ avm2.registerNativeClass(natives, "flash.profiler::Telemetry", TelemetryNatives);
24
+ return natives;
25
+ }
@@ -0,0 +1,12 @@
1
+ // flash.sensors.Accelerometer: none, as on a desktop's Flash Player.
2
+ import { avm2 } from "../../../../runtime/index.js";
3
+ export function accelerometerNatives() {
4
+ const natives = {};
5
+ class AccelerometerNatives {
6
+ static get isSupported() {
7
+ return false;
8
+ }
9
+ }
10
+ avm2.registerNativeClass(natives, "flash.sensors::Accelerometer", AccelerometerNatives);
11
+ return natives;
12
+ }
@@ -0,0 +1,69 @@
1
+ // flash.system.ApplicationDomain: one of the runtime's application
2
+ // domains (avm2.Domain), kept on the object as $domain: a child's
3
+ // definitions after its parent's, its own invisible to its parent and to
4
+ // its siblings. The root is Flash's system domain, the player's classes,
5
+ // and the main SWF's is its child (Scripting.mainDomain), so `new
6
+ // ApplicationDomain(null)` sees none of the main SWF's. Its domain memory
7
+ // is the runtime's one, as avmshell's Domain's is.
8
+ import { avm2 } from "../../../../runtime/index.js";
9
+ import { definitionNamed } from "../../toplevel.js";
10
+ export function applicationDomainNatives(s) {
11
+ const natives = {};
12
+ const domainOf = (o) => o.$domain ?? s.mainDomain;
13
+ const definitionOf = (o, name) => definitionNamed(s.rt, String(name), (q) => s.rt.definitionNamed(q, domainOf(o)));
14
+ // Not defined, as Flash has it, for a name whose script throws as it
15
+ // runs too: a script that threw runs again, as for getDefinition.
16
+ const has = (o, name) => {
17
+ if (name === null || name === undefined) {
18
+ return false;
19
+ }
20
+ // A Vector of a definition that is not a class is defined, though
21
+ // getDefinition refuses it; an error, the requested name's or one an
22
+ // initializer the lookup ran threw, leaves the name not defined.
23
+ try {
24
+ definitionNamed(s.rt, String(name), (q) => s.rt.definitionNamed(q, domainOf(o)), () => true);
25
+ return true;
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ };
31
+ class ApplicationDomainNatives {
32
+ // The domain of the code that asks, as Flash's.
33
+ static get currentDomain() {
34
+ return s.code.applicationDomainOf(s.code.codeDomain());
35
+ }
36
+ static get MIN_DOMAIN_MEMORY_LENGTH() {
37
+ return avm2.GLOBAL_MEMORY_MIN_SIZE;
38
+ }
39
+ get domainMemory() {
40
+ return s.rt.memoryProvider;
41
+ }
42
+ set domainMemory(v) {
43
+ avm2.setDomainMemory(s.rt, v);
44
+ }
45
+ "flash.system:ApplicationDomain::ctor"(parent) {
46
+ this.$domain = s.rt.childDomain(parent ? domainOf(parent) : s.rt.root);
47
+ }
48
+ // The system domain, the root, is no script's to see: the main SWF's has no parent.
49
+ get parentDomain() {
50
+ const parent = domainOf(this).parent;
51
+ return parent && parent !== s.rt.root ? s.code.applicationDomainOf(parent) : null;
52
+ }
53
+ getQualifiedDefinitionNames() {
54
+ const cls = s.rt.resolve(s.rt.vector("String"));
55
+ const names = cls.$it.instance();
56
+ names.$a = s.rt.definitionNames(domainOf(this));
57
+ return names;
58
+ }
59
+ // As Flash's: an initializer's error comes through (Runtime.definitionNamed).
60
+ getDefinition(name) {
61
+ return definitionOf(this, name);
62
+ }
63
+ hasDefinition(name) {
64
+ return has(this, name);
65
+ }
66
+ }
67
+ avm2.registerNativeClass(natives, "flash.system::ApplicationDomain", ApplicationDomainNatives);
68
+ return natives;
69
+ }