@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,292 @@
|
|
|
1
|
+
// Namespaces and multinames, as generated modules describe them.
|
|
2
|
+
//
|
|
3
|
+
// Namespaces are interned by kind and URI across modules, as the compiler
|
|
4
|
+
// interns them, so two modules' `public` are one object and names compare by
|
|
5
|
+
// identity. A private namespace is only ever equal to itself.
|
|
6
|
+
|
|
7
|
+
import type { AsObject } from "./descriptors.js";
|
|
8
|
+
import type { Domain, Script } from "./domain.js";
|
|
9
|
+
import { NO_CACHE, type PropertyCache } from "./property-cache.js";
|
|
10
|
+
|
|
11
|
+
/** Namespace kinds, numbered as the compiler's NS_* constants. */
|
|
12
|
+
export const NS_Public = 0;
|
|
13
|
+
export const NS_PackageInternal = 1;
|
|
14
|
+
export const NS_Protected = 2;
|
|
15
|
+
export const NS_Explicit = 3;
|
|
16
|
+
export const NS_StaticProtected = 4;
|
|
17
|
+
export const NS_Private = 5;
|
|
18
|
+
|
|
19
|
+
export class Namespace {
|
|
20
|
+
constructor(
|
|
21
|
+
readonly kind: number,
|
|
22
|
+
/** null for a namespace without a URI (the any namespace). */
|
|
23
|
+
readonly uri: string | null,
|
|
24
|
+
/**
|
|
25
|
+
* E4X's prefix, undefined for none, as a Namespace value can have one.
|
|
26
|
+
* A namespace with a prefix is not interned: names look it up as the
|
|
27
|
+
* interned one of its kind and URI (see interned).
|
|
28
|
+
*/
|
|
29
|
+
readonly prefix: string | undefined = undefined,
|
|
30
|
+
) {}
|
|
31
|
+
|
|
32
|
+
/** The namespace names look this one up as: this one, or without its prefix, interned. */
|
|
33
|
+
get interned(): Namespace {
|
|
34
|
+
return this.prefix === undefined ? this : namespace(this.kind, this.uri);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** The interned namespaces, by kind, then URI: null, the any namespace, is not "null". */
|
|
39
|
+
const interned: Map<string | null, Namespace>[] = [];
|
|
40
|
+
|
|
41
|
+
/** The namespace of `kind` and `uri`, the same object each time. */
|
|
42
|
+
export function namespace(kind: number, uri: string | null): Namespace {
|
|
43
|
+
let byUri = interned[kind];
|
|
44
|
+
if (!byUri) {
|
|
45
|
+
byUri = new Map();
|
|
46
|
+
interned[kind] = byUri;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
let ns = byUri.get(uri);
|
|
50
|
+
if (!ns) {
|
|
51
|
+
ns = new Namespace(kind, uri);
|
|
52
|
+
byUri.set(uri, ns);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return ns;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const publicNs = namespace(NS_Public, "");
|
|
59
|
+
const PUBLIC_NAMESPACES: readonly Namespace[] = [publicNs];
|
|
60
|
+
const ALL_VERSIONS: readonly number[] = [255];
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* A public Namespace value of `uri` with `prefix`, as E4X makes one: with
|
|
64
|
+
* no prefix, or the empty one for the empty URI, the interned namespace.
|
|
65
|
+
*/
|
|
66
|
+
export function prefixedNamespace(prefix: string | undefined, uri: string): Namespace {
|
|
67
|
+
if (prefix === undefined || (prefix === "" && uri === "")) {
|
|
68
|
+
return namespace(NS_Public, uri);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return new Namespace(NS_Public, uri, prefix);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** A Namespace value's prefix, as avmplus has it: the empty URI's is "", else undefined unless given. */
|
|
75
|
+
export function prefixOf(ns: Namespace): string | undefined {
|
|
76
|
+
return ns.prefix ?? (ns.uri === "" ? "" : undefined);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Multiname kinds, as the ABC numbers them.
|
|
80
|
+
export const CONSTANT_Qname = 0x07;
|
|
81
|
+
export const CONSTANT_QnameA = 0x0d;
|
|
82
|
+
export const CONSTANT_RTQname = 0x0f;
|
|
83
|
+
export const CONSTANT_RTQnameA = 0x10;
|
|
84
|
+
export const CONSTANT_RTQnameL = 0x11;
|
|
85
|
+
export const CONSTANT_RTQnameLA = 0x12;
|
|
86
|
+
export const CONSTANT_Multiname = 0x09;
|
|
87
|
+
export const CONSTANT_MultinameA = 0x0e;
|
|
88
|
+
export const CONSTANT_MultinameL = 0x1b;
|
|
89
|
+
export const CONSTANT_MultinameLA = 0x1c;
|
|
90
|
+
export const CONSTANT_TypeName = 0x1d;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* A name as a property lookup uses it: its namespaces, each with the API
|
|
94
|
+
* version it sees bindings at, and its local name, null for any name.
|
|
95
|
+
*/
|
|
96
|
+
export class Multiname {
|
|
97
|
+
/**
|
|
98
|
+
* The object a runtime name was, which a Dictionary keys by itself; its
|
|
99
|
+
* name is the object's string for any other. Declared, so that every
|
|
100
|
+
* multiname has the same shape.
|
|
101
|
+
*/
|
|
102
|
+
key: unknown = undefined;
|
|
103
|
+
/** The local name, or undefined until a key's is first needed. */
|
|
104
|
+
private local: string | null | undefined;
|
|
105
|
+
/** How a key's name is made, as the object's string, when a lookup first needs it. */
|
|
106
|
+
private nameOf: ((key: unknown) => string) | null = null;
|
|
107
|
+
/**
|
|
108
|
+
* The application domain whose definitions the name is looked up in: its
|
|
109
|
+
* module's, or the one of the name it was made from; null for the root.
|
|
110
|
+
*/
|
|
111
|
+
domain: Domain | null = null;
|
|
112
|
+
/** What its lookups found, for a module's name (property-cache.ts); a name made at run time keeps none. */
|
|
113
|
+
cache: PropertyCache = NO_CACHE;
|
|
114
|
+
/**
|
|
115
|
+
* The script that defines it, once found: the first definition of a name
|
|
116
|
+
* wins, so later modules cannot change it (Runtime.definingScript).
|
|
117
|
+
*/
|
|
118
|
+
script: Script | null = null;
|
|
119
|
+
/**
|
|
120
|
+
* That script's global object, once the script has been asked to run: a
|
|
121
|
+
* module's finddef reads it before calling the runtime (Runtime.findDef).
|
|
122
|
+
*/
|
|
123
|
+
global: AsObject | null = null;
|
|
124
|
+
/** The class it names, once resolved (Runtime.resolveName). */
|
|
125
|
+
cls: AsObject | null = null;
|
|
126
|
+
/** Fixed at construction so indexed access needs no getter in its hot path. */
|
|
127
|
+
readonly elementName: boolean;
|
|
128
|
+
|
|
129
|
+
constructor(
|
|
130
|
+
readonly kind: number,
|
|
131
|
+
/** Its namespaces; one of null, as a Qname's, is any namespace. */
|
|
132
|
+
readonly namespaces: readonly (Namespace | null)[],
|
|
133
|
+
readonly versions: readonly number[],
|
|
134
|
+
name: string | null,
|
|
135
|
+
readonly attribute: boolean,
|
|
136
|
+
) {
|
|
137
|
+
this.local = name;
|
|
138
|
+
this.elementName =
|
|
139
|
+
!attribute && namespaces.some((ns) => ns !== null && ns.kind === NS_Public && ns.uri === "");
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* A runtime name that was an object: a Dictionary keys by the object
|
|
144
|
+
* itself, and anything else by its string, which is made only then, as
|
|
145
|
+
* avmplus converts it only for an object that is not a Dictionary.
|
|
146
|
+
*/
|
|
147
|
+
static keyed(
|
|
148
|
+
kind: number,
|
|
149
|
+
namespaces: readonly (Namespace | null)[],
|
|
150
|
+
versions: readonly number[],
|
|
151
|
+
key: object,
|
|
152
|
+
attribute: boolean,
|
|
153
|
+
nameOf: (key: unknown) => string,
|
|
154
|
+
): Multiname {
|
|
155
|
+
const mn = new Multiname(kind, namespaces, versions, null, attribute);
|
|
156
|
+
mn.key = key;
|
|
157
|
+
mn.local = undefined;
|
|
158
|
+
mn.nameOf = nameOf;
|
|
159
|
+
return mn;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** The local name, null for any name. */
|
|
163
|
+
get name(): string | null {
|
|
164
|
+
const local = this.local;
|
|
165
|
+
if (local !== undefined) {
|
|
166
|
+
return local;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const name = (this.nameOf as (key: unknown) => string)(this.key);
|
|
170
|
+
this.local = name;
|
|
171
|
+
return name;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/** Whether the name still needs a namespace from the stack. */
|
|
175
|
+
get runtimeNs(): boolean {
|
|
176
|
+
const k = this.kind;
|
|
177
|
+
return (
|
|
178
|
+
k === CONSTANT_RTQname ||
|
|
179
|
+
k === CONSTANT_RTQnameA ||
|
|
180
|
+
k === CONSTANT_RTQnameL ||
|
|
181
|
+
k === CONSTANT_RTQnameLA
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/** Whether the local name comes from the stack. */
|
|
186
|
+
get runtimeName(): boolean {
|
|
187
|
+
const k = this.kind;
|
|
188
|
+
return (
|
|
189
|
+
k === CONSTANT_RTQnameL ||
|
|
190
|
+
k === CONSTANT_RTQnameLA ||
|
|
191
|
+
k === CONSTANT_MultinameL ||
|
|
192
|
+
k === CONSTANT_MultinameLA
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* The dynamic property the name names, or null, as
|
|
198
|
+
* Multiname::isValidDynamicName: not an attribute and with a public
|
|
199
|
+
* namespace, one of the public kind and an empty URI, as
|
|
200
|
+
* Namespace::isPublic.
|
|
201
|
+
*/
|
|
202
|
+
dynamicName(): string | null {
|
|
203
|
+
if (this.attribute || this.name === null) {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
for (const ns of this.namespaces) {
|
|
208
|
+
// null is any namespace, as in *::x.
|
|
209
|
+
if (ns !== null && ns.kind === NS_Public && ns.uri === "") {
|
|
210
|
+
return this.name;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
toString(): string {
|
|
218
|
+
const ns = this.namespaces.length === 1 ? this.namespaces[0] : null;
|
|
219
|
+
const name = this.name ?? "*";
|
|
220
|
+
return ns?.uri ? `${ns.uri}::${name}` : name;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/** A TypeName, `Base.<Param>`, whose parts are other multinames of its module. */
|
|
225
|
+
export class TypeName {
|
|
226
|
+
names: (Multiname | TypeName | null)[] = [];
|
|
227
|
+
|
|
228
|
+
constructor(
|
|
229
|
+
readonly base: number,
|
|
230
|
+
readonly params: number[],
|
|
231
|
+
) {}
|
|
232
|
+
|
|
233
|
+
get baseName(): Multiname {
|
|
234
|
+
return this.names[this.base] as Multiname;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
param(i: number): Multiname | TypeName | null {
|
|
238
|
+
return this.names[this.params[i]];
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/** A Qname in one namespace, seen at every version. */
|
|
243
|
+
export function qname(ns: Namespace, name: string): Multiname {
|
|
244
|
+
return new Multiname(
|
|
245
|
+
CONSTANT_Qname,
|
|
246
|
+
ns === publicNs ? PUBLIC_NAMESPACES : [ns],
|
|
247
|
+
ALL_VERSIONS,
|
|
248
|
+
name,
|
|
249
|
+
false,
|
|
250
|
+
);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* A public name the runtime makes from a string, as `in`, hasOwnProperty,
|
|
255
|
+
* JSON and AMF do: seen at user code's version, as avmplus' findPublicNamespace
|
|
256
|
+
* sees it from the user code on the call stack, so an AIR-only or a
|
|
257
|
+
* VM-internal binding is not there, as it is not to the code itself.
|
|
258
|
+
*/
|
|
259
|
+
export function publicQname(name: string, versions: readonly number[]): Multiname {
|
|
260
|
+
return new Multiname(CONSTANT_Qname, PUBLIC_NAMESPACES, versions, name, false);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/** The builtin Vector classes, which avmplus names as the types they are vectors of. */
|
|
264
|
+
const VECTOR_NAMES: Record<string, string> = {
|
|
265
|
+
"__AS3__.vec::Vector$int": "__AS3__.vec::Vector.<int>",
|
|
266
|
+
"__AS3__.vec::Vector$uint": "__AS3__.vec::Vector.<uint>",
|
|
267
|
+
"__AS3__.vec::Vector$double": "__AS3__.vec::Vector.<Number>",
|
|
268
|
+
"__AS3__.vec::Vector$object": "__AS3__.vec::Vector.<*>",
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
/** A traits' name as avmplus writes it: a class's statics' without their trailing $, a builtin Vector's as Vector.<T>. */
|
|
272
|
+
export function formatClassName(name: string): string {
|
|
273
|
+
const own = name.endsWith("$") ? name.slice(0, -1) : name;
|
|
274
|
+
return VECTOR_NAMES[own] ?? own;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/** A name's index as an array element, or -1: a canonical uint below 2^32 - 1. */
|
|
278
|
+
export function arrayIndex(name: string): number {
|
|
279
|
+
const c = name.charCodeAt(0);
|
|
280
|
+
if (!(c >= 0x30 && c <= 0x39)) {
|
|
281
|
+
return -1;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
const i = Number(name);
|
|
285
|
+
return i >>> 0 === i && i !== 0xffffffff && String(i) === name ? i : -1;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/** The qualified name of a class's name, "uri::name", or the name in the unnamed package. */
|
|
289
|
+
export function qualifiedName(mn: Multiname): string {
|
|
290
|
+
const ns = mn.namespaces[0];
|
|
291
|
+
return ns?.uri ? `${ns.uri}::${mn.name}` : (mn.name ?? "*");
|
|
292
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Class aliases, and AMF through ByteArray's readObject and writeObject.
|
|
2
|
+
import { readObject, writeObject } from "../amf.js";
|
|
3
|
+
import type { AsObject, Value } from "../descriptors.js";
|
|
4
|
+
import { bytesOf } from "./bytearray.js";
|
|
5
|
+
import type { Natives } from "./define.js";
|
|
6
|
+
|
|
7
|
+
export const aliasesNatives: Natives = {
|
|
8
|
+
// Class aliases and AMF.
|
|
9
|
+
"flash.net::registerClassAlias": (rt) => (aliasName: Value, cls: Value) => {
|
|
10
|
+
if (cls === null || cls === undefined) {
|
|
11
|
+
throw rt.error("TypeError", 2007, "classObject");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (aliasName === null || aliasName === undefined) {
|
|
15
|
+
throw rt.error("TypeError", 2007, "aliasName");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const name = rt.toString(aliasName);
|
|
19
|
+
if (name === "") {
|
|
20
|
+
throw rt.error("ArgumentError", 2085, "aliasName");
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
rt.registerClassAlias(name, cls);
|
|
24
|
+
},
|
|
25
|
+
"flash.net::getClassByAlias": (rt) => (aliasName: Value) => {
|
|
26
|
+
if (aliasName === null || aliasName === undefined) {
|
|
27
|
+
throw rt.error("TypeError", 2007, "aliasName");
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const name = rt.toString(aliasName);
|
|
31
|
+
if (name === "") {
|
|
32
|
+
throw rt.error("ArgumentError", 2085, "aliasName");
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return rt.classByAlias(name);
|
|
36
|
+
},
|
|
37
|
+
"flash.net::ObjectEncoding.get:dynamicPropertyWriter": (rt) => () => rt.dynamicPropertyWriter,
|
|
38
|
+
"flash.net::ObjectEncoding.set:dynamicPropertyWriter": (rt) => (writer: Value) => {
|
|
39
|
+
rt.dynamicPropertyWriter = writer ?? null;
|
|
40
|
+
},
|
|
41
|
+
// What writeDynamicProperties writes through: the object being written's
|
|
42
|
+
// dynamic part, each name and value.
|
|
43
|
+
"flash.net::DynamicPropertyOutput#writeDynamicProperty": (rt) =>
|
|
44
|
+
function (this: AsObject, name: Value, value: Value) {
|
|
45
|
+
if (name === null || name === undefined) {
|
|
46
|
+
throw rt.error("TypeError", 2007, "name");
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
this.$amf.dynamicProperty(rt.toString(name), value);
|
|
50
|
+
},
|
|
51
|
+
"flash.utils::ByteArray#writeObject": (rt) =>
|
|
52
|
+
function (this: AsObject, v: Value) {
|
|
53
|
+
writeObject(rt, bytesOf(rt, this), v);
|
|
54
|
+
},
|
|
55
|
+
"flash.utils::ByteArray#readObject": (rt) =>
|
|
56
|
+
function (this: AsObject) {
|
|
57
|
+
return readObject(rt, bytesOf(rt, this));
|
|
58
|
+
},
|
|
59
|
+
};
|