ruffle/web/packages/core
Kornelius Rohrschneider 809a9f6907 web: Add and partially implement networking API restrictions
The networking API restrictions imposed by the allowNetworking parameter
& attribute have been added and partially implemented.

A new NetworkingRestrictionMode enum has been added to Ruffle (in Rust
and Typescript). It contains the values "All", "Internal" and "None" and
models the possible values of the allowNetworking parameter / attribute.
All means that all networking APIs are permitted in the SWF file,
Internal means that the SWF file may not call browser navigation or
browser interaction APIs and None means the same and that the SWF file
cannot use any SWF-to-SWF communication APIs either.
A respective allowNetworking variable has been added to the JS config.
Its default value is All.
Ruffle now recognises the allowNetworking parameter and attribute in the
SWF HTML object and parses it and sets the config variable
correspondingly if it's recognised.
Only if the variable is set to All, the external interface (responsible
for javascript calls in AS3) is created. Additionally, the variable is
given to the WebNavigatorBackend and saved in it. The navigator denies
all navigate_to_url calls if the variable hasn't been set to All.
Therefore, the API restrictions imposed by setting allowNetworking to
internal or none have been partially implemented.

Formatting has been improved.
2023-05-02 17:13:42 +02:00
..
src web: Add and partially implement networking API restrictions 2023-05-02 17:13:42 +02:00
test extension: Reduce code duplication 2023-04-25 08:48:59 +03:00
tools web: Enforce ESLint's `spaced-comment` rule 2023-03-25 10:03:55 +03:00
.gitignore web: Use TypeScript project references 2023-02-25 02:00:23 +02:00
.mocharc.yaml web: Convert more files from JSON to YAML 2022-01-16 11:07:00 -08:00
README.md docs: Update `streamSwfUrl` to `load` 2020-12-07 15:22:51 -08:00
package.json extension: Reduce code duplication 2023-04-25 08:48:59 +03:00
tsconfig.json web: Use TypeScript project references 2023-02-25 02:00:23 +02:00
typedoc.json web/docs: Display enums in source order 2023-04-24 08:49:06 +03:00

README.md

ruffle-core

ruffle-core is the core javascript bindings to the Wasm ruffle-web binary, and contains the actual public API.

Using ruffle-core

For more examples and in-depth documentation on how to use Ruffle on your website, please check out our wiki.

Host Ruffle

The core package is configured for websites that build and bundle their files themselves. Simply add ruffle to an npm package, and use something like Webpack to actually bundle and serve the files.

If you wish to use Ruffle on a website that doesn't use npm, we have a pre-bundled version which we call 'selfhosted'. Please refer to its documentation.

Please note that the .wasm file must be served properly, and some web servers may not do that correctly out of the box. Please see our wiki for instructions on how to configure this, if you encounter a Incorrect response MIME type error.

"Plug and Play"

If you have an existing website with flash content, you can simply include Ruffle as a script and our polyfill magic will replace everything for you. No fuss, no mess.

<script src="path/to/ruffle/ruffle.js"></script>

Javascript API

If you want to control the Ruffle player, you may use our Javascript API.

<script>
    window.RufflePlayer = window.RufflePlayer || {};

    window.addEventListener("DOMContentLoaded", () => {
        let ruffle = window.RufflePlayer.newest();
        let player = ruffle.createPlayer();
        let container = document.getElementById("container");
        container.appendChild(player);
        player.load("movie.swf");
    });
</script>
<script src="path/to/ruffle/ruffle.js"></script>

Building, testing or contributing

Please see the ruffle-web README.