@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,436 @@
1
+ // Date, as Ruffle's (https://github.com/ruffle-rs/ruffle)
2
+ // core/src/avm1/globals/date.rs has it: MIT OR Apache-2.0, Copyright (c)
3
+ // 2018-2022 Ruffle LLC and Ruffle contributors. Where adl parts from
4
+ // Ruffle, adl decides (docs/avm1.md, "Date").
5
+ //
6
+ // The calendar is ECMA-262's, in Ruffle's arithmetic (its int casts
7
+ // included). Local time is Flash's on Windows, as adl has it: today's
8
+ // standard offset in every year, and today's daylight saving rule applied
9
+ // to every year, 1900 and 2050 alike, by its month, weekday and time, not
10
+ // the zone's history (Ruffle adds a constant offset, no daylight saving).
11
+ // A local time is taken back to UTC by the rule's local times, so a time
12
+ // in the spring-forward gap is an hour earlier and one in the hour that
13
+ // repeats as it falls back the later one.
14
+ import { Avm1Object, DONT_DELETE, DONT_ENUM, READ_ONLY, } from "../objects.js";
15
+ import { clampInt } from "../operators.js";
16
+ import { toNumber } from "../values.js";
17
+ /** What a Date object holds, in its `primitive`: the time, in ms since 1970 UTC, or NaN. */
18
+ export class DateCell {
19
+ time;
20
+ constructor(time) {
21
+ this.time = time;
22
+ }
23
+ }
24
+ const MS_PER_SECOND = 1000;
25
+ const MS_PER_MINUTE = 60000;
26
+ const MS_PER_HOUR = 3600000;
27
+ const MS_PER_DAY = 86400000;
28
+ const MONTH_OFFSETS = [
29
+ [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365],
30
+ [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366],
31
+ ];
32
+ /** `a mod n` taken non-negative, then cast as Ruffle casts it. */
33
+ function remEuclid(a, n) {
34
+ const r = clampInt(a % n);
35
+ return r < 0 ? r + n : r;
36
+ }
37
+ const day = (t) => Math.floor(t / MS_PER_DAY);
38
+ const dayFromYear = (year) => 365 * (year - 1970) +
39
+ Math.floor((year - 1969) / 4) -
40
+ Math.floor((year - 1901) / 100) +
41
+ Math.floor((year - 1601) / 400);
42
+ const timeFromYear = (year) => MS_PER_DAY * dayFromYear(year);
43
+ const isLeap = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
44
+ function yearOf(t) {
45
+ const d = day(t);
46
+ let low = clampInt(Math.floor(d / (t < 0 ? 365 : 366))) + 1970;
47
+ let high = clampInt(Math.ceil(d / (t < 0 ? 366 : 365))) + 1970;
48
+ while (low < high) {
49
+ const pivot = clampInt((low + high) / 2);
50
+ if (timeFromYear(pivot) <= t) {
51
+ if (timeFromYear(pivot + 1) > t) {
52
+ return pivot;
53
+ }
54
+ low = pivot + 1;
55
+ }
56
+ else {
57
+ high = pivot - 1;
58
+ }
59
+ }
60
+ return low;
61
+ }
62
+ const dayWithinYear = (t) => clampInt(day(t) - dayFromYear(yearOf(t)));
63
+ function monthOf(t) {
64
+ const d = dayWithinYear(t);
65
+ const offsets = MONTH_OFFSETS[isLeap(yearOf(t)) ? 1 : 0];
66
+ for (let i = 0; i < 11; i++) {
67
+ if (d < offsets[i + 1]) {
68
+ return i;
69
+ }
70
+ }
71
+ return 11;
72
+ }
73
+ const dateOf = (t) => dayWithinYear(t) - MONTH_OFFSETS[isLeap(yearOf(t)) ? 1 : 0][monthOf(t)] + 1;
74
+ const weekDay = (t) => remEuclid(day(t) + 4, 7);
75
+ const hoursOf = (t) => remEuclid(Math.floor((t + 0.5) / MS_PER_HOUR), 24);
76
+ const minutesOf = (t) => remEuclid(Math.floor(t / MS_PER_MINUTE), 60);
77
+ const secondsOf = (t) => remEuclid(Math.floor(t / MS_PER_SECOND), 60);
78
+ const msOf = (t) => remEuclid(t, MS_PER_SECOND);
79
+ /** Up to SWF 7 the remainder takes the sign of the time, as Ruffle has it. */
80
+ const timeWithinDay = (t, version) => version > 7 ? ((t % MS_PER_DAY) + MS_PER_DAY) % MS_PER_DAY : t % MS_PER_DAY;
81
+ function makeTime(h, m, s, ms) {
82
+ return (Math.floor(h) * MS_PER_HOUR +
83
+ Math.floor(m) * MS_PER_MINUTE +
84
+ Math.floor(s) * MS_PER_SECOND +
85
+ Math.floor(ms));
86
+ }
87
+ function dayFromMonth(year, month) {
88
+ const y = clampInt(year);
89
+ const m = clampInt(Math.floor(month));
90
+ if (m < 0 || m > 11) {
91
+ return Number.NaN;
92
+ }
93
+ return dayFromYear(y) + MONTH_OFFSETS[isLeap(y) ? 1 : 0][m];
94
+ }
95
+ function makeDay(year, month, date) {
96
+ let y = Math.floor(year);
97
+ const m = Math.floor(month);
98
+ y += Math.floor(m / 12);
99
+ return dayFromMonth(y, ((m % 12) + 12) % 12) + Math.floor(date) - 1;
100
+ }
101
+ const makeDate = (d, time) => d * MS_PER_DAY + time;
102
+ /** TimeClip: NaN past 100 million days either side of 1970, else whole. */
103
+ function clip(t) {
104
+ return !Number.isFinite(t) || Math.abs(t) > 1e8 * MS_PER_DAY ? Number.NaN : Math.floor(t);
105
+ }
106
+ /** A date's fields, a year below 100 taken as 1900's. */
107
+ function fromFields(args) {
108
+ let year = args[0];
109
+ if (year < 100) {
110
+ year += 1900;
111
+ }
112
+ return makeDate(makeDay(year, args[1], args.length > 2 ? args[2] : 1), makeTime(args.length > 3 ? args[3] : 0, args.length > 4 ? args[4] : 0, args.length > 5 ? args[5] : 0, args.length > 6 ? args[6] : 0));
113
+ }
114
+ let zone = null;
115
+ const hostOffset = (t) => -new Date(t).getTimezoneOffset() * MS_PER_MINUTE;
116
+ /** The first instant of `[from, to)` whose offset is not `from`'s, to the minute. */
117
+ function transition(from, to) {
118
+ const before = hostOffset(from);
119
+ while (to - from > MS_PER_MINUTE) {
120
+ const mid = from + Math.floor((to - from) / MS_PER_MINUTE / 2) * MS_PER_MINUTE;
121
+ if (hostOffset(mid) === before) {
122
+ from = mid;
123
+ }
124
+ else {
125
+ to = mid;
126
+ }
127
+ }
128
+ return to;
129
+ }
130
+ /** A transition at `t` as a rule, its standard local time's month, weekday and week. */
131
+ function ruleOf(t, standard) {
132
+ const local = t + standard;
133
+ const date = dateOf(local);
134
+ const length = MONTH_OFFSETS[isLeap(yearOf(local)) ? 1 : 0];
135
+ const month = monthOf(local);
136
+ const last = date + 7 > length[month + 1] - length[month];
137
+ return {
138
+ month,
139
+ weekday: weekDay(local),
140
+ week: last ? 5 : Math.floor((date - 1) / 7) + 1,
141
+ time: remEuclid(local, MS_PER_DAY),
142
+ };
143
+ }
144
+ /** The host's zone, read from its offsets this year, again as the year changes. */
145
+ function hostZone() {
146
+ const now = Date.now();
147
+ if (zone !== null && now < zone.until) {
148
+ return zone;
149
+ }
150
+ const year = new Date(now).getUTCFullYear();
151
+ const months = [];
152
+ for (let m = 0; m <= 12; m++) {
153
+ months.push(Date.UTC(year, m, 1));
154
+ }
155
+ const offsets = months.map(hostOffset);
156
+ const standard = Math.min(...offsets);
157
+ const saving = Math.max(...offsets) - standard;
158
+ let start = null;
159
+ let end = null;
160
+ for (let m = 0; m < 12; m++) {
161
+ if (offsets[m] !== offsets[m + 1]) {
162
+ const t = transition(months[m], months[m + 1]);
163
+ if (hostOffset(t) > offsets[m]) {
164
+ start = ruleOf(t, standard);
165
+ }
166
+ else {
167
+ end = ruleOf(t, standard);
168
+ }
169
+ }
170
+ }
171
+ zone = { year, until: months[12], standard, saving, start, end };
172
+ return zone;
173
+ }
174
+ /** The instant a rule falls on in `year`. */
175
+ function instant(rule, year, standard) {
176
+ const first = makeDay(year, rule.month, 1);
177
+ let date = 1 + ((rule.weekday - weekDay(first * MS_PER_DAY) + 7) % 7) + (rule.week - 1) * 7;
178
+ const length = makeDay(year, rule.month + 1, 1) - first;
179
+ while (date > length) {
180
+ date -= 7;
181
+ }
182
+ return makeDate(first + date - 1, rule.time) - standard;
183
+ }
184
+ /** The offset east of UTC at `t`, in ms: the standard offset, and daylight saving's by today's rule. */
185
+ function offsetAt(t) {
186
+ const z = hostZone();
187
+ if (z.start === null || z.end === null || !Number.isFinite(t)) {
188
+ return z.standard;
189
+ }
190
+ const year = yearOf(t + z.standard);
191
+ const start = instant(z.start, year, z.standard);
192
+ const end = instant(z.end, year, z.standard);
193
+ const saving = start < end ? t >= start && t < end : !(t >= end && t < start);
194
+ return saving ? z.standard + z.saving : z.standard;
195
+ }
196
+ const localTime = (t) => t + offsetAt(t);
197
+ /**
198
+ * A local time back to UTC, daylight saving's taken where the local time
199
+ * is past the rule's local standard time, as Windows compares them: a
200
+ * time in the spring-forward gap is an hour earlier, one in the hour
201
+ * that repeats as it falls back the later, standard one.
202
+ */
203
+ const utcOf = (local) => local - offsetAt(local - hostZone().standard);
204
+ const DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
205
+ const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
206
+ const two = (n) => (n < 10 ? `0${n}` : String(n));
207
+ /** As Flash writes a date: "Thu Oct 15 12:34:56 GMT+0300 2026", local. */
208
+ export function dateString(time) {
209
+ if (!Number.isFinite(time)) {
210
+ return "Invalid Date";
211
+ }
212
+ const t = localTime(time);
213
+ const offset = clampInt((t - time) / MS_PER_MINUTE);
214
+ const abs = Math.abs(offset);
215
+ return `${DAYS[weekDay(t)]} ${MONTHS[monthOf(t)]} ${dateOf(t)} ${two(hoursOf(t))}:${two(minutesOf(t))}:${two(secondsOf(t))} GMT${offset < 0 ? "-" : "+"}${two(Math.floor(abs / 60))}${two(abs % 60)} ${yearOf(t)}`;
216
+ }
217
+ // The methods' ASnative(103, i) indices, a UTC method 128 past its local one.
218
+ const GET_FULL_YEAR = 0;
219
+ const GET_YEAR = 1;
220
+ const GET_MONTH = 2;
221
+ const GET_DATE = 3;
222
+ const GET_DAY = 4;
223
+ const GET_HOURS = 5;
224
+ const GET_MINUTES = 6;
225
+ const GET_SECONDS = 7;
226
+ const GET_MILLISECONDS = 8;
227
+ const SET_FULL_YEAR = 9;
228
+ const SET_MONTH = 10;
229
+ const SET_DATE = 11;
230
+ const SET_HOURS = 12;
231
+ const SET_MINUTES = 13;
232
+ const SET_SECONDS = 14;
233
+ const SET_MILLISECONDS = 15;
234
+ const GET_TIME = 16;
235
+ const SET_TIME = 17;
236
+ const GET_TIMEZONE_OFFSET = 18;
237
+ const TO_STRING = 19;
238
+ const SET_YEAR = 20;
239
+ const CONSTRUCTOR = 256;
240
+ const UTC = 257;
241
+ const UTC_OFFSET = 128;
242
+ /** The arguments as Date's natives take them: numbers, up to 7, to the first undefined. */
243
+ function numbers(args, version) {
244
+ const out = [];
245
+ for (let i = 0; i < args.length && i < 7; i++) {
246
+ if (args[i] === undefined) {
247
+ break;
248
+ }
249
+ out.push(toNumber(args[i], version));
250
+ }
251
+ return out;
252
+ }
253
+ function now(version) {
254
+ const t = Date.now();
255
+ return version > 7 ? Math.round(t) : t;
256
+ }
257
+ /** ASnative(103, index): a Date method, the constructor, or Date.UTC. */
258
+ function dateNative(index) {
259
+ return (self, rawArgs, version) => {
260
+ const args = numbers(rawArgs, version);
261
+ if (index === CONSTRUCTOR) {
262
+ let time;
263
+ if (args.length === 0) {
264
+ time = now(version);
265
+ }
266
+ else if (args.length === 1) {
267
+ time = args[0];
268
+ }
269
+ else {
270
+ time = utcOf(fromFields(args));
271
+ }
272
+ self.primitive = new DateCell(time);
273
+ return self;
274
+ }
275
+ if (index === UTC) {
276
+ return args.length < 2 ? undefined : fromFields(args);
277
+ }
278
+ const cell = self.primitive;
279
+ if (!(cell instanceof DateCell)) {
280
+ return undefined;
281
+ }
282
+ const time = cell.time;
283
+ switch (index) {
284
+ case GET_TIME:
285
+ return time;
286
+ case SET_TIME:
287
+ cell.time = clip(args.length > 0 ? args[0] : Number.NaN);
288
+ return cell.time;
289
+ case GET_TIMEZONE_OFFSET:
290
+ return (time - localTime(time)) / MS_PER_MINUTE;
291
+ }
292
+ const utc = index >= UTC_OFFSET;
293
+ let i = utc ? index - UTC_OFFSET : index;
294
+ if (i <= GET_MILLISECONDS && Number.isNaN(time)) {
295
+ return Number.NaN;
296
+ }
297
+ const setYear = i === SET_YEAR;
298
+ if (setYear) {
299
+ i = SET_FULL_YEAR;
300
+ }
301
+ const arg = (field) => field >= i && field - i < args.length
302
+ ? args[field - i]
303
+ : field === i
304
+ ? Number.NaN
305
+ : undefined;
306
+ const t = utc ? time : localTime(time);
307
+ const store = (d, within) => {
308
+ let value = makeDate(d, within);
309
+ if (!utc) {
310
+ value = utcOf(value);
311
+ }
312
+ cell.time = clip(value);
313
+ return cell.time;
314
+ };
315
+ switch (i) {
316
+ case GET_FULL_YEAR:
317
+ return yearOf(t);
318
+ case GET_YEAR:
319
+ return yearOf(t) - 1900;
320
+ case GET_MONTH:
321
+ return monthOf(t);
322
+ case GET_DATE:
323
+ return dateOf(t);
324
+ case GET_DAY:
325
+ return weekDay(t);
326
+ case GET_HOURS:
327
+ return hoursOf(t);
328
+ case GET_MINUTES:
329
+ return minutesOf(t);
330
+ case GET_SECONDS:
331
+ return secondsOf(t);
332
+ case GET_MILLISECONDS:
333
+ return msOf(t);
334
+ case SET_FULL_YEAR:
335
+ case SET_MONTH:
336
+ case SET_DATE: {
337
+ let year = arg(SET_FULL_YEAR) ?? yearOf(t);
338
+ if (setYear && year >= 0 && year <= 99) {
339
+ year += 1900;
340
+ }
341
+ let month = arg(SET_MONTH) ?? monthOf(t);
342
+ // setMonth() of nothing is January.
343
+ if (i === SET_MONTH && Number.isNaN(month)) {
344
+ month = 0;
345
+ }
346
+ let date = arg(SET_DATE);
347
+ if (date === undefined) {
348
+ date = dateOf(t);
349
+ // From SWF 7, setMonth keeps the day within the month it sets (adl).
350
+ const m = Math.floor(month);
351
+ if (i === SET_MONTH && version > 6 && m >= 0 && m <= 11) {
352
+ const length = MONTH_OFFSETS[isLeap(clampInt(year)) ? 1 : 0];
353
+ date = Math.min(date, length[m + 1] - length[m]);
354
+ }
355
+ }
356
+ return store(makeDay(year, month, date), timeWithinDay(t, version));
357
+ }
358
+ case SET_HOURS:
359
+ case SET_MINUTES:
360
+ case SET_SECONDS:
361
+ case SET_MILLISECONDS: {
362
+ const hours = arg(SET_HOURS) ?? hoursOf(t);
363
+ let minutes = arg(SET_MINUTES) ?? minutesOf(t);
364
+ let seconds = arg(SET_SECONDS) ?? secondsOf(t);
365
+ let ms = arg(SET_MILLISECONDS) ?? msOf(t);
366
+ if (i === SET_MINUTES) {
367
+ minutes = clampInt(minutes);
368
+ seconds = clampInt(seconds);
369
+ ms = clampInt(ms);
370
+ }
371
+ return store(day(t), makeTime(hours, minutes, seconds, ms));
372
+ }
373
+ case TO_STRING:
374
+ return dateString(time);
375
+ default:
376
+ return undefined;
377
+ }
378
+ };
379
+ }
380
+ const PROTO = [
381
+ ["getFullYear", GET_FULL_YEAR],
382
+ ["getYear", GET_YEAR],
383
+ ["getMonth", GET_MONTH],
384
+ ["getDate", GET_DATE],
385
+ ["getDay", GET_DAY],
386
+ ["getHours", GET_HOURS],
387
+ ["getMinutes", GET_MINUTES],
388
+ ["getSeconds", GET_SECONDS],
389
+ ["getMilliseconds", GET_MILLISECONDS],
390
+ ["setFullYear", SET_FULL_YEAR],
391
+ ["setMonth", SET_MONTH],
392
+ ["setDate", SET_DATE],
393
+ ["setHours", SET_HOURS],
394
+ ["setMinutes", SET_MINUTES],
395
+ ["setSeconds", SET_SECONDS],
396
+ ["setMilliseconds", SET_MILLISECONDS],
397
+ ["getTime", GET_TIME],
398
+ ["setTime", SET_TIME],
399
+ ["getTimezoneOffset", GET_TIMEZONE_OFFSET],
400
+ ["toString", TO_STRING],
401
+ ["setYear", SET_YEAR],
402
+ ["getUTCFullYear", UTC_OFFSET + GET_FULL_YEAR],
403
+ ["getUTCYear", UTC_OFFSET + GET_YEAR],
404
+ ["getUTCMonth", UTC_OFFSET + GET_MONTH],
405
+ ["getUTCDate", UTC_OFFSET + GET_DATE],
406
+ ["getUTCDay", UTC_OFFSET + GET_DAY],
407
+ ["getUTCHours", UTC_OFFSET + GET_HOURS],
408
+ ["getUTCMinutes", UTC_OFFSET + GET_MINUTES],
409
+ ["getUTCSeconds", UTC_OFFSET + GET_SECONDS],
410
+ ["getUTCMilliseconds", UTC_OFFSET + GET_MILLISECONDS],
411
+ ["setUTCFullYear", UTC_OFFSET + SET_FULL_YEAR],
412
+ ["setUTCMonth", UTC_OFFSET + SET_MONTH],
413
+ ["setUTCDate", UTC_OFFSET + SET_DATE],
414
+ ["setUTCHours", UTC_OFFSET + SET_HOURS],
415
+ ["setUTCMinutes", UTC_OFFSET + SET_MINUTES],
416
+ ["setUTCSeconds", UTC_OFFSET + SET_SECONDS],
417
+ ["setUTCMilliseconds", UTC_OFFSET + SET_MILLISECONDS],
418
+ ["valueOf", GET_TIME],
419
+ ];
420
+ export function dateClass(realm) {
421
+ const proto = new Avm1Object();
422
+ // Its `prototype` read-only, as Object's and Number's are (adl).
423
+ const constr = realm.classOf(proto, dateNative(CONSTRUCTOR), (_, __, version) => dateString(now(version)), READ_ONLY);
424
+ proto.define("__proto__", realm.objectProto, DONT_ENUM | DONT_DELETE);
425
+ for (const [name, index] of PROTO) {
426
+ proto.define(name, realm.method(dateNative(index)), DONT_ENUM | DONT_DELETE);
427
+ }
428
+ constr.define("UTC", realm.method(dateNative(UTC)), DONT_ENUM | DONT_DELETE | READ_ONLY);
429
+ realm.natives.set(103, (i) => i <= SET_YEAR ||
430
+ i === CONSTRUCTOR ||
431
+ i === UTC ||
432
+ (i >= UTC_OFFSET && i <= UTC_OFFSET + SET_MILLISECONDS)
433
+ ? dateNative(i)
434
+ : null);
435
+ return { constr, proto };
436
+ }