@swf2es/player-hosts 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.third-party +759 -0
  3. package/README.md +43 -2
  4. package/dist/indexeddb.d.ts +27 -0
  5. package/dist/indexeddb.d.ts.map +1 -0
  6. package/dist/indexeddb.js +170 -0
  7. package/dist/indexeddb.js.map +1 -0
  8. package/dist/node-worker.d.ts +2 -0
  9. package/dist/node-worker.d.ts.map +1 -0
  10. package/dist/node-worker.js +12 -0
  11. package/dist/node-worker.js.map +1 -0
  12. package/dist/node.d.ts +8 -0
  13. package/dist/node.d.ts.map +1 -0
  14. package/dist/node.js +43 -0
  15. package/dist/node.js.map +1 -0
  16. package/dist/precompiled.d.ts +31 -0
  17. package/dist/precompiled.d.ts.map +1 -0
  18. package/dist/precompiled.js +125 -0
  19. package/dist/precompiled.js.map +1 -0
  20. package/dist/stage3d.d.ts +13 -0
  21. package/dist/stage3d.d.ts.map +1 -0
  22. package/dist/stage3d.js +61 -0
  23. package/dist/stage3d.js.map +1 -0
  24. package/dist/thread/codegen/codegen.js +308 -0
  25. package/dist/thread/codegen/index.js +405 -0
  26. package/dist/thread/format/abc-names.js +126 -0
  27. package/dist/thread/format/actions.js +222 -0
  28. package/dist/thread/format/air-descriptor.js +63 -0
  29. package/dist/thread/format/api-versions.js +22 -0
  30. package/dist/thread/format/bitmap.js +199 -0
  31. package/dist/thread/format/button.js +60 -0
  32. package/dist/thread/format/compression.js +200 -0
  33. package/dist/thread/format/display.js +305 -0
  34. package/dist/thread/format/filters.js +136 -0
  35. package/dist/thread/format/font.js +168 -0
  36. package/dist/thread/format/index.js +26 -0
  37. package/dist/thread/format/pbj.js +484 -0
  38. package/dist/thread/format/shape.js +411 -0
  39. package/dist/thread/format/sound.js +91 -0
  40. package/dist/thread/format/swf.js +163 -0
  41. package/dist/thread/format/tags.js +58 -0
  42. package/dist/thread/format/text.js +135 -0
  43. package/dist/thread/format/zip.js +91 -0
  44. package/dist/thread/native/audio/binary.js +3 -0
  45. package/dist/thread/native/audio/index.js +72 -0
  46. package/dist/thread/native/base64.js +9 -0
  47. package/dist/thread/native/compress/binary.js +3 -0
  48. package/dist/thread/native/compress/index.js +145 -0
  49. package/dist/thread/native/instance.js +49 -0
  50. package/dist/thread/native/mp3/binary.js +3 -0
  51. package/dist/thread/native/mp3/index.js +48 -0
  52. package/dist/thread/native/render/binary.js +3 -0
  53. package/dist/thread/native/render/bitmap-kernel.js +591 -0
  54. package/dist/thread/native/render/draw-kernel.js +204 -0
  55. package/dist/thread/native/render/dxt-encoder.js +94 -0
  56. package/dist/thread/native/render/index.js +10 -0
  57. package/dist/thread/native/render/lines.js +122 -0
  58. package/dist/thread/native/render/module.js +26 -0
  59. package/dist/thread/native/render/pixel-ops.js +235 -0
  60. package/dist/thread/native/render/tessellator.js +250 -0
  61. package/dist/thread/player/avm1/amf.js +507 -0
  62. package/dist/thread/player/avm1/avm1.js +1304 -0
  63. package/dist/thread/player/avm1/bindings.js +214 -0
  64. package/dist/thread/player/avm1/classes.js +75 -0
  65. package/dist/thread/player/avm1/clips.js +229 -0
  66. package/dist/thread/player/avm1/compile.js +140 -0
  67. package/dist/thread/player/avm1/external.js +79 -0
  68. package/dist/thread/player/avm1/focus.js +278 -0
  69. package/dist/thread/player/avm1/globals/BitmapData.js +542 -0
  70. package/dist/thread/player/avm1/globals/Button.js +31 -0
  71. package/dist/thread/player/avm1/globals/Color.js +115 -0
  72. package/dist/thread/player/avm1/globals/ExternalInterface.js +310 -0
  73. package/dist/thread/player/avm1/globals/FileReference.js +217 -0
  74. package/dist/thread/player/avm1/globals/Key.js +60 -0
  75. package/dist/thread/player/avm1/globals/LoadVars.js +208 -0
  76. package/dist/thread/player/avm1/globals/LocalConnection.js +92 -0
  77. package/dist/thread/player/avm1/globals/MovieClip.js +1070 -0
  78. package/dist/thread/player/avm1/globals/MovieClipLoader.js +90 -0
  79. package/dist/thread/player/avm1/globals/NetConnection.js +261 -0
  80. package/dist/thread/player/avm1/globals/PrintJob.js +37 -0
  81. package/dist/thread/player/avm1/globals/Selection.js +62 -0
  82. package/dist/thread/player/avm1/globals/SharedObject.js +245 -0
  83. package/dist/thread/player/avm1/globals/Sound.js +238 -0
  84. package/dist/thread/player/avm1/globals/Stage.js +12 -0
  85. package/dist/thread/player/avm1/globals/StyleSheet.js +205 -0
  86. package/dist/thread/player/avm1/globals/TextField.js +396 -0
  87. package/dist/thread/player/avm1/globals/TextFormat.js +194 -0
  88. package/dist/thread/player/avm1/globals/TextSnapshot.js +88 -0
  89. package/dist/thread/player/avm1/globals/XML.js +396 -0
  90. package/dist/thread/player/avm1/globals/XMLNode.js +413 -0
  91. package/dist/thread/player/avm1/globals/XMLSocket.js +205 -0
  92. package/dist/thread/player/avm1/globals/drawing.js +202 -0
  93. package/dist/thread/player/avm1/globals/filters.js +635 -0
  94. package/dist/thread/player/avm1/globals/geom.js +600 -0
  95. package/dist/thread/player/avm1/input.js +483 -0
  96. package/dist/thread/player/avm1/keyboard.js +113 -0
  97. package/dist/thread/player/avm1/loads.js +352 -0
  98. package/dist/thread/player/avm1/net.js +219 -0
  99. package/dist/thread/player/avm1/paths.js +104 -0
  100. package/dist/thread/player/avm1/pointer.js +512 -0
  101. package/dist/thread/player/avm1/queue.js +303 -0
  102. package/dist/thread/player/avm1/sound.js +106 -0
  103. package/dist/thread/player/avm1/swf.js +141 -0
  104. package/dist/thread/player/avm1/timers.js +113 -0
  105. package/dist/thread/player/bitmap/bitmap.js +627 -0
  106. package/dist/thread/player/bitmap/draw.js +68 -0
  107. package/dist/thread/player/bitmap/dxt.js +11 -0
  108. package/dist/thread/player/bitmap/filters.js +656 -0
  109. package/dist/thread/player/bitmap/images.js +240 -0
  110. package/dist/thread/player/bitmap/kernel.js +65 -0
  111. package/dist/thread/player/bitmap/ops.js +1239 -0
  112. package/dist/thread/player/bitmap/pixel-bender.js +911 -0
  113. package/dist/thread/player/bitmap/png.js +139 -0
  114. package/dist/thread/player/bitmap/turbulence.js +89 -0
  115. package/dist/thread/player/clock.js +182 -0
  116. package/dist/thread/player/display/bitmapobject.js +25 -0
  117. package/dist/thread/player/display/bounds.js +520 -0
  118. package/dist/thread/player/display/buttonobject.js +305 -0
  119. package/dist/thread/player/display/color.js +40 -0
  120. package/dist/thread/player/display/container.js +150 -0
  121. package/dist/thread/player/display/display.js +14 -0
  122. package/dist/thread/player/display/displayobject.js +664 -0
  123. package/dist/thread/player/display/drawing.js +613 -0
  124. package/dist/thread/player/display/filters.js +285 -0
  125. package/dist/thread/player/display/geometry.js +189 -0
  126. package/dist/thread/player/display/gradients.js +117 -0
  127. package/dist/thread/player/display/graphicsdata.js +592 -0
  128. package/dist/thread/player/display/instantiate.js +71 -0
  129. package/dist/thread/player/display/matrix3d.js +373 -0
  130. package/dist/thread/player/display/morph.js +226 -0
  131. package/dist/thread/player/display/movieclip.js +680 -0
  132. package/dist/thread/player/display/perspective.js +193 -0
  133. package/dist/thread/player/display/scale9.js +236 -0
  134. package/dist/thread/player/display/shapeobject.js +131 -0
  135. package/dist/thread/player/display/shapes.js +407 -0
  136. package/dist/thread/player/display/textobjects.js +222 -0
  137. package/dist/thread/player/display/timeline.js +471 -0
  138. package/dist/thread/player/display/value-lists.js +40 -0
  139. package/dist/thread/player/display/videoobject.js +6 -0
  140. package/dist/thread/player/display/walk.js +127 -0
  141. package/dist/thread/player/files.js +334 -0
  142. package/dist/thread/player/hosts.js +207 -0
  143. package/dist/thread/player/input/avm1.js +82 -0
  144. package/dist/thread/player/input/context-menu.js +63 -0
  145. package/dist/thread/player/input/keyboard.js +458 -0
  146. package/dist/thread/player/input/pointer.js +863 -0
  147. package/dist/thread/player/input/text-editor.js +319 -0
  148. package/dist/thread/player/input/touch.js +209 -0
  149. package/dist/thread/player/localconnection.js +90 -0
  150. package/dist/thread/player/media/audio.js +376 -0
  151. package/dist/thread/player/media/dynamic-sound.js +90 -0
  152. package/dist/thread/player/media/extract.js +135 -0
  153. package/dist/thread/player/media/mp3.js +152 -0
  154. package/dist/thread/player/media/sounds.js +507 -0
  155. package/dist/thread/player/media/streaming-audio.js +133 -0
  156. package/dist/thread/player/player.js +616 -0
  157. package/dist/thread/player/playerglobal/air/net/WebSocket.js +250 -0
  158. package/dist/thread/player/playerglobal/air-library.js +8 -0
  159. package/dist/thread/player/playerglobal/flash/accessibility/Accessibility.js +21 -0
  160. package/dist/thread/player/playerglobal/flash/crypto/generateRandomBytes.js +32 -0
  161. package/dist/thread/player/playerglobal/flash/data/EncryptedLocalStore.js +61 -0
  162. package/dist/thread/player/playerglobal/flash/desktop/Clipboard.js +173 -0
  163. package/dist/thread/player/playerglobal/flash/desktop/NativeApplication.js +179 -0
  164. package/dist/thread/player/playerglobal/flash/display/AVM1Movie.js +19 -0
  165. package/dist/thread/player/playerglobal/flash/display/Bitmap.js +58 -0
  166. package/dist/thread/player/playerglobal/flash/display/BitmapData.js +633 -0
  167. package/dist/thread/player/playerglobal/flash/display/DisplayObject.js +614 -0
  168. package/dist/thread/player/playerglobal/flash/display/DisplayObjectContainer.js +224 -0
  169. package/dist/thread/player/playerglobal/flash/display/Graphics.js +345 -0
  170. package/dist/thread/player/playerglobal/flash/display/InteractiveObject.js +87 -0
  171. package/dist/thread/player/playerglobal/flash/display/Loader.js +79 -0
  172. package/dist/thread/player/playerglobal/flash/display/LoaderInfo.js +128 -0
  173. package/dist/thread/player/playerglobal/flash/display/MovieClip.js +194 -0
  174. package/dist/thread/player/playerglobal/flash/display/NativeWindow.js +245 -0
  175. package/dist/thread/player/playerglobal/flash/display/Shader.js +26 -0
  176. package/dist/thread/player/playerglobal/flash/display/ShaderData.js +85 -0
  177. package/dist/thread/player/playerglobal/flash/display/ShaderInput.js +64 -0
  178. package/dist/thread/player/playerglobal/flash/display/ShaderJob.js +181 -0
  179. package/dist/thread/player/playerglobal/flash/display/ShaderParameter.js +23 -0
  180. package/dist/thread/player/playerglobal/flash/display/Shape.js +13 -0
  181. package/dist/thread/player/playerglobal/flash/display/SimpleButton.js +103 -0
  182. package/dist/thread/player/playerglobal/flash/display/Sprite.js +84 -0
  183. package/dist/thread/player/playerglobal/flash/display/Stage.js +231 -0
  184. package/dist/thread/player/playerglobal/flash/display/Stage3D.js +54 -0
  185. package/dist/thread/player/playerglobal/flash/display/shaders.js +228 -0
  186. package/dist/thread/player/playerglobal/flash/events/Event.js +58 -0
  187. package/dist/thread/player/playerglobal/flash/events/EventDispatcher.js +103 -0
  188. package/dist/thread/player/playerglobal/flash/events/GestureEvent.js +34 -0
  189. package/dist/thread/player/playerglobal/flash/events/HTTPStatusEvent.js +8 -0
  190. package/dist/thread/player/playerglobal/flash/events/KeyboardEvent.js +51 -0
  191. package/dist/thread/player/playerglobal/flash/events/MouseEvent.js +59 -0
  192. package/dist/thread/player/playerglobal/flash/events/PressAndTapGestureEvent.js +30 -0
  193. package/dist/thread/player/playerglobal/flash/events/TimerEvent.js +16 -0
  194. package/dist/thread/player/playerglobal/flash/events/TouchEvent.js +45 -0
  195. package/dist/thread/player/playerglobal/flash/external/ExternalInterface.js +73 -0
  196. package/dist/thread/player/playerglobal/flash/filesystem/File.js +340 -0
  197. package/dist/thread/player/playerglobal/flash/filesystem/FileStream.js +453 -0
  198. package/dist/thread/player/playerglobal/flash/filesystem/paths.js +156 -0
  199. package/dist/thread/player/playerglobal/flash/filesystem/writes.js +143 -0
  200. package/dist/thread/player/playerglobal/flash/filters/BevelFilter.js +4 -0
  201. package/dist/thread/player/playerglobal/flash/filters/BitmapFilter.js +205 -0
  202. package/dist/thread/player/playerglobal/flash/filters/BlurFilter.js +4 -0
  203. package/dist/thread/player/playerglobal/flash/filters/ColorMatrixFilter.js +11 -0
  204. package/dist/thread/player/playerglobal/flash/filters/ConvolutionFilter.js +26 -0
  205. package/dist/thread/player/playerglobal/flash/filters/DisplacementMapFilter.js +51 -0
  206. package/dist/thread/player/playerglobal/flash/filters/DropShadowFilter.js +4 -0
  207. package/dist/thread/player/playerglobal/flash/filters/GlowFilter.js +4 -0
  208. package/dist/thread/player/playerglobal/flash/filters/GradientBevelFilter.js +4 -0
  209. package/dist/thread/player/playerglobal/flash/filters/GradientGlowFilter.js +4 -0
  210. package/dist/thread/player/playerglobal/flash/filters/ShaderFilter.js +53 -0
  211. package/dist/thread/player/playerglobal/flash/geom/Matrix3D.js +361 -0
  212. package/dist/thread/player/playerglobal/flash/geom/PerspectiveProjection.js +122 -0
  213. package/dist/thread/player/playerglobal/flash/geom/Transform.js +245 -0
  214. package/dist/thread/player/playerglobal/flash/geom/Utils3D.js +85 -0
  215. package/dist/thread/player/playerglobal/flash/globalization/Collator.js +149 -0
  216. package/dist/thread/player/playerglobal/flash/globalization/CurrencyFormatter.js +272 -0
  217. package/dist/thread/player/playerglobal/flash/globalization/CurrencyParseResult.js +21 -0
  218. package/dist/thread/player/playerglobal/flash/globalization/DateTimeFormatter.js +463 -0
  219. package/dist/thread/player/playerglobal/flash/globalization/LocaleID.js +144 -0
  220. package/dist/thread/player/playerglobal/flash/globalization/NumberFormatter.js +444 -0
  221. package/dist/thread/player/playerglobal/flash/globalization/NumberParseResult.js +22 -0
  222. package/dist/thread/player/playerglobal/flash/globalization/StringTools.js +59 -0
  223. package/dist/thread/player/playerglobal/flash/globalization/locale.js +190 -0
  224. package/dist/thread/player/playerglobal/flash/media/Camera.js +89 -0
  225. package/dist/thread/player/playerglobal/flash/media/Microphone.js +126 -0
  226. package/dist/thread/player/playerglobal/flash/media/Sound.js +543 -0
  227. package/dist/thread/player/playerglobal/flash/media/SoundMixer.js +74 -0
  228. package/dist/thread/player/playerglobal/flash/media/SoundTransform.js +40 -0
  229. package/dist/thread/player/playerglobal/flash/media/Video.js +43 -0
  230. package/dist/thread/player/playerglobal/flash/net/FileFilter.js +27 -0
  231. package/dist/thread/player/playerglobal/flash/net/FileReference.js +197 -0
  232. package/dist/thread/player/playerglobal/flash/net/LocalConnection.js +167 -0
  233. package/dist/thread/player/playerglobal/flash/net/NetConnection.js +155 -0
  234. package/dist/thread/player/playerglobal/flash/net/SharedObject.js +299 -0
  235. package/dist/thread/player/playerglobal/flash/net/Socket.js +282 -0
  236. package/dist/thread/player/playerglobal/flash/net/URLRequest.js +93 -0
  237. package/dist/thread/player/playerglobal/flash/net/URLStream.js +146 -0
  238. package/dist/thread/player/playerglobal/flash/net/XMLSocket.js +14 -0
  239. package/dist/thread/player/playerglobal/flash/net/local-modern.js +142 -0
  240. package/dist/thread/player/playerglobal/flash/net/local-values.js +217 -0
  241. package/dist/thread/player/playerglobal/flash/net/navigateToURL.js +29 -0
  242. package/dist/thread/player/playerglobal/flash/profiler/Telemetry.js +25 -0
  243. package/dist/thread/player/playerglobal/flash/sensors/Accelerometer.js +12 -0
  244. package/dist/thread/player/playerglobal/flash/system/ApplicationDomain.js +69 -0
  245. package/dist/thread/player/playerglobal/flash/system/Capabilities.js +163 -0
  246. package/dist/thread/player/playerglobal/flash/system/FSCommandHost.js +17 -0
  247. package/dist/thread/player/playerglobal/flash/system/Security.js +46 -0
  248. package/dist/thread/player/playerglobal/flash/system/SecurityDomain.js +21 -0
  249. package/dist/thread/player/playerglobal/flash/system/System.js +73 -0
  250. package/dist/thread/player/playerglobal/flash/system/Worker.js +112 -0
  251. package/dist/thread/player/playerglobal/flash/text/Font.js +95 -0
  252. package/dist/thread/player/playerglobal/flash/text/StaticText.js +16 -0
  253. package/dist/thread/player/playerglobal/flash/text/StyleSheet.js +65 -0
  254. package/dist/thread/player/playerglobal/flash/text/TextField.js +707 -0
  255. package/dist/thread/player/playerglobal/flash/text/TextRenderer.js +77 -0
  256. package/dist/thread/player/playerglobal/flash/text/engine/FontDescription.js +141 -0
  257. package/dist/thread/player/playerglobal/flash/text/engine/TabStop.js +46 -0
  258. package/dist/thread/player/playerglobal/flash/trace/Trace.js +17 -0
  259. package/dist/thread/player/playerglobal/flash/ui/ContextMenu.js +17 -0
  260. package/dist/thread/player/playerglobal/flash/ui/GameInput.js +19 -0
  261. package/dist/thread/player/playerglobal/flash/ui/Keyboard.js +27 -0
  262. package/dist/thread/player/playerglobal/flash/ui/Mouse.js +127 -0
  263. package/dist/thread/player/playerglobal/flash/ui/Multitouch.js +46 -0
  264. package/dist/thread/player/playerglobal/flash/utils/ByteArray.js +155 -0
  265. package/dist/thread/player/playerglobal/flash/utils/Timer.js +25 -0
  266. package/dist/thread/player/playerglobal/flash/xml/XMLDocument.js +74 -0
  267. package/dist/thread/player/playerglobal/index.js +224 -0
  268. package/dist/thread/player/playerglobal/libraries.js +10 -0
  269. package/dist/thread/player/playerglobal/playerglobal-library.js +22 -0
  270. package/dist/thread/player/playerglobal/toplevel.js +122 -0
  271. package/dist/thread/player/scripting/clipboard.js +146 -0
  272. package/dist/thread/player/scripting/code.js +900 -0
  273. package/dist/thread/player/scripting/evaluate.js +144 -0
  274. package/dist/thread/player/scripting/events.js +172 -0
  275. package/dist/thread/player/scripting/handover.js +182 -0
  276. package/dist/thread/player/scripting/lazy.js +38 -0
  277. package/dist/thread/player/scripting/lifecycle.js +272 -0
  278. package/dist/thread/player/scripting/loads.js +860 -0
  279. package/dist/thread/player/scripting/sha256.js +95 -0
  280. package/dist/thread/player/scripting/symbols.js +348 -0
  281. package/dist/thread/player/scripting/timers.js +434 -0
  282. package/dist/thread/player/scripting/workers.js +923 -0
  283. package/dist/thread/player/scripting.js +1018 -0
  284. package/dist/thread/player/stage.js +4 -0
  285. package/dist/thread/player/text/csm.js +113 -0
  286. package/dist/thread/player/text/css.js +167 -0
  287. package/dist/thread/player/text/fonts.js +97 -0
  288. package/dist/thread/player/text/layout.js +393 -0
  289. package/dist/thread/player/text/static.js +109 -0
  290. package/dist/thread/player/text/text.js +431 -0
  291. package/dist/thread/player/workers/thread.js +159 -0
  292. package/dist/thread/player/workers/wire.js +198 -0
  293. package/dist/thread/player-hosts/web-worker.js +19 -0
  294. package/dist/thread/runtime/avm1/activation.js +89 -0
  295. package/dist/thread/runtime/avm1/case.js +249 -0
  296. package/dist/thread/runtime/avm1/clips.js +334 -0
  297. package/dist/thread/runtime/avm1/control.js +280 -0
  298. package/dist/thread/runtime/avm1/errors.js +50 -0
  299. package/dist/thread/runtime/avm1/functions.js +249 -0
  300. package/dist/thread/runtime/avm1/globals/array.js +549 -0
  301. package/dist/thread/runtime/avm1/globals/broadcaster.js +131 -0
  302. package/dist/thread/runtime/avm1/globals/date.js +436 -0
  303. package/dist/thread/runtime/avm1/globals/global.js +344 -0
  304. package/dist/thread/runtime/avm1/globals/math.js +139 -0
  305. package/dist/thread/runtime/avm1/globals/number.js +93 -0
  306. package/dist/thread/runtime/avm1/globals/string.js +201 -0
  307. package/dist/thread/runtime/avm1/globals/timers.js +129 -0
  308. package/dist/thread/runtime/avm1/host.js +5 -0
  309. package/dist/thread/runtime/avm1/index.js +14 -0
  310. package/dist/thread/runtime/avm1/inheritance.js +132 -0
  311. package/dist/thread/runtime/avm1/numbers.js +298 -0
  312. package/dist/thread/runtime/avm1/objects.js +896 -0
  313. package/dist/thread/runtime/avm1/operators.js +170 -0
  314. package/dist/thread/runtime/avm1/realm.js +529 -0
  315. package/dist/thread/runtime/avm1/runtime.js +882 -0
  316. package/dist/thread/runtime/avm1/scope.js +385 -0
  317. package/dist/thread/runtime/avm1/urls.js +180 -0
  318. package/dist/thread/runtime/avm1/values.js +97 -0
  319. package/dist/thread/runtime/avm2/amf-classes.js +66 -0
  320. package/dist/thread/runtime/avm2/amf.js +801 -0
  321. package/dist/thread/runtime/avm2/array-conversion.js +100 -0
  322. package/dist/thread/runtime/avm2/builtin-library.js +21 -0
  323. package/dist/thread/runtime/avm2/cache-fill.js +86 -0
  324. package/dist/thread/runtime/avm2/classes.js +211 -0
  325. package/dist/thread/runtime/avm2/definitions.js +69 -0
  326. package/dist/thread/runtime/avm2/descriptors.js +5 -0
  327. package/dist/thread/runtime/avm2/dictionary-keys.js +295 -0
  328. package/dist/thread/runtime/avm2/domain-memory.js +75 -0
  329. package/dist/thread/runtime/avm2/domain.js +280 -0
  330. package/dist/thread/runtime/avm2/dynamic-properties.js +182 -0
  331. package/dist/thread/runtime/avm2/enumeration.js +393 -0
  332. package/dist/thread/runtime/avm2/errors.js +45 -0
  333. package/dist/thread/runtime/avm2/float-library.js +66 -0
  334. package/dist/thread/runtime/avm2/float.js +26 -0
  335. package/dist/thread/runtime/avm2/hooks.js +19 -0
  336. package/dist/thread/runtime/avm2/index.js +38 -0
  337. package/dist/thread/runtime/avm2/messages.js +177 -0
  338. package/dist/thread/runtime/avm2/method-factories.js +95 -0
  339. package/dist/thread/runtime/avm2/modules.js +105 -0
  340. package/dist/thread/runtime/avm2/names.js +248 -0
  341. package/dist/thread/runtime/avm2/natives/aliases.js +47 -0
  342. package/dist/thread/runtime/avm2/natives/array.js +390 -0
  343. package/dist/thread/runtime/avm2/natives/bytearray.js +1227 -0
  344. package/dist/thread/runtime/avm2/natives/case.js +88 -0
  345. package/dist/thread/runtime/avm2/natives/concurrent.js +199 -0
  346. package/dist/thread/runtime/avm2/natives/date.js +581 -0
  347. package/dist/thread/runtime/avm2/natives/define.js +130 -0
  348. package/dist/thread/runtime/avm2/natives/describe.js +351 -0
  349. package/dist/thread/runtime/avm2/natives/dictionary.js +12 -0
  350. package/dist/thread/runtime/avm2/natives/float-vector.js +81 -0
  351. package/dist/thread/runtime/avm2/natives/float.js +96 -0
  352. package/dist/thread/runtime/avm2/natives/index.js +64 -0
  353. package/dist/thread/runtime/avm2/natives/json.js +514 -0
  354. package/dist/thread/runtime/avm2/natives/number.js +162 -0
  355. package/dist/thread/runtime/avm2/natives/object.js +237 -0
  356. package/dist/thread/runtime/avm2/natives/proxy.js +75 -0
  357. package/dist/thread/runtime/avm2/natives/regexp.js +485 -0
  358. package/dist/thread/runtime/avm2/natives/shell-workers.js +404 -0
  359. package/dist/thread/runtime/avm2/natives/shell.js +557 -0
  360. package/dist/thread/runtime/avm2/natives/sort.js +377 -0
  361. package/dist/thread/runtime/avm2/natives/string.js +132 -0
  362. package/dist/thread/runtime/avm2/natives/sync.js +821 -0
  363. package/dist/thread/runtime/avm2/natives/toplevel.js +139 -0
  364. package/dist/thread/runtime/avm2/natives/vector-elements.js +46 -0
  365. package/dist/thread/runtime/avm2/natives/vector.js +406 -0
  366. package/dist/thread/runtime/avm2/natives/xml/access.js +633 -0
  367. package/dist/thread/runtime/avm2/natives/xml/build.js +291 -0
  368. package/dist/thread/runtime/avm2/natives/xml/chars.js +112 -0
  369. package/dist/thread/runtime/avm2/natives/xml/escape.js +38 -0
  370. package/dist/thread/runtime/avm2/natives/xml/names.js +204 -0
  371. package/dist/thread/runtime/avm2/natives/xml/node.js +272 -0
  372. package/dist/thread/runtime/avm2/natives/xml/operators.js +69 -0
  373. package/dist/thread/runtime/avm2/natives/xml/parser.js +356 -0
  374. package/dist/thread/runtime/avm2/natives/xml/strings.js +191 -0
  375. package/dist/thread/runtime/avm2/natives/xml/values.js +122 -0
  376. package/dist/thread/runtime/avm2/natives/xml/xml.js +645 -0
  377. package/dist/thread/runtime/avm2/number-strings.js +110 -0
  378. package/dist/thread/runtime/avm2/numbers.js +558 -0
  379. package/dist/thread/runtime/avm2/options.js +16 -0
  380. package/dist/thread/runtime/avm2/player-messages.js +550 -0
  381. package/dist/thread/runtime/avm2/property-cache.js +135 -0
  382. package/dist/thread/runtime/avm2/runtime.js +2644 -0
  383. package/dist/thread/runtime/avm2/traits.js +509 -0
  384. package/dist/thread/runtime/index.js +7 -0
  385. package/dist/web-worker.d.ts +2 -0
  386. package/dist/web-worker.d.ts.map +1 -0
  387. package/dist/web-worker.js +20 -0
  388. package/dist/web-worker.js.map +1 -0
  389. package/dist/websocket.d.ts +4 -0
  390. package/dist/websocket.d.ts.map +1 -0
  391. package/dist/websocket.js +27 -0
  392. package/dist/websocket.js.map +1 -0
  393. package/dist/workers.d.ts +35 -0
  394. package/dist/workers.d.ts.map +1 -0
  395. package/dist/workers.js +171 -0
  396. package/dist/workers.js.map +1 -0
  397. package/package.json +62 -3
  398. package/src/indexeddb.ts +227 -0
  399. package/src/node-worker.ts +13 -0
  400. package/src/node.ts +49 -0
  401. package/src/precompiled.ts +166 -0
  402. package/src/stage3d.ts +76 -0
  403. package/src/web-worker.ts +24 -0
  404. package/src/websocket.ts +32 -0
  405. package/src/workers.ts +255 -0
@@ -0,0 +1,291 @@
1
+ // E4X's trees made from values: text parsed (by parser.ts) into nodes with
2
+ // their namespaces, the conversions ToXML and ToXMLList, and deep copies.
3
+ //
4
+ // Translated from avmplus' core/XMLObject.cpp, XMLListObject.cpp and E4X's
5
+ // parts of Toplevel.cpp and AvmCore.cpp, this file is subject to the
6
+ // Mozilla Public License, v. 2.0: http://mozilla.org/MPL/2.0/.
7
+ import { prefixedNamespace, prefixOf, publicNs } from "../../names.js";
8
+ import { isSpace } from "./chars.js";
9
+ import { hasPrefix, newPrefixedNamespace } from "./names.js";
10
+ import { ATTRIBUTE, CDATA, COMMENT, ELEMENT, matches, PROCESSING_INSTRUCTION, TEXT, XMLNode, } from "./node.js";
11
+ import * as P from "./parser.js";
12
+ import { ANY, append, appendNode, BAD_QNAME, DUPLICATE_ATTRIBUTE, e4x, fixTarget, isList, isXML, MARKUP_MUST_BE_WELL_FORMED, newList, PARSE_ERRORS, PREFIX_NOT_BOUND, UNTERMINATED_ELEMENT_TAG, XML_1998, xmlOf, } from "./values.js";
13
+ // Parsing.
14
+ /**
15
+ * As the XMLObject constructor: `text` parsed, as the children of an
16
+ * element for `defaultNs`, as E4X parses <parent xmlns=uri>text</parent>.
17
+ */
18
+ function parse(rt, text, defaultNs) {
19
+ const e = e4x(rt);
20
+ const parser = new P.XMLParser(text);
21
+ parser.parse(e.ignoreWhitespace);
22
+ parser.setCondenseWhite(true);
23
+ const root = new XMLNode(ELEMENT);
24
+ const ns = prefixedNamespace("", defaultNs.uri ?? "");
25
+ root.addInScopeNamespace(ns);
26
+ root.setName("parent", ns);
27
+ let p = root;
28
+ const tag = new P.XMLTag();
29
+ for (;;) {
30
+ const status = parser.getNext(tag);
31
+ if (status === P.END) {
32
+ break;
33
+ }
34
+ if (status !== P.OK) {
35
+ throw rt.error("TypeError", PARSE_ERRORS[status]);
36
+ }
37
+ let node = null;
38
+ switch (tag.type) {
39
+ case P.TAG_ELEMENT:
40
+ if (tag.text.charCodeAt(0) === 0x2f) {
41
+ // A closing tag: its element's, else not well formed.
42
+ const parentName = p.name;
43
+ const pns = p.ns;
44
+ const name = tag.text.slice(1);
45
+ if (!nodeNameEquals(name, parentName, pns) &&
46
+ !(parentName === name && pns.uri === rt.defaultXmlNamespace.uri)) {
47
+ if (p === root) {
48
+ throw rt.error("TypeError", MARKUP_MUST_BE_WELL_FORMED);
49
+ }
50
+ throw rt.error("TypeError", UNTERMINATED_ELEMENT_TAG, parentName, parentName);
51
+ }
52
+ if (p === root) {
53
+ throw rt.error("TypeError", MARKUP_MUST_BE_WELL_FORMED);
54
+ }
55
+ p = p.parent;
56
+ }
57
+ else {
58
+ const element = new XMLNode(ELEMENT);
59
+ p.append(element);
60
+ if (!tag.empty) {
61
+ p = element;
62
+ }
63
+ copyAttributesAndNamespaces(rt, element, tag);
64
+ const [ns, local] = findNamespace(rt, element, tag.text, false);
65
+ element.setName(local, ns ?? publicNs);
66
+ }
67
+ break;
68
+ case P.TAG_COMMENT:
69
+ if (!e.ignoreComments) {
70
+ node = new XMLNode(COMMENT, tag.text);
71
+ }
72
+ break;
73
+ case P.TAG_CDATA:
74
+ node = new XMLNode(CDATA, tag.text);
75
+ break;
76
+ case P.TAG_TEXT:
77
+ node = new XMLNode(TEXT, tag.text);
78
+ break;
79
+ case P.TAG_PROCESSING_INSTRUCTION:
80
+ if (!e.ignoreProcessingInstructions) {
81
+ const s = tag.text;
82
+ let space = s.indexOf(" ");
83
+ let name = s;
84
+ let value = "";
85
+ if (space >= 0) {
86
+ name = s.slice(0, space);
87
+ while (isSpace(s.charCodeAt(++space))) { }
88
+ value = s.slice(space);
89
+ }
90
+ node = new XMLNode(PROCESSING_INSTRUCTION, value);
91
+ node.setName(name, publicNs);
92
+ }
93
+ break;
94
+ }
95
+ if (node) {
96
+ p.append(node);
97
+ }
98
+ }
99
+ if (p !== root) {
100
+ throw rt.error("TypeError", UNTERMINATED_ELEMENT_TAG, p.name, p.name);
101
+ }
102
+ return root;
103
+ }
104
+ /** As NodeNameEquals: whether a closing tag's name is its element's, with the prefix it has. */
105
+ function nodeNameEquals(name, parentName, ns) {
106
+ if (hasPrefix(ns)) {
107
+ return name === `${prefixOf(ns)}:${parentName}`;
108
+ }
109
+ return name === parentName;
110
+ }
111
+ /**
112
+ * As FindNamespace: a tag's name's namespace, by its prefix among those in
113
+ * scope, and its local name. An attribute without a prefix has none.
114
+ */
115
+ function findNamespace(rt, node, tagName, attribute) {
116
+ const pos = tagName.indexOf(":");
117
+ if (pos === 0) {
118
+ throw rt.error("TypeError", BAD_QNAME, tagName);
119
+ }
120
+ let prefix = "";
121
+ let local = tagName;
122
+ if (pos > 0) {
123
+ prefix = tagName.slice(0, pos);
124
+ local = tagName.slice(pos + 1);
125
+ }
126
+ if (attribute && prefix === "") {
127
+ return [null, local];
128
+ }
129
+ for (let y = node; y; y = y.parent) {
130
+ for (const ns of y.namespaces) {
131
+ if ((prefix === "" && !hasPrefix(ns)) || prefixOf(ns) === prefix) {
132
+ return [ns, local];
133
+ }
134
+ }
135
+ }
136
+ if (prefix === "xml") {
137
+ return [prefixedNamespace("", XML_1998), local];
138
+ }
139
+ if (prefix !== "") {
140
+ throw rt.error("TypeError", PREFIX_NOT_BOUND, prefix, local);
141
+ }
142
+ return [null, local];
143
+ }
144
+ /** Whether an attribute's name is xmlns, or starts with xmlns: (either case). */
145
+ function isXmlns(name) {
146
+ return (name.length >= 5 &&
147
+ name.slice(0, 5).toLowerCase() === "xmlns" &&
148
+ (name.length === 5 || name[5] === ":"));
149
+ }
150
+ /**
151
+ * As CopyAttributesAndNamespaces: a tag's namespace declarations first,
152
+ * as an attribute can be in a namespace declared after it, then its
153
+ * attributes; a second of one name is TypeError 1104.
154
+ */
155
+ function copyAttributesAndNamespaces(rt, element, tag) {
156
+ const attributes = tag.attributes;
157
+ let count = 0;
158
+ for (let i = 0; i < attributes.length; i += 2) {
159
+ const name = attributes[i];
160
+ let ns = null;
161
+ if (isXmlns(name)) {
162
+ if (name.length > 5) {
163
+ if (name.length === 6) {
164
+ throw rt.error("TypeError", BAD_QNAME, name);
165
+ }
166
+ ns = newPrefixedNamespace(rt, name.slice(6), attributes[i + 1]);
167
+ }
168
+ else {
169
+ ns = newPrefixedNamespace(rt, "", attributes[i + 1]);
170
+ }
171
+ if (ns) {
172
+ element.addInScopeNamespace(ns);
173
+ }
174
+ }
175
+ if (!ns) {
176
+ count++;
177
+ }
178
+ }
179
+ if (!count) {
180
+ return;
181
+ }
182
+ for (let i = 0; i < attributes.length; i += 2) {
183
+ if (isXmlns(attributes[i])) {
184
+ continue;
185
+ }
186
+ const attribute = new XMLNode(ATTRIBUTE, attributes[i + 1]);
187
+ attribute.parent = element;
188
+ const [ns, local] = findNamespace(rt, element, attributes[i], true);
189
+ attribute.setName(local, ns ?? publicNs);
190
+ for (const other of element.attributes) {
191
+ if (matches(other.xname(), attribute)) {
192
+ throw rt.error("TypeError", DUPLICATE_ATTRIBUTE, local, tag.text, tag.text.length);
193
+ }
194
+ }
195
+ element.attributes.push(attribute);
196
+ }
197
+ }
198
+ // Conversions.
199
+ /** As ToXML: XML itself, a one-item XMLList's, or text parsed as one node. */
200
+ export function toXML(rt, v) {
201
+ if (v === null || v === undefined) {
202
+ throw rt.error("TypeError", v === undefined ? 1010 : 1009);
203
+ }
204
+ if (isXML(v)) {
205
+ return v;
206
+ }
207
+ if (isList(v)) {
208
+ if (v.$nodes.length === 1) {
209
+ return xmlOf(rt, v.$nodes[0]);
210
+ }
211
+ throw rt.error("TypeError", MARKUP_MUST_BE_WELL_FORMED);
212
+ }
213
+ const root = parse(rt, rt.toString(v), rt.defaultXmlNamespace);
214
+ const children = root.children;
215
+ let node;
216
+ if (!children.length) {
217
+ node = new XMLNode(TEXT, "");
218
+ }
219
+ else if (children.length === 1) {
220
+ node = children[0];
221
+ }
222
+ else {
223
+ // One element, with comments, processing instructions and whitespace around it.
224
+ let element = null;
225
+ for (const n of children) {
226
+ if (n.kind === ELEMENT) {
227
+ if (element) {
228
+ throw rt.error("TypeError", MARKUP_MUST_BE_WELL_FORMED);
229
+ }
230
+ element = n;
231
+ }
232
+ else if (n.kind === TEXT && !isWhitespace(n.value)) {
233
+ throw rt.error("TypeError", MARKUP_MUST_BE_WELL_FORMED);
234
+ }
235
+ }
236
+ if (!element) {
237
+ throw rt.error("TypeError", MARKUP_MUST_BE_WELL_FORMED);
238
+ }
239
+ node = element;
240
+ }
241
+ node.parent = null;
242
+ return xmlOf(rt, node);
243
+ }
244
+ /** As ToXMLList: an XMLList itself, XML as a list of it, or text parsed as nodes. */
245
+ export function toXMLList(rt, v) {
246
+ if (v === null || v === undefined) {
247
+ throw rt.error("TypeError", v === undefined ? 1010 : 1009);
248
+ }
249
+ if (isList(v)) {
250
+ return v;
251
+ }
252
+ if (isXML(v)) {
253
+ const node = v.$node;
254
+ const list = newList(rt, node.parent ? xmlOf(rt, node.parent) : null, node.xname() ?? ANY);
255
+ append(list, v);
256
+ return list;
257
+ }
258
+ let s = rt.toString(v);
259
+ if (s.startsWith("<>") && s.endsWith("</>")) {
260
+ s = s.slice(2, s.length - 3);
261
+ }
262
+ const dxns = rt.defaultXmlNamespace;
263
+ const root = parse(rt, s, dxns);
264
+ const list = newList(rt);
265
+ for (const c of root.children) {
266
+ c.parent = null;
267
+ c.addInScopeNamespace(dxns);
268
+ appendNode(list, c);
269
+ }
270
+ return list;
271
+ }
272
+ export function isWhitespace(s) {
273
+ for (let i = 0; i < s.length; i++) {
274
+ if (!isSpace(s.charCodeAt(i))) {
275
+ return false;
276
+ }
277
+ }
278
+ return true;
279
+ }
280
+ export function deepCopy(rt, node) {
281
+ const e = e4x(rt);
282
+ return node.deepCopy(e.ignoreComments, e.ignoreProcessingInstructions);
283
+ }
284
+ export function listDeepCopy(rt, list) {
285
+ fixTarget(rt, list);
286
+ const copy = newList(rt, list.$target, list.$targetProperty);
287
+ for (const node of list.$nodes) {
288
+ copy.$nodes.push(deepCopy(rt, node));
289
+ }
290
+ return copy;
291
+ }
@@ -0,0 +1,112 @@
1
+ // The character classes of XML 1.0 (appendix B) that E4X names are made
2
+ // of, as avmplus' AvmCore tables them: each a list of inclusive ranges.
3
+ // Its isXMLName, which E4X uses for prefixes and names.
4
+ //
5
+ // Translated from avmplus' core/AvmCore.cpp, this file is subject to the
6
+ // Mozilla Public License, v. 2.0: http://mozilla.org/MPL/2.0/.
7
+ const LETTER = new Uint16Array([
8
+ 0x0041, 0x005a, 0x0061, 0x007a, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x00ff, 0x0100, 0x0131,
9
+ 0x0134, 0x013e, 0x0141, 0x0148, 0x014a, 0x017e, 0x0180, 0x01c3, 0x01cd, 0x01f0, 0x01f4, 0x01f5,
10
+ 0x01fa, 0x0217, 0x0250, 0x02a8, 0x02bb, 0x02c1, 0x0386, 0x0386, 0x0388, 0x038a, 0x038c, 0x038c,
11
+ 0x038e, 0x03a1, 0x03a3, 0x03ce, 0x03d0, 0x03d6, 0x03da, 0x03da, 0x03dc, 0x03dc, 0x03de, 0x03de,
12
+ 0x03e0, 0x03e0, 0x03e2, 0x03f3, 0x0401, 0x040c, 0x040e, 0x044f, 0x0451, 0x045c, 0x045e, 0x0481,
13
+ 0x0490, 0x04c4, 0x04c7, 0x04c8, 0x04cb, 0x04cc, 0x04d0, 0x04eb, 0x04ee, 0x04f5, 0x04f8, 0x04f9,
14
+ 0x0531, 0x0556, 0x0559, 0x0559, 0x0561, 0x0586, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0621, 0x063a,
15
+ 0x0641, 0x064a, 0x0671, 0x06b7, 0x06ba, 0x06be, 0x06c0, 0x06ce, 0x06d0, 0x06d3, 0x06d5, 0x06d5,
16
+ 0x06e5, 0x06e6, 0x0905, 0x0939, 0x093d, 0x093d, 0x0958, 0x0961, 0x0985, 0x098c, 0x098f, 0x0990,
17
+ 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09dc, 0x09dd, 0x09df, 0x09e1,
18
+ 0x09f0, 0x09f1, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, 0x0a2a, 0x0a30, 0x0a32, 0x0a33,
19
+ 0x0a35, 0x0a36, 0x0a38, 0x0a39, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a72, 0x0a74, 0x0a85, 0x0a8b,
20
+ 0x0a8d, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9,
21
+ 0x0abd, 0x0abd, 0x0ae0, 0x0ae0, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30,
22
+ 0x0b32, 0x0b33, 0x0b36, 0x0b39, 0x0b3d, 0x0b3d, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b61, 0x0b85, 0x0b8a,
23
+ 0x0b8e, 0x0b90, 0x0b92, 0x0b95, 0x0b99, 0x0b9a, 0x0b9c, 0x0b9c, 0x0b9e, 0x0b9f, 0x0ba3, 0x0ba4,
24
+ 0x0ba8, 0x0baa, 0x0bae, 0x0bb5, 0x0bb7, 0x0bb9, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28,
25
+ 0x0c2a, 0x0c33, 0x0c35, 0x0c39, 0x0c60, 0x0c61, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8,
26
+ 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cde, 0x0cde, 0x0ce0, 0x0ce1, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10,
27
+ 0x0d12, 0x0d28, 0x0d2a, 0x0d39, 0x0d60, 0x0d61, 0x0e01, 0x0e2e, 0x0e30, 0x0e30, 0x0e32, 0x0e33,
28
+ 0x0e40, 0x0e45, 0x0e81, 0x0e82, 0x0e84, 0x0e84, 0x0e87, 0x0e88, 0x0e8a, 0x0e8a, 0x0e8d, 0x0e8d,
29
+ 0x0e94, 0x0e97, 0x0e99, 0x0e9f, 0x0ea1, 0x0ea3, 0x0ea5, 0x0ea5, 0x0ea7, 0x0ea7, 0x0eaa, 0x0eab,
30
+ 0x0ead, 0x0eae, 0x0eb0, 0x0eb0, 0x0eb2, 0x0eb3, 0x0ebd, 0x0ebd, 0x0ec0, 0x0ec4, 0x0f40, 0x0f47,
31
+ 0x0f49, 0x0f69, 0x10a0, 0x10c5, 0x10d0, 0x10f6, 0x1100, 0x1100, 0x1102, 0x1103, 0x1105, 0x1107,
32
+ 0x1109, 0x1109, 0x110b, 0x110c, 0x110e, 0x1112, 0x113c, 0x113c, 0x113e, 0x113e, 0x1140, 0x1140,
33
+ 0x114c, 0x114c, 0x114e, 0x114e, 0x1150, 0x1150, 0x1154, 0x1155, 0x1159, 0x1159, 0x115f, 0x1161,
34
+ 0x1163, 0x1163, 0x1165, 0x1165, 0x1167, 0x1167, 0x1169, 0x1169, 0x116d, 0x116e, 0x1172, 0x1173,
35
+ 0x1175, 0x1175, 0x119e, 0x119e, 0x11a8, 0x11a8, 0x11ab, 0x11ab, 0x11ae, 0x11af, 0x11b7, 0x11b8,
36
+ 0x11ba, 0x11ba, 0x11bc, 0x11c2, 0x11eb, 0x11eb, 0x11f0, 0x11f0, 0x11f9, 0x11f9, 0x1e00, 0x1e9b,
37
+ 0x1ea0, 0x1ef9, 0x1f00, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, 0x1f50, 0x1f57,
38
+ 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, 0x1fb6, 0x1fbc,
39
+ 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, 0x1fc6, 0x1fcc, 0x1fd0, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fe0, 0x1fec,
40
+ 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffc, 0x2126, 0x2126, 0x212a, 0x212b, 0x212e, 0x212e, 0x2180, 0x2182,
41
+ 0x3041, 0x3094, 0x30a1, 0x30fa, 0x3105, 0x312c, 0xac00, 0xd7a3, 0x4e00, 0x9fa5, 0x3007, 0x3007,
42
+ 0x3021, 0x3029,
43
+ ]);
44
+ const COMBINING = new Uint16Array([
45
+ 0x0300, 0x0345, 0x0360, 0x0361, 0x0483, 0x0486, 0x0591, 0x05a1, 0x05a3, 0x05b9, 0x05bb, 0x05bd,
46
+ 0x05bf, 0x05bf, 0x05c1, 0x05c2, 0x05c4, 0x05c4, 0x064b, 0x0652, 0x0670, 0x0670, 0x06d6, 0x06dc,
47
+ 0x06dd, 0x06df, 0x06e0, 0x06e4, 0x06e7, 0x06e8, 0x06ea, 0x06ed, 0x0901, 0x0903, 0x093c, 0x093c,
48
+ 0x093e, 0x094c, 0x094d, 0x094d, 0x0951, 0x0954, 0x0962, 0x0963, 0x0981, 0x0983, 0x09bc, 0x09bc,
49
+ 0x09be, 0x09be, 0x09bf, 0x09bf, 0x09c0, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cd, 0x09d7, 0x09d7,
50
+ 0x09e2, 0x09e3, 0x0a02, 0x0a02, 0x0a3c, 0x0a3c, 0x0a3e, 0x0a3e, 0x0a3f, 0x0a3f, 0x0a40, 0x0a42,
51
+ 0x0a47, 0x0a48, 0x0a4b, 0x0a4d, 0x0a70, 0x0a71, 0x0a81, 0x0a83, 0x0abc, 0x0abc, 0x0abe, 0x0ac5,
52
+ 0x0ac7, 0x0ac9, 0x0acb, 0x0acd, 0x0b01, 0x0b03, 0x0b3c, 0x0b3c, 0x0b3e, 0x0b43, 0x0b47, 0x0b48,
53
+ 0x0b4b, 0x0b4d, 0x0b56, 0x0b57, 0x0b82, 0x0b83, 0x0bbe, 0x0bc2, 0x0bc6, 0x0bc8, 0x0bca, 0x0bcd,
54
+ 0x0bd7, 0x0bd7, 0x0c01, 0x0c03, 0x0c3e, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4d, 0x0c55, 0x0c56,
55
+ 0x0c82, 0x0c83, 0x0cbe, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccd, 0x0cd5, 0x0cd6, 0x0d02, 0x0d03,
56
+ 0x0d3e, 0x0d43, 0x0d46, 0x0d48, 0x0d4a, 0x0d4d, 0x0d57, 0x0d57, 0x0e31, 0x0e31, 0x0e34, 0x0e3a,
57
+ 0x0e47, 0x0e4e, 0x0eb1, 0x0eb1, 0x0eb4, 0x0eb9, 0x0ebb, 0x0ebc, 0x0ec8, 0x0ecd, 0x0f18, 0x0f19,
58
+ 0x0f35, 0x0f35, 0x0f37, 0x0f37, 0x0f39, 0x0f39, 0x0f3e, 0x0f3e, 0x0f3f, 0x0f3f, 0x0f71, 0x0f84,
59
+ 0x0f86, 0x0f8b, 0x0f90, 0x0f95, 0x0f97, 0x0f97, 0x0f99, 0x0fad, 0x0fb1, 0x0fb7, 0x0fb9, 0x0fb9,
60
+ 0x20d0, 0x20dc, 0x20e1, 0x20e1, 0x302a, 0x302f, 0x3099, 0x3099, 0x309a, 0x309a,
61
+ ]);
62
+ const DIGIT = new Uint16Array([
63
+ 0x0030, 0x0039, 0x0660, 0x0669, 0x06f0, 0x06f9, 0x0966, 0x096f, 0x09e6, 0x09ef, 0x0a66, 0x0a6f,
64
+ 0x0ae6, 0x0aef, 0x0b66, 0x0b6f, 0x0be7, 0x0bef, 0x0c66, 0x0c6f, 0x0ce6, 0x0cef, 0x0d66, 0x0d6f,
65
+ 0x0e50, 0x0e59, 0x0ed0, 0x0ed9, 0x0f20, 0x0f29,
66
+ ]);
67
+ const EXTENDER = new Uint16Array([
68
+ 0x00b7, 0x00b7, 0x02d0, 0x02d0, 0x02d1, 0x02d1, 0x0387, 0x0387, 0x0640, 0x0640, 0x0e46, 0x0e46,
69
+ 0x0ec6, 0x0ec6, 0x3005, 0x3005, 0x3031, 0x3035, 0x309d, 0x309e, 0x30fc, 0x30fe,
70
+ ]);
71
+ /** Whether `c` is in one of `table`'s ranges. */
72
+ function inTable(table, c) {
73
+ for (let i = 0; i < table.length; i += 2) {
74
+ if (c >= table[i] && c <= table[i + 1]) {
75
+ return true;
76
+ }
77
+ }
78
+ return false;
79
+ }
80
+ const isLetter = (c) => inTable(LETTER, c);
81
+ /**
82
+ * As AvmCore::isXMLName: a letter or _, then letters, digits, ., -, _,
83
+ * combining characters and extenders. E4X excludes ':', as Mozilla's tests
84
+ * have it.
85
+ */
86
+ export function isXMLName(s) {
87
+ if (!s.length) {
88
+ return false;
89
+ }
90
+ const first = s.charCodeAt(0);
91
+ if (!isLetter(first) && first !== 0x5f) {
92
+ return false;
93
+ }
94
+ for (let i = 1; i < s.length; i++) {
95
+ const c = s.charCodeAt(i);
96
+ if (inTable(DIGIT, c) ||
97
+ isLetter(c) ||
98
+ c === 0x2e ||
99
+ c === 0x2d ||
100
+ c === 0x5f ||
101
+ inTable(COMBINING, c) ||
102
+ inTable(EXTENDER, c)) {
103
+ continue;
104
+ }
105
+ return false;
106
+ }
107
+ return true;
108
+ }
109
+ /** As String::isSpace: space, tab, LF and CR, the XML whitespace. */
110
+ export function isSpace(c) {
111
+ return c === 0x20 || c === 0x09 || c === 0x0a || c === 0x0d;
112
+ }
@@ -0,0 +1,38 @@
1
+ // How E4X writes text as XML: an element's text and an attribute's value
2
+ // escaped, as esc_xelem and esc_xattr and XML's own toXMLString write them.
3
+ const XML_ELEMENT = {
4
+ "&": "&amp;",
5
+ "<": "&lt;",
6
+ ">": "&gt;",
7
+ "\0": "&#x0;",
8
+ };
9
+ const XML_ATTRIBUTE = {
10
+ "&": "&amp;",
11
+ "<": "&lt;",
12
+ '"': "&quot;",
13
+ "\n": "&#xA;",
14
+ "\r": "&#xD;",
15
+ "\t": "&#x9;",
16
+ "\0": "&#x0;",
17
+ };
18
+ /** As AvmCore::EscapeElementValue: & < > escaped, and without whitespace around it if `trim`. */
19
+ export function escapeElementValue(s, trim) {
20
+ let t = s;
21
+ if (trim) {
22
+ let start = 0;
23
+ let end = s.length;
24
+ while (end > 0 && isXMLSpace(s.charCodeAt(end - 1))) {
25
+ end--;
26
+ }
27
+ while (start < end && isXMLSpace(s.charCodeAt(start))) {
28
+ start++;
29
+ }
30
+ t = s.slice(start, end);
31
+ }
32
+ return t.replace(/[&<>\0]/g, (c) => XML_ELEMENT[c]);
33
+ }
34
+ /** As AvmCore::EscapeAttributeValue. */
35
+ export function escapeAttributeValue(s) {
36
+ return s.replace(/[&<"\n\r\t\0]/g, (c) => XML_ATTRIBUTE[c]);
37
+ }
38
+ const isXMLSpace = (c) => c === 0x20 || c === 0x09 || c === 0x0a || c === 0x0d;
@@ -0,0 +1,204 @@
1
+ // E4X's names: property names coerced to XML names, and the Namespaces
2
+ // and QNames E4X makes and compares.
3
+ //
4
+ // Translated from avmplus' core/XMLObject.cpp, XMLListObject.cpp and E4X's
5
+ // parts of Toplevel.cpp and AvmCore.cpp, this file is subject to the
6
+ // Mozilla Public License, v. 2.0: http://mozilla.org/MPL/2.0/.
7
+ import { CONSTANT_Qname, CONSTANT_QnameA, Namespace, NS_Public, namespace, prefixedNamespace, prefixOf, publicNs, } from "../../names.js";
8
+ import { isXMLName } from "./chars.js";
9
+ import { ATTRIBUTE, ELEMENT, matches } from "./node.js";
10
+ import { ANY, e4x, NAMESPACE_WITH_PREFIX_AND_NO_URI } from "./values.js";
11
+ // Names.
12
+ /** As String::parseIndex: a name's index, or -1. */
13
+ export function parseIndex(name) {
14
+ const c = name.charCodeAt(0);
15
+ if (!(c >= 0x30 && c <= 0x39)) {
16
+ return -1;
17
+ }
18
+ const i = Number(name);
19
+ return i >>> 0 === i && i !== 0xffffffff && String(i) === name ? i : -1;
20
+ }
21
+ /** An index name: not any name, nor an attribute's. */
22
+ export const indexOf = (n) => n.attribute || n.local === null ? -1 : parseIndex(n.local);
23
+ /** Whether `ns` is `other`, prefix, URI and kind, as CoerceE4XMultiname compares them. */
24
+ const sameNamespace = (ns, other) => ns !== null && ns.uri === other.uri && ns.kind === other.kind && prefixOf(ns) === prefixOf(other);
25
+ /**
26
+ * As CoerceE4XMultiname: an unqualified name in the default XML namespace
27
+ * too, and a name of "*" or starting with "@" as any name or an
28
+ * attribute's.
29
+ */
30
+ export function coerce(rt, n) {
31
+ let namespaces = n.namespaces;
32
+ if (!n.qualified && namespaces !== null) {
33
+ const dxns = rt.defaultXmlNamespace;
34
+ if (!namespaces.some((ns) => sameNamespace(ns, dxns))) {
35
+ namespaces = [...namespaces, dxns];
36
+ }
37
+ }
38
+ let local = n.local;
39
+ let attribute = n.attribute;
40
+ if (local === "*") {
41
+ local = null;
42
+ }
43
+ else if (local !== null && local.charCodeAt(0) === 0x40 && !attribute) {
44
+ local = local === "@*" ? null : local.slice(1);
45
+ attribute = true;
46
+ }
47
+ if (namespaces === n.namespaces && local === n.local && attribute === n.attribute) {
48
+ return n;
49
+ }
50
+ return { local, namespaces, attribute, qualified: n.qualified };
51
+ }
52
+ /** A property's multiname as E4X names: a Qname is qualified, its namespace null for any. */
53
+ export function fromMultiname(mn) {
54
+ const qualified = mn.kind === CONSTANT_Qname || mn.kind === CONSTANT_QnameA;
55
+ const all = mn.namespaces;
56
+ let namespaces;
57
+ if (qualified) {
58
+ namespaces = all[0] ? [all[0]] : null;
59
+ }
60
+ else {
61
+ namespaces = all.some((ns) => ns === null) ? null : all;
62
+ }
63
+ return { local: mn.name, namespaces, attribute: mn.attribute, qualified };
64
+ }
65
+ /**
66
+ * As ToXMLName: a name for a method's argument, as XML's child() takes
67
+ * one. A QName is its local name, in a namespace of its URI; anything else
68
+ * is its string, in the public namespace: "@name" an attribute's, "*" any.
69
+ */
70
+ export function toXMLName(rt, p) {
71
+ if (p === null || p === undefined) {
72
+ throw rt.error("TypeError", 1010);
73
+ }
74
+ let s;
75
+ if (p instanceof Namespace) {
76
+ s = p.uri ?? "";
77
+ }
78
+ else if (p.$local !== undefined) {
79
+ // avmplus makes the namespace of the URI's string: "null" for any.
80
+ return {
81
+ local: p.$local,
82
+ namespaces: [namespace(NS_Public, p.$ns ? p.$ns.uri : "null")],
83
+ attribute: p.$attr === true,
84
+ qualified: false,
85
+ };
86
+ }
87
+ else {
88
+ s = rt.toString(p);
89
+ }
90
+ let local = s;
91
+ let attribute = false;
92
+ if (s.charCodeAt(0) === 0x40) {
93
+ local = s.slice(1);
94
+ attribute = true;
95
+ }
96
+ if (local === "*") {
97
+ local = null;
98
+ }
99
+ return { local, namespaces: [publicNs], attribute, qualified: false };
100
+ }
101
+ /** As ToAttributeName and then ToXMLName: an attribute's name for XML's attribute(). */
102
+ export function toAttributeName(rt, v) {
103
+ if (v === null || v === undefined || typeof v === "number" || typeof v === "boolean") {
104
+ throw rt.error("TypeError", 1010);
105
+ }
106
+ if (typeof v === "object" && !(v instanceof Namespace) && v.$local !== undefined) {
107
+ return { ...toXMLName(rt, v), attribute: true };
108
+ }
109
+ const s = v instanceof Namespace ? (v.uri ?? "") : rt.toString(v);
110
+ const uri = s === "*" ? "null" : rt.defaultXmlNamespace.uri;
111
+ return {
112
+ local: s === "*" ? null : s,
113
+ namespaces: [namespace(NS_Public, uri)],
114
+ attribute: true,
115
+ qualified: false,
116
+ };
117
+ }
118
+ /** Whether `n` names child `child`: only an element has a name to match. */
119
+ export const matchesChild = (n, child) => matches(n, child.kind === ELEMENT ? child : null);
120
+ // Namespaces and QNames.
121
+ /** As AvmCore::newNamespace(uri): a Namespace's own, a QName's URI's, or of a string. */
122
+ export function newNamespace(rt, uri) {
123
+ if (uri instanceof Namespace) {
124
+ return uri;
125
+ }
126
+ if (typeof uri === "object" && uri !== null && uri.$local !== undefined && uri.$ns) {
127
+ return namespace(NS_Public, uri.$ns.uri);
128
+ }
129
+ return namespace(NS_Public, rt.toString(uri));
130
+ }
131
+ /**
132
+ * As AvmCore::newNamespace(prefix, uri): a namespace with a prefix, none
133
+ * if it is not an XML name, or null for a prefix of the empty URI.
134
+ */
135
+ export function newPrefixedNamespace(rt, prefix, uri) {
136
+ const u = typeof uri === "object" && uri !== null && uri.$local !== undefined && uri.$ns
137
+ ? uri.$ns.uri
138
+ : rt.toString(uri);
139
+ if (u === "") {
140
+ return prefix === undefined || rt.toString(prefix) === "" ? publicNs : null;
141
+ }
142
+ if (prefix === undefined) {
143
+ return namespace(NS_Public, u);
144
+ }
145
+ const p = rt.toString(prefix);
146
+ if (p !== "" && !isXMLName(p)) {
147
+ return namespace(NS_Public, u);
148
+ }
149
+ return prefixedNamespace(p, u);
150
+ }
151
+ /** As NamespaceClass::construct: Namespace(), Namespace(uri) or Namespace(prefix, uri). */
152
+ export function constructNamespace(rt, args) {
153
+ if (args.length === 0) {
154
+ return publicNs;
155
+ }
156
+ if (args.length === 1) {
157
+ return newNamespace(rt, args[0]);
158
+ }
159
+ const p = rt.toString(args[0]);
160
+ if (p.length && !rt.toString(args[1]).length) {
161
+ throw rt.error("TypeError", NAMESPACE_WITH_PREFIX_AND_NO_URI, p);
162
+ }
163
+ return newPrefixedNamespace(rt, args[0], args[1]) ?? publicNs;
164
+ }
165
+ /** A QName object of a node's name, as XML's name() gives it. */
166
+ export function qnameOf(rt, node) {
167
+ const q = e4x(rt).qname.instance();
168
+ q.$ns = node.ns;
169
+ q.$local = node.name;
170
+ q.$attr = node.kind === ATTRIBUTE;
171
+ return q;
172
+ }
173
+ /**
174
+ * As QNameObject(name), with no namespace: a QName's name, else any name
175
+ * in any namespace for "*", or the name in the default XML namespace.
176
+ */
177
+ export function qnameName(rt, name) {
178
+ if (typeof name === "object" && name !== null && name.$local !== undefined) {
179
+ return {
180
+ local: name.$local,
181
+ namespaces: name.$ns ? [name.$ns] : null,
182
+ attribute: name.$attr === true,
183
+ qualified: name.$ns !== null,
184
+ };
185
+ }
186
+ const s = name === undefined ? "" : rt.toString(name);
187
+ if (s === "*") {
188
+ return ANY;
189
+ }
190
+ return { local: s, namespaces: [rt.defaultXmlNamespace], attribute: false, qualified: true };
191
+ }
192
+ /** As GetNamespace: the namespace of `ns`'s URI among `list`, else one of its URI. */
193
+ export function getNamespace(ns, list) {
194
+ for (const ns2 of list) {
195
+ if (ns2.uri === ns.uri) {
196
+ return ns2;
197
+ }
198
+ }
199
+ return namespace(NS_Public, ns.uri);
200
+ }
201
+ export const hasPrefix = (ns) => {
202
+ const p = prefixOf(ns);
203
+ return p !== undefined && p !== "";
204
+ };