@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
package/README.md CHANGED
@@ -1,3 +1,44 @@
1
- # Temporary Holding Version
1
+ # @swf2es/player-hosts
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Optional hosts for the [swf2es](https://github.com/swf2es/swf2es) player,
4
+ each a subpath of its own, so that a page loads only what it uses.
5
+ [`@swf2es/web`](https://www.npmjs.com/package/@swf2es/web) uses those it
6
+ needs itself; this package is for a host built on `@swf2es/player`.
7
+
8
+ ```sh
9
+ npm install @swf2es/player-hosts
10
+ ```
11
+
12
+ - `@swf2es/player-hosts/indexeddb`: `indexedDbModuleCache()`, the compiled
13
+ modules kept in IndexedDB for a page's next visit.
14
+ - `@swf2es/player-hosts/precompiled`: `precompiledModules()` reads what the
15
+ `swf2es` command compiled ahead of time; `chainCaches()` puts a cache
16
+ behind it.
17
+ - `@swf2es/player-hosts/websocket`: `webSocketSocketHost()`, flash.net.Socket
18
+ over a WebSocket relay.
19
+ - `@swf2es/player-hosts/node`: `nodeSocketHost()`, flash.net.Socket over
20
+ node's TCP, and `nodeWorkerHost()`, flash.system.Worker on worker threads.
21
+ - `@swf2es/player-hosts/workers`: `webWorkerHost()`, flash.system.Worker
22
+ on Web Workers, which run `@swf2es/player-hosts/web-worker`
23
+ (`node-worker` is node's).
24
+ - `@swf2es/player-hosts/stage3d`: `stage3DCanvasHost()`, Stage3D's canvas
25
+ layers in a page (experimental).
26
+
27
+ ```js
28
+ import { indexedDbModuleCache } from "@swf2es/player-hosts/indexeddb";
29
+ import { chainCaches, precompiledModules } from "@swf2es/player-hosts/precompiled";
30
+
31
+ const moduleCache = chainCaches(
32
+ precompiledModules("/movie.swf2es/manifest.json"),
33
+ indexedDbModuleCache(),
34
+ );
35
+ // new Scripting(codegen, { moduleCache, ... })
36
+ ```
37
+
38
+ `dist/thread/` holds copies of the modules a Web Worker loads, which
39
+ resolve without the page's import map.
40
+
41
+ The [guide](https://swf2es.github.io/swf2es/docs/) has more.
42
+
43
+ Apache-2.0 ([LICENSE](LICENSE)); the code from elsewhere in its copies of
44
+ the other packages, and its terms, in [LICENSE.third-party](LICENSE.third-party).
@@ -0,0 +1,27 @@
1
+ import type { ModuleCache } from "@swf2es/player";
2
+ export interface IndexedDbModuleCacheOptions {
3
+ /** The database's name. */
4
+ name?: string;
5
+ /** About how many bytes the modules may take, as UTF-16; the least recently used go first. */
6
+ maxBytes?: number;
7
+ /** The IndexedDB to use: the global one by default. */
8
+ indexedDB?: IDBFactory;
9
+ /** How long to wait for the database to open, in ms, before doing without it. */
10
+ openTimeout?: number;
11
+ /** How long, in ms, to do without a database that did not open before trying again. */
12
+ retryAfter?: number;
13
+ }
14
+ /** A ModuleCache that a host can close, letting go of its database. */
15
+ export interface IndexedDbModuleCache extends ModuleCache {
16
+ /** Close the database; a later get or put opens it again. */
17
+ close(): void;
18
+ }
19
+ /**
20
+ * A ModuleCache kept in IndexedDB, opened on its first use. A get marks its
21
+ * module used; a put evicts the least recently used until the modules fit
22
+ * in `maxBytes`, and stores nothing larger than that, once the page is
23
+ * idle: a large module's write that a load's next get waited behind took
24
+ * that get from 4 to 45 ms.
25
+ */
26
+ export declare function indexedDbModuleCache(options?: IndexedDbModuleCacheOptions): IndexedDbModuleCache;
27
+ //# sourceMappingURL=indexeddb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../src/indexeddb.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,WAAW,2BAA2B;IAC1C,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,uEAAuE;AACvE,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,6DAA6D;IAC7D,KAAK,IAAI,IAAI,CAAC;CACf;AAeD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAsHtB"}
@@ -0,0 +1,170 @@
1
+ /** The database's version: 2 kept each module with its compile's log, 3 with their lengths too. */
2
+ const VERSION = 3;
3
+ const MODULES = "modules";
4
+ /** Each module's size and last use, apart from it, so that evicting reads no module. */
5
+ const ENTRIES = "entries";
6
+ const USED = "used";
7
+ /**
8
+ * A ModuleCache kept in IndexedDB, opened on its first use. A get marks its
9
+ * module used; a put evicts the least recently used until the modules fit
10
+ * in `maxBytes`, and stores nothing larger than that, once the page is
11
+ * idle: a large module's write that a load's next get waited behind took
12
+ * that get from 4 to 45 ms.
13
+ */
14
+ export function indexedDbModuleCache(options = {}) {
15
+ const { name = "swf2es-modules", maxBytes = 256 * 1024 * 1024, openTimeout = 2000, retryAfter = 30_000, } = options;
16
+ let opened = null;
17
+ // When a database that did not open may be tried again.
18
+ let retryAt = 0;
19
+ const database = () => {
20
+ if (opened === null || (retryAt !== 0 && Date.now() >= retryAt)) {
21
+ retryAt = 0;
22
+ const attempt = open(options.indexedDB ?? globalThis.indexedDB, name, openTimeout);
23
+ opened = attempt;
24
+ attempt.then((db) => {
25
+ // Another tab opening a later version: let go, and open again
26
+ // next time, unless this was let go of already for another.
27
+ db.onversionchange = () => {
28
+ db.close();
29
+ if (opened === attempt) {
30
+ opened = null;
31
+ }
32
+ };
33
+ }, () => {
34
+ if (opened === attempt) {
35
+ retryAt = Date.now() + retryAfter;
36
+ }
37
+ });
38
+ }
39
+ return opened;
40
+ };
41
+ return {
42
+ async get(key) {
43
+ const db = await database();
44
+ const stored = await request(db.transaction(MODULES).objectStore(MODULES).get(key));
45
+ const module = stored;
46
+ if (typeof module?.module !== "string" ||
47
+ typeof module.log !== "string" ||
48
+ !Array.isArray(module.lengths)) {
49
+ return undefined;
50
+ }
51
+ // Marked used apart, in a store no get reads, and not waited for: a
52
+ // mark that fails leaves the module as read and its last use as it was.
53
+ try {
54
+ const entries = db.transaction(ENTRIES, "readwrite").objectStore(ENTRIES);
55
+ request(entries.get(key)).then((entry) => {
56
+ if (entry) {
57
+ entries.put({ ...entry, used: Date.now() });
58
+ }
59
+ }, () => { });
60
+ }
61
+ catch {
62
+ // No transaction: its last use stays as it was.
63
+ }
64
+ return {
65
+ module: module.module,
66
+ log: module.log,
67
+ lengths: [...module.lengths],
68
+ };
69
+ },
70
+ async put(key, module) {
71
+ const bytes = (module.module.length + module.log.length) * 2;
72
+ if (bytes > maxBytes) {
73
+ return;
74
+ }
75
+ const db = await database();
76
+ await new Promise((resolve) => idle(resolve));
77
+ const tx = db.transaction([MODULES, ENTRIES], "readwrite");
78
+ const modules = tx.objectStore(MODULES);
79
+ const entries = tx.objectStore(ENTRIES);
80
+ modules.put({ module: module.module, log: module.log, lengths: module.lengths }, key);
81
+ entries.put({ key, bytes, used: Date.now() });
82
+ // Oldest first, the one just put among them.
83
+ const all = await request(entries.index(USED).getAll());
84
+ let total = 0;
85
+ for (const entry of all) {
86
+ total += entry.bytes;
87
+ }
88
+ for (const entry of all) {
89
+ if (total <= maxBytes) {
90
+ break;
91
+ }
92
+ if (entry.key !== key) {
93
+ modules.delete(entry.key);
94
+ entries.delete(entry.key);
95
+ total -= entry.bytes;
96
+ }
97
+ }
98
+ await done(tx);
99
+ },
100
+ async delete(key) {
101
+ const tx = (await database()).transaction([MODULES, ENTRIES], "readwrite");
102
+ tx.objectStore(MODULES).delete(key);
103
+ tx.objectStore(ENTRIES).delete(key);
104
+ await done(tx);
105
+ },
106
+ close() {
107
+ const was = opened;
108
+ opened = null;
109
+ was?.then((db) => db.close()).catch(() => { });
110
+ },
111
+ };
112
+ }
113
+ /** Run `f` when the page is next idle, or within a second; soon, where there is no requestIdleCallback. */
114
+ function idle(f) {
115
+ if (typeof requestIdleCallback === "function") {
116
+ requestIdleCallback(() => f(), { timeout: 1000 });
117
+ }
118
+ else {
119
+ setTimeout(f, 0);
120
+ }
121
+ }
122
+ /** The database, made if new; rejected if it does not open within `timeout` ms, as when another tab blocks an upgrade. */
123
+ function open(factory, name, timeout) {
124
+ return new Promise((resolve, reject) => {
125
+ let late = false;
126
+ const timer = setTimeout(() => {
127
+ late = true;
128
+ reject(new Error(`IndexedDB ${name} did not open`));
129
+ }, timeout);
130
+ const opening = factory.open(name, VERSION);
131
+ opening.onupgradeneeded = () => {
132
+ // An older version's modules are another format's: dropped.
133
+ const db = opening.result;
134
+ for (const store of [...db.objectStoreNames]) {
135
+ db.deleteObjectStore(store);
136
+ }
137
+ db.createObjectStore(MODULES);
138
+ db.createObjectStore(ENTRIES, { keyPath: "key" }).createIndex(USED, USED);
139
+ };
140
+ opening.onsuccess = () => {
141
+ clearTimeout(timer);
142
+ // Given up on already, it is closed.
143
+ if (late) {
144
+ opening.result.close();
145
+ }
146
+ else {
147
+ resolve(opening.result);
148
+ }
149
+ };
150
+ opening.onerror = () => {
151
+ clearTimeout(timer);
152
+ reject(opening.error);
153
+ };
154
+ });
155
+ }
156
+ function request(r) {
157
+ return new Promise((resolve, reject) => {
158
+ r.onsuccess = () => resolve(r.result);
159
+ r.onerror = () => reject(r.error);
160
+ });
161
+ }
162
+ /** Resolves once `tx` has committed; rejects if it aborts, a quota exceeded say. */
163
+ function done(tx) {
164
+ return new Promise((resolve, reject) => {
165
+ tx.oncomplete = () => resolve();
166
+ tx.onerror = () => reject(tx.error);
167
+ tx.onabort = () => reject(tx.error ?? new Error("IndexedDB transaction aborted"));
168
+ });
169
+ }
170
+ //# sourceMappingURL=indexeddb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexeddb.js","sourceRoot":"","sources":["../src/indexeddb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=node-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-worker.d.ts","sourceRoot":"","sources":["../src/node-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ // A worker_threads Worker running one background flash.system.Worker (node.ts).
2
+ import { parentPort } from "node:worker_threads";
3
+ import { runWorkerThread } from "@swf2es/player/worker";
4
+ const port = parentPort;
5
+ if (!port) {
6
+ throw new Error("node-worker.js runs only as a worker_threads Worker");
7
+ }
8
+ runWorkerThread({
9
+ post: (message) => port.postMessage(message),
10
+ listen: (receive) => port.on("message", receive),
11
+ });
12
+ //# sourceMappingURL=node-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-worker.js","sourceRoot":"","sources":["../src/node-worker.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,IAAI,GAAG,UAAU,CAAC;AACxB,IAAI,CAAC,IAAI,EAAE,CAAC;IACV,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;AACzE,CAAC;AAED,eAAe,CAAC;IACd,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IAC5C,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;CACjD,CAAC,CAAC"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import type { SocketHost, WorkerHost } from "@swf2es/player";
2
+ /** A host that connects ActionScript sockets to TCP directly from Node. */
3
+ export declare function nodeSocketHost(): SocketHost;
4
+ /** Background workers on worker_threads Workers running node-worker.js, given codegen compiled. */
5
+ export declare function nodeWorkerHost(options: {
6
+ codegen: WebAssembly.Module;
7
+ }): WorkerHost;
8
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG7D,2EAA2E;AAC3E,wBAAgB,cAAc,IAAI,UAAU,CAuB3C;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAA;CAAE,GAAG,UAAU,CAcnF"}
package/dist/node.js ADDED
@@ -0,0 +1,43 @@
1
+ // Node's TCP transport for flash.net.Socket, and its threads for
2
+ // flash.system.Worker; imported only by hosts that opt in.
3
+ import { connect } from "node:net";
4
+ import { Worker } from "node:worker_threads";
5
+ /** A host that connects ActionScript sockets to TCP directly from Node. */
6
+ export function nodeSocketHost() {
7
+ return {
8
+ connect(host, port, events) {
9
+ const socket = connect({ host, port });
10
+ socket.on("connect", () => events.open({
11
+ localAddress: socket.localAddress ?? "",
12
+ localPort: socket.localPort ?? 0,
13
+ remoteAddress: socket.remoteAddress ?? "",
14
+ remotePort: socket.remotePort ?? 0,
15
+ }));
16
+ socket.on("data", (bytes) => events.data(bytes));
17
+ socket.on("close", () => events.close());
18
+ socket.on("error", () => events.error("Error #2031: Socket Error."));
19
+ return {
20
+ // Socket.flush has already combined its pending bytes into one chunk.
21
+ send: (bytes) => socket.write(bytes),
22
+ close: () => socket.destroy(),
23
+ };
24
+ },
25
+ };
26
+ }
27
+ /** Background workers on worker_threads Workers running node-worker.js, given codegen compiled. */
28
+ export function nodeWorkerHost(options) {
29
+ return {
30
+ start(init, receive, failed) {
31
+ const worker = new Worker(new URL("./node-worker.js", import.meta.url));
32
+ worker.on("message", receive);
33
+ worker.on("error", failed);
34
+ const start = { codegen: options.codegen, init };
35
+ worker.postMessage(start);
36
+ return {
37
+ post: (message) => worker.postMessage(message),
38
+ terminate: () => worker.terminate(),
39
+ };
40
+ },
41
+ };
42
+ }
43
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,2DAA2D;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7C,2EAA2E;AAC3E,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM;YACxB,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CACxB,MAAM,CAAC,IAAI,CAAC;gBACV,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;gBACvC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,CAAC;gBAChC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;gBACzC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;aACnC,CAAC,CACH,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAErE,OAAO;gBACL,sEAAsE;gBACtE,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;gBACpC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;aAC9B,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,cAAc,CAAC,OAAwC;IACrE,OAAO;QACL,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM;YACzB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC9B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAgB,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;YAC9D,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1B,OAAO;gBACL,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC9C,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;aACpC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { ModuleCache } from "@swf2es/player";
2
+ export interface PrecompiledModulesOptions {
3
+ /** A file the manifest names, or the manifest, read by its URL: fetched by default. */
4
+ read?: (url: URL) => Promise<string>;
5
+ /**
6
+ * Have the player import each module from its URL, as an ES module, not
7
+ * evaluate its text: for a page whose Content-Security-Policy refuses
8
+ * 'unsafe-eval'. The document then keeps the modules for as long as it
9
+ * lives.
10
+ */
11
+ importModules?: boolean;
12
+ }
13
+ /**
14
+ * The modules of the manifest.json at `manifest` (a URL, resolved against
15
+ * the page's), and the logs beside them. The manifest is read at the first
16
+ * get, and again at the next if that failed. Asks for every module however
17
+ * small, so that with each precompiled none compiles.
18
+ */
19
+ export declare function precompiledModules(manifest: string | URL, options?: PrecompiledModulesOptions): ModuleCache;
20
+ /**
21
+ * Caches asked in order, the first that holds a module answering, as the
22
+ * modules compiled ahead of time and then an IndexedDB cache: a module
23
+ * compiled goes to each. A deletion naming the entry the player could not
24
+ * use goes only to the member that gave that entry, which then answers
25
+ * the key no more, so that the player, which asks again once, reads the
26
+ * next one's; one naming none goes to each. One that fails is passed
27
+ * over. Asks for the ABCs the member that asks for the smallest does,
28
+ * every member then asked for them.
29
+ */
30
+ export declare function chainCaches(...caches: ModuleCache[]): ModuleCache;
31
+ //# sourceMappingURL=precompiled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precompiled.d.ts","sourceRoot":"","sources":["../src/precompiled.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,WAAW,yBAAyB;IACxC,uFAAuF;IACvF,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAWD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,GAAG,GAAG,EACtB,OAAO,GAAE,yBAA8B,GACtC,WAAW,CA0Eb;AAWD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CA+BjE"}
@@ -0,0 +1,125 @@
1
+ /** The manifest's format this reads, the command's MANIFEST_VERSION: any other names no module. */
2
+ const MANIFEST_VERSION = 2;
3
+ /**
4
+ * The modules of the manifest.json at `manifest` (a URL, resolved against
5
+ * the page's), and the logs beside them. The manifest is read at the first
6
+ * get, and again at the next if that failed. Asks for every module however
7
+ * small, so that with each precompiled none compiles.
8
+ */
9
+ export function precompiledModules(manifest, options = {}) {
10
+ const base = new URL(manifest, globalThis.location?.href);
11
+ const read = options.read ?? fetchText;
12
+ let entries = null;
13
+ const rejected = new Set();
14
+ const load = async () => {
15
+ const parsed = JSON.parse(await read(base));
16
+ const map = new Map();
17
+ if (parsed?.manifestVersion !== MANIFEST_VERSION) {
18
+ return map;
19
+ }
20
+ for (const e of [parsed.libraries, parsed.abcs].flat()) {
21
+ const { key, module, log, lengths } = e ?? {};
22
+ if (typeof key === "string" &&
23
+ typeof module === "string" &&
24
+ typeof log === "string" &&
25
+ Array.isArray(lengths) &&
26
+ lengths.length === 2) {
27
+ map.set(key, {
28
+ module: new URL(module, base),
29
+ log: new URL(log, base),
30
+ lengths: [...lengths],
31
+ });
32
+ }
33
+ }
34
+ return map;
35
+ };
36
+ return {
37
+ minBytes: 0,
38
+ async get(key) {
39
+ if (rejected.has(key)) {
40
+ return undefined;
41
+ }
42
+ entries ??= load();
43
+ let found;
44
+ try {
45
+ found = (await entries).get(key);
46
+ }
47
+ catch (e) {
48
+ entries = null;
49
+ throw e;
50
+ }
51
+ if (!found) {
52
+ return undefined;
53
+ }
54
+ // Each file by a URL of its key: a module or log of another build,
55
+ // which an HTTP cache may hold under the same name, is never this
56
+ // key's, and an imported module's length is not checked.
57
+ const { lengths } = found;
58
+ const [module, log] = [found.module, found.log].map((url) => {
59
+ const keyed = new URL(url);
60
+ keyed.search = key;
61
+ return keyed;
62
+ });
63
+ if (options.importModules) {
64
+ return { module: "", log: await read(log), lengths, url: module.href };
65
+ }
66
+ const [text, logText] = await Promise.all([read(module), read(log)]);
67
+ return { module: text, log: logText, lengths };
68
+ },
69
+ async put() { },
70
+ // Its files cannot be deleted; the key is not answered again on this page.
71
+ async delete(key) {
72
+ rejected.add(key);
73
+ },
74
+ };
75
+ }
76
+ async function fetchText(url) {
77
+ const response = await fetch(url);
78
+ if (!response.ok) {
79
+ throw new Error(`${url}: HTTP ${response.status}`);
80
+ }
81
+ return response.text();
82
+ }
83
+ /**
84
+ * Caches asked in order, the first that holds a module answering, as the
85
+ * modules compiled ahead of time and then an IndexedDB cache: a module
86
+ * compiled goes to each. A deletion naming the entry the player could not
87
+ * use goes only to the member that gave that entry, which then answers
88
+ * the key no more, so that the player, which asks again once, reads the
89
+ * next one's; one naming none goes to each. One that fails is passed
90
+ * over. Asks for the ABCs the member that asks for the smallest does,
91
+ * every member then asked for them.
92
+ */
93
+ export function chainCaches(...caches) {
94
+ const sizes = caches.flatMap((c) => (c.minBytes === undefined ? [] : [c.minBytes]));
95
+ // By the entry, not the key: two reads of one key may have been answered by two members.
96
+ const answered = new WeakMap();
97
+ // A member that throws at the call skips none of the others.
98
+ const each = async (members, f) => {
99
+ await Promise.allSettled(members.map((c) => Promise.resolve().then(() => f(c))));
100
+ };
101
+ return {
102
+ ...(sizes.length ? { minBytes: Math.min(...sizes) } : {}),
103
+ async get(key) {
104
+ for (const cache of caches) {
105
+ try {
106
+ const entry = await cache.get(key);
107
+ if (entry !== undefined) {
108
+ answered.set(entry, cache);
109
+ return entry;
110
+ }
111
+ }
112
+ catch {
113
+ // The next may hold it.
114
+ }
115
+ }
116
+ return undefined;
117
+ },
118
+ put: (key, entry) => each(caches, (c) => c.put(key, entry)),
119
+ delete: (key, entry) => {
120
+ const from = entry && answered.get(entry);
121
+ return each(from ? [from] : caches, (c) => c.delete(key, entry));
122
+ },
123
+ };
124
+ }
125
+ //# sourceMappingURL=precompiled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"precompiled.js","sourceRoot":"","sources":["../src/precompiled.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Context3D, Context3DLifecycle, Stage3DHost } from "@swf2es/player/context3d";
2
+ export interface Stage3DSurface {
3
+ canvas: HTMLCanvasElement;
4
+ context: Context3D;
5
+ /** Called once after resource disposal and listener removal, including failed attachment. */
6
+ destroy?: () => void;
7
+ }
8
+ /** The caller supplies a positioned, clipped parent, with the display-list canvas
9
+ * above slots 0..3. The adapter disposes resources before removing a surface. */
10
+ export declare function stage3DCanvasHost(parent: HTMLElement, create: (slot: number) => Stage3DSurface): Stage3DHost;
11
+ /** The surface outlives its lost resources so the browser can signal recovery. */
12
+ export declare function observeLoss(canvas: HTMLCanvasElement, lifecycle: Context3DLifecycle): () => void;
13
+ //# sourceMappingURL=stage3d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage3d.d.ts","sourceRoot":"","sources":["../src/stage3d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE3F,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,SAAS,CAAC;IACnB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;iFACiF;AACjF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,GACvC,WAAW,CA6Cb;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAahG"}
@@ -0,0 +1,61 @@
1
+ /** The caller supplies a positioned, clipped parent, with the display-list canvas
2
+ * above slots 0..3. The adapter disposes resources before removing a surface. */
3
+ export function stage3DCanvasHost(parent, create) {
4
+ const surfaces = new Map();
5
+ return {
6
+ create(slot, lifecycle) {
7
+ if (surfaces.has(slot)) {
8
+ throw new Error("Stage3D surface must be removed before recreation");
9
+ }
10
+ const surface = create(slot);
11
+ const detach = observeLoss(surface.canvas, lifecycle);
12
+ try {
13
+ surface.canvas.style.position = "absolute";
14
+ surface.canvas.style.zIndex = String(slot);
15
+ parent.append(surface.canvas);
16
+ surfaces.set(slot, { ...surface, detach });
17
+ }
18
+ catch (error) {
19
+ detach();
20
+ surface.context.dispose();
21
+ surface.canvas.remove();
22
+ surface.destroy?.();
23
+ throw error;
24
+ }
25
+ return surface.context;
26
+ },
27
+ place(slot, x, y, visible) {
28
+ const surface = surfaces.get(slot);
29
+ if (surface) {
30
+ const style = surface.canvas.style;
31
+ style.left = `${x}px`;
32
+ style.top = `${y}px`;
33
+ style.visibility = visible ? "visible" : "hidden";
34
+ }
35
+ },
36
+ remove(slot) {
37
+ const surface = surfaces.get(slot);
38
+ if (surface) {
39
+ surface.detach();
40
+ surface.canvas.remove();
41
+ surfaces.delete(slot);
42
+ surface.destroy?.();
43
+ }
44
+ },
45
+ };
46
+ }
47
+ /** The surface outlives its lost resources so the browser can signal recovery. */
48
+ export function observeLoss(canvas, lifecycle) {
49
+ const lost = (event) => {
50
+ event.preventDefault();
51
+ lifecycle.lost();
52
+ };
53
+ const restored = () => lifecycle.restored();
54
+ canvas.addEventListener("webglcontextlost", lost);
55
+ canvas.addEventListener("webglcontextrestored", restored);
56
+ return () => {
57
+ canvas.removeEventListener("webglcontextlost", lost);
58
+ canvas.removeEventListener("webglcontextrestored", restored);
59
+ };
60
+ }
61
+ //# sourceMappingURL=stage3d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage3d.js","sourceRoot":"","sources":["../src/stage3d.ts"],"names":[],"mappings":"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"}