@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.
- package/LICENSE +202 -0
- package/LICENSE.third-party +422 -0
- package/README.md +29 -2
- package/dist/avm1/activation.d.ts +108 -0
- package/dist/avm1/activation.d.ts.map +1 -0
- package/dist/avm1/activation.js +90 -0
- package/dist/avm1/activation.js.map +1 -0
- package/dist/avm1/case.d.ts +3 -0
- package/dist/avm1/case.d.ts.map +1 -0
- package/dist/avm1/case.js +250 -0
- package/dist/avm1/case.js.map +1 -0
- package/dist/avm1/clips.d.ts +68 -0
- package/dist/avm1/clips.d.ts.map +1 -0
- package/dist/avm1/clips.js +335 -0
- package/dist/avm1/clips.js.map +1 -0
- package/dist/avm1/control.d.ts +54 -0
- package/dist/avm1/control.d.ts.map +1 -0
- package/dist/avm1/control.js +281 -0
- package/dist/avm1/control.js.map +1 -0
- package/dist/avm1/errors.d.ts +49 -0
- package/dist/avm1/errors.d.ts.map +1 -0
- package/dist/avm1/errors.js +51 -0
- package/dist/avm1/errors.js.map +1 -0
- package/dist/avm1/functions.d.ts +94 -0
- package/dist/avm1/functions.d.ts.map +1 -0
- package/dist/avm1/functions.js +250 -0
- package/dist/avm1/functions.js.map +1 -0
- package/dist/avm1/globals/array.d.ts +8 -0
- package/dist/avm1/globals/array.d.ts.map +1 -0
- package/dist/avm1/globals/array.js +550 -0
- package/dist/avm1/globals/array.js.map +1 -0
- package/dist/avm1/globals/broadcaster.d.ts +22 -0
- package/dist/avm1/globals/broadcaster.d.ts.map +1 -0
- package/dist/avm1/globals/broadcaster.js +132 -0
- package/dist/avm1/globals/broadcaster.js.map +1 -0
- package/dist/avm1/globals/date.d.ts +10 -0
- package/dist/avm1/globals/date.d.ts.map +1 -0
- package/dist/avm1/globals/date.js +437 -0
- package/dist/avm1/globals/date.js.map +1 -0
- package/dist/avm1/globals/global.d.ts +23 -0
- package/dist/avm1/globals/global.d.ts.map +1 -0
- package/dist/avm1/globals/global.js +345 -0
- package/dist/avm1/globals/global.js.map +1 -0
- package/dist/avm1/globals/math.d.ts +7 -0
- package/dist/avm1/globals/math.d.ts.map +1 -0
- package/dist/avm1/globals/math.js +140 -0
- package/dist/avm1/globals/math.js.map +1 -0
- package/dist/avm1/globals/number.d.ts +11 -0
- package/dist/avm1/globals/number.d.ts.map +1 -0
- package/dist/avm1/globals/number.js +94 -0
- package/dist/avm1/globals/number.js.map +1 -0
- package/dist/avm1/globals/string.d.ts +8 -0
- package/dist/avm1/globals/string.d.ts.map +1 -0
- package/dist/avm1/globals/string.js +202 -0
- package/dist/avm1/globals/string.js.map +1 -0
- package/dist/avm1/globals/timers.d.ts +49 -0
- package/dist/avm1/globals/timers.d.ts.map +1 -0
- package/dist/avm1/globals/timers.js +130 -0
- package/dist/avm1/globals/timers.js.map +1 -0
- package/dist/avm1/host.d.ts +146 -0
- package/dist/avm1/host.d.ts.map +1 -0
- package/dist/avm1/host.js +6 -0
- package/dist/avm1/host.js.map +1 -0
- package/dist/avm1/index.d.ts +15 -0
- package/dist/avm1/index.d.ts.map +1 -0
- package/dist/avm1/index.js +15 -0
- package/dist/avm1/index.js.map +1 -0
- package/dist/avm1/inheritance.d.ts +25 -0
- package/dist/avm1/inheritance.d.ts.map +1 -0
- package/dist/avm1/inheritance.js +133 -0
- package/dist/avm1/inheritance.js.map +1 -0
- package/dist/avm1/numbers.d.ts +21 -0
- package/dist/avm1/numbers.d.ts.map +1 -0
- package/dist/avm1/numbers.js +299 -0
- package/dist/avm1/numbers.js.map +1 -0
- package/dist/avm1/objects.d.ts +245 -0
- package/dist/avm1/objects.d.ts.map +1 -0
- package/dist/avm1/objects.js +897 -0
- package/dist/avm1/objects.js.map +1 -0
- package/dist/avm1/operators.d.ts +45 -0
- package/dist/avm1/operators.d.ts.map +1 -0
- package/dist/avm1/operators.js +171 -0
- package/dist/avm1/operators.js.map +1 -0
- package/dist/avm1/realm.d.ts +126 -0
- package/dist/avm1/realm.d.ts.map +1 -0
- package/dist/avm1/realm.js +530 -0
- package/dist/avm1/realm.js.map +1 -0
- package/dist/avm1/runtime.d.ts +294 -0
- package/dist/avm1/runtime.d.ts.map +1 -0
- package/dist/avm1/runtime.js +883 -0
- package/dist/avm1/runtime.js.map +1 -0
- package/dist/avm1/scope.d.ts +77 -0
- package/dist/avm1/scope.d.ts.map +1 -0
- package/dist/avm1/scope.js +386 -0
- package/dist/avm1/scope.js.map +1 -0
- package/dist/avm1/urls.d.ts +25 -0
- package/dist/avm1/urls.d.ts.map +1 -0
- package/dist/avm1/urls.js +181 -0
- package/dist/avm1/urls.js.map +1 -0
- package/dist/avm1/values.d.ts +52 -0
- package/dist/avm1/values.d.ts.map +1 -0
- package/dist/avm1/values.js +98 -0
- package/dist/avm1/values.js.map +1 -0
- package/dist/avm2/amf-classes.d.ts +28 -0
- package/dist/avm2/amf-classes.d.ts.map +1 -0
- package/dist/avm2/amf-classes.js +67 -0
- package/dist/avm2/amf-classes.js.map +1 -0
- package/dist/avm2/amf.d.ts +96 -0
- package/dist/avm2/amf.d.ts.map +1 -0
- package/dist/avm2/amf.js +802 -0
- package/dist/avm2/amf.js.map +1 -0
- package/dist/avm2/array-conversion.d.ts +31 -0
- package/dist/avm2/array-conversion.d.ts.map +1 -0
- package/dist/avm2/array-conversion.js +101 -0
- package/dist/avm2/array-conversion.js.map +1 -0
- package/dist/avm2/builtin-library.d.ts +2 -0
- package/dist/avm2/builtin-library.d.ts.map +1 -0
- package/dist/avm2/builtin-library.js +22 -0
- package/dist/avm2/builtin-library.js.map +1 -0
- package/dist/avm2/cache-fill.d.ts +14 -0
- package/dist/avm2/cache-fill.d.ts.map +1 -0
- package/dist/avm2/cache-fill.js +87 -0
- package/dist/avm2/cache-fill.js.map +1 -0
- package/dist/avm2/classes.d.ts +17 -0
- package/dist/avm2/classes.d.ts.map +1 -0
- package/dist/avm2/classes.js +212 -0
- package/dist/avm2/classes.js.map +1 -0
- package/dist/avm2/definitions.d.ts +28 -0
- package/dist/avm2/definitions.d.ts.map +1 -0
- package/dist/avm2/definitions.js +70 -0
- package/dist/avm2/definitions.js.map +1 -0
- package/dist/avm2/descriptors.d.ts +118 -0
- package/dist/avm2/descriptors.d.ts.map +1 -0
- package/dist/avm2/descriptors.js +6 -0
- package/dist/avm2/descriptors.js.map +1 -0
- package/dist/avm2/dictionary-keys.d.ts +73 -0
- package/dist/avm2/dictionary-keys.d.ts.map +1 -0
- package/dist/avm2/dictionary-keys.js +296 -0
- package/dist/avm2/dictionary-keys.js.map +1 -0
- package/dist/avm2/domain-memory.d.ts +23 -0
- package/dist/avm2/domain-memory.d.ts.map +1 -0
- package/dist/avm2/domain-memory.js +76 -0
- package/dist/avm2/domain-memory.js.map +1 -0
- package/dist/avm2/domain.d.ts +108 -0
- package/dist/avm2/domain.d.ts.map +1 -0
- package/dist/avm2/domain.js +281 -0
- package/dist/avm2/domain.js.map +1 -0
- package/dist/avm2/dynamic-properties.d.ts +62 -0
- package/dist/avm2/dynamic-properties.d.ts.map +1 -0
- package/dist/avm2/dynamic-properties.js +183 -0
- package/dist/avm2/dynamic-properties.js.map +1 -0
- package/dist/avm2/enumeration.d.ts +75 -0
- package/dist/avm2/enumeration.d.ts.map +1 -0
- package/dist/avm2/enumeration.js +394 -0
- package/dist/avm2/enumeration.js.map +1 -0
- package/dist/avm2/errors.d.ts +20 -0
- package/dist/avm2/errors.d.ts.map +1 -0
- package/dist/avm2/errors.js +46 -0
- package/dist/avm2/errors.js.map +1 -0
- package/dist/avm2/float-library.d.ts +2 -0
- package/dist/avm2/float-library.d.ts.map +1 -0
- package/dist/avm2/float-library.js +67 -0
- package/dist/avm2/float-library.js.map +1 -0
- package/dist/avm2/float.d.ts +9 -0
- package/dist/avm2/float.d.ts.map +1 -0
- package/dist/avm2/float.js +27 -0
- package/dist/avm2/float.js.map +1 -0
- package/dist/avm2/hooks.d.ts +77 -0
- package/dist/avm2/hooks.d.ts.map +1 -0
- package/dist/avm2/hooks.js +20 -0
- package/dist/avm2/hooks.js.map +1 -0
- package/dist/avm2/index.d.ts +32 -0
- package/dist/avm2/index.d.ts.map +1 -0
- package/dist/avm2/index.js +39 -0
- package/dist/avm2/index.js.map +1 -0
- package/dist/avm2/messages.d.ts +2 -0
- package/dist/avm2/messages.d.ts.map +1 -0
- package/dist/avm2/messages.js +178 -0
- package/dist/avm2/messages.js.map +1 -0
- package/dist/avm2/method-factories.d.ts +35 -0
- package/dist/avm2/method-factories.d.ts.map +1 -0
- package/dist/avm2/method-factories.js +96 -0
- package/dist/avm2/method-factories.js.map +1 -0
- package/dist/avm2/modules.d.ts +40 -0
- package/dist/avm2/modules.d.ts.map +1 -0
- package/dist/avm2/modules.js +106 -0
- package/dist/avm2/modules.js.map +1 -0
- package/dist/avm2/names.d.ts +143 -0
- package/dist/avm2/names.d.ts.map +1 -0
- package/dist/avm2/names.js +249 -0
- package/dist/avm2/names.js.map +1 -0
- package/dist/avm2/natives/aliases.d.ts +3 -0
- package/dist/avm2/natives/aliases.d.ts.map +1 -0
- package/dist/avm2/natives/aliases.js +48 -0
- package/dist/avm2/natives/aliases.js.map +1 -0
- package/dist/avm2/natives/array.d.ts +5 -0
- package/dist/avm2/natives/array.d.ts.map +1 -0
- package/dist/avm2/natives/array.js +391 -0
- package/dist/avm2/natives/array.js.map +1 -0
- package/dist/avm2/natives/bytearray.d.ts +180 -0
- package/dist/avm2/natives/bytearray.d.ts.map +1 -0
- package/dist/avm2/natives/bytearray.js +1228 -0
- package/dist/avm2/natives/bytearray.js.map +1 -0
- package/dist/avm2/natives/case.d.ts +5 -0
- package/dist/avm2/natives/case.d.ts.map +1 -0
- package/dist/avm2/natives/case.js +89 -0
- package/dist/avm2/natives/case.js.map +1 -0
- package/dist/avm2/natives/concurrent.d.ts +24 -0
- package/dist/avm2/natives/concurrent.d.ts.map +1 -0
- package/dist/avm2/natives/concurrent.js +200 -0
- package/dist/avm2/natives/concurrent.js.map +1 -0
- package/dist/avm2/natives/date.d.ts +5 -0
- package/dist/avm2/natives/date.d.ts.map +1 -0
- package/dist/avm2/natives/date.js +582 -0
- package/dist/avm2/natives/date.js.map +1 -0
- package/dist/avm2/natives/define.d.ts +58 -0
- package/dist/avm2/natives/define.d.ts.map +1 -0
- package/dist/avm2/natives/define.js +131 -0
- package/dist/avm2/natives/define.js.map +1 -0
- package/dist/avm2/natives/describe.d.ts +3 -0
- package/dist/avm2/natives/describe.d.ts.map +1 -0
- package/dist/avm2/natives/describe.js +352 -0
- package/dist/avm2/natives/describe.js.map +1 -0
- package/dist/avm2/natives/dictionary.d.ts +3 -0
- package/dist/avm2/natives/dictionary.d.ts.map +1 -0
- package/dist/avm2/natives/dictionary.js +13 -0
- package/dist/avm2/natives/dictionary.js.map +1 -0
- package/dist/avm2/natives/float-vector.d.ts +20 -0
- package/dist/avm2/natives/float-vector.d.ts.map +1 -0
- package/dist/avm2/natives/float-vector.js +82 -0
- package/dist/avm2/natives/float-vector.js.map +1 -0
- package/dist/avm2/natives/float.d.ts +5 -0
- package/dist/avm2/natives/float.d.ts.map +1 -0
- package/dist/avm2/natives/float.js +97 -0
- package/dist/avm2/natives/float.js.map +1 -0
- package/dist/avm2/natives/index.d.ts +7 -0
- package/dist/avm2/natives/index.d.ts.map +1 -0
- package/dist/avm2/natives/index.js +65 -0
- package/dist/avm2/natives/index.js.map +1 -0
- package/dist/avm2/natives/json.d.ts +3 -0
- package/dist/avm2/natives/json.d.ts.map +1 -0
- package/dist/avm2/natives/json.js +515 -0
- package/dist/avm2/natives/json.js.map +1 -0
- package/dist/avm2/natives/number.d.ts +15 -0
- package/dist/avm2/natives/number.d.ts.map +1 -0
- package/dist/avm2/natives/number.js +163 -0
- package/dist/avm2/natives/number.js.map +1 -0
- package/dist/avm2/natives/object.d.ts +8 -0
- package/dist/avm2/natives/object.d.ts.map +1 -0
- package/dist/avm2/natives/object.js +238 -0
- package/dist/avm2/natives/object.js.map +1 -0
- package/dist/avm2/natives/proxy.d.ts +5 -0
- package/dist/avm2/natives/proxy.d.ts.map +1 -0
- package/dist/avm2/natives/proxy.js +76 -0
- package/dist/avm2/natives/proxy.js.map +1 -0
- package/dist/avm2/natives/regexp.d.ts +21 -0
- package/dist/avm2/natives/regexp.d.ts.map +1 -0
- package/dist/avm2/natives/regexp.js +486 -0
- package/dist/avm2/natives/regexp.js.map +1 -0
- package/dist/avm2/natives/shell-workers.d.ts +140 -0
- package/dist/avm2/natives/shell-workers.d.ts.map +1 -0
- package/dist/avm2/natives/shell-workers.js +405 -0
- package/dist/avm2/natives/shell-workers.js.map +1 -0
- package/dist/avm2/natives/shell.d.ts +12 -0
- package/dist/avm2/natives/shell.d.ts.map +1 -0
- package/dist/avm2/natives/shell.js +558 -0
- package/dist/avm2/natives/shell.js.map +1 -0
- package/dist/avm2/natives/sort.d.ts +7 -0
- package/dist/avm2/natives/sort.d.ts.map +1 -0
- package/dist/avm2/natives/sort.js +378 -0
- package/dist/avm2/natives/sort.js.map +1 -0
- package/dist/avm2/natives/string.d.ts +5 -0
- package/dist/avm2/natives/string.d.ts.map +1 -0
- package/dist/avm2/natives/string.js +133 -0
- package/dist/avm2/natives/string.js.map +1 -0
- package/dist/avm2/natives/sync.d.ts +215 -0
- package/dist/avm2/natives/sync.d.ts.map +1 -0
- package/dist/avm2/natives/sync.js +822 -0
- package/dist/avm2/natives/sync.js.map +1 -0
- package/dist/avm2/natives/toplevel.d.ts +5 -0
- package/dist/avm2/natives/toplevel.d.ts.map +1 -0
- package/dist/avm2/natives/toplevel.js +140 -0
- package/dist/avm2/natives/toplevel.js.map +1 -0
- package/dist/avm2/natives/vector-elements.d.ts +10 -0
- package/dist/avm2/natives/vector-elements.d.ts.map +1 -0
- package/dist/avm2/natives/vector-elements.js +47 -0
- package/dist/avm2/natives/vector-elements.js.map +1 -0
- package/dist/avm2/natives/vector.d.ts +5 -0
- package/dist/avm2/natives/vector.d.ts.map +1 -0
- package/dist/avm2/natives/vector.js +407 -0
- package/dist/avm2/natives/vector.js.map +1 -0
- package/dist/avm2/natives/xml/access.d.ts +34 -0
- package/dist/avm2/natives/xml/access.d.ts.map +1 -0
- package/dist/avm2/natives/xml/access.js +634 -0
- package/dist/avm2/natives/xml/access.js.map +1 -0
- package/dist/avm2/natives/xml/build.d.ts +11 -0
- package/dist/avm2/natives/xml/build.d.ts.map +1 -0
- package/dist/avm2/natives/xml/build.js +292 -0
- package/dist/avm2/natives/xml/build.js.map +1 -0
- package/dist/avm2/natives/xml/chars.d.ts +9 -0
- package/dist/avm2/natives/xml/chars.d.ts.map +1 -0
- package/dist/avm2/natives/xml/chars.js +113 -0
- package/dist/avm2/natives/xml/chars.js.map +1 -0
- package/dist/avm2/natives/xml/escape.d.ts +5 -0
- package/dist/avm2/natives/xml/escape.d.ts.map +1 -0
- package/dist/avm2/natives/xml/escape.js +39 -0
- package/dist/avm2/natives/xml/escape.js.map +1 -0
- package/dist/avm2/natives/xml/names.d.ts +46 -0
- package/dist/avm2/natives/xml/names.d.ts.map +1 -0
- package/dist/avm2/natives/xml/names.js +205 -0
- package/dist/avm2/natives/xml/names.js.map +1 -0
- package/dist/avm2/natives/xml/node.d.ts +94 -0
- package/dist/avm2/natives/xml/node.d.ts.map +1 -0
- package/dist/avm2/natives/xml/node.js +273 -0
- package/dist/avm2/natives/xml/node.js.map +1 -0
- package/dist/avm2/natives/xml/operators.d.ts +7 -0
- package/dist/avm2/natives/xml/operators.d.ts.map +1 -0
- package/dist/avm2/natives/xml/operators.js +70 -0
- package/dist/avm2/natives/xml/operators.js.map +1 -0
- package/dist/avm2/natives/xml/parser.d.ts +51 -0
- package/dist/avm2/natives/xml/parser.d.ts.map +1 -0
- package/dist/avm2/natives/xml/parser.js +357 -0
- package/dist/avm2/natives/xml/parser.js.map +1 -0
- package/dist/avm2/natives/xml/strings.d.ts +10 -0
- package/dist/avm2/natives/xml/strings.d.ts.map +1 -0
- package/dist/avm2/natives/xml/strings.js +192 -0
- package/dist/avm2/natives/xml/strings.js.map +1 -0
- package/dist/avm2/natives/xml/values.d.ts +48 -0
- package/dist/avm2/natives/xml/values.d.ts.map +1 -0
- package/dist/avm2/natives/xml/values.js +123 -0
- package/dist/avm2/natives/xml/values.js.map +1 -0
- package/dist/avm2/natives/xml/xml.d.ts +5 -0
- package/dist/avm2/natives/xml/xml.d.ts.map +1 -0
- package/dist/avm2/natives/xml/xml.js +646 -0
- package/dist/avm2/natives/xml/xml.js.map +1 -0
- package/dist/avm2/number-strings.d.ts +28 -0
- package/dist/avm2/number-strings.d.ts.map +1 -0
- package/dist/avm2/number-strings.js +111 -0
- package/dist/avm2/number-strings.js.map +1 -0
- package/dist/avm2/numbers.d.ts +12 -0
- package/dist/avm2/numbers.d.ts.map +1 -0
- package/dist/avm2/numbers.js +559 -0
- package/dist/avm2/numbers.js.map +1 -0
- package/dist/avm2/options.d.ts +105 -0
- package/dist/avm2/options.d.ts.map +1 -0
- package/dist/avm2/options.js +17 -0
- package/dist/avm2/options.js.map +1 -0
- package/dist/avm2/player-messages.d.ts +3 -0
- package/dist/avm2/player-messages.d.ts.map +1 -0
- package/dist/avm2/player-messages.js +551 -0
- package/dist/avm2/player-messages.js.map +1 -0
- package/dist/avm2/property-cache.d.ts +61 -0
- package/dist/avm2/property-cache.d.ts.map +1 -0
- package/dist/avm2/property-cache.js +136 -0
- package/dist/avm2/property-cache.js.map +1 -0
- package/dist/avm2/runtime.d.ts +588 -0
- package/dist/avm2/runtime.d.ts.map +1 -0
- package/dist/avm2/runtime.js +2645 -0
- package/dist/avm2/runtime.js.map +1 -0
- package/dist/avm2/traits.d.ts +233 -0
- package/dist/avm2/traits.d.ts.map +1 -0
- package/dist/avm2/traits.js +510 -0
- package/dist/avm2/traits.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -3
- package/src/avm1/activation.ts +114 -0
- package/src/avm1/case.ts +257 -0
- package/src/avm1/clips.ts +440 -0
- package/src/avm1/control.ts +339 -0
- package/src/avm1/errors.ts +60 -0
- package/src/avm1/functions.ts +271 -0
- package/src/avm1/globals/array.ts +676 -0
- package/src/avm1/globals/broadcaster.ts +185 -0
- package/src/avm1/globals/date.ts +548 -0
- package/src/avm1/globals/global.ts +420 -0
- package/src/avm1/globals/math.ts +152 -0
- package/src/avm1/globals/number.ts +122 -0
- package/src/avm1/globals/string.ts +254 -0
- package/src/avm1/globals/timers.ts +144 -0
- package/src/avm1/host.ts +155 -0
- package/src/avm1/index.ts +69 -0
- package/src/avm1/inheritance.ts +159 -0
- package/src/avm1/numbers.ts +348 -0
- package/src/avm1/objects.ts +1080 -0
- package/src/avm1/operators.ts +229 -0
- package/src/avm1/realm.ts +704 -0
- package/src/avm1/runtime.ts +1291 -0
- package/src/avm1/scope.ts +482 -0
- package/src/avm1/urls.ts +226 -0
- package/src/avm1/values.ts +145 -0
- package/src/avm2/amf-classes.ts +80 -0
- package/src/avm2/amf.ts +913 -0
- package/src/avm2/array-conversion.ts +117 -0
- package/src/avm2/builtin-library.ts +28 -0
- package/src/avm2/cache-fill.ts +124 -0
- package/src/avm2/classes.ts +235 -0
- package/src/avm2/definitions.ts +93 -0
- package/src/avm2/descriptors.ts +137 -0
- package/src/avm2/dictionary-keys.ts +345 -0
- package/src/avm2/domain-memory.ts +95 -0
- package/src/avm2/domain.ts +335 -0
- package/src/avm2/dynamic-properties.ts +209 -0
- package/src/avm2/enumeration.ts +506 -0
- package/src/avm2/errors.ts +54 -0
- package/src/avm2/float-library.ts +66 -0
- package/src/avm2/float.ts +31 -0
- package/src/avm2/hooks.ts +97 -0
- package/src/avm2/index.ts +84 -0
- package/src/avm2/messages.ts +178 -0
- package/src/avm2/method-factories.ts +130 -0
- package/src/avm2/modules.ts +120 -0
- package/src/avm2/names.ts +292 -0
- package/src/avm2/natives/aliases.ts +59 -0
- package/src/avm2/natives/array.ts +482 -0
- package/src/avm2/natives/bytearray.ts +1474 -0
- package/src/avm2/natives/case.ts +98 -0
- package/src/avm2/natives/concurrent.ts +268 -0
- package/src/avm2/natives/date.ts +678 -0
- package/src/avm2/natives/define.ts +176 -0
- package/src/avm2/natives/describe.ts +426 -0
- package/src/avm2/natives/dictionary.ts +18 -0
- package/src/avm2/natives/float-vector.ts +99 -0
- package/src/avm2/natives/float.ts +116 -0
- package/src/avm2/natives/index.ts +70 -0
- package/src/avm2/natives/json.ts +600 -0
- package/src/avm2/natives/number.ts +194 -0
- package/src/avm2/natives/object.ts +272 -0
- package/src/avm2/natives/proxy.ts +98 -0
- package/src/avm2/natives/regexp.ts +580 -0
- package/src/avm2/natives/shell-workers.ts +474 -0
- package/src/avm2/natives/shell.ts +707 -0
- package/src/avm2/natives/sort.ts +438 -0
- package/src/avm2/natives/string.ts +158 -0
- package/src/avm2/natives/sync.ts +964 -0
- package/src/avm2/natives/toplevel.ts +163 -0
- package/src/avm2/natives/vector-elements.ts +61 -0
- package/src/avm2/natives/vector.ts +511 -0
- package/src/avm2/natives/xml/access.ts +767 -0
- package/src/avm2/natives/xml/build.ts +381 -0
- package/src/avm2/natives/xml/chars.ts +127 -0
- package/src/avm2/natives/xml/escape.ts +46 -0
- package/src/avm2/natives/xml/names.ts +256 -0
- package/src/avm2/natives/xml/node.ts +339 -0
- package/src/avm2/natives/xml/operators.ts +90 -0
- package/src/avm2/natives/xml/parser.ts +414 -0
- package/src/avm2/natives/xml/strings.ts +241 -0
- package/src/avm2/natives/xml/values.ts +162 -0
- package/src/avm2/natives/xml/xml.ts +829 -0
- package/src/avm2/number-strings.ts +127 -0
- package/src/avm2/numbers.ts +605 -0
- package/src/avm2/options.ts +125 -0
- package/src/avm2/player-messages.ts +552 -0
- package/src/avm2/property-cache.ts +160 -0
- package/src/avm2/runtime.ts +3274 -0
- package/src/avm2/traits.ts +584 -0
- package/src/index.ts +8 -0
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
// A Dictionary's object keys, and the slots a for-in goes through them by.
|
|
2
|
+
// As DictionaryObject's hashtable, the store itself holds each key's slot,
|
|
3
|
+
// so that a for-in reads a slot for its name and value, with no list of
|
|
4
|
+
// names built at its start and no lookup at each step. Weak keys (new
|
|
5
|
+
// Dictionary(true)) keep no key alive, as Flash's do not: their entries are
|
|
6
|
+
// held strongly only by a WeakMap keyed by the key, and their slots hold
|
|
7
|
+
// them weakly, so neither a for-in left off nor a value that refers to its
|
|
8
|
+
// key keeps the key.
|
|
9
|
+
|
|
10
|
+
import type { AsObject, Value } from "./descriptors.js";
|
|
11
|
+
|
|
12
|
+
/** The value of an entry not there: deleted, or kept spare. No ActionScript value is a symbol. */
|
|
13
|
+
const GONE = Symbol("gone");
|
|
14
|
+
|
|
15
|
+
/** What valueAt gives where a dynamic property's name is, whose value is the property's. */
|
|
16
|
+
export const NAMED = Symbol("named");
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A key and its value. Once deleted and its slot freed, it is kept to hold
|
|
20
|
+
* a key added later, with the WeakRef a weak one has: V8 keeps each
|
|
21
|
+
* WeakRef's target alive until the current job ends, so a new one for each
|
|
22
|
+
* key added would keep every entry made in a long frame.
|
|
23
|
+
*/
|
|
24
|
+
class Entry {
|
|
25
|
+
/** Null once deleted from a slot. */
|
|
26
|
+
key: object | null = null;
|
|
27
|
+
/** GONE while not there: its slot is passed over, and free when a for-in next starts. */
|
|
28
|
+
value: Value = GONE;
|
|
29
|
+
/** Its slot, -1 until a for-in starts and gives it one. */
|
|
30
|
+
slot = -1;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
class WeakEntry extends Entry {
|
|
34
|
+
/** How the slots hold it. */
|
|
35
|
+
readonly ref = new WeakRef<Entry>(this);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
type Held = Entry | WeakRef<Entry>;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* As avmplus' hashtable, a name keeps its slot while it is there, so that a
|
|
42
|
+
* for-in started inside another never moves the outer one's names. One
|
|
43
|
+
* deleted stays in its slot, which a for-in passes over, until a for-in next
|
|
44
|
+
* starts: then its slot is free, and the names added since take the free
|
|
45
|
+
* slots, the Dictionary's dynamic properties first, then its keys in the
|
|
46
|
+
* order they were added; only with none free does the list grow. So a for-in
|
|
47
|
+
* goes through neither a name added during it nor one deleted before it gets
|
|
48
|
+
* there, and goes through each other once.
|
|
49
|
+
*/
|
|
50
|
+
export class DictionaryKeys {
|
|
51
|
+
readonly weak: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Each key's entry. One deleted before it had a slot stays, GONE, so that
|
|
54
|
+
* the key set again takes it back: deleting and setting a key over and
|
|
55
|
+
* over between for-ins makes nothing. A strong key deleted so stays alive
|
|
56
|
+
* until a for-in starts or `added` is settled, which keeps that bounded by
|
|
57
|
+
* twice the keys there, and 64.
|
|
58
|
+
*/
|
|
59
|
+
private readonly map: Map<object, Entry> | WeakMap<object, Entry>;
|
|
60
|
+
/** Each slot: a key's entry, a dynamic property's name, or null where free. */
|
|
61
|
+
private readonly slots: (Held | string | null)[] = [];
|
|
62
|
+
/** The entries added since a for-in last started, which take slots when one next does. */
|
|
63
|
+
private added: Held[] = [];
|
|
64
|
+
/** The count of those at which the ones deleted or collected are dropped, so none pile up. */
|
|
65
|
+
private addedLimit = 64;
|
|
66
|
+
/** The entries with slots deleted since a for-in last started, freed when one next does. */
|
|
67
|
+
private readonly deleted: Entry[] = [];
|
|
68
|
+
/** The slots of keys collected that a for-in has come across since one last started. */
|
|
69
|
+
private readonly collected: number[] = [];
|
|
70
|
+
/** Entries no longer used, to hold keys added later; trimmed when a for-in starts. */
|
|
71
|
+
private readonly spare: Entry[] = [];
|
|
72
|
+
/** The slot of each dynamic property's name. */
|
|
73
|
+
private named: Map<string, number> | null = null;
|
|
74
|
+
|
|
75
|
+
constructor(weak: boolean) {
|
|
76
|
+
this.weak = weak;
|
|
77
|
+
this.map = weak ? new WeakMap() : new Map();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
get(key: object): Value {
|
|
81
|
+
const value = this.map.get(key)?.value;
|
|
82
|
+
return value === GONE ? undefined : value;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
has(key: object): boolean {
|
|
86
|
+
const entry = this.map.get(key);
|
|
87
|
+
return entry !== undefined && entry.value !== GONE;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
set(key: object, value: Value): this {
|
|
91
|
+
if (!this.replace(key, value)) {
|
|
92
|
+
this.add(key, value);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Sets the value of a key that has an entry, there or deleted, and says
|
|
100
|
+
* whether it had one; set's first half, so that a caller can look at a
|
|
101
|
+
* key before it is added.
|
|
102
|
+
*/
|
|
103
|
+
replace(key: object, value: Value): boolean {
|
|
104
|
+
const known = this.map.get(key);
|
|
105
|
+
if (known === undefined) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
known.value = value;
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** Adds a key that has no entry (replace said so). */
|
|
114
|
+
add(key: object, value: Value): void {
|
|
115
|
+
const entry = this.spare.pop() ?? (this.weak ? new WeakEntry() : new Entry());
|
|
116
|
+
entry.key = key;
|
|
117
|
+
entry.value = value;
|
|
118
|
+
this.map.set(key, entry);
|
|
119
|
+
this.added.push(this.hold(entry));
|
|
120
|
+
if (this.added.length >= this.addedLimit) {
|
|
121
|
+
this.added = this.settle(this.added);
|
|
122
|
+
this.addedLimit = Math.max(64, this.added.length * 2);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
delete(key: object): boolean {
|
|
127
|
+
const entry = this.map.get(key);
|
|
128
|
+
if (entry === undefined || entry.value === GONE) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
entry.value = GONE;
|
|
133
|
+
if (entry.slot >= 0) {
|
|
134
|
+
this.map.delete(key);
|
|
135
|
+
entry.key = null;
|
|
136
|
+
this.deleted.push(entry);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** The keys there now: those with slots, in their slots' order, then those added since. */
|
|
143
|
+
*keys(): IterableIterator<object> {
|
|
144
|
+
for (const entry of this.entries()) {
|
|
145
|
+
yield entry.key as object;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
*[Symbol.iterator](): IterableIterator<[object, Value]> {
|
|
150
|
+
for (const entry of this.entries()) {
|
|
151
|
+
yield [entry.key as object, entry.value];
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
get size(): number {
|
|
156
|
+
let n = 0;
|
|
157
|
+
for (const _ of this.entries()) {
|
|
158
|
+
n++;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return n;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* The index after `index` of a name of Dictionary `o` there now, or 0. A
|
|
166
|
+
* for-in's start (index 0) first frees the slots of names gone and gives
|
|
167
|
+
* those added theirs.
|
|
168
|
+
*/
|
|
169
|
+
next(o: AsObject, index: number): number {
|
|
170
|
+
if (index === 0) {
|
|
171
|
+
this.start(o);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const slots = this.slots;
|
|
175
|
+
for (let i = index; i < slots.length; i++) {
|
|
176
|
+
const held = slots[i];
|
|
177
|
+
if (held === null) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (typeof held === "string") {
|
|
182
|
+
if (o.$d?.has(held) && !o.$dontEnum?.has(held)) {
|
|
183
|
+
return i + 1;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const entry = this.open(held);
|
|
190
|
+
if (entry === undefined) {
|
|
191
|
+
slots[i] = null;
|
|
192
|
+
this.collected.push(i);
|
|
193
|
+
} else if (entry.value !== GONE) {
|
|
194
|
+
return i + 1;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
return 0;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/** The name at a for-in's index: a key, a dynamic property's name, or "" once a key is gone. */
|
|
202
|
+
nameAt(index: number): object | string {
|
|
203
|
+
const held = this.slots[index - 1];
|
|
204
|
+
if (held === null || held === undefined) {
|
|
205
|
+
return "";
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return typeof held === "string" ? held : (this.open(held)?.key ?? "");
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/** The value at a for-in's index: a key's, undefined once it is gone, or NAMED. */
|
|
212
|
+
valueAt(index: number): Value {
|
|
213
|
+
const held = this.slots[index - 1];
|
|
214
|
+
if (held === null || held === undefined) {
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if (typeof held === "string") {
|
|
219
|
+
return NAMED;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const value = this.open(held)?.value;
|
|
223
|
+
return value === GONE ? undefined : value;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/** The entry a slot or `added` holds, or undefined once its key is collected. */
|
|
227
|
+
private open(held: Held): Entry | undefined {
|
|
228
|
+
return this.weak ? (held as WeakRef<Entry>).deref() : (held as Entry);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
private hold(entry: Entry): Held {
|
|
232
|
+
return this.weak ? (entry as WeakEntry).ref : entry;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
private *entries(): IterableIterator<Entry> {
|
|
236
|
+
for (let i = 0; i < this.slots.length; i++) {
|
|
237
|
+
const held = this.slots[i];
|
|
238
|
+
const entry = held === null || typeof held === "string" ? undefined : this.open(held);
|
|
239
|
+
if (entry !== undefined && entry.value !== GONE) {
|
|
240
|
+
yield entry;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
for (let i = 0; i < this.added.length; i++) {
|
|
245
|
+
const entry = this.open(this.added[i]);
|
|
246
|
+
if (entry !== undefined && entry.value !== GONE) {
|
|
247
|
+
yield entry;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/** Those of `added` still there; the others are let go, their keys with them. */
|
|
253
|
+
private settle(added: Held[]): Held[] {
|
|
254
|
+
let kept = 0;
|
|
255
|
+
for (let i = 0; i < added.length; i++) {
|
|
256
|
+
const held = added[i];
|
|
257
|
+
const entry = this.open(held);
|
|
258
|
+
if (entry === undefined) {
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
if (entry.value !== GONE) {
|
|
263
|
+
added[kept++] = held;
|
|
264
|
+
} else {
|
|
265
|
+
this.map.delete(entry.key as object);
|
|
266
|
+
entry.key = null;
|
|
267
|
+
this.spare.push(entry);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
added.length = kept;
|
|
272
|
+
return added;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
private start(o: AsObject): void {
|
|
276
|
+
const d: Map<string, unknown> | undefined = o.$d;
|
|
277
|
+
const deleted = this.deleted;
|
|
278
|
+
if (
|
|
279
|
+
this.added.length === 0 &&
|
|
280
|
+
deleted.length === 0 &&
|
|
281
|
+
this.collected.length === 0 &&
|
|
282
|
+
!d?.size &&
|
|
283
|
+
!this.named?.size
|
|
284
|
+
) {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const slots = this.slots;
|
|
289
|
+
const free: number[] = [];
|
|
290
|
+
for (let i = 0; i < deleted.length; i++) {
|
|
291
|
+
const entry = deleted[i];
|
|
292
|
+
slots[entry.slot] = null;
|
|
293
|
+
free.push(entry.slot);
|
|
294
|
+
entry.slot = -1;
|
|
295
|
+
this.spare.push(entry);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
deleted.length = 0;
|
|
299
|
+
for (let i = 0; i < this.collected.length; i++) {
|
|
300
|
+
free.push(this.collected[i]);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
this.collected.length = 0;
|
|
304
|
+
if (this.named !== null) {
|
|
305
|
+
for (const [name, i] of this.named) {
|
|
306
|
+
if (!d?.has(name)) {
|
|
307
|
+
this.named.delete(name);
|
|
308
|
+
slots[i] = null;
|
|
309
|
+
free.push(i);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// Lowest first, so that the names added fill the earliest gaps.
|
|
315
|
+
free.sort((a, b) => a - b);
|
|
316
|
+
let next = 0;
|
|
317
|
+
// Freed, `named` holds only names still there: as many as there are, and none is new.
|
|
318
|
+
if (d?.size && d.size !== (this.named?.size ?? 0)) {
|
|
319
|
+
this.named ??= new Map();
|
|
320
|
+
for (const name of d.keys()) {
|
|
321
|
+
if (!this.named.has(name)) {
|
|
322
|
+
const i = next < free.length ? free[next++] : slots.length;
|
|
323
|
+
slots[i] = name;
|
|
324
|
+
this.named.set(name, i);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
const added = this.settle(this.added);
|
|
330
|
+
for (let n = 0; n < added.length; n++) {
|
|
331
|
+
const i = next < free.length ? free[next++] : slots.length;
|
|
332
|
+
slots[i] = added[n];
|
|
333
|
+
(this.open(added[n]) as Entry).slot = i;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
// Kept for as many keys as were added since the last start, as the next
|
|
337
|
+
// may add as many again; an emptied Dictionary keeps almost none.
|
|
338
|
+
if (this.spare.length > added.length + 64) {
|
|
339
|
+
this.spare.length = added.length + 64;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
this.added = [];
|
|
343
|
+
this.addedLimit = 64;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// What generated code loads and stores domain memory in place through, at
|
|
2
|
+
// an int or uint address: a DataView, whose own range check rejects the
|
|
3
|
+
// addresses avmplus' MOPS reject, with a RangeError of its own. The method
|
|
4
|
+
// that made the access turns it into avmplus' RangeError 1506
|
|
5
|
+
// (Runtime.memoryError), before any caller or handler sees it.
|
|
6
|
+
import type { Runtime } from "./runtime.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The messages of the RangeErrors a DataView throws for an offset out of
|
|
10
|
+
* its range, as this engine words them: below 0, past the end, and with
|
|
11
|
+
* too few bytes left, for a load and a store.
|
|
12
|
+
*/
|
|
13
|
+
const viewRangeMessages: ReadonlySet<string> = (() => {
|
|
14
|
+
const messages = new Set<string>();
|
|
15
|
+
const view = new DataView(new ArrayBuffer(4));
|
|
16
|
+
const probes = [
|
|
17
|
+
() => view.getUint8(-1),
|
|
18
|
+
() => view.getUint8(4),
|
|
19
|
+
() => view.getInt32(1, true),
|
|
20
|
+
() => view.getFloat64(0, true),
|
|
21
|
+
() => view.setUint8(-1, 0),
|
|
22
|
+
() => view.setUint16(3, 0, true),
|
|
23
|
+
() => view.setFloat64(0, 0, true),
|
|
24
|
+
() => view.getUint8(0xffffffff),
|
|
25
|
+
];
|
|
26
|
+
for (let i = 0; i < probes.length; i++) {
|
|
27
|
+
try {
|
|
28
|
+
probes[i]();
|
|
29
|
+
} catch (e) {
|
|
30
|
+
if (e instanceof RangeError) {
|
|
31
|
+
messages.add(e.message);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return messages;
|
|
37
|
+
})();
|
|
38
|
+
|
|
39
|
+
/** Whether `e` is the RangeError a DataView throws for an offset out of its range. */
|
|
40
|
+
export function isViewRangeError(e: unknown): boolean {
|
|
41
|
+
return e instanceof RangeError && viewRangeMessages.has(e.message);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Domain memory another worker shares, as generated code reaches it: each
|
|
46
|
+
* access through the runtime's li8 and the others, which read the length
|
|
47
|
+
* again, as that worker may have grown it, before they reject an address.
|
|
48
|
+
*/
|
|
49
|
+
export class SharedMemoryView {
|
|
50
|
+
private readonly rt: Runtime;
|
|
51
|
+
|
|
52
|
+
constructor(rt: Runtime) {
|
|
53
|
+
this.rt = rt;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
getUint8(at: number): number {
|
|
57
|
+
return this.rt.li8(at);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
getUint16(at: number, _littleEndian: boolean): number {
|
|
61
|
+
return this.rt.li16(at);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
getInt32(at: number, _littleEndian: boolean): number {
|
|
65
|
+
return this.rt.li32(at);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
getFloat32(at: number, _littleEndian: boolean): number {
|
|
69
|
+
return this.rt.lf32(at);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
getFloat64(at: number, _littleEndian: boolean): number {
|
|
73
|
+
return this.rt.lf64(at);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
setUint8(at: number, value: number): void {
|
|
77
|
+
this.rt.si8(value, at);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
setUint16(at: number, value: number, _littleEndian: boolean): void {
|
|
81
|
+
this.rt.si16(value, at);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
setInt32(at: number, value: number, _littleEndian: boolean): void {
|
|
85
|
+
this.rt.si32(value, at);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
setFloat32(at: number, value: number, _littleEndian: boolean): void {
|
|
89
|
+
this.rt.sf32(value, at);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
setFloat64(at: number, value: number, _littleEndian: boolean): void {
|
|
93
|
+
this.rt.sf64(value, at);
|
|
94
|
+
}
|
|
95
|
+
}
|