web-optimle attempt. discarding b/c super old template
This commit is contained in:
parent
45289ac8ab
commit
6eb9f61e19
12 changed files with 12393 additions and 31 deletions
75
Cargo.lock
generated
75
Cargo.lock
generated
|
@ -30,6 +30,12 @@ dependencies = [
|
|||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.1.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678"
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.5"
|
||||
|
@ -92,13 +98,31 @@ version = "0.2.16"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "0.4.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
|
||||
dependencies = [
|
||||
"unicode-xid 0.1.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.36"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
|
||||
dependencies = [
|
||||
"unicode-xid",
|
||||
"unicode-xid 0.2.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "0.6.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
|
||||
dependencies = [
|
||||
"proc-macro2 0.4.30",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -107,7 +131,7 @@ version = "1.0.15"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"proc-macro2 1.0.36",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -152,11 +176,17 @@ version = "1.0.86"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-xid",
|
||||
"proc-macro2 1.0.36",
|
||||
"quote 1.0.15",
|
||||
"unicode-xid 0.2.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.2.2"
|
||||
|
@ -188,19 +218,20 @@ dependencies = [
|
|||
"bumpalo",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"proc-macro2 1.0.36",
|
||||
"quote 1.0.15",
|
||||
"syn",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-futures"
|
||||
version = "0.4.29"
|
||||
version = "0.3.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395"
|
||||
checksum = "83420b37346c311b9ed822af41ec2e82839bfe99867ec6c54e2da43b7538771c"
|
||||
dependencies = [
|
||||
"cfg-if 1.0.0",
|
||||
"cfg-if 0.1.10",
|
||||
"futures",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
|
@ -212,7 +243,7 @@ version = "0.2.79"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"quote 1.0.15",
|
||||
"wasm-bindgen-macro-support",
|
||||
]
|
||||
|
||||
|
@ -222,8 +253,8 @@ version = "0.2.79"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"proc-macro2 1.0.36",
|
||||
"quote 1.0.15",
|
||||
"syn",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
|
@ -237,11 +268,12 @@ checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2"
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-test"
|
||||
version = "0.3.29"
|
||||
version = "0.2.50"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "45c8d417d87eefa0087e62e3c75ad086be39433449e2961add9a5d9ce5acc2f1"
|
||||
checksum = "a2d9693b63a742d481c7f80587e057920e568317b2806988c59cd71618bc26c1"
|
||||
dependencies = [
|
||||
"console_error_panic_hook",
|
||||
"futures",
|
||||
"js-sys",
|
||||
"scoped-tls",
|
||||
"wasm-bindgen",
|
||||
|
@ -251,12 +283,12 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-test-macro"
|
||||
version = "0.3.29"
|
||||
version = "0.2.50"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d0e560d44db5e73b69a9757a15512fe7e1ef93ed2061c928871a4025798293dd"
|
||||
checksum = "0789dac148a8840bbcf9efe13905463b733fa96543bfbf263790535c11af7ba5"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"proc-macro2 0.4.30",
|
||||
"quote 0.6.13",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -264,9 +296,12 @@ name = "web-optimle"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"console_error_panic_hook",
|
||||
"optimle",
|
||||
"futures",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"wasm-bindgen-test",
|
||||
"web-sys",
|
||||
"wee_alloc",
|
||||
]
|
||||
|
||||
|
|
5
web-optimle/.gitignore
vendored
Normal file
5
web-optimle/.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
node_modules
|
||||
/dist
|
||||
/target
|
||||
/pkg
|
||||
/wasm-pack.log
|
|
@ -1,23 +1,51 @@
|
|||
# You must change these to your own details.
|
||||
[package]
|
||||
name = "web-optimle"
|
||||
description = "My super awesome Rust, WebAssembly, and Webpack project!"
|
||||
version = "0.1.0"
|
||||
authors = ["ashastral"]
|
||||
authors = ["You <you@example.com>"]
|
||||
categories = ["wasm"]
|
||||
readme = "README.md"
|
||||
edition = "2018"
|
||||
|
||||
[lib]
|
||||
crate-type = ["cdylib", "rlib"]
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[profile.release]
|
||||
# This makes the compiled code faster and smaller, but it makes compiling slower,
|
||||
# so it's only enabled in release mode.
|
||||
lto = true
|
||||
|
||||
[features]
|
||||
default = ["console_error_panic_hook"]
|
||||
# If you uncomment this line, it will enable `wee_alloc`:
|
||||
default = ["wee_alloc"]
|
||||
|
||||
[dependencies]
|
||||
wasm-bindgen = "0.2.63"
|
||||
console_error_panic_hook = { version = "0.1.6", optional = true }
|
||||
wee_alloc = { version = "0.4.5", optional = true }
|
||||
optimle = { path = "../optimle" }
|
||||
# The `wasm-bindgen` crate provides the bare minimum functionality needed
|
||||
# to interact with JavaScript.
|
||||
wasm-bindgen = "0.2.45"
|
||||
|
||||
# `wee_alloc` is a tiny allocator for wasm that is only ~1K in code size
|
||||
# compared to the default allocator's ~10K. However, it is slower than the default
|
||||
# allocator, so it's not enabled by default.
|
||||
wee_alloc = { version = "0.4.2", optional = true }
|
||||
|
||||
# The `web-sys` crate allows you to interact with the various browser APIs,
|
||||
# like the DOM.
|
||||
[dependencies.web-sys]
|
||||
version = "0.3.22"
|
||||
features = ["console"]
|
||||
|
||||
# The `console_error_panic_hook` crate provides better debugging of panics by
|
||||
# logging them with `console.error`. This is great for development, but requires
|
||||
# all the `std::fmt` and `std::panicking` infrastructure, so it's only enabled
|
||||
# in debug mode.
|
||||
[target."cfg(debug_assertions)".dependencies]
|
||||
console_error_panic_hook = "0.1.5"
|
||||
|
||||
# These crates are used for running unit tests.
|
||||
[dev-dependencies]
|
||||
wasm-bindgen-test = "0.3.13"
|
||||
|
||||
[profie.release]
|
||||
opt-level = "s"
|
||||
wasm-bindgen-test = "0.2.45"
|
||||
futures = "0.1.27"
|
||||
js-sys = "0.3.22"
|
||||
wasm-bindgen-futures = "0.3.22"
|
||||
|
|
48
web-optimle/README.md
Normal file
48
web-optimle/README.md
Normal file
|
@ -0,0 +1,48 @@
|
|||
## How to install
|
||||
|
||||
```sh
|
||||
npm install
|
||||
```
|
||||
|
||||
## How to run in debug mode
|
||||
|
||||
```sh
|
||||
# Builds the project and opens it in a new browser tab. Auto-reloads when the project changes.
|
||||
npm start
|
||||
```
|
||||
|
||||
## How to build in release mode
|
||||
|
||||
```sh
|
||||
# Builds the project and places it into the `dist` folder.
|
||||
npm run build
|
||||
```
|
||||
|
||||
## How to run unit tests
|
||||
|
||||
```sh
|
||||
# Runs tests in Firefox
|
||||
npm test -- --firefox
|
||||
|
||||
# Runs tests in Chrome
|
||||
npm test -- --chrome
|
||||
|
||||
# Runs tests in Safari
|
||||
npm test -- --safari
|
||||
```
|
||||
|
||||
## What does each file do?
|
||||
|
||||
* `Cargo.toml` contains the standard Rust metadata. You put your Rust dependencies in here. You must change this file with your details (name, description, version, authors, categories)
|
||||
|
||||
* `package.json` contains the standard npm metadata. You put your JavaScript dependencies in here. You must change this file with your details (author, name, version)
|
||||
|
||||
* `webpack.config.js` contains the Webpack configuration. You shouldn't need to change this, unless you have very special needs.
|
||||
|
||||
* The `js` folder contains your JavaScript code (`index.js` is used to hook everything into Webpack, you don't need to change it).
|
||||
|
||||
* The `src` folder contains your Rust code.
|
||||
|
||||
* The `static` folder contains any files that you want copied as-is into the final build. It contains an `index.html` file which loads the `index.js` file.
|
||||
|
||||
* The `tests` folder contains your Rust unit tests.
|
1
web-optimle/js/index.ts
Normal file
1
web-optimle/js/index.ts
Normal file
|
@ -0,0 +1 @@
|
|||
import("../pkg/index.js").catch(console.error);
|
12090
web-optimle/package-lock.json
generated
Normal file
12090
web-optimle/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
25
web-optimle/package.json
Normal file
25
web-optimle/package.json
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"author": "ashastral <git@ashastral.com>",
|
||||
"name": "optimle-web",
|
||||
"version": "0.1.0",
|
||||
"scripts": {
|
||||
"build": "rimraf dist pkg && webpack",
|
||||
"start": "rimraf dist pkg && webpack-dev-server --open -d",
|
||||
"test": "cargo test && wasm-pack test --headless"
|
||||
},
|
||||
"dependencies": {
|
||||
"preact": "^10.6.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tsconfig/recommended": "^1.0.1",
|
||||
"@types/eslint": "^8.4.1",
|
||||
"@wasm-tool/wasm-pack-plugin": "^1.6.0",
|
||||
"copy-webpack-plugin": "^10.2.4",
|
||||
"ts-loader": "^9.2.6",
|
||||
"typescript": "^4.5.5",
|
||||
"webpack": "^5.69.1",
|
||||
"webpack-cli": "^3.3.3",
|
||||
"webpack-dev-server": "^3.7.1",
|
||||
"rimraf": "^3.0.0"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
use wasm_bindgen::prelude::*;
|
||||
use web_sys::console;
|
||||
|
||||
|
||||
// When the `wee_alloc` feature is enabled, this uses `wee_alloc` as the global
|
||||
// allocator.
|
||||
//
|
||||
// If you don't want to use `wee_alloc`, you can safely delete this.
|
||||
#[cfg(feature = "wee_alloc")]
|
||||
#[global_allocator]
|
||||
static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;
|
||||
|
||||
|
||||
// This is like the `main` function, except for JavaScript.
|
||||
#[wasm_bindgen(start)]
|
||||
pub fn main_js() -> Result<(), JsValue> {
|
||||
// This provides better error messages in debug mode.
|
||||
// It's disabled in release mode so it doesn't bloat up the file size.
|
||||
#[cfg(debug_assertions)]
|
||||
console_error_panic_hook::set_once();
|
||||
|
||||
|
||||
// Your code goes here!
|
||||
console::log_1(&JsValue::from_str("Hello world!"));
|
||||
|
||||
Ok(())
|
||||
}
|
10
web-optimle/static/index.html
Normal file
10
web-optimle/static/index.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>My Rust + Webpack project!</title>
|
||||
</head>
|
||||
<body>
|
||||
<script src="index.js"></script>
|
||||
</body>
|
||||
</html>
|
35
web-optimle/tests/app.rs
Normal file
35
web-optimle/tests/app.rs
Normal file
|
@ -0,0 +1,35 @@
|
|||
use wasm_bindgen_test::{wasm_bindgen_test_configure, wasm_bindgen_test};
|
||||
use futures::prelude::*;
|
||||
use wasm_bindgen::JsValue;
|
||||
use wasm_bindgen_futures::JsFuture;
|
||||
|
||||
wasm_bindgen_test_configure!(run_in_browser);
|
||||
|
||||
|
||||
// This runs a unit test in native Rust, so it can only use Rust APIs.
|
||||
#[test]
|
||||
fn rust_test() {
|
||||
assert_eq!(1, 1);
|
||||
}
|
||||
|
||||
|
||||
// This runs a unit test in the browser, so it can use browser APIs.
|
||||
#[wasm_bindgen_test]
|
||||
fn web_test() {
|
||||
assert_eq!(1, 1);
|
||||
}
|
||||
|
||||
|
||||
// This runs a unit test in the browser, and in addition it supports asynchronous Future APIs.
|
||||
#[wasm_bindgen_test(async)]
|
||||
fn async_test() -> impl Future<Item = (), Error = JsValue> {
|
||||
// Creates a JavaScript Promise which will asynchronously resolve with the value 42.
|
||||
let promise = js_sys::Promise::resolve(&JsValue::from(42));
|
||||
|
||||
// Converts that Promise into a Future.
|
||||
// The unit test will wait for the Future to resolve.
|
||||
JsFuture::from(promise)
|
||||
.map(|x| {
|
||||
assert_eq!(x, 42);
|
||||
})
|
||||
}
|
13
web-optimle/tsconfig.json
Normal file
13
web-optimle/tsconfig.json
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"extends": "@tsconfig/recommended/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"sourceMap": true,
|
||||
"jsx": "react",
|
||||
"jsxFactory": "h",
|
||||
"jsxFragmentFactory": "Fragment"
|
||||
},
|
||||
"include": [
|
||||
"src/*.ts",
|
||||
"src/*.tsx"
|
||||
]
|
||||
}
|
45
web-optimle/webpack.config.js
Normal file
45
web-optimle/webpack.config.js
Normal file
|
@ -0,0 +1,45 @@
|
|||
const path = require("path");
|
||||
const CopyPlugin = require("copy-webpack-plugin");
|
||||
const WasmPackPlugin = require("@wasm-tool/wasm-pack-plugin");
|
||||
|
||||
const dist = path.resolve(__dirname, "dist");
|
||||
|
||||
module.exports = {
|
||||
mode: "production",
|
||||
devtool: 'source-map',
|
||||
entry: {
|
||||
index: "./js/index.ts"
|
||||
},
|
||||
output: {
|
||||
path: dist,
|
||||
filename: "[name].js"
|
||||
},
|
||||
resolve: {
|
||||
extensions: ['', '.js', '.ts', '.tsx'],
|
||||
},
|
||||
devServer: {
|
||||
contentBase: dist,
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.tsx?$/,
|
||||
exclude: /node_modules/,
|
||||
use: 'ts-loader',
|
||||
},
|
||||
{
|
||||
test: /\.css$/,
|
||||
use: ['style-loader', 'css-loader'],
|
||||
},
|
||||
],
|
||||
},
|
||||
plugins: [
|
||||
new CopyPlugin([
|
||||
path.resolve(__dirname, "static")
|
||||
]),
|
||||
|
||||
new WasmPackPlugin({
|
||||
crateDirectory: __dirname,
|
||||
}),
|
||||
]
|
||||
};
|
Loading…
Reference in a new issue