@swf2es/runtime 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 (459) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.third-party +422 -0
  3. package/README.md +29 -2
  4. package/dist/avm1/activation.d.ts +108 -0
  5. package/dist/avm1/activation.d.ts.map +1 -0
  6. package/dist/avm1/activation.js +90 -0
  7. package/dist/avm1/activation.js.map +1 -0
  8. package/dist/avm1/case.d.ts +3 -0
  9. package/dist/avm1/case.d.ts.map +1 -0
  10. package/dist/avm1/case.js +250 -0
  11. package/dist/avm1/case.js.map +1 -0
  12. package/dist/avm1/clips.d.ts +68 -0
  13. package/dist/avm1/clips.d.ts.map +1 -0
  14. package/dist/avm1/clips.js +335 -0
  15. package/dist/avm1/clips.js.map +1 -0
  16. package/dist/avm1/control.d.ts +54 -0
  17. package/dist/avm1/control.d.ts.map +1 -0
  18. package/dist/avm1/control.js +281 -0
  19. package/dist/avm1/control.js.map +1 -0
  20. package/dist/avm1/errors.d.ts +49 -0
  21. package/dist/avm1/errors.d.ts.map +1 -0
  22. package/dist/avm1/errors.js +51 -0
  23. package/dist/avm1/errors.js.map +1 -0
  24. package/dist/avm1/functions.d.ts +94 -0
  25. package/dist/avm1/functions.d.ts.map +1 -0
  26. package/dist/avm1/functions.js +250 -0
  27. package/dist/avm1/functions.js.map +1 -0
  28. package/dist/avm1/globals/array.d.ts +8 -0
  29. package/dist/avm1/globals/array.d.ts.map +1 -0
  30. package/dist/avm1/globals/array.js +550 -0
  31. package/dist/avm1/globals/array.js.map +1 -0
  32. package/dist/avm1/globals/broadcaster.d.ts +22 -0
  33. package/dist/avm1/globals/broadcaster.d.ts.map +1 -0
  34. package/dist/avm1/globals/broadcaster.js +132 -0
  35. package/dist/avm1/globals/broadcaster.js.map +1 -0
  36. package/dist/avm1/globals/date.d.ts +10 -0
  37. package/dist/avm1/globals/date.d.ts.map +1 -0
  38. package/dist/avm1/globals/date.js +437 -0
  39. package/dist/avm1/globals/date.js.map +1 -0
  40. package/dist/avm1/globals/global.d.ts +23 -0
  41. package/dist/avm1/globals/global.d.ts.map +1 -0
  42. package/dist/avm1/globals/global.js +345 -0
  43. package/dist/avm1/globals/global.js.map +1 -0
  44. package/dist/avm1/globals/math.d.ts +7 -0
  45. package/dist/avm1/globals/math.d.ts.map +1 -0
  46. package/dist/avm1/globals/math.js +140 -0
  47. package/dist/avm1/globals/math.js.map +1 -0
  48. package/dist/avm1/globals/number.d.ts +11 -0
  49. package/dist/avm1/globals/number.d.ts.map +1 -0
  50. package/dist/avm1/globals/number.js +94 -0
  51. package/dist/avm1/globals/number.js.map +1 -0
  52. package/dist/avm1/globals/string.d.ts +8 -0
  53. package/dist/avm1/globals/string.d.ts.map +1 -0
  54. package/dist/avm1/globals/string.js +202 -0
  55. package/dist/avm1/globals/string.js.map +1 -0
  56. package/dist/avm1/globals/timers.d.ts +49 -0
  57. package/dist/avm1/globals/timers.d.ts.map +1 -0
  58. package/dist/avm1/globals/timers.js +130 -0
  59. package/dist/avm1/globals/timers.js.map +1 -0
  60. package/dist/avm1/host.d.ts +146 -0
  61. package/dist/avm1/host.d.ts.map +1 -0
  62. package/dist/avm1/host.js +6 -0
  63. package/dist/avm1/host.js.map +1 -0
  64. package/dist/avm1/index.d.ts +15 -0
  65. package/dist/avm1/index.d.ts.map +1 -0
  66. package/dist/avm1/index.js +15 -0
  67. package/dist/avm1/index.js.map +1 -0
  68. package/dist/avm1/inheritance.d.ts +25 -0
  69. package/dist/avm1/inheritance.d.ts.map +1 -0
  70. package/dist/avm1/inheritance.js +133 -0
  71. package/dist/avm1/inheritance.js.map +1 -0
  72. package/dist/avm1/numbers.d.ts +21 -0
  73. package/dist/avm1/numbers.d.ts.map +1 -0
  74. package/dist/avm1/numbers.js +299 -0
  75. package/dist/avm1/numbers.js.map +1 -0
  76. package/dist/avm1/objects.d.ts +245 -0
  77. package/dist/avm1/objects.d.ts.map +1 -0
  78. package/dist/avm1/objects.js +897 -0
  79. package/dist/avm1/objects.js.map +1 -0
  80. package/dist/avm1/operators.d.ts +45 -0
  81. package/dist/avm1/operators.d.ts.map +1 -0
  82. package/dist/avm1/operators.js +171 -0
  83. package/dist/avm1/operators.js.map +1 -0
  84. package/dist/avm1/realm.d.ts +126 -0
  85. package/dist/avm1/realm.d.ts.map +1 -0
  86. package/dist/avm1/realm.js +530 -0
  87. package/dist/avm1/realm.js.map +1 -0
  88. package/dist/avm1/runtime.d.ts +294 -0
  89. package/dist/avm1/runtime.d.ts.map +1 -0
  90. package/dist/avm1/runtime.js +883 -0
  91. package/dist/avm1/runtime.js.map +1 -0
  92. package/dist/avm1/scope.d.ts +77 -0
  93. package/dist/avm1/scope.d.ts.map +1 -0
  94. package/dist/avm1/scope.js +386 -0
  95. package/dist/avm1/scope.js.map +1 -0
  96. package/dist/avm1/urls.d.ts +25 -0
  97. package/dist/avm1/urls.d.ts.map +1 -0
  98. package/dist/avm1/urls.js +181 -0
  99. package/dist/avm1/urls.js.map +1 -0
  100. package/dist/avm1/values.d.ts +52 -0
  101. package/dist/avm1/values.d.ts.map +1 -0
  102. package/dist/avm1/values.js +98 -0
  103. package/dist/avm1/values.js.map +1 -0
  104. package/dist/avm2/amf-classes.d.ts +28 -0
  105. package/dist/avm2/amf-classes.d.ts.map +1 -0
  106. package/dist/avm2/amf-classes.js +67 -0
  107. package/dist/avm2/amf-classes.js.map +1 -0
  108. package/dist/avm2/amf.d.ts +96 -0
  109. package/dist/avm2/amf.d.ts.map +1 -0
  110. package/dist/avm2/amf.js +802 -0
  111. package/dist/avm2/amf.js.map +1 -0
  112. package/dist/avm2/array-conversion.d.ts +31 -0
  113. package/dist/avm2/array-conversion.d.ts.map +1 -0
  114. package/dist/avm2/array-conversion.js +101 -0
  115. package/dist/avm2/array-conversion.js.map +1 -0
  116. package/dist/avm2/builtin-library.d.ts +2 -0
  117. package/dist/avm2/builtin-library.d.ts.map +1 -0
  118. package/dist/avm2/builtin-library.js +22 -0
  119. package/dist/avm2/builtin-library.js.map +1 -0
  120. package/dist/avm2/cache-fill.d.ts +14 -0
  121. package/dist/avm2/cache-fill.d.ts.map +1 -0
  122. package/dist/avm2/cache-fill.js +87 -0
  123. package/dist/avm2/cache-fill.js.map +1 -0
  124. package/dist/avm2/classes.d.ts +17 -0
  125. package/dist/avm2/classes.d.ts.map +1 -0
  126. package/dist/avm2/classes.js +212 -0
  127. package/dist/avm2/classes.js.map +1 -0
  128. package/dist/avm2/definitions.d.ts +28 -0
  129. package/dist/avm2/definitions.d.ts.map +1 -0
  130. package/dist/avm2/definitions.js +70 -0
  131. package/dist/avm2/definitions.js.map +1 -0
  132. package/dist/avm2/descriptors.d.ts +118 -0
  133. package/dist/avm2/descriptors.d.ts.map +1 -0
  134. package/dist/avm2/descriptors.js +6 -0
  135. package/dist/avm2/descriptors.js.map +1 -0
  136. package/dist/avm2/dictionary-keys.d.ts +73 -0
  137. package/dist/avm2/dictionary-keys.d.ts.map +1 -0
  138. package/dist/avm2/dictionary-keys.js +296 -0
  139. package/dist/avm2/dictionary-keys.js.map +1 -0
  140. package/dist/avm2/domain-memory.d.ts +23 -0
  141. package/dist/avm2/domain-memory.d.ts.map +1 -0
  142. package/dist/avm2/domain-memory.js +76 -0
  143. package/dist/avm2/domain-memory.js.map +1 -0
  144. package/dist/avm2/domain.d.ts +108 -0
  145. package/dist/avm2/domain.d.ts.map +1 -0
  146. package/dist/avm2/domain.js +281 -0
  147. package/dist/avm2/domain.js.map +1 -0
  148. package/dist/avm2/dynamic-properties.d.ts +62 -0
  149. package/dist/avm2/dynamic-properties.d.ts.map +1 -0
  150. package/dist/avm2/dynamic-properties.js +183 -0
  151. package/dist/avm2/dynamic-properties.js.map +1 -0
  152. package/dist/avm2/enumeration.d.ts +75 -0
  153. package/dist/avm2/enumeration.d.ts.map +1 -0
  154. package/dist/avm2/enumeration.js +394 -0
  155. package/dist/avm2/enumeration.js.map +1 -0
  156. package/dist/avm2/errors.d.ts +20 -0
  157. package/dist/avm2/errors.d.ts.map +1 -0
  158. package/dist/avm2/errors.js +46 -0
  159. package/dist/avm2/errors.js.map +1 -0
  160. package/dist/avm2/float-library.d.ts +2 -0
  161. package/dist/avm2/float-library.d.ts.map +1 -0
  162. package/dist/avm2/float-library.js +67 -0
  163. package/dist/avm2/float-library.js.map +1 -0
  164. package/dist/avm2/float.d.ts +9 -0
  165. package/dist/avm2/float.d.ts.map +1 -0
  166. package/dist/avm2/float.js +27 -0
  167. package/dist/avm2/float.js.map +1 -0
  168. package/dist/avm2/hooks.d.ts +77 -0
  169. package/dist/avm2/hooks.d.ts.map +1 -0
  170. package/dist/avm2/hooks.js +20 -0
  171. package/dist/avm2/hooks.js.map +1 -0
  172. package/dist/avm2/index.d.ts +32 -0
  173. package/dist/avm2/index.d.ts.map +1 -0
  174. package/dist/avm2/index.js +39 -0
  175. package/dist/avm2/index.js.map +1 -0
  176. package/dist/avm2/messages.d.ts +2 -0
  177. package/dist/avm2/messages.d.ts.map +1 -0
  178. package/dist/avm2/messages.js +178 -0
  179. package/dist/avm2/messages.js.map +1 -0
  180. package/dist/avm2/method-factories.d.ts +35 -0
  181. package/dist/avm2/method-factories.d.ts.map +1 -0
  182. package/dist/avm2/method-factories.js +96 -0
  183. package/dist/avm2/method-factories.js.map +1 -0
  184. package/dist/avm2/modules.d.ts +40 -0
  185. package/dist/avm2/modules.d.ts.map +1 -0
  186. package/dist/avm2/modules.js +106 -0
  187. package/dist/avm2/modules.js.map +1 -0
  188. package/dist/avm2/names.d.ts +143 -0
  189. package/dist/avm2/names.d.ts.map +1 -0
  190. package/dist/avm2/names.js +249 -0
  191. package/dist/avm2/names.js.map +1 -0
  192. package/dist/avm2/natives/aliases.d.ts +3 -0
  193. package/dist/avm2/natives/aliases.d.ts.map +1 -0
  194. package/dist/avm2/natives/aliases.js +48 -0
  195. package/dist/avm2/natives/aliases.js.map +1 -0
  196. package/dist/avm2/natives/array.d.ts +5 -0
  197. package/dist/avm2/natives/array.d.ts.map +1 -0
  198. package/dist/avm2/natives/array.js +391 -0
  199. package/dist/avm2/natives/array.js.map +1 -0
  200. package/dist/avm2/natives/bytearray.d.ts +180 -0
  201. package/dist/avm2/natives/bytearray.d.ts.map +1 -0
  202. package/dist/avm2/natives/bytearray.js +1228 -0
  203. package/dist/avm2/natives/bytearray.js.map +1 -0
  204. package/dist/avm2/natives/case.d.ts +5 -0
  205. package/dist/avm2/natives/case.d.ts.map +1 -0
  206. package/dist/avm2/natives/case.js +89 -0
  207. package/dist/avm2/natives/case.js.map +1 -0
  208. package/dist/avm2/natives/concurrent.d.ts +24 -0
  209. package/dist/avm2/natives/concurrent.d.ts.map +1 -0
  210. package/dist/avm2/natives/concurrent.js +200 -0
  211. package/dist/avm2/natives/concurrent.js.map +1 -0
  212. package/dist/avm2/natives/date.d.ts +5 -0
  213. package/dist/avm2/natives/date.d.ts.map +1 -0
  214. package/dist/avm2/natives/date.js +582 -0
  215. package/dist/avm2/natives/date.js.map +1 -0
  216. package/dist/avm2/natives/define.d.ts +58 -0
  217. package/dist/avm2/natives/define.d.ts.map +1 -0
  218. package/dist/avm2/natives/define.js +131 -0
  219. package/dist/avm2/natives/define.js.map +1 -0
  220. package/dist/avm2/natives/describe.d.ts +3 -0
  221. package/dist/avm2/natives/describe.d.ts.map +1 -0
  222. package/dist/avm2/natives/describe.js +352 -0
  223. package/dist/avm2/natives/describe.js.map +1 -0
  224. package/dist/avm2/natives/dictionary.d.ts +3 -0
  225. package/dist/avm2/natives/dictionary.d.ts.map +1 -0
  226. package/dist/avm2/natives/dictionary.js +13 -0
  227. package/dist/avm2/natives/dictionary.js.map +1 -0
  228. package/dist/avm2/natives/float-vector.d.ts +20 -0
  229. package/dist/avm2/natives/float-vector.d.ts.map +1 -0
  230. package/dist/avm2/natives/float-vector.js +82 -0
  231. package/dist/avm2/natives/float-vector.js.map +1 -0
  232. package/dist/avm2/natives/float.d.ts +5 -0
  233. package/dist/avm2/natives/float.d.ts.map +1 -0
  234. package/dist/avm2/natives/float.js +97 -0
  235. package/dist/avm2/natives/float.js.map +1 -0
  236. package/dist/avm2/natives/index.d.ts +7 -0
  237. package/dist/avm2/natives/index.d.ts.map +1 -0
  238. package/dist/avm2/natives/index.js +65 -0
  239. package/dist/avm2/natives/index.js.map +1 -0
  240. package/dist/avm2/natives/json.d.ts +3 -0
  241. package/dist/avm2/natives/json.d.ts.map +1 -0
  242. package/dist/avm2/natives/json.js +515 -0
  243. package/dist/avm2/natives/json.js.map +1 -0
  244. package/dist/avm2/natives/number.d.ts +15 -0
  245. package/dist/avm2/natives/number.d.ts.map +1 -0
  246. package/dist/avm2/natives/number.js +163 -0
  247. package/dist/avm2/natives/number.js.map +1 -0
  248. package/dist/avm2/natives/object.d.ts +8 -0
  249. package/dist/avm2/natives/object.d.ts.map +1 -0
  250. package/dist/avm2/natives/object.js +238 -0
  251. package/dist/avm2/natives/object.js.map +1 -0
  252. package/dist/avm2/natives/proxy.d.ts +5 -0
  253. package/dist/avm2/natives/proxy.d.ts.map +1 -0
  254. package/dist/avm2/natives/proxy.js +76 -0
  255. package/dist/avm2/natives/proxy.js.map +1 -0
  256. package/dist/avm2/natives/regexp.d.ts +21 -0
  257. package/dist/avm2/natives/regexp.d.ts.map +1 -0
  258. package/dist/avm2/natives/regexp.js +486 -0
  259. package/dist/avm2/natives/regexp.js.map +1 -0
  260. package/dist/avm2/natives/shell-workers.d.ts +140 -0
  261. package/dist/avm2/natives/shell-workers.d.ts.map +1 -0
  262. package/dist/avm2/natives/shell-workers.js +405 -0
  263. package/dist/avm2/natives/shell-workers.js.map +1 -0
  264. package/dist/avm2/natives/shell.d.ts +12 -0
  265. package/dist/avm2/natives/shell.d.ts.map +1 -0
  266. package/dist/avm2/natives/shell.js +558 -0
  267. package/dist/avm2/natives/shell.js.map +1 -0
  268. package/dist/avm2/natives/sort.d.ts +7 -0
  269. package/dist/avm2/natives/sort.d.ts.map +1 -0
  270. package/dist/avm2/natives/sort.js +378 -0
  271. package/dist/avm2/natives/sort.js.map +1 -0
  272. package/dist/avm2/natives/string.d.ts +5 -0
  273. package/dist/avm2/natives/string.d.ts.map +1 -0
  274. package/dist/avm2/natives/string.js +133 -0
  275. package/dist/avm2/natives/string.js.map +1 -0
  276. package/dist/avm2/natives/sync.d.ts +215 -0
  277. package/dist/avm2/natives/sync.d.ts.map +1 -0
  278. package/dist/avm2/natives/sync.js +822 -0
  279. package/dist/avm2/natives/sync.js.map +1 -0
  280. package/dist/avm2/natives/toplevel.d.ts +5 -0
  281. package/dist/avm2/natives/toplevel.d.ts.map +1 -0
  282. package/dist/avm2/natives/toplevel.js +140 -0
  283. package/dist/avm2/natives/toplevel.js.map +1 -0
  284. package/dist/avm2/natives/vector-elements.d.ts +10 -0
  285. package/dist/avm2/natives/vector-elements.d.ts.map +1 -0
  286. package/dist/avm2/natives/vector-elements.js +47 -0
  287. package/dist/avm2/natives/vector-elements.js.map +1 -0
  288. package/dist/avm2/natives/vector.d.ts +5 -0
  289. package/dist/avm2/natives/vector.d.ts.map +1 -0
  290. package/dist/avm2/natives/vector.js +407 -0
  291. package/dist/avm2/natives/vector.js.map +1 -0
  292. package/dist/avm2/natives/xml/access.d.ts +34 -0
  293. package/dist/avm2/natives/xml/access.d.ts.map +1 -0
  294. package/dist/avm2/natives/xml/access.js +634 -0
  295. package/dist/avm2/natives/xml/access.js.map +1 -0
  296. package/dist/avm2/natives/xml/build.d.ts +11 -0
  297. package/dist/avm2/natives/xml/build.d.ts.map +1 -0
  298. package/dist/avm2/natives/xml/build.js +292 -0
  299. package/dist/avm2/natives/xml/build.js.map +1 -0
  300. package/dist/avm2/natives/xml/chars.d.ts +9 -0
  301. package/dist/avm2/natives/xml/chars.d.ts.map +1 -0
  302. package/dist/avm2/natives/xml/chars.js +113 -0
  303. package/dist/avm2/natives/xml/chars.js.map +1 -0
  304. package/dist/avm2/natives/xml/escape.d.ts +5 -0
  305. package/dist/avm2/natives/xml/escape.d.ts.map +1 -0
  306. package/dist/avm2/natives/xml/escape.js +39 -0
  307. package/dist/avm2/natives/xml/escape.js.map +1 -0
  308. package/dist/avm2/natives/xml/names.d.ts +46 -0
  309. package/dist/avm2/natives/xml/names.d.ts.map +1 -0
  310. package/dist/avm2/natives/xml/names.js +205 -0
  311. package/dist/avm2/natives/xml/names.js.map +1 -0
  312. package/dist/avm2/natives/xml/node.d.ts +94 -0
  313. package/dist/avm2/natives/xml/node.d.ts.map +1 -0
  314. package/dist/avm2/natives/xml/node.js +273 -0
  315. package/dist/avm2/natives/xml/node.js.map +1 -0
  316. package/dist/avm2/natives/xml/operators.d.ts +7 -0
  317. package/dist/avm2/natives/xml/operators.d.ts.map +1 -0
  318. package/dist/avm2/natives/xml/operators.js +70 -0
  319. package/dist/avm2/natives/xml/operators.js.map +1 -0
  320. package/dist/avm2/natives/xml/parser.d.ts +51 -0
  321. package/dist/avm2/natives/xml/parser.d.ts.map +1 -0
  322. package/dist/avm2/natives/xml/parser.js +357 -0
  323. package/dist/avm2/natives/xml/parser.js.map +1 -0
  324. package/dist/avm2/natives/xml/strings.d.ts +10 -0
  325. package/dist/avm2/natives/xml/strings.d.ts.map +1 -0
  326. package/dist/avm2/natives/xml/strings.js +192 -0
  327. package/dist/avm2/natives/xml/strings.js.map +1 -0
  328. package/dist/avm2/natives/xml/values.d.ts +48 -0
  329. package/dist/avm2/natives/xml/values.d.ts.map +1 -0
  330. package/dist/avm2/natives/xml/values.js +123 -0
  331. package/dist/avm2/natives/xml/values.js.map +1 -0
  332. package/dist/avm2/natives/xml/xml.d.ts +5 -0
  333. package/dist/avm2/natives/xml/xml.d.ts.map +1 -0
  334. package/dist/avm2/natives/xml/xml.js +646 -0
  335. package/dist/avm2/natives/xml/xml.js.map +1 -0
  336. package/dist/avm2/number-strings.d.ts +28 -0
  337. package/dist/avm2/number-strings.d.ts.map +1 -0
  338. package/dist/avm2/number-strings.js +111 -0
  339. package/dist/avm2/number-strings.js.map +1 -0
  340. package/dist/avm2/numbers.d.ts +12 -0
  341. package/dist/avm2/numbers.d.ts.map +1 -0
  342. package/dist/avm2/numbers.js +559 -0
  343. package/dist/avm2/numbers.js.map +1 -0
  344. package/dist/avm2/options.d.ts +105 -0
  345. package/dist/avm2/options.d.ts.map +1 -0
  346. package/dist/avm2/options.js +17 -0
  347. package/dist/avm2/options.js.map +1 -0
  348. package/dist/avm2/player-messages.d.ts +3 -0
  349. package/dist/avm2/player-messages.d.ts.map +1 -0
  350. package/dist/avm2/player-messages.js +551 -0
  351. package/dist/avm2/player-messages.js.map +1 -0
  352. package/dist/avm2/property-cache.d.ts +61 -0
  353. package/dist/avm2/property-cache.d.ts.map +1 -0
  354. package/dist/avm2/property-cache.js +136 -0
  355. package/dist/avm2/property-cache.js.map +1 -0
  356. package/dist/avm2/runtime.d.ts +588 -0
  357. package/dist/avm2/runtime.d.ts.map +1 -0
  358. package/dist/avm2/runtime.js +2645 -0
  359. package/dist/avm2/runtime.js.map +1 -0
  360. package/dist/avm2/traits.d.ts +233 -0
  361. package/dist/avm2/traits.d.ts.map +1 -0
  362. package/dist/avm2/traits.js +510 -0
  363. package/dist/avm2/traits.js.map +1 -0
  364. package/dist/index.d.ts +8 -0
  365. package/dist/index.d.ts.map +1 -0
  366. package/dist/index.js +8 -0
  367. package/dist/index.js.map +1 -0
  368. package/package.json +43 -3
  369. package/src/avm1/activation.ts +114 -0
  370. package/src/avm1/case.ts +257 -0
  371. package/src/avm1/clips.ts +440 -0
  372. package/src/avm1/control.ts +339 -0
  373. package/src/avm1/errors.ts +60 -0
  374. package/src/avm1/functions.ts +271 -0
  375. package/src/avm1/globals/array.ts +676 -0
  376. package/src/avm1/globals/broadcaster.ts +185 -0
  377. package/src/avm1/globals/date.ts +548 -0
  378. package/src/avm1/globals/global.ts +420 -0
  379. package/src/avm1/globals/math.ts +152 -0
  380. package/src/avm1/globals/number.ts +122 -0
  381. package/src/avm1/globals/string.ts +254 -0
  382. package/src/avm1/globals/timers.ts +144 -0
  383. package/src/avm1/host.ts +155 -0
  384. package/src/avm1/index.ts +69 -0
  385. package/src/avm1/inheritance.ts +159 -0
  386. package/src/avm1/numbers.ts +348 -0
  387. package/src/avm1/objects.ts +1080 -0
  388. package/src/avm1/operators.ts +229 -0
  389. package/src/avm1/realm.ts +704 -0
  390. package/src/avm1/runtime.ts +1291 -0
  391. package/src/avm1/scope.ts +482 -0
  392. package/src/avm1/urls.ts +226 -0
  393. package/src/avm1/values.ts +145 -0
  394. package/src/avm2/amf-classes.ts +80 -0
  395. package/src/avm2/amf.ts +913 -0
  396. package/src/avm2/array-conversion.ts +117 -0
  397. package/src/avm2/builtin-library.ts +28 -0
  398. package/src/avm2/cache-fill.ts +124 -0
  399. package/src/avm2/classes.ts +235 -0
  400. package/src/avm2/definitions.ts +93 -0
  401. package/src/avm2/descriptors.ts +137 -0
  402. package/src/avm2/dictionary-keys.ts +345 -0
  403. package/src/avm2/domain-memory.ts +95 -0
  404. package/src/avm2/domain.ts +335 -0
  405. package/src/avm2/dynamic-properties.ts +209 -0
  406. package/src/avm2/enumeration.ts +506 -0
  407. package/src/avm2/errors.ts +54 -0
  408. package/src/avm2/float-library.ts +66 -0
  409. package/src/avm2/float.ts +31 -0
  410. package/src/avm2/hooks.ts +97 -0
  411. package/src/avm2/index.ts +84 -0
  412. package/src/avm2/messages.ts +178 -0
  413. package/src/avm2/method-factories.ts +130 -0
  414. package/src/avm2/modules.ts +120 -0
  415. package/src/avm2/names.ts +292 -0
  416. package/src/avm2/natives/aliases.ts +59 -0
  417. package/src/avm2/natives/array.ts +482 -0
  418. package/src/avm2/natives/bytearray.ts +1474 -0
  419. package/src/avm2/natives/case.ts +98 -0
  420. package/src/avm2/natives/concurrent.ts +268 -0
  421. package/src/avm2/natives/date.ts +678 -0
  422. package/src/avm2/natives/define.ts +176 -0
  423. package/src/avm2/natives/describe.ts +426 -0
  424. package/src/avm2/natives/dictionary.ts +18 -0
  425. package/src/avm2/natives/float-vector.ts +99 -0
  426. package/src/avm2/natives/float.ts +116 -0
  427. package/src/avm2/natives/index.ts +70 -0
  428. package/src/avm2/natives/json.ts +600 -0
  429. package/src/avm2/natives/number.ts +194 -0
  430. package/src/avm2/natives/object.ts +272 -0
  431. package/src/avm2/natives/proxy.ts +98 -0
  432. package/src/avm2/natives/regexp.ts +580 -0
  433. package/src/avm2/natives/shell-workers.ts +474 -0
  434. package/src/avm2/natives/shell.ts +707 -0
  435. package/src/avm2/natives/sort.ts +438 -0
  436. package/src/avm2/natives/string.ts +158 -0
  437. package/src/avm2/natives/sync.ts +964 -0
  438. package/src/avm2/natives/toplevel.ts +163 -0
  439. package/src/avm2/natives/vector-elements.ts +61 -0
  440. package/src/avm2/natives/vector.ts +511 -0
  441. package/src/avm2/natives/xml/access.ts +767 -0
  442. package/src/avm2/natives/xml/build.ts +381 -0
  443. package/src/avm2/natives/xml/chars.ts +127 -0
  444. package/src/avm2/natives/xml/escape.ts +46 -0
  445. package/src/avm2/natives/xml/names.ts +256 -0
  446. package/src/avm2/natives/xml/node.ts +339 -0
  447. package/src/avm2/natives/xml/operators.ts +90 -0
  448. package/src/avm2/natives/xml/parser.ts +414 -0
  449. package/src/avm2/natives/xml/strings.ts +241 -0
  450. package/src/avm2/natives/xml/values.ts +162 -0
  451. package/src/avm2/natives/xml/xml.ts +829 -0
  452. package/src/avm2/number-strings.ts +127 -0
  453. package/src/avm2/numbers.ts +605 -0
  454. package/src/avm2/options.ts +125 -0
  455. package/src/avm2/player-messages.ts +552 -0
  456. package/src/avm2/property-cache.ts +160 -0
  457. package/src/avm2/runtime.ts +3274 -0
  458. package/src/avm2/traits.ts +584 -0
  459. package/src/index.ts +8 -0
@@ -0,0 +1,486 @@
1
+ // RegExp: `this` holds its JavaScript RegExp in $re; and the match
2
+ // arrays String's methods give too.
3
+ import { AS3, registerNativeClass } from "./define.js";
4
+ /** RegExp's natives, for `rt`: written as a class, each running with the RegExp object as `this`. */
5
+ export function regexpNatives(rt) {
6
+ const natives = {};
7
+ class RegExpNatives {
8
+ get source() {
9
+ return this.$source;
10
+ }
11
+ get global() {
12
+ return this.$re.global;
13
+ }
14
+ get ignoreCase() {
15
+ return this.$re.ignoreCase;
16
+ }
17
+ get multiline() {
18
+ return this.$re.multiline;
19
+ }
20
+ get dotall() {
21
+ return this.$re.dotAll;
22
+ }
23
+ get extended() {
24
+ return this.$extended;
25
+ }
26
+ get lastIndex() {
27
+ return this.$re.lastIndex;
28
+ }
29
+ set lastIndex(i) {
30
+ this.$re.lastIndex = rt.toInt(i);
31
+ }
32
+ [`${AS3}::exec`](s = "") {
33
+ // As RegExpObject::_exec: a global one from before the start fails,
34
+ // where JavaScript starts from 0.
35
+ const re = this.$re;
36
+ if (re.global && re.lastIndex < 0) {
37
+ re.lastIndex = 0;
38
+ return null;
39
+ }
40
+ const m = re.exec(rt.toString(s));
41
+ return m ? matchArray(rt, m) : null;
42
+ }
43
+ }
44
+ registerNativeClass(natives, "RegExp", RegExpNatives);
45
+ return natives;
46
+ }
47
+ /** A match as AS3 gives it: an Array of the match and its groups, with its index and input. */
48
+ export function matchArray(rt, m) {
49
+ const a = rt.array(Array.from(m));
50
+ if (m.index !== undefined) {
51
+ a.$d.set("index", m.index);
52
+ a.$d.set("input", m.input);
53
+ }
54
+ return a;
55
+ }
56
+ /**
57
+ * A RegExp from its pattern and options, as RegExpClass::construct: AS3's
58
+ * flags g, i, m and s are JavaScript's, and x, extended, drops whitespace
59
+ * and comments from the pattern.
60
+ */
61
+ function newRegExp(rt, cls, args) {
62
+ const [pattern, options] = args;
63
+ const o = cls.$it.instance();
64
+ // A RegExp with flags is a TypeError, as ECMA-262 15.10.4.1 has it.
65
+ if (pattern?.$re instanceof RegExp && options !== undefined) {
66
+ throw rt.error("TypeError", 1100);
67
+ }
68
+ if (pattern?.$re instanceof RegExp) {
69
+ o.$source = pattern.$source;
70
+ o.$extended = pattern.$extended;
71
+ o.$re = new RegExp(pattern.$re.source, pattern.$re.flags);
72
+ return o;
73
+ }
74
+ const source = pattern === undefined ? "" : rt.toString(pattern);
75
+ const flags = options === undefined ? "" : rt.toString(options);
76
+ const extended = flags.includes("x");
77
+ const js = [..."gims"].filter((f) => flags.includes(f)).join("");
78
+ o.$source = source;
79
+ o.$extended = extended;
80
+ o.$re = compile(source, js, extended);
81
+ return o;
82
+ }
83
+ /**
84
+ * The JavaScript RegExp of an AS3 pattern (see fromPcre). One that does
85
+ * not compile throws nothing, as in avmplus: it matches nothing.
86
+ */
87
+ export function compile(source, flags, extended = false) {
88
+ if ((source.length > 200 && nestedTooDeep(source)) ||
89
+ (!extended && source.includes("(?<") && variableLookbehind(source))) {
90
+ return new RegExp("(?!)", flags);
91
+ }
92
+ try {
93
+ const re = new RegExp(fromPcre(source, extended, flags.includes("m")), flags);
94
+ // V8 compiles on the first match, where a pattern too large throws: here, once.
95
+ re.test("");
96
+ re.lastIndex = 0;
97
+ return re;
98
+ }
99
+ catch {
100
+ return new RegExp("(?!)", flags);
101
+ }
102
+ }
103
+ /**
104
+ * Whether a lookbehind in `source` may match strings of more than one
105
+ * length, which PCRE 7.3 does not compile: each alternative of the
106
+ * lookbehind must have a fixed length, and each group within it one
107
+ * length whichever of its alternatives matches. A quantifier other than
108
+ * {n}, and a back reference, have no fixed length. JavaScript compiles
109
+ * them all.
110
+ */
111
+ function variableLookbehind(source) {
112
+ let i = 0;
113
+ let refused = false;
114
+ /** The lengths of the alternatives from i to the group's ")", which it steps past; NaN for one with none. */
115
+ const alternatives = () => {
116
+ const lengths = [];
117
+ let length = 0;
118
+ while (i < source.length && source[i] !== ")") {
119
+ if (source[i] === "|") {
120
+ lengths.push(length);
121
+ length = 0;
122
+ i++;
123
+ continue;
124
+ }
125
+ length += quantified(item());
126
+ }
127
+ lengths.push(length);
128
+ i++;
129
+ return lengths;
130
+ };
131
+ /** A group's length, from after its "(": one length, or NaN; a lookaround's is 0. */
132
+ const group = () => {
133
+ const rest = source.slice(i, i + 3);
134
+ if (rest.startsWith("?#")) {
135
+ const end = source.indexOf(")", i);
136
+ i = end < 0 ? source.length : end + 1;
137
+ return 0;
138
+ }
139
+ if (rest.startsWith("?<=") || rest.startsWith("?<!")) {
140
+ i += 3;
141
+ if (alternatives().some(Number.isNaN)) {
142
+ refused = true;
143
+ }
144
+ return 0;
145
+ }
146
+ if (rest.startsWith("?=") || rest.startsWith("?!")) {
147
+ i += 2;
148
+ alternatives();
149
+ return 0;
150
+ }
151
+ if (rest.startsWith("?P=") || /^\?(R|\d)/.test(rest)) {
152
+ i = source.indexOf(")", i) + 1 || source.length;
153
+ return Number.NaN;
154
+ }
155
+ if (source[i] === "?") {
156
+ // ?: ?P<name> or flags, and flags alone, as (?i), are no group.
157
+ const kind = /^\?(?:P<\w*>|[imsxX-]*)/.exec(source.slice(i))?.[0] ?? "?";
158
+ i += kind.length;
159
+ if (source[i] === ")") {
160
+ i++;
161
+ return 0;
162
+ }
163
+ if (source[i] === ":") {
164
+ i++;
165
+ }
166
+ }
167
+ const lengths = alternatives();
168
+ return lengths.every((n) => n === lengths[0]) ? lengths[0] : Number.NaN;
169
+ };
170
+ /** The length of the item at i, which it steps past. */
171
+ const item = () => {
172
+ const c = source[i++];
173
+ if (c === "(") {
174
+ return group();
175
+ }
176
+ if (c === "^" || c === "$") {
177
+ return 0;
178
+ }
179
+ if (c === "[") {
180
+ if (source[i] === "^") {
181
+ i++;
182
+ }
183
+ // A ] first is a literal.
184
+ if (source[i] === "]") {
185
+ i++;
186
+ }
187
+ while (i < source.length && source[i] !== "]") {
188
+ i += source[i] === "\\" ? 2 : 1;
189
+ }
190
+ i++;
191
+ return 1;
192
+ }
193
+ if (c !== "\\") {
194
+ // A character beyond the BMP is one in PCRE's UTF-8 too.
195
+ if ((source.codePointAt(i - 1) ?? 0) > 0xffff) {
196
+ i++;
197
+ }
198
+ return 1;
199
+ }
200
+ const e = source[i++];
201
+ if (e >= "1" && e <= "9") {
202
+ return Number.NaN;
203
+ }
204
+ if ("bBAZzG".includes(e)) {
205
+ return 0;
206
+ }
207
+ if (e === "Q") {
208
+ const end = source.indexOf("\\E", i);
209
+ const literal = source.slice(i, end < 0 ? source.length : end);
210
+ i = end < 0 ? source.length : end + 2;
211
+ return [...literal].length;
212
+ }
213
+ if ((e === "x" || e === "p" || e === "P") && source[i] === "{") {
214
+ i = source.indexOf("}", i) + 1 || source.length;
215
+ }
216
+ else if (e === "c" || e === "p" || e === "P") {
217
+ i++;
218
+ }
219
+ return 1;
220
+ };
221
+ /** An item's length repeated by the quantifier at i, if any, which it steps past. */
222
+ const quantified = (length) => {
223
+ const c = source[i];
224
+ let times = 1;
225
+ if (c === "*" || c === "+" || c === "?") {
226
+ i++;
227
+ times = Number.NaN;
228
+ }
229
+ else if (c === "{") {
230
+ const q = /^\{(\d+)(,(\d*))?\}/.exec(source.slice(i));
231
+ if (!q) {
232
+ return length;
233
+ }
234
+ i += q[0].length;
235
+ times = q[2] === undefined || q[3] === q[1] ? Number(q[1]) : Number.NaN;
236
+ }
237
+ else {
238
+ return length;
239
+ }
240
+ // Lazy or possessive.
241
+ if (source[i] === "?" || source[i] === "+") {
242
+ i++;
243
+ }
244
+ return length * times;
245
+ };
246
+ while (i < source.length && !refused) {
247
+ alternatives();
248
+ }
249
+ return refused;
250
+ }
251
+ /** What avmplus' PCRE 7.3 has room for in its pre-compile workspace, less its safety margin. */
252
+ const WORKSPACE = 2138 - 100;
253
+ /**
254
+ * Whether PCRE fails to compile `source` for nesting groups too deeply:
255
+ * its pre-compile phase keeps, for each open group, the group's opcode
256
+ * (5 bytes for a capture, 3 for any other group) and the item before it,
257
+ * and fails once they pass the workspace, at some 400 nested captures.
258
+ * The items' sizes are PCRE's for the common ones: a literal, a class.
259
+ */
260
+ function nestedTooDeep(source) {
261
+ // The bytes held by the groups open, and by the item before the next one.
262
+ let held = 5;
263
+ let previous = 0;
264
+ const outer = [];
265
+ for (let i = 0; i < source.length; i++) {
266
+ const c = source[i];
267
+ let item = 2;
268
+ if (c === "(") {
269
+ const capture = source[i + 1] !== "?" || source.startsWith("(?P<", i);
270
+ outer.push(held);
271
+ held += previous + (capture ? 5 : 3);
272
+ previous = 0;
273
+ if (held > WORKSPACE) {
274
+ return true;
275
+ }
276
+ // Past the group's kind: ?: ?= ?! ?<= ?<! ?P<name> or flags.
277
+ if (source[i + 1] === "?") {
278
+ const end = source.slice(i + 2).search(/[:=!>)]/);
279
+ i = end < 0 ? source.length : i + 2 + end;
280
+ }
281
+ continue;
282
+ }
283
+ if (c === ")") {
284
+ held = outer.pop() ?? held;
285
+ // The group is the next one's previous item, but what it holds is gone.
286
+ previous = 0;
287
+ continue;
288
+ }
289
+ if (c === "|") {
290
+ previous = 0;
291
+ continue;
292
+ }
293
+ if (c === "\\") {
294
+ i++;
295
+ }
296
+ else if (c === "[") {
297
+ // A class is its opcode and a 32-byte bitmap.
298
+ item = 33;
299
+ i++;
300
+ if (source[i] === "^") {
301
+ i++;
302
+ }
303
+ // A ] first is a literal.
304
+ if (source[i] === "]") {
305
+ i++;
306
+ }
307
+ while (i < source.length && source[i] !== "]") {
308
+ if (source[i] === "\\") {
309
+ i++;
310
+ }
311
+ i++;
312
+ }
313
+ }
314
+ else if (c === "." || c === "^" || c === "$") {
315
+ item = 1;
316
+ }
317
+ else if ("*+?{".includes(c)) {
318
+ continue;
319
+ }
320
+ previous = item;
321
+ if (held + previous > WORKSPACE) {
322
+ return true;
323
+ }
324
+ }
325
+ return false;
326
+ }
327
+ /**
328
+ * A replacement string as avmplus reads it: $0d, a group number d with a
329
+ * leading zero, gives group d and then the digit d again, as avmplus
330
+ * reads both digits but steps past one. JavaScript's $0dd does the same.
331
+ */
332
+ export function replacement(re, text) {
333
+ if (!/\$0[1-9]/.test(text)) {
334
+ return text;
335
+ }
336
+ const groups = new RegExp(`${re.source}|`).exec("").length - 1;
337
+ return text.replace(/\$(\$|0([1-9]))/g, (t, _, d) => d && Number(d) <= groups ? `$0${d}${d}` : t);
338
+ }
339
+ /**
340
+ * PCRE's syntax that JavaScript has otherwise:
341
+ * - a named group (?P<name>...) as (?<name>...), and its reference
342
+ * (?P=name) as \\k<name>;
343
+ * - inline flags, (?i) and (?-i), as a modifier group (?i:...) to the end
344
+ * of the group they are in, and (?i:...) as it is;
345
+ * - extended mode, the x flag, and (?x) and (?x:...) within: whitespace
346
+ * and # comments dropped where it is on;
347
+ * - a comment group (?#...) dropped;
348
+ * - in multiline mode, ^ and $ at PCRE's newlines (LINE_START, LINE_END),
349
+ * multiline as the m flag, (?m) and (?-m) have it where each stands.
350
+ * Escapes and character classes are left as they are.
351
+ */
352
+ function fromPcre(source, extended, multiline) {
353
+ if (!extended && !source.includes("(?") && !(multiline && /[$^]/.test(source))) {
354
+ return source;
355
+ }
356
+ let out = "";
357
+ let x = extended;
358
+ let m = multiline;
359
+ // For each open group, and the pattern itself: the modifier groups to
360
+ // close with it, and whether x was on where it opened.
361
+ const closers = [0];
362
+ const outerX = [x];
363
+ const outerM = [m];
364
+ let inClass = false;
365
+ for (let i = 0; i < source.length; i++) {
366
+ const c = source[i];
367
+ if (c === "\\") {
368
+ out += source.slice(i, i + 2);
369
+ i++;
370
+ continue;
371
+ }
372
+ if (inClass) {
373
+ inClass = c !== "]";
374
+ out += c;
375
+ continue;
376
+ }
377
+ if (x && isSpace(c)) {
378
+ continue;
379
+ }
380
+ if (x && c === "#") {
381
+ while (i + 1 < source.length && source[i + 1] !== "\n") {
382
+ i++;
383
+ }
384
+ continue;
385
+ }
386
+ if (c === "[") {
387
+ inClass = true;
388
+ out += c;
389
+ continue;
390
+ }
391
+ if (c === ")") {
392
+ out += ")".repeat(closers.pop() ?? 0);
393
+ x = outerX.pop() ?? extended;
394
+ m = outerM.pop() ?? multiline;
395
+ if (!closers.length) {
396
+ closers.push(0);
397
+ outerX.push(x);
398
+ outerM.push(m);
399
+ }
400
+ out += c;
401
+ continue;
402
+ }
403
+ if (m && (c === "^" || c === "$")) {
404
+ out += c === "^" ? LINE_START : LINE_END;
405
+ continue;
406
+ }
407
+ if (c !== "(") {
408
+ out += c;
409
+ continue;
410
+ }
411
+ if (source.startsWith("(?#", i)) {
412
+ const end = source.indexOf(")", i);
413
+ i = end < 0 ? source.length : end;
414
+ continue;
415
+ }
416
+ if (source.startsWith("(?P<", i)) {
417
+ out += "(?<";
418
+ i += 3;
419
+ closers.push(0);
420
+ outerX.push(x);
421
+ outerM.push(m);
422
+ continue;
423
+ }
424
+ const reference = /^\(\?P=(\w+)\)/.exec(source.slice(i));
425
+ if (reference) {
426
+ out += `\\k<${reference[1]}>`;
427
+ i += reference[0].length - 1;
428
+ continue;
429
+ }
430
+ const flags = /^\(\?([imsx]*)(?:-([imsx]*))?([:)])/.exec(source.slice(i));
431
+ if (flags && (flags[1] || flags[2])) {
432
+ const on = flags[1];
433
+ const off = flags[2] ?? "";
434
+ // JavaScript's modifiers are i, m and s; x is applied here.
435
+ const js = modifiers(on.replace("x", ""), off.replace("x", ""));
436
+ const scoped = flags[3] === ":";
437
+ if (scoped) {
438
+ closers.push(0);
439
+ outerX.push(x);
440
+ outerM.push(m);
441
+ out += js ? `(?${js}:` : "(?:";
442
+ }
443
+ else if (js) {
444
+ out += `(?${js}:`;
445
+ closers[closers.length - 1]++;
446
+ }
447
+ if (on.includes("x")) {
448
+ x = true;
449
+ }
450
+ else if (off.includes("x")) {
451
+ x = false;
452
+ }
453
+ if (on.includes("m")) {
454
+ m = true;
455
+ }
456
+ else if (off.includes("m")) {
457
+ m = false;
458
+ }
459
+ i += flags[0].length - 1;
460
+ continue;
461
+ }
462
+ out += c;
463
+ closers.push(0);
464
+ outerX.push(x);
465
+ outerM.push(m);
466
+ }
467
+ return out + ")".repeat(closers[0]);
468
+ }
469
+ // PCRE's newlines, as avmplus builds it: any of these, \r\n as one.
470
+ const NEWLINE = "[\\n\\r\\v\\f\\x85\\u2028\\u2029]";
471
+ /** Multiline ^: the start, or after a newline, but not at the end, nor within \r\n. */
472
+ const LINE_START = `(?:(?<![\\s\\S])|(?<=${NEWLINE})(?!(?<=\\r)\\n)(?=[\\s\\S]))`;
473
+ /** Multiline $: the end, or before any newline. */
474
+ const LINE_END = `(?=${NEWLINE}|(?![\\s\\S]))`;
475
+ const modifiers = (on, off) => (on || off ? `${on}${off ? `-${off}` : ""}` : "");
476
+ /** PCRE's whitespace, which extended mode drops. */
477
+ const isSpace = (c) => c === " " || c === "\t" || c === "\n" || c === "\r" || c === "\f" || c === "\v";
478
+ export const regexpHooks = {
479
+ RegExp: {
480
+ construct: newRegExp,
481
+ // RegExp.prototype is a RegExp, of the empty pattern, which avmplus writes (?:).
482
+ prototype: (rt, cls) => newRegExp(rt, cls, ["(?:)"]),
483
+ call: (rt, cls, args) => args[0]?.$re instanceof RegExp && args[1] === undefined ? args[0] : newRegExp(rt, cls, args),
484
+ },
485
+ };
486
+ //# sourceMappingURL=regexp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regexp.js","sourceRoot":"","sources":["../../../src/avm2/natives/regexp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ import type { Value } from "../descriptors.js";
2
+ import type { ShellWorkerInit, ShellWorkersMemory } from "../options.js";
3
+ import { type SyncMemory } from "./sync.js";
4
+ /** avmplus' Isolate::State. */
5
+ export declare const NEW = 1;
6
+ export declare const CANSTART = 2;
7
+ export declare const STARTING = 3;
8
+ export declare const RUNNING = 4;
9
+ export declare const FINISHING = 5;
10
+ export declare const TERMINATED = 6;
11
+ export declare const FAILED = 7;
12
+ export declare const ABORTED = 8;
13
+ export declare const EXCEPTION = 9;
14
+ /** Worker.state's names for each, as WorkerObjectBase::get_state reports them. */
15
+ export declare const STATE_NAMES: string[];
16
+ /**
17
+ * How a shared property is kept: AMF3, a ByteArray's bytes, a Mutex or a
18
+ * Condition by its address in the sync memory (a byte, 0 for a Mutex, then
19
+ * an int32), a Number's float64, or a shareable ByteArray's memory by its
20
+ * id, as a float64.
21
+ */
22
+ export declare const ITEM_AMF = 0;
23
+ export declare const ITEM_BYTES = 1;
24
+ export declare const ITEM_SYNC = 2;
25
+ export declare const ITEM_NUMBER = 3;
26
+ export declare const ITEM_SHARED = 4;
27
+ export interface SharedEntry {
28
+ id: number;
29
+ key: string | null;
30
+ kind: number;
31
+ /** The worker whose VM set it. */
32
+ writer: number;
33
+ /** Unique to this set, by which a VM keeps the one object it gives for it. */
34
+ token: number;
35
+ bytes: Uint8Array;
36
+ }
37
+ /** New memory for the workers of a primordial, itself worker 0, running, whose Mutexes live in `sync`. */
38
+ export declare function newWorkersMemory(sync: SyncMemory): ShellWorkersMemory;
39
+ /** Thrown in a worker that was terminated, as avmplus interrupts it: its code stops. */
40
+ export declare class WorkerTerminated extends Error {
41
+ constructor();
42
+ }
43
+ /** The workers as one VM sees them, over the memory they share. */
44
+ export declare class Workers {
45
+ readonly memory: ShellWorkersMemory;
46
+ /** The worker this VM runs. */
47
+ readonly self: number;
48
+ readonly control: Int32Array;
49
+ /** The Mutexes' and Conditions' memory, told which workers have ended. */
50
+ private readonly sync;
51
+ /** The table as last read, and its version. */
52
+ private entries;
53
+ private version;
54
+ /**
55
+ * This VM's object for each property whose identity it keeps, a
56
+ * ByteArray, by entryKey, with its item's token.
57
+ */
58
+ readonly objects: Map<string, {
59
+ token: number;
60
+ value: Value;
61
+ }>;
62
+ constructor(memory: ShellWorkersMemory,
63
+ /** The worker this VM runs. */
64
+ self: number);
65
+ /** A worker's state; one past those made has none. */
66
+ state(id: number): number;
67
+ parent(id: number): number;
68
+ /** Move worker `id` from `from` to `to`; whether it was in `from`. */
69
+ transition(id: number, from: number, to: number): boolean;
70
+ setState(id: number, to: number): void;
71
+ /** A new worker of this one's, NEW. */
72
+ create(): number;
73
+ /** The workers made so far, by id. */
74
+ count(): number;
75
+ get(id: number, key: string | null): SharedEntry | undefined;
76
+ /** Set worker `id`'s property `key`, or delete it with a null `item`; the item's token. */
77
+ set(id: number, key: string | null, item: {
78
+ kind: number;
79
+ bytes: Uint8Array;
80
+ } | null): number;
81
+ /**
82
+ * Terminate worker `id`, started and not yet ended, and the workers it
83
+ * started, theirs and so on, whose threads stop with its own: each
84
+ * `terminated`, its properties let go, as Isolate::releaseActiveResources.
85
+ * The workers terminated, none where `id` was not running. Done holding
86
+ * the lock, so that none of them is in the table then, and none takes
87
+ * the lock again (see locked): its thread may be stopped anywhere once
88
+ * this returns. Their threads may run on until they are stopped, so the
89
+ * sync memory refuses them anything more, and keeps the locks they hold
90
+ * until the caller says their threads have stopped (Sync.end).
91
+ */
92
+ terminate(id: number): Set<number>;
93
+ /** This VM's worker has ended, as `to`, its properties let go; unless it was terminated already. */
94
+ end(to: number): void;
95
+ /**
96
+ * This VM's worker terminates itself: its code stops, and once it has,
97
+ * it is terminated and what it held let go (endShellWorker).
98
+ */
99
+ terminateSelf(): void;
100
+ /** Whether this VM's worker was terminated, by another or by itself: its code is to stop. */
101
+ get terminated(): boolean;
102
+ /** Remove the properties of the workers `ids`, holding the lock. */
103
+ private drop;
104
+ private words;
105
+ /**
106
+ * Run `f` holding the table's lock, whose word holds its holder's id
107
+ * plus one. A worker's thread is stopped only after it was terminated
108
+ * under the lock (terminate), and a terminated worker changes nothing
109
+ * holding it: it throws WorkerTerminated instead. It may still take the
110
+ * lock to find that out, as it can have been waiting for it while it
111
+ * was terminated, and be stopped there; so a lock held by a worker that
112
+ * was terminated is taken from it.
113
+ */
114
+ private locked;
115
+ /** The table from memory: its length, then each entry. */
116
+ private read;
117
+ /**
118
+ * The table into memory, its length first, in one copy: a thread
119
+ * stopped mid-way leaves the old table or the new one.
120
+ */
121
+ private write;
122
+ }
123
+ /** A property's key among all the workers'. */
124
+ export declare const entryKey: (id: number, key: string | null) => string;
125
+ /**
126
+ * A background worker's thread has begun, as avmplus' core once set up:
127
+ * whether it is to run, which it is not once terminated.
128
+ */
129
+ export declare function startShellWorker(init: ShellWorkerInit): boolean;
130
+ /**
131
+ * A background worker's code has ended, normally or by an exception
132
+ * nothing caught; its properties are let go, as when avmplus deletes its
133
+ * core. One terminated meanwhile stays so.
134
+ */
135
+ export declare function endShellWorker(init: ShellWorkerInit, exception: boolean): void;
136
+ /** Whether a background worker was terminated: its thread's end is then no failure. */
137
+ export declare function shellWorkerTerminated(init: ShellWorkerInit): boolean;
138
+ /** Sleep `ms` milliseconds, as System.sleep: blocking where the thread can, else spinning. */
139
+ export declare function sleep(ms: number): void;
140
+ //# sourceMappingURL=shell-workers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-workers.d.ts","sourceRoot":"","sources":["../../../src/avm2/natives/shell-workers.ts"],"names":[],"mappings":"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"}