@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,106 @@
|
|
|
1
|
+
// The modules a runtime loads into its application domains, and which of
|
|
2
|
+
// them the code on a stack is from: a Runtime's (Runtime.modules), apart
|
|
3
|
+
// from its object model, as nothing compiled code calls goes through it.
|
|
4
|
+
import { add, Domain, definedInChain, frameScripts, stackFrames } from "./domain.js";
|
|
5
|
+
import { TypeName } from "./names.js";
|
|
6
|
+
export class Modules {
|
|
7
|
+
domainCount = 1;
|
|
8
|
+
loads = 0;
|
|
9
|
+
/**
|
|
10
|
+
* The domain of each loaded module's code, by the script a stack's frame
|
|
11
|
+
* names it with (see Runtime.codeDomain); found from the stacks its loads
|
|
12
|
+
* took, which wait in `unlocated` until a domain other than the root
|
|
13
|
+
* exists. Weakly: a module's code keeps its domain, through its Abc, for
|
|
14
|
+
* as long as it can run, and a domain no code is left of is let go, an
|
|
15
|
+
* entry dropped with it.
|
|
16
|
+
*/
|
|
17
|
+
moduleDomains = new Map();
|
|
18
|
+
moduleDomainGone = new FinalizationRegistry((at) => {
|
|
19
|
+
if (!this.moduleDomains.get(at)?.deref()) {
|
|
20
|
+
this.moduleDomains.delete(at);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
unlocated = [];
|
|
24
|
+
/** A domain whose definitions are looked up after `parent`'s. */
|
|
25
|
+
newDomain(parent) {
|
|
26
|
+
return new Domain(parent, this.domainCount++);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Load a module into `domain`: its scripts' names become visible there.
|
|
30
|
+
* `at` is the stack its load took, made in Runtime.abc, whose frame is
|
|
31
|
+
* its first and the module's factory its second (see locate); null for a
|
|
32
|
+
* player's own, whose code is not a domain's to Runtime.codeDomain.
|
|
33
|
+
*/
|
|
34
|
+
load(desc, domain, at) {
|
|
35
|
+
// Its layouts are those of its ABC after exactly these ABCs; the
|
|
36
|
+
// root's, which a player loads thousands into, are not copied.
|
|
37
|
+
const loaded = domain.parent ? domain.chain() : domain.own;
|
|
38
|
+
const linked = desc.linked;
|
|
39
|
+
if (linked.length !== loaded.length || linked.some((h, i) => h !== loaded[i])) {
|
|
40
|
+
throw new Error(`swf2es: a module compiled after [${linked.join(", ")}] cannot load after [${loaded.join(", ")}]`);
|
|
41
|
+
}
|
|
42
|
+
const abc = desc;
|
|
43
|
+
abc.domain = domain;
|
|
44
|
+
abc.index = domain.own.length;
|
|
45
|
+
domain.own.push(desc.hash);
|
|
46
|
+
domain.ownOrder.push(this.loads++);
|
|
47
|
+
if (at !== null) {
|
|
48
|
+
this.unlocated.push([at, domain]);
|
|
49
|
+
}
|
|
50
|
+
for (const name of abc.names) {
|
|
51
|
+
if (name instanceof TypeName) {
|
|
52
|
+
name.names = abc.names;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
for (const cls of abc.classes) {
|
|
56
|
+
cls.abc = abc;
|
|
57
|
+
}
|
|
58
|
+
abc.scriptStates = abc.scripts.map((s) => ({ desc: s, abc, global: null, state: 0 }));
|
|
59
|
+
// As DomainMgr::addNamedScript: a name the domain's chain defines
|
|
60
|
+
// already, cached or loaded, is unreachable, and not added.
|
|
61
|
+
for (const script of abc.scriptStates) {
|
|
62
|
+
for (const [ns, version, name] of script.desc.traits.bindings) {
|
|
63
|
+
if (!definedInChain(domain, name, ns)) {
|
|
64
|
+
add(domain.globals, { ns, version, script }, name);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return abc;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The domain of the innermost code in `stack` that a module defines, or
|
|
72
|
+
* null. A frame is a module's by its script, so a host gives each module
|
|
73
|
+
* a script of its own: its URL, or a sourceURL comment for code it
|
|
74
|
+
* evaluates.
|
|
75
|
+
*/
|
|
76
|
+
domainOf(stack) {
|
|
77
|
+
this.locate();
|
|
78
|
+
for (const at of frameScripts(stack)) {
|
|
79
|
+
const domain = this.moduleDomains.get(at)?.deref();
|
|
80
|
+
if (domain) {
|
|
81
|
+
return domain;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The scripts of the modules loaded since last asked, by the stacks their
|
|
88
|
+
* loads took. Their stacks reach the modules' code, so they are not kept
|
|
89
|
+
* past the load once there are domains to tell apart.
|
|
90
|
+
*/
|
|
91
|
+
locate() {
|
|
92
|
+
for (const [error, domain] of this.unlocated) {
|
|
93
|
+
// Its first frame is abc's own, its second the module's factory. An
|
|
94
|
+
// engine may name no script for the factory's frame (JavaScriptCore,
|
|
95
|
+
// for code a Function made), and the next frame that names one is
|
|
96
|
+
// the host's, which must not stand for the module.
|
|
97
|
+
const at = stackFrames(error.stack)[1];
|
|
98
|
+
if (at) {
|
|
99
|
+
this.moduleDomains.set(at, new WeakRef(domain));
|
|
100
|
+
this.moduleDomainGone.register(domain, at);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
this.unlocated.length = 0;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=modules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../src/avm2/modules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type { AsObject } from "./descriptors.js";
|
|
2
|
+
import type { Domain, Script } from "./domain.js";
|
|
3
|
+
import { type PropertyCache } from "./property-cache.js";
|
|
4
|
+
/** Namespace kinds, numbered as the compiler's NS_* constants. */
|
|
5
|
+
export declare const NS_Public = 0;
|
|
6
|
+
export declare const NS_PackageInternal = 1;
|
|
7
|
+
export declare const NS_Protected = 2;
|
|
8
|
+
export declare const NS_Explicit = 3;
|
|
9
|
+
export declare const NS_StaticProtected = 4;
|
|
10
|
+
export declare const NS_Private = 5;
|
|
11
|
+
export declare class Namespace {
|
|
12
|
+
readonly kind: number;
|
|
13
|
+
/** null for a namespace without a URI (the any namespace). */
|
|
14
|
+
readonly uri: string | null;
|
|
15
|
+
/**
|
|
16
|
+
* E4X's prefix, undefined for none, as a Namespace value can have one.
|
|
17
|
+
* A namespace with a prefix is not interned: names look it up as the
|
|
18
|
+
* interned one of its kind and URI (see interned).
|
|
19
|
+
*/
|
|
20
|
+
readonly prefix: string | undefined;
|
|
21
|
+
constructor(kind: number,
|
|
22
|
+
/** null for a namespace without a URI (the any namespace). */
|
|
23
|
+
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
|
+
prefix?: string | undefined);
|
|
30
|
+
/** The namespace names look this one up as: this one, or without its prefix, interned. */
|
|
31
|
+
get interned(): Namespace;
|
|
32
|
+
}
|
|
33
|
+
/** The namespace of `kind` and `uri`, the same object each time. */
|
|
34
|
+
export declare function namespace(kind: number, uri: string | null): Namespace;
|
|
35
|
+
export declare const publicNs: Namespace;
|
|
36
|
+
/**
|
|
37
|
+
* A public Namespace value of `uri` with `prefix`, as E4X makes one: with
|
|
38
|
+
* no prefix, or the empty one for the empty URI, the interned namespace.
|
|
39
|
+
*/
|
|
40
|
+
export declare function prefixedNamespace(prefix: string | undefined, uri: string): Namespace;
|
|
41
|
+
/** A Namespace value's prefix, as avmplus has it: the empty URI's is "", else undefined unless given. */
|
|
42
|
+
export declare function prefixOf(ns: Namespace): string | undefined;
|
|
43
|
+
export declare const CONSTANT_Qname = 7;
|
|
44
|
+
export declare const CONSTANT_QnameA = 13;
|
|
45
|
+
export declare const CONSTANT_RTQname = 15;
|
|
46
|
+
export declare const CONSTANT_RTQnameA = 16;
|
|
47
|
+
export declare const CONSTANT_RTQnameL = 17;
|
|
48
|
+
export declare const CONSTANT_RTQnameLA = 18;
|
|
49
|
+
export declare const CONSTANT_Multiname = 9;
|
|
50
|
+
export declare const CONSTANT_MultinameA = 14;
|
|
51
|
+
export declare const CONSTANT_MultinameL = 27;
|
|
52
|
+
export declare const CONSTANT_MultinameLA = 28;
|
|
53
|
+
export declare const CONSTANT_TypeName = 29;
|
|
54
|
+
/**
|
|
55
|
+
* A name as a property lookup uses it: its namespaces, each with the API
|
|
56
|
+
* version it sees bindings at, and its local name, null for any name.
|
|
57
|
+
*/
|
|
58
|
+
export declare class Multiname {
|
|
59
|
+
readonly kind: number;
|
|
60
|
+
/** Its namespaces; one of null, as a Qname's, is any namespace. */
|
|
61
|
+
readonly namespaces: readonly (Namespace | null)[];
|
|
62
|
+
readonly versions: readonly number[];
|
|
63
|
+
readonly attribute: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* The object a runtime name was, which a Dictionary keys by itself; its
|
|
66
|
+
* name is the object's string for any other. Declared, so that every
|
|
67
|
+
* multiname has the same shape.
|
|
68
|
+
*/
|
|
69
|
+
key: unknown;
|
|
70
|
+
/** The local name, or undefined until a key's is first needed. */
|
|
71
|
+
private local;
|
|
72
|
+
/** How a key's name is made, as the object's string, when a lookup first needs it. */
|
|
73
|
+
private nameOf;
|
|
74
|
+
/**
|
|
75
|
+
* The application domain whose definitions the name is looked up in: its
|
|
76
|
+
* module's, or the one of the name it was made from; null for the root.
|
|
77
|
+
*/
|
|
78
|
+
domain: Domain | null;
|
|
79
|
+
/** What its lookups found, for a module's name (property-cache.ts); a name made at run time keeps none. */
|
|
80
|
+
cache: PropertyCache;
|
|
81
|
+
/**
|
|
82
|
+
* The script that defines it, once found: the first definition of a name
|
|
83
|
+
* wins, so later modules cannot change it (Runtime.definingScript).
|
|
84
|
+
*/
|
|
85
|
+
script: Script | null;
|
|
86
|
+
/**
|
|
87
|
+
* That script's global object, once the script has been asked to run: a
|
|
88
|
+
* module's finddef reads it before calling the runtime (Runtime.findDef).
|
|
89
|
+
*/
|
|
90
|
+
global: AsObject | null;
|
|
91
|
+
/** The class it names, once resolved (Runtime.resolveName). */
|
|
92
|
+
cls: AsObject | null;
|
|
93
|
+
/** Fixed at construction so indexed access needs no getter in its hot path. */
|
|
94
|
+
readonly elementName: boolean;
|
|
95
|
+
constructor(kind: number,
|
|
96
|
+
/** Its namespaces; one of null, as a Qname's, is any namespace. */
|
|
97
|
+
namespaces: readonly (Namespace | null)[], versions: readonly number[], name: string | null, attribute: boolean);
|
|
98
|
+
/**
|
|
99
|
+
* A runtime name that was an object: a Dictionary keys by the object
|
|
100
|
+
* itself, and anything else by its string, which is made only then, as
|
|
101
|
+
* avmplus converts it only for an object that is not a Dictionary.
|
|
102
|
+
*/
|
|
103
|
+
static keyed(kind: number, namespaces: readonly (Namespace | null)[], versions: readonly number[], key: object, attribute: boolean, nameOf: (key: unknown) => string): Multiname;
|
|
104
|
+
/** The local name, null for any name. */
|
|
105
|
+
get name(): string | null;
|
|
106
|
+
/** Whether the name still needs a namespace from the stack. */
|
|
107
|
+
get runtimeNs(): boolean;
|
|
108
|
+
/** Whether the local name comes from the stack. */
|
|
109
|
+
get runtimeName(): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* The dynamic property the name names, or null, as
|
|
112
|
+
* Multiname::isValidDynamicName: not an attribute and with a public
|
|
113
|
+
* namespace, one of the public kind and an empty URI, as
|
|
114
|
+
* Namespace::isPublic.
|
|
115
|
+
*/
|
|
116
|
+
dynamicName(): string | null;
|
|
117
|
+
toString(): string;
|
|
118
|
+
}
|
|
119
|
+
/** A TypeName, `Base.<Param>`, whose parts are other multinames of its module. */
|
|
120
|
+
export declare class TypeName {
|
|
121
|
+
readonly base: number;
|
|
122
|
+
readonly params: number[];
|
|
123
|
+
names: (Multiname | TypeName | null)[];
|
|
124
|
+
constructor(base: number, params: number[]);
|
|
125
|
+
get baseName(): Multiname;
|
|
126
|
+
param(i: number): Multiname | TypeName | null;
|
|
127
|
+
}
|
|
128
|
+
/** A Qname in one namespace, seen at every version. */
|
|
129
|
+
export declare function qname(ns: Namespace, name: string): Multiname;
|
|
130
|
+
/**
|
|
131
|
+
* A public name the runtime makes from a string, as `in`, hasOwnProperty,
|
|
132
|
+
* JSON and AMF do: seen at user code's version, as avmplus' findPublicNamespace
|
|
133
|
+
* sees it from the user code on the call stack, so an AIR-only or a
|
|
134
|
+
* VM-internal binding is not there, as it is not to the code itself.
|
|
135
|
+
*/
|
|
136
|
+
export declare function publicQname(name: string, versions: readonly number[]): Multiname;
|
|
137
|
+
/** A traits' name as avmplus writes it: a class's statics' without their trailing $, a builtin Vector's as Vector.<T>. */
|
|
138
|
+
export declare function formatClassName(name: string): string;
|
|
139
|
+
/** A name's index as an array element, or -1: a canonical uint below 2^32 - 1. */
|
|
140
|
+
export declare function arrayIndex(name: string): number;
|
|
141
|
+
/** The qualified name of a class's name, "uri::name", or the name in the unnamed package. */
|
|
142
|
+
export declare function qualifiedName(mn: Multiname): string;
|
|
143
|
+
//# sourceMappingURL=names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/avm2/names.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,249 @@
|
|
|
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
|
+
import { NO_CACHE } from "./property-cache.js";
|
|
7
|
+
/** Namespace kinds, numbered as the compiler's NS_* constants. */
|
|
8
|
+
export const NS_Public = 0;
|
|
9
|
+
export const NS_PackageInternal = 1;
|
|
10
|
+
export const NS_Protected = 2;
|
|
11
|
+
export const NS_Explicit = 3;
|
|
12
|
+
export const NS_StaticProtected = 4;
|
|
13
|
+
export const NS_Private = 5;
|
|
14
|
+
export class Namespace {
|
|
15
|
+
kind;
|
|
16
|
+
uri;
|
|
17
|
+
prefix;
|
|
18
|
+
constructor(kind,
|
|
19
|
+
/** null for a namespace without a URI (the any namespace). */
|
|
20
|
+
uri,
|
|
21
|
+
/**
|
|
22
|
+
* E4X's prefix, undefined for none, as a Namespace value can have one.
|
|
23
|
+
* A namespace with a prefix is not interned: names look it up as the
|
|
24
|
+
* interned one of its kind and URI (see interned).
|
|
25
|
+
*/
|
|
26
|
+
prefix = undefined) {
|
|
27
|
+
this.kind = kind;
|
|
28
|
+
this.uri = uri;
|
|
29
|
+
this.prefix = prefix;
|
|
30
|
+
}
|
|
31
|
+
/** The namespace names look this one up as: this one, or without its prefix, interned. */
|
|
32
|
+
get interned() {
|
|
33
|
+
return this.prefix === undefined ? this : namespace(this.kind, this.uri);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** The interned namespaces, by kind, then URI: null, the any namespace, is not "null". */
|
|
37
|
+
const interned = [];
|
|
38
|
+
/** The namespace of `kind` and `uri`, the same object each time. */
|
|
39
|
+
export function namespace(kind, uri) {
|
|
40
|
+
let byUri = interned[kind];
|
|
41
|
+
if (!byUri) {
|
|
42
|
+
byUri = new Map();
|
|
43
|
+
interned[kind] = byUri;
|
|
44
|
+
}
|
|
45
|
+
let ns = byUri.get(uri);
|
|
46
|
+
if (!ns) {
|
|
47
|
+
ns = new Namespace(kind, uri);
|
|
48
|
+
byUri.set(uri, ns);
|
|
49
|
+
}
|
|
50
|
+
return ns;
|
|
51
|
+
}
|
|
52
|
+
export const publicNs = namespace(NS_Public, "");
|
|
53
|
+
const PUBLIC_NAMESPACES = [publicNs];
|
|
54
|
+
const ALL_VERSIONS = [255];
|
|
55
|
+
/**
|
|
56
|
+
* A public Namespace value of `uri` with `prefix`, as E4X makes one: with
|
|
57
|
+
* no prefix, or the empty one for the empty URI, the interned namespace.
|
|
58
|
+
*/
|
|
59
|
+
export function prefixedNamespace(prefix, uri) {
|
|
60
|
+
if (prefix === undefined || (prefix === "" && uri === "")) {
|
|
61
|
+
return namespace(NS_Public, uri);
|
|
62
|
+
}
|
|
63
|
+
return new Namespace(NS_Public, uri, prefix);
|
|
64
|
+
}
|
|
65
|
+
/** A Namespace value's prefix, as avmplus has it: the empty URI's is "", else undefined unless given. */
|
|
66
|
+
export function prefixOf(ns) {
|
|
67
|
+
return ns.prefix ?? (ns.uri === "" ? "" : undefined);
|
|
68
|
+
}
|
|
69
|
+
// Multiname kinds, as the ABC numbers them.
|
|
70
|
+
export const CONSTANT_Qname = 0x07;
|
|
71
|
+
export const CONSTANT_QnameA = 0x0d;
|
|
72
|
+
export const CONSTANT_RTQname = 0x0f;
|
|
73
|
+
export const CONSTANT_RTQnameA = 0x10;
|
|
74
|
+
export const CONSTANT_RTQnameL = 0x11;
|
|
75
|
+
export const CONSTANT_RTQnameLA = 0x12;
|
|
76
|
+
export const CONSTANT_Multiname = 0x09;
|
|
77
|
+
export const CONSTANT_MultinameA = 0x0e;
|
|
78
|
+
export const CONSTANT_MultinameL = 0x1b;
|
|
79
|
+
export const CONSTANT_MultinameLA = 0x1c;
|
|
80
|
+
export const CONSTANT_TypeName = 0x1d;
|
|
81
|
+
/**
|
|
82
|
+
* A name as a property lookup uses it: its namespaces, each with the API
|
|
83
|
+
* version it sees bindings at, and its local name, null for any name.
|
|
84
|
+
*/
|
|
85
|
+
export class Multiname {
|
|
86
|
+
kind;
|
|
87
|
+
namespaces;
|
|
88
|
+
versions;
|
|
89
|
+
attribute;
|
|
90
|
+
/**
|
|
91
|
+
* The object a runtime name was, which a Dictionary keys by itself; its
|
|
92
|
+
* name is the object's string for any other. Declared, so that every
|
|
93
|
+
* multiname has the same shape.
|
|
94
|
+
*/
|
|
95
|
+
key = undefined;
|
|
96
|
+
/** The local name, or undefined until a key's is first needed. */
|
|
97
|
+
local;
|
|
98
|
+
/** How a key's name is made, as the object's string, when a lookup first needs it. */
|
|
99
|
+
nameOf = null;
|
|
100
|
+
/**
|
|
101
|
+
* The application domain whose definitions the name is looked up in: its
|
|
102
|
+
* module's, or the one of the name it was made from; null for the root.
|
|
103
|
+
*/
|
|
104
|
+
domain = null;
|
|
105
|
+
/** What its lookups found, for a module's name (property-cache.ts); a name made at run time keeps none. */
|
|
106
|
+
cache = NO_CACHE;
|
|
107
|
+
/**
|
|
108
|
+
* The script that defines it, once found: the first definition of a name
|
|
109
|
+
* wins, so later modules cannot change it (Runtime.definingScript).
|
|
110
|
+
*/
|
|
111
|
+
script = null;
|
|
112
|
+
/**
|
|
113
|
+
* That script's global object, once the script has been asked to run: a
|
|
114
|
+
* module's finddef reads it before calling the runtime (Runtime.findDef).
|
|
115
|
+
*/
|
|
116
|
+
global = null;
|
|
117
|
+
/** The class it names, once resolved (Runtime.resolveName). */
|
|
118
|
+
cls = null;
|
|
119
|
+
/** Fixed at construction so indexed access needs no getter in its hot path. */
|
|
120
|
+
elementName;
|
|
121
|
+
constructor(kind,
|
|
122
|
+
/** Its namespaces; one of null, as a Qname's, is any namespace. */
|
|
123
|
+
namespaces, versions, name, attribute) {
|
|
124
|
+
this.kind = kind;
|
|
125
|
+
this.namespaces = namespaces;
|
|
126
|
+
this.versions = versions;
|
|
127
|
+
this.attribute = attribute;
|
|
128
|
+
this.local = name;
|
|
129
|
+
this.elementName =
|
|
130
|
+
!attribute && namespaces.some((ns) => ns !== null && ns.kind === NS_Public && ns.uri === "");
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* A runtime name that was an object: a Dictionary keys by the object
|
|
134
|
+
* itself, and anything else by its string, which is made only then, as
|
|
135
|
+
* avmplus converts it only for an object that is not a Dictionary.
|
|
136
|
+
*/
|
|
137
|
+
static keyed(kind, namespaces, versions, key, attribute, nameOf) {
|
|
138
|
+
const mn = new Multiname(kind, namespaces, versions, null, attribute);
|
|
139
|
+
mn.key = key;
|
|
140
|
+
mn.local = undefined;
|
|
141
|
+
mn.nameOf = nameOf;
|
|
142
|
+
return mn;
|
|
143
|
+
}
|
|
144
|
+
/** The local name, null for any name. */
|
|
145
|
+
get name() {
|
|
146
|
+
const local = this.local;
|
|
147
|
+
if (local !== undefined) {
|
|
148
|
+
return local;
|
|
149
|
+
}
|
|
150
|
+
const name = this.nameOf(this.key);
|
|
151
|
+
this.local = name;
|
|
152
|
+
return name;
|
|
153
|
+
}
|
|
154
|
+
/** Whether the name still needs a namespace from the stack. */
|
|
155
|
+
get runtimeNs() {
|
|
156
|
+
const k = this.kind;
|
|
157
|
+
return (k === CONSTANT_RTQname ||
|
|
158
|
+
k === CONSTANT_RTQnameA ||
|
|
159
|
+
k === CONSTANT_RTQnameL ||
|
|
160
|
+
k === CONSTANT_RTQnameLA);
|
|
161
|
+
}
|
|
162
|
+
/** Whether the local name comes from the stack. */
|
|
163
|
+
get runtimeName() {
|
|
164
|
+
const k = this.kind;
|
|
165
|
+
return (k === CONSTANT_RTQnameL ||
|
|
166
|
+
k === CONSTANT_RTQnameLA ||
|
|
167
|
+
k === CONSTANT_MultinameL ||
|
|
168
|
+
k === CONSTANT_MultinameLA);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* The dynamic property the name names, or null, as
|
|
172
|
+
* Multiname::isValidDynamicName: not an attribute and with a public
|
|
173
|
+
* namespace, one of the public kind and an empty URI, as
|
|
174
|
+
* Namespace::isPublic.
|
|
175
|
+
*/
|
|
176
|
+
dynamicName() {
|
|
177
|
+
if (this.attribute || this.name === null) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
for (const ns of this.namespaces) {
|
|
181
|
+
// null is any namespace, as in *::x.
|
|
182
|
+
if (ns !== null && ns.kind === NS_Public && ns.uri === "") {
|
|
183
|
+
return this.name;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
toString() {
|
|
189
|
+
const ns = this.namespaces.length === 1 ? this.namespaces[0] : null;
|
|
190
|
+
const name = this.name ?? "*";
|
|
191
|
+
return ns?.uri ? `${ns.uri}::${name}` : name;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/** A TypeName, `Base.<Param>`, whose parts are other multinames of its module. */
|
|
195
|
+
export class TypeName {
|
|
196
|
+
base;
|
|
197
|
+
params;
|
|
198
|
+
names = [];
|
|
199
|
+
constructor(base, params) {
|
|
200
|
+
this.base = base;
|
|
201
|
+
this.params = params;
|
|
202
|
+
}
|
|
203
|
+
get baseName() {
|
|
204
|
+
return this.names[this.base];
|
|
205
|
+
}
|
|
206
|
+
param(i) {
|
|
207
|
+
return this.names[this.params[i]];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/** A Qname in one namespace, seen at every version. */
|
|
211
|
+
export function qname(ns, name) {
|
|
212
|
+
return new Multiname(CONSTANT_Qname, ns === publicNs ? PUBLIC_NAMESPACES : [ns], ALL_VERSIONS, name, false);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* A public name the runtime makes from a string, as `in`, hasOwnProperty,
|
|
216
|
+
* JSON and AMF do: seen at user code's version, as avmplus' findPublicNamespace
|
|
217
|
+
* sees it from the user code on the call stack, so an AIR-only or a
|
|
218
|
+
* VM-internal binding is not there, as it is not to the code itself.
|
|
219
|
+
*/
|
|
220
|
+
export function publicQname(name, versions) {
|
|
221
|
+
return new Multiname(CONSTANT_Qname, PUBLIC_NAMESPACES, versions, name, false);
|
|
222
|
+
}
|
|
223
|
+
/** The builtin Vector classes, which avmplus names as the types they are vectors of. */
|
|
224
|
+
const VECTOR_NAMES = {
|
|
225
|
+
"__AS3__.vec::Vector$int": "__AS3__.vec::Vector.<int>",
|
|
226
|
+
"__AS3__.vec::Vector$uint": "__AS3__.vec::Vector.<uint>",
|
|
227
|
+
"__AS3__.vec::Vector$double": "__AS3__.vec::Vector.<Number>",
|
|
228
|
+
"__AS3__.vec::Vector$object": "__AS3__.vec::Vector.<*>",
|
|
229
|
+
};
|
|
230
|
+
/** A traits' name as avmplus writes it: a class's statics' without their trailing $, a builtin Vector's as Vector.<T>. */
|
|
231
|
+
export function formatClassName(name) {
|
|
232
|
+
const own = name.endsWith("$") ? name.slice(0, -1) : name;
|
|
233
|
+
return VECTOR_NAMES[own] ?? own;
|
|
234
|
+
}
|
|
235
|
+
/** A name's index as an array element, or -1: a canonical uint below 2^32 - 1. */
|
|
236
|
+
export function arrayIndex(name) {
|
|
237
|
+
const c = name.charCodeAt(0);
|
|
238
|
+
if (!(c >= 0x30 && c <= 0x39)) {
|
|
239
|
+
return -1;
|
|
240
|
+
}
|
|
241
|
+
const i = Number(name);
|
|
242
|
+
return i >>> 0 === i && i !== 0xffffffff && String(i) === name ? i : -1;
|
|
243
|
+
}
|
|
244
|
+
/** The qualified name of a class's name, "uri::name", or the name in the unnamed package. */
|
|
245
|
+
export function qualifiedName(mn) {
|
|
246
|
+
const ns = mn.namespaces[0];
|
|
247
|
+
return ns?.uri ? `${ns.uri}::${mn.name}` : (mn.name ?? "*");
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.js","sourceRoot":"","sources":["../../src/avm2/names.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aliases.d.ts","sourceRoot":"","sources":["../../../src/avm2/natives/aliases.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,cAAc,EAAE,OAoD5B,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Class aliases, and AMF through ByteArray's readObject and writeObject.
|
|
2
|
+
import { readObject, writeObject } from "../amf.js";
|
|
3
|
+
import { bytesOf } from "./bytearray.js";
|
|
4
|
+
export const aliasesNatives = {
|
|
5
|
+
// Class aliases and AMF.
|
|
6
|
+
"flash.net::registerClassAlias": (rt) => (aliasName, cls) => {
|
|
7
|
+
if (cls === null || cls === undefined) {
|
|
8
|
+
throw rt.error("TypeError", 2007, "classObject");
|
|
9
|
+
}
|
|
10
|
+
if (aliasName === null || aliasName === undefined) {
|
|
11
|
+
throw rt.error("TypeError", 2007, "aliasName");
|
|
12
|
+
}
|
|
13
|
+
const name = rt.toString(aliasName);
|
|
14
|
+
if (name === "") {
|
|
15
|
+
throw rt.error("ArgumentError", 2085, "aliasName");
|
|
16
|
+
}
|
|
17
|
+
rt.registerClassAlias(name, cls);
|
|
18
|
+
},
|
|
19
|
+
"flash.net::getClassByAlias": (rt) => (aliasName) => {
|
|
20
|
+
if (aliasName === null || aliasName === undefined) {
|
|
21
|
+
throw rt.error("TypeError", 2007, "aliasName");
|
|
22
|
+
}
|
|
23
|
+
const name = rt.toString(aliasName);
|
|
24
|
+
if (name === "") {
|
|
25
|
+
throw rt.error("ArgumentError", 2085, "aliasName");
|
|
26
|
+
}
|
|
27
|
+
return rt.classByAlias(name);
|
|
28
|
+
},
|
|
29
|
+
"flash.net::ObjectEncoding.get:dynamicPropertyWriter": (rt) => () => rt.dynamicPropertyWriter,
|
|
30
|
+
"flash.net::ObjectEncoding.set:dynamicPropertyWriter": (rt) => (writer) => {
|
|
31
|
+
rt.dynamicPropertyWriter = writer ?? null;
|
|
32
|
+
},
|
|
33
|
+
// What writeDynamicProperties writes through: the object being written's
|
|
34
|
+
// dynamic part, each name and value.
|
|
35
|
+
"flash.net::DynamicPropertyOutput#writeDynamicProperty": (rt) => function (name, value) {
|
|
36
|
+
if (name === null || name === undefined) {
|
|
37
|
+
throw rt.error("TypeError", 2007, "name");
|
|
38
|
+
}
|
|
39
|
+
this.$amf.dynamicProperty(rt.toString(name), value);
|
|
40
|
+
},
|
|
41
|
+
"flash.utils::ByteArray#writeObject": (rt) => function (v) {
|
|
42
|
+
writeObject(rt, bytesOf(rt, this), v);
|
|
43
|
+
},
|
|
44
|
+
"flash.utils::ByteArray#readObject": (rt) => function () {
|
|
45
|
+
return readObject(rt, bytesOf(rt, this));
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=aliases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aliases.js","sourceRoot":"","sources":["../../../src/avm2/natives/aliases.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,yBAAyB;IACzB,+BAA+B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAgB,EAAE,GAAU,EAAE,EAAE;QACxE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;QAED,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,4BAA4B,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAgB,EAAE,EAAE;QACzD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,qDAAqD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,qBAAqB;IAC7F,qDAAqD,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAa,EAAE,EAAE;QAC/E,EAAE,CAAC,qBAAqB,GAAG,MAAM,IAAI,IAAI,CAAC;IAC5C,CAAC;IACD,yEAAyE;IACzE,qCAAqC;IACrC,uDAAuD,EAAE,CAAC,EAAE,EAAE,EAAE,CAC9D,UAA0B,IAAW,EAAE,KAAY;QACjD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IACH,oCAAoC,EAAE,CAAC,EAAE,EAAE,EAAE,CAC3C,UAA0B,CAAQ;QAChC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IACH,mCAAmC,EAAE,CAAC,EAAE,EAAE,EAAE,CAC1C;QACE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/avm2/natives/array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAQL,KAAK,OAAO,EAGb,MAAM,aAAa,CAAC;AAsNrB,eAAO,MAAM,YAAY,EAAE,OAuO1B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAiBhD,CAAC"}
|