@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,296 @@
|
|
|
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
|
+
/** The value of an entry not there: deleted, or kept spare. No ActionScript value is a symbol. */
|
|
10
|
+
const GONE = Symbol("gone");
|
|
11
|
+
/** What valueAt gives where a dynamic property's name is, whose value is the property's. */
|
|
12
|
+
export const NAMED = Symbol("named");
|
|
13
|
+
/**
|
|
14
|
+
* A key and its value. Once deleted and its slot freed, it is kept to hold
|
|
15
|
+
* a key added later, with the WeakRef a weak one has: V8 keeps each
|
|
16
|
+
* WeakRef's target alive until the current job ends, so a new one for each
|
|
17
|
+
* key added would keep every entry made in a long frame.
|
|
18
|
+
*/
|
|
19
|
+
class Entry {
|
|
20
|
+
/** Null once deleted from a slot. */
|
|
21
|
+
key = null;
|
|
22
|
+
/** GONE while not there: its slot is passed over, and free when a for-in next starts. */
|
|
23
|
+
value = GONE;
|
|
24
|
+
/** Its slot, -1 until a for-in starts and gives it one. */
|
|
25
|
+
slot = -1;
|
|
26
|
+
}
|
|
27
|
+
class WeakEntry extends Entry {
|
|
28
|
+
/** How the slots hold it. */
|
|
29
|
+
ref = new WeakRef(this);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* As avmplus' hashtable, a name keeps its slot while it is there, so that a
|
|
33
|
+
* for-in started inside another never moves the outer one's names. One
|
|
34
|
+
* deleted stays in its slot, which a for-in passes over, until a for-in next
|
|
35
|
+
* starts: then its slot is free, and the names added since take the free
|
|
36
|
+
* slots, the Dictionary's dynamic properties first, then its keys in the
|
|
37
|
+
* order they were added; only with none free does the list grow. So a for-in
|
|
38
|
+
* goes through neither a name added during it nor one deleted before it gets
|
|
39
|
+
* there, and goes through each other once.
|
|
40
|
+
*/
|
|
41
|
+
export class DictionaryKeys {
|
|
42
|
+
weak;
|
|
43
|
+
/**
|
|
44
|
+
* Each key's entry. One deleted before it had a slot stays, GONE, so that
|
|
45
|
+
* the key set again takes it back: deleting and setting a key over and
|
|
46
|
+
* over between for-ins makes nothing. A strong key deleted so stays alive
|
|
47
|
+
* until a for-in starts or `added` is settled, which keeps that bounded by
|
|
48
|
+
* twice the keys there, and 64.
|
|
49
|
+
*/
|
|
50
|
+
map;
|
|
51
|
+
/** Each slot: a key's entry, a dynamic property's name, or null where free. */
|
|
52
|
+
slots = [];
|
|
53
|
+
/** The entries added since a for-in last started, which take slots when one next does. */
|
|
54
|
+
added = [];
|
|
55
|
+
/** The count of those at which the ones deleted or collected are dropped, so none pile up. */
|
|
56
|
+
addedLimit = 64;
|
|
57
|
+
/** The entries with slots deleted since a for-in last started, freed when one next does. */
|
|
58
|
+
deleted = [];
|
|
59
|
+
/** The slots of keys collected that a for-in has come across since one last started. */
|
|
60
|
+
collected = [];
|
|
61
|
+
/** Entries no longer used, to hold keys added later; trimmed when a for-in starts. */
|
|
62
|
+
spare = [];
|
|
63
|
+
/** The slot of each dynamic property's name. */
|
|
64
|
+
named = null;
|
|
65
|
+
constructor(weak) {
|
|
66
|
+
this.weak = weak;
|
|
67
|
+
this.map = weak ? new WeakMap() : new Map();
|
|
68
|
+
}
|
|
69
|
+
get(key) {
|
|
70
|
+
const value = this.map.get(key)?.value;
|
|
71
|
+
return value === GONE ? undefined : value;
|
|
72
|
+
}
|
|
73
|
+
has(key) {
|
|
74
|
+
const entry = this.map.get(key);
|
|
75
|
+
return entry !== undefined && entry.value !== GONE;
|
|
76
|
+
}
|
|
77
|
+
set(key, value) {
|
|
78
|
+
if (!this.replace(key, value)) {
|
|
79
|
+
this.add(key, value);
|
|
80
|
+
}
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Sets the value of a key that has an entry, there or deleted, and says
|
|
85
|
+
* whether it had one; set's first half, so that a caller can look at a
|
|
86
|
+
* key before it is added.
|
|
87
|
+
*/
|
|
88
|
+
replace(key, value) {
|
|
89
|
+
const known = this.map.get(key);
|
|
90
|
+
if (known === undefined) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
known.value = value;
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
/** Adds a key that has no entry (replace said so). */
|
|
97
|
+
add(key, value) {
|
|
98
|
+
const entry = this.spare.pop() ?? (this.weak ? new WeakEntry() : new Entry());
|
|
99
|
+
entry.key = key;
|
|
100
|
+
entry.value = value;
|
|
101
|
+
this.map.set(key, entry);
|
|
102
|
+
this.added.push(this.hold(entry));
|
|
103
|
+
if (this.added.length >= this.addedLimit) {
|
|
104
|
+
this.added = this.settle(this.added);
|
|
105
|
+
this.addedLimit = Math.max(64, this.added.length * 2);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
delete(key) {
|
|
109
|
+
const entry = this.map.get(key);
|
|
110
|
+
if (entry === undefined || entry.value === GONE) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
entry.value = GONE;
|
|
114
|
+
if (entry.slot >= 0) {
|
|
115
|
+
this.map.delete(key);
|
|
116
|
+
entry.key = null;
|
|
117
|
+
this.deleted.push(entry);
|
|
118
|
+
}
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
/** The keys there now: those with slots, in their slots' order, then those added since. */
|
|
122
|
+
*keys() {
|
|
123
|
+
for (const entry of this.entries()) {
|
|
124
|
+
yield entry.key;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
*[Symbol.iterator]() {
|
|
128
|
+
for (const entry of this.entries()) {
|
|
129
|
+
yield [entry.key, entry.value];
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
get size() {
|
|
133
|
+
let n = 0;
|
|
134
|
+
for (const _ of this.entries()) {
|
|
135
|
+
n++;
|
|
136
|
+
}
|
|
137
|
+
return n;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* The index after `index` of a name of Dictionary `o` there now, or 0. A
|
|
141
|
+
* for-in's start (index 0) first frees the slots of names gone and gives
|
|
142
|
+
* those added theirs.
|
|
143
|
+
*/
|
|
144
|
+
next(o, index) {
|
|
145
|
+
if (index === 0) {
|
|
146
|
+
this.start(o);
|
|
147
|
+
}
|
|
148
|
+
const slots = this.slots;
|
|
149
|
+
for (let i = index; i < slots.length; i++) {
|
|
150
|
+
const held = slots[i];
|
|
151
|
+
if (held === null) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (typeof held === "string") {
|
|
155
|
+
if (o.$d?.has(held) && !o.$dontEnum?.has(held)) {
|
|
156
|
+
return i + 1;
|
|
157
|
+
}
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const entry = this.open(held);
|
|
161
|
+
if (entry === undefined) {
|
|
162
|
+
slots[i] = null;
|
|
163
|
+
this.collected.push(i);
|
|
164
|
+
}
|
|
165
|
+
else if (entry.value !== GONE) {
|
|
166
|
+
return i + 1;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return 0;
|
|
170
|
+
}
|
|
171
|
+
/** The name at a for-in's index: a key, a dynamic property's name, or "" once a key is gone. */
|
|
172
|
+
nameAt(index) {
|
|
173
|
+
const held = this.slots[index - 1];
|
|
174
|
+
if (held === null || held === undefined) {
|
|
175
|
+
return "";
|
|
176
|
+
}
|
|
177
|
+
return typeof held === "string" ? held : (this.open(held)?.key ?? "");
|
|
178
|
+
}
|
|
179
|
+
/** The value at a for-in's index: a key's, undefined once it is gone, or NAMED. */
|
|
180
|
+
valueAt(index) {
|
|
181
|
+
const held = this.slots[index - 1];
|
|
182
|
+
if (held === null || held === undefined) {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
if (typeof held === "string") {
|
|
186
|
+
return NAMED;
|
|
187
|
+
}
|
|
188
|
+
const value = this.open(held)?.value;
|
|
189
|
+
return value === GONE ? undefined : value;
|
|
190
|
+
}
|
|
191
|
+
/** The entry a slot or `added` holds, or undefined once its key is collected. */
|
|
192
|
+
open(held) {
|
|
193
|
+
return this.weak ? held.deref() : held;
|
|
194
|
+
}
|
|
195
|
+
hold(entry) {
|
|
196
|
+
return this.weak ? entry.ref : entry;
|
|
197
|
+
}
|
|
198
|
+
*entries() {
|
|
199
|
+
for (let i = 0; i < this.slots.length; i++) {
|
|
200
|
+
const held = this.slots[i];
|
|
201
|
+
const entry = held === null || typeof held === "string" ? undefined : this.open(held);
|
|
202
|
+
if (entry !== undefined && entry.value !== GONE) {
|
|
203
|
+
yield entry;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
for (let i = 0; i < this.added.length; i++) {
|
|
207
|
+
const entry = this.open(this.added[i]);
|
|
208
|
+
if (entry !== undefined && entry.value !== GONE) {
|
|
209
|
+
yield entry;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/** Those of `added` still there; the others are let go, their keys with them. */
|
|
214
|
+
settle(added) {
|
|
215
|
+
let kept = 0;
|
|
216
|
+
for (let i = 0; i < added.length; i++) {
|
|
217
|
+
const held = added[i];
|
|
218
|
+
const entry = this.open(held);
|
|
219
|
+
if (entry === undefined) {
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
if (entry.value !== GONE) {
|
|
223
|
+
added[kept++] = held;
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
this.map.delete(entry.key);
|
|
227
|
+
entry.key = null;
|
|
228
|
+
this.spare.push(entry);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
added.length = kept;
|
|
232
|
+
return added;
|
|
233
|
+
}
|
|
234
|
+
start(o) {
|
|
235
|
+
const d = o.$d;
|
|
236
|
+
const deleted = this.deleted;
|
|
237
|
+
if (this.added.length === 0 &&
|
|
238
|
+
deleted.length === 0 &&
|
|
239
|
+
this.collected.length === 0 &&
|
|
240
|
+
!d?.size &&
|
|
241
|
+
!this.named?.size) {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
const slots = this.slots;
|
|
245
|
+
const free = [];
|
|
246
|
+
for (let i = 0; i < deleted.length; i++) {
|
|
247
|
+
const entry = deleted[i];
|
|
248
|
+
slots[entry.slot] = null;
|
|
249
|
+
free.push(entry.slot);
|
|
250
|
+
entry.slot = -1;
|
|
251
|
+
this.spare.push(entry);
|
|
252
|
+
}
|
|
253
|
+
deleted.length = 0;
|
|
254
|
+
for (let i = 0; i < this.collected.length; i++) {
|
|
255
|
+
free.push(this.collected[i]);
|
|
256
|
+
}
|
|
257
|
+
this.collected.length = 0;
|
|
258
|
+
if (this.named !== null) {
|
|
259
|
+
for (const [name, i] of this.named) {
|
|
260
|
+
if (!d?.has(name)) {
|
|
261
|
+
this.named.delete(name);
|
|
262
|
+
slots[i] = null;
|
|
263
|
+
free.push(i);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// Lowest first, so that the names added fill the earliest gaps.
|
|
268
|
+
free.sort((a, b) => a - b);
|
|
269
|
+
let next = 0;
|
|
270
|
+
// Freed, `named` holds only names still there: as many as there are, and none is new.
|
|
271
|
+
if (d?.size && d.size !== (this.named?.size ?? 0)) {
|
|
272
|
+
this.named ??= new Map();
|
|
273
|
+
for (const name of d.keys()) {
|
|
274
|
+
if (!this.named.has(name)) {
|
|
275
|
+
const i = next < free.length ? free[next++] : slots.length;
|
|
276
|
+
slots[i] = name;
|
|
277
|
+
this.named.set(name, i);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
const added = this.settle(this.added);
|
|
282
|
+
for (let n = 0; n < added.length; n++) {
|
|
283
|
+
const i = next < free.length ? free[next++] : slots.length;
|
|
284
|
+
slots[i] = added[n];
|
|
285
|
+
this.open(added[n]).slot = i;
|
|
286
|
+
}
|
|
287
|
+
// Kept for as many keys as were added since the last start, as the next
|
|
288
|
+
// may add as many again; an emptied Dictionary keeps almost none.
|
|
289
|
+
if (this.spare.length > added.length + 64) {
|
|
290
|
+
this.spare.length = added.length + 64;
|
|
291
|
+
}
|
|
292
|
+
this.added = [];
|
|
293
|
+
this.addedLimit = 64;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=dictionary-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dictionary-keys.js","sourceRoot":"","sources":["../../src/avm2/dictionary-keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Runtime } from "./runtime.js";
|
|
2
|
+
/** Whether `e` is the RangeError a DataView throws for an offset out of its range. */
|
|
3
|
+
export declare function isViewRangeError(e: unknown): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Domain memory another worker shares, as generated code reaches it: each
|
|
6
|
+
* access through the runtime's li8 and the others, which read the length
|
|
7
|
+
* again, as that worker may have grown it, before they reject an address.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SharedMemoryView {
|
|
10
|
+
private readonly rt;
|
|
11
|
+
constructor(rt: Runtime);
|
|
12
|
+
getUint8(at: number): number;
|
|
13
|
+
getUint16(at: number, _littleEndian: boolean): number;
|
|
14
|
+
getInt32(at: number, _littleEndian: boolean): number;
|
|
15
|
+
getFloat32(at: number, _littleEndian: boolean): number;
|
|
16
|
+
getFloat64(at: number, _littleEndian: boolean): number;
|
|
17
|
+
setUint8(at: number, value: number): void;
|
|
18
|
+
setUint16(at: number, value: number, _littleEndian: boolean): void;
|
|
19
|
+
setInt32(at: number, value: number, _littleEndian: boolean): void;
|
|
20
|
+
setFloat32(at: number, value: number, _littleEndian: boolean): void;
|
|
21
|
+
setFloat64(at: number, value: number, _littleEndian: boolean): void;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=domain-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-memory.d.ts","sourceRoot":"","sources":["../../src/avm2/domain-memory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAiC5C,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAU;IAE7B,YAAY,EAAE,EAAE,OAAO,EAEtB;IAED,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE3B;IAED,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAEpD;IAED,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAEnD;IAED,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAErD;IAED,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAErD;IAED,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAExC;IAED,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAEjE;IAED,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAEhE;IAED,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAElE;IAED,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAElE;CACF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The messages of the RangeErrors a DataView throws for an offset out of
|
|
3
|
+
* its range, as this engine words them: below 0, past the end, and with
|
|
4
|
+
* too few bytes left, for a load and a store.
|
|
5
|
+
*/
|
|
6
|
+
const viewRangeMessages = (() => {
|
|
7
|
+
const messages = new Set();
|
|
8
|
+
const view = new DataView(new ArrayBuffer(4));
|
|
9
|
+
const probes = [
|
|
10
|
+
() => view.getUint8(-1),
|
|
11
|
+
() => view.getUint8(4),
|
|
12
|
+
() => view.getInt32(1, true),
|
|
13
|
+
() => view.getFloat64(0, true),
|
|
14
|
+
() => view.setUint8(-1, 0),
|
|
15
|
+
() => view.setUint16(3, 0, true),
|
|
16
|
+
() => view.setFloat64(0, 0, true),
|
|
17
|
+
() => view.getUint8(0xffffffff),
|
|
18
|
+
];
|
|
19
|
+
for (let i = 0; i < probes.length; i++) {
|
|
20
|
+
try {
|
|
21
|
+
probes[i]();
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
if (e instanceof RangeError) {
|
|
25
|
+
messages.add(e.message);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return messages;
|
|
30
|
+
})();
|
|
31
|
+
/** Whether `e` is the RangeError a DataView throws for an offset out of its range. */
|
|
32
|
+
export function isViewRangeError(e) {
|
|
33
|
+
return e instanceof RangeError && viewRangeMessages.has(e.message);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Domain memory another worker shares, as generated code reaches it: each
|
|
37
|
+
* access through the runtime's li8 and the others, which read the length
|
|
38
|
+
* again, as that worker may have grown it, before they reject an address.
|
|
39
|
+
*/
|
|
40
|
+
export class SharedMemoryView {
|
|
41
|
+
rt;
|
|
42
|
+
constructor(rt) {
|
|
43
|
+
this.rt = rt;
|
|
44
|
+
}
|
|
45
|
+
getUint8(at) {
|
|
46
|
+
return this.rt.li8(at);
|
|
47
|
+
}
|
|
48
|
+
getUint16(at, _littleEndian) {
|
|
49
|
+
return this.rt.li16(at);
|
|
50
|
+
}
|
|
51
|
+
getInt32(at, _littleEndian) {
|
|
52
|
+
return this.rt.li32(at);
|
|
53
|
+
}
|
|
54
|
+
getFloat32(at, _littleEndian) {
|
|
55
|
+
return this.rt.lf32(at);
|
|
56
|
+
}
|
|
57
|
+
getFloat64(at, _littleEndian) {
|
|
58
|
+
return this.rt.lf64(at);
|
|
59
|
+
}
|
|
60
|
+
setUint8(at, value) {
|
|
61
|
+
this.rt.si8(value, at);
|
|
62
|
+
}
|
|
63
|
+
setUint16(at, value, _littleEndian) {
|
|
64
|
+
this.rt.si16(value, at);
|
|
65
|
+
}
|
|
66
|
+
setInt32(at, value, _littleEndian) {
|
|
67
|
+
this.rt.si32(value, at);
|
|
68
|
+
}
|
|
69
|
+
setFloat32(at, value, _littleEndian) {
|
|
70
|
+
this.rt.sf32(value, at);
|
|
71
|
+
}
|
|
72
|
+
setFloat64(at, value, _littleEndian) {
|
|
73
|
+
this.rt.sf64(value, at);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=domain-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-memory.js","sourceRoot":"","sources":["../../src/avm2/domain-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { Abc, AsObject, CompileUnit, ScriptDesc } from "./descriptors.js";
|
|
2
|
+
import { type Multiname, type Namespace } from "./names.js";
|
|
3
|
+
import type { ClassRef } from "./traits.js";
|
|
4
|
+
/** A script: its descriptor, its global object once made, and whether it has run. */
|
|
5
|
+
export interface Script {
|
|
6
|
+
desc: ScriptDesc;
|
|
7
|
+
abc: Abc;
|
|
8
|
+
global: AsObject | null;
|
|
9
|
+
/** Not run, running, run, or failed: its initializer threw, which avmplus keeps as run. */
|
|
10
|
+
state: 0 | 1 | 2 | 3;
|
|
11
|
+
}
|
|
12
|
+
export interface GlobalName {
|
|
13
|
+
ns: Namespace;
|
|
14
|
+
version: number;
|
|
15
|
+
script: Script;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* An application domain, as avmplus' Domain: the scripts its modules
|
|
19
|
+
* define, by name, a name its chain defines already not again (see
|
|
20
|
+
* Runtime.abc); the definitions it has found, by name, which it keeps
|
|
21
|
+
* (see Runtime.findScript), as names and, apart, as types; and the ABCs
|
|
22
|
+
* loaded into it, by hash.
|
|
23
|
+
*/
|
|
24
|
+
export declare class Domain {
|
|
25
|
+
readonly parent: Domain | null;
|
|
26
|
+
/** Its number in its runtime, which a host's compiler knows it by: the root's is 0. */
|
|
27
|
+
readonly id: number;
|
|
28
|
+
readonly globals: Map<string, GlobalName[]>;
|
|
29
|
+
readonly cached: Map<string, GlobalName[]>;
|
|
30
|
+
/** As avmplus' m_cachedTraits, which a name's lookup never fills, nor a type's m_cachedScripts. */
|
|
31
|
+
readonly types: Map<string, GlobalName[]>;
|
|
32
|
+
readonly classRefs: Map<Namespace, Map<string, ClassRef>>;
|
|
33
|
+
/**
|
|
34
|
+
* The classes classNamed found here, by qualified name: what a name
|
|
35
|
+
* finds in a domain is kept once found, so a player's lookups by name,
|
|
36
|
+
* one for each object it makes, need not name it anew each time.
|
|
37
|
+
*/
|
|
38
|
+
readonly named: Map<string, any>;
|
|
39
|
+
/** The same, of the classes code finds by name, at user code's version (classNamedByCode). */
|
|
40
|
+
readonly namedByCode: Map<string, any>;
|
|
41
|
+
readonly own: string[];
|
|
42
|
+
/** Each of its ABCs' place among all the runtime loads. */
|
|
43
|
+
readonly ownOrder: number[];
|
|
44
|
+
constructor(parent: Domain | null,
|
|
45
|
+
/** Its number in its runtime, which a host's compiler knows it by: the root's is 0. */
|
|
46
|
+
id: number);
|
|
47
|
+
/**
|
|
48
|
+
* The ABCs a module loaded into it now is compiled after: its own and
|
|
49
|
+
* its ancestors', including those loaded after it was made, in the order
|
|
50
|
+
* they loaded.
|
|
51
|
+
*/
|
|
52
|
+
chain(): string[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Each frame's site, "script:line:column", innermost first, or null for a
|
|
56
|
+
* frame line it cannot read: V8's "at f (script:1:2)" and "at script:1:2",
|
|
57
|
+
* and SpiderMonkey's and JavaScriptCore's "f@script:1:2". Lines that are
|
|
58
|
+
* no frame, as V8's heading "Error", are left out. The site is read so
|
|
59
|
+
* that nothing a name holds can stand for it: in V8's frames, inside the
|
|
60
|
+
* last parentheses; in the others, after the first "@", since URLs may
|
|
61
|
+
* hold one ("/npm/p@1.0/m.js") and the names a SWF's code can have
|
|
62
|
+
* cannot (codegen spells them from [A-Za-z0-9_$]). One without a line and
|
|
63
|
+
* column is unread: JavaScriptCore's for code a Function or eval made,
|
|
64
|
+
* whatever its sourceURL ("f@"), and for native code ("f@[native code]"),
|
|
65
|
+
* and V8's "native", "<anonymous>" or "index 0".
|
|
66
|
+
*/
|
|
67
|
+
export declare function frameSites(stack: string | undefined): (string | null)[];
|
|
68
|
+
/** A frame site's script: "script:1:2" without its line and column. */
|
|
69
|
+
export declare function siteScript(site: string): string | null;
|
|
70
|
+
/**
|
|
71
|
+
* The script each of a stack's frames names, innermost first, or null for
|
|
72
|
+
* a frame that names none or a line it cannot read (see frameSites). For
|
|
73
|
+
* security checks, where such a frame must not be passed over;
|
|
74
|
+
* frameScripts leaves them out.
|
|
75
|
+
*/
|
|
76
|
+
export declare function stackFrames(stack: string | undefined): (string | null)[];
|
|
77
|
+
/** The scripts a stack's frames name, innermost first, those that name none left out. */
|
|
78
|
+
export declare function frameScripts(stack: string | undefined): string[];
|
|
79
|
+
/** Add a definition to a table, unless it has one of that name in that namespace. */
|
|
80
|
+
export declare function add(table: Map<string, GlobalName[]>, g: GlobalName, name: string): void;
|
|
81
|
+
/**
|
|
82
|
+
* The script that defines `mn` for `domain`, or null, as
|
|
83
|
+
* DomainMgr::findScriptInDomainByMultinameImpl finds it: a definition a
|
|
84
|
+
* domain of the chain has found before, from the name's own up; else the
|
|
85
|
+
* first loaded, from the root down. Either is kept by the name's domain,
|
|
86
|
+
* and one loaded by the domain that loaded it, so a child that found its
|
|
87
|
+
* own keeps it when its parent defines the name later. A type is found
|
|
88
|
+
* the same way through caches of its own (`asType`), as avmplus finds
|
|
89
|
+
* traits, so a class a child found by name is not the type it finds.
|
|
90
|
+
*/
|
|
91
|
+
export declare function findScript(domain: Domain, mn: Multiname, asType: boolean): Script | null;
|
|
92
|
+
/**
|
|
93
|
+
* The script of the first definition of `mn` from the root down to
|
|
94
|
+
* `domain`, what no cache has changed, and caching none: for a question
|
|
95
|
+
* that must not decide what a later lookup finds.
|
|
96
|
+
*/
|
|
97
|
+
export declare function firstDefinition(domain: Domain, mn: Multiname): Script | null;
|
|
98
|
+
/** What an ABC loaded into `domain` now compiles in. */
|
|
99
|
+
export declare function compileUnit(domain: Domain): CompileUnit;
|
|
100
|
+
/** Whether `domain`'s chain defines `name` in `ns`, cached or loaded, without keeping what it finds. */
|
|
101
|
+
export declare function definedInChain(domain: Domain, name: string, ns: Namespace): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* The names `domain`'s own modules define, private ones left out, as
|
|
104
|
+
* Flash's ApplicationDomain.getQualifiedDefinitionNames lists them:
|
|
105
|
+
* "pkg::Name", or the name alone in the top-level package.
|
|
106
|
+
*/
|
|
107
|
+
export declare function definitionNames(domain: Domain): string[];
|
|
108
|
+
//# sourceMappingURL=domain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/avm2/domain.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAmB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAc,MAAM,YAAY,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,qFAAqF;AACrF,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,2FAA2F;IAC3F,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,SAAS,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,qBAAa,MAAM;IAmBf,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAC9B,uFAAuF;IACvF,QAAQ,CAAC,EAAE,EAAE,MAAM;IApBrB,QAAQ,CAAC,OAAO,4BAAmC;IACnD,QAAQ,CAAC,MAAM,4BAAmC;IAClD,mGAAmG;IACnG,QAAQ,CAAC,KAAK,4BAAmC;IACjD,QAAQ,CAAC,SAAS,wCAA+C;IACjE;;;;OAIG;IACH,QAAQ,CAAC,KAAK,mBAA+B;IAC7C,8FAA8F;IAC9F,QAAQ,CAAC,WAAW,mBAA+B;IACnD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,CAAM;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IAEjC,YACW,MAAM,EAAE,MAAM,GAAG,IAAI;IAC9B,uFAAuF;IAC9E,EAAE,EAAE,MAAM,EACjB;IAEJ;;;;OAIG;IACH,KAAK,IAAI,MAAM,EAAE,CAchB;CACF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAuBvE;AAED,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAItD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAExE;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAEhE;AAqBD,qFAAqF;AACrF,wBAAgB,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAUvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAiCxF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAmB5E;AAED,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAOvD;AAyDD,wGAAwG;AACxG,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAWnF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxD"}
|