From b698eb5d6a3703d691da7231db04b5aaf08d7077 Mon Sep 17 00:00:00 2001 From: Frazer McLean Date: Wed, 15 Aug 2018 22:47:49 +0200 Subject: [PATCH 01/71] Add more WebAssembly bindings --- crates/js-sys/Cargo.toml | 2 + crates/js-sys/src/lib.rs | 168 ++++++++++++++++++++++-- crates/js-sys/tests/wasm/WebAssembly.js | 23 ++++ crates/js-sys/tests/wasm/WebAssembly.rs | 134 ++++++++++++++++++- crates/js-sys/tests/wasm/main.rs | 2 + 5 files changed, 314 insertions(+), 15 deletions(-) create mode 100644 crates/js-sys/tests/wasm/WebAssembly.js diff --git a/crates/js-sys/Cargo.toml b/crates/js-sys/Cargo.toml index 2ff5c8b5..2bd93a7c 100644 --- a/crates/js-sys/Cargo.toml +++ b/crates/js-sys/Cargo.toml @@ -18,7 +18,9 @@ test = false doctest = false [dependencies] +futures = "0.1.20" wasm-bindgen = { path = "../..", version = "0.2.16" } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] wasm-bindgen-test = { path = '../test', version = '=0.2.16' } +wasm-bindgen-futures = { path = '../futures', version = '=0.2.16' } diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index bed5d2e7..c5efcbe0 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2843,19 +2843,163 @@ extern "C" { pub fn delete(this: &WeakSet, value: &Object) -> bool; } -// WebAssembly -#[wasm_bindgen] -extern "C" { - #[derive(Clone, Debug)] - pub type WebAssembly; +#[allow(non_snake_case)] +pub mod WebAssembly { + use super::*; - /// The `WebAssembly.validate()` function validates a given typed - /// array of WebAssembly binary code, returning whether the bytes - /// form a valid wasm module (`true`) or not (`false`). - /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/validate - #[wasm_bindgen(static_method_of = WebAssembly, catch)] - pub fn validate(bufferSource: &JsValue) -> Result; + // WebAssembly + #[wasm_bindgen] + extern "C" { + /// `The WebAssembly.compile()` function compiles a `WebAssembly.Module` + /// from WebAssembly binary code. This function is useful if it is + /// necessary to a compile a module before it can be instantiated + /// (otherwise, the `WebAssembly.instantiate()` function should be used). + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile + #[wasm_bindgen(js_namespace = WebAssembly)] + pub fn compile(buffer_source: &JsValue) -> Promise; + + /// The `WebAssembly.validate()` function validates a given typed + /// array of WebAssembly binary code, returning whether the bytes + /// form a valid wasm module (`true`) or not (`false`). + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/validate + #[wasm_bindgen(js_namespace = WebAssembly, catch)] + pub fn validate(buffer_source: &JsValue) -> Result; + } + + // WebAssembly.CompileError + #[wasm_bindgen] + extern "C" { + /// The `WebAssembly.CompileError()` constructor creates a new + /// WebAssembly `CompileError` object, which indicates an error during + /// WebAssembly decoding or validation. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError + #[wasm_bindgen(extends = Error, js_namespace = WebAssembly)] + #[derive(Clone, Debug)] + pub type CompileError; + + /// The `WebAssembly.CompileError()` constructor creates a new + /// WebAssembly `CompileError` object, which indicates an error during + /// WebAssembly decoding or validation. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError + #[wasm_bindgen(constructor, js_namespace = WebAssembly)] + pub fn new(message: &str) -> CompileError; + } + + // WebAssembly.LinkError + #[wasm_bindgen] + extern "C" { + /// The `WebAssembly.LinkError()` constructor creates a new WebAssembly + /// LinkError object, which indicates an error during module + /// instantiation (besides traps from the start function). + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError + #[wasm_bindgen(extends = Error, js_namespace = WebAssembly)] + #[derive(Clone, Debug)] + pub type LinkError; + + /// The `WebAssembly.LinkError()` constructor creates a new WebAssembly + /// LinkError object, which indicates an error during module + /// instantiation (besides traps from the start function). + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError + #[wasm_bindgen(constructor, js_namespace = WebAssembly)] + pub fn new(message: &str) -> LinkError; + } + + // WebAssembly.RuntimeError + #[wasm_bindgen] + extern "C" { + /// The `WebAssembly.RuntimeError()` constructor creates a new WebAssembly + /// `RuntimeError` object — the type that is thrown whenever WebAssembly + /// specifies a trap. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError + #[wasm_bindgen(extends = Error, js_namespace = WebAssembly)] + #[derive(Clone, Debug)] + pub type RuntimeError; + + /// The `WebAssembly.RuntimeError()` constructor creates a new WebAssembly + /// `RuntimeError` object — the type that is thrown whenever WebAssembly + /// specifies a trap. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError + #[wasm_bindgen(constructor, js_namespace = WebAssembly)] + pub fn new(message: &str) -> RuntimeError; + } + + // WebAssembly.Module + #[wasm_bindgen] + extern "C" { + /// A `WebAssembly.Module` object contains stateless WebAssembly code + /// that has already been compiled by the browser and can be + /// efficiently shared with Workers, and instantiated multiple times. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module + #[wasm_bindgen(js_namespace = WebAssembly, extends = Object)] + #[derive(Clone, Debug)] + pub type Module; + + /// A `WebAssembly.Module` object contains stateless WebAssembly code + /// that has already been compiled by the browser and can be + /// efficiently shared with Workers, and instantiated multiple times. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module + #[wasm_bindgen(constructor, js_namespace = WebAssembly)] + pub fn new(buffer_source: &JsValue) -> Module; + + /// The `WebAssembly.customSections()` function returns a copy of the + /// contents of all custom sections in the given module with the given + /// string name. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/customSections + #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly, js_name = customSections, catch)] + pub fn custom_sections(module: &Module, sectionName: &str) -> Result; + + /// The `WebAssembly.exports()` function returns an array containing + /// descriptions of all the declared exports of the given `Module`. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/exports + #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly, catch)] + pub fn exports(module: &Module) -> Result; + + /// The `WebAssembly.imports()` function returns an array containing + /// descriptions of all the declared imports of the given `Module`. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/imports + #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly, catch)] + pub fn imports(module: &Module) -> Result; + } + + // WebAssembly.Table + #[wasm_bindgen] + extern "C" { + /// The `WebAssembly.Table()` constructor creates a new `Table` object + /// of the given size and element type. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table + #[wasm_bindgen(js_namespace = WebAssembly, extends = Object)] + #[derive(Clone, Debug)] + pub type Table; + + /// The `WebAssembly.Table()` constructor creates a new `Table` object + /// of the given size and element type. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table + #[wasm_bindgen(constructor, js_namespace = WebAssembly)] + pub fn new(table_descriptor: &JsValue) -> Table; + + /// The `length` prototype property of the `WebAssembly.Table` object + /// returns the length of the table, i.e. the number of elements in the + /// table. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/length + #[wasm_bindgen(method, getter, js_namespace = WebAssembly)] + pub fn length(this: &Table) -> u32; + } } // JSON diff --git a/crates/js-sys/tests/wasm/WebAssembly.js b/crates/js-sys/tests/wasm/WebAssembly.js new file mode 100644 index 00000000..ec9310a3 --- /dev/null +++ b/crates/js-sys/tests/wasm/WebAssembly.js @@ -0,0 +1,23 @@ +const { TextEncoder } = require("util"); + +const data = + "\u0000asm\u0001\u0000\u0000\u0000\u0001\b\u0002`\u0001\u007f\u0000`\u0000" + + "\u0000\u0002\u0019\u0001\u0007imports\rimported_func\u0000\u0000\u0003" + + "\u0002\u0001\u0001\u0007\u0011\u0001\rexported_func\u0000\u0001\n\b\u0001" + + "\u0006\u0000A*\u0010\u0000\u000b"; + +const encoder = new TextEncoder(); +const wasmArray = encoder.encode(data); + +function getWasmArray() { + return wasmArray; +} + +function getTableObject() { + return { element: "anyfunc", initial: 1 } +} + +module.exports = { + getWasmArray, + getTableObject, +}; diff --git a/crates/js-sys/tests/wasm/WebAssembly.rs b/crates/js-sys/tests/wasm/WebAssembly.rs index 14fc5307..6a2a9cc3 100644 --- a/crates/js-sys/tests/wasm/WebAssembly.rs +++ b/crates/js-sys/tests/wasm/WebAssembly.rs @@ -1,9 +1,137 @@ -use wasm_bindgen_test::*; +use futures::Future; use js_sys::*; +use wasm_bindgen::{JsCast, prelude::*}; +use wasm_bindgen_futures::JsFuture; +use wasm_bindgen_test::*; + +#[wasm_bindgen(module = "tests/wasm/WebAssembly.js")] +extern { + #[wasm_bindgen(js_name = getWasmArray)] + fn get_wasm_array() -> Uint8Array; + + #[wasm_bindgen(js_name = getTableObject)] + fn get_table_object() -> Object; +} + +fn get_invalid_wasm() -> JsValue { + ArrayBuffer::new(42).into() +} + +fn get_bad_type_wasm() -> JsValue { + 2.into() +} + +fn get_valid_wasm() -> JsValue { + get_wasm_array().into() +} #[wasm_bindgen_test] fn validate() { - assert!(!WebAssembly::validate(&ArrayBuffer::new(42).into()).unwrap()); + assert!(!WebAssembly::validate(&get_invalid_wasm()).unwrap()); - assert!(WebAssembly::validate(&2.into()).is_err()); + assert!(WebAssembly::validate(&get_bad_type_wasm()).is_err()); +} + +#[wasm_bindgen_test(async)] +fn compile_compile_error() -> impl Future { + let p = WebAssembly::compile(&get_invalid_wasm()); + JsFuture::from(p) + .map(|_| unreachable!()) + .or_else(|e| { + assert!(e.is_instance_of::()); + Ok(()) + }) +} + +#[wasm_bindgen_test(async)] +fn compile_type_error() -> impl Future { + let p = WebAssembly::compile(&get_bad_type_wasm()); + JsFuture::from(p) + .map(|_| unreachable!()) + .or_else(|e| { + assert!(e.is_instance_of::()); + Ok(()) + }) +} + +#[wasm_bindgen_test(async)] +fn compile_valid() -> impl Future { + let p = WebAssembly::compile(&get_valid_wasm()); + JsFuture::from(p) + .map(|module| { + assert!(module.is_instance_of::()); + }) + .map_err(|_| unreachable!()) +} + +#[wasm_bindgen_test] +fn module_inheritance() { + let module = WebAssembly::Module::new(&get_valid_wasm()); + assert!(module.is_instance_of::()); + assert!(module.is_instance_of::()); + + let _: &Object = module.as_ref(); +} + +#[wasm_bindgen_test] +fn module_custom_sections() { + let module = WebAssembly::Module::new(&get_valid_wasm()); + let cust_sec = WebAssembly::Module::custom_sections(&module, "abcd").unwrap(); + assert_eq!(cust_sec.length(), 0); +} + +#[wasm_bindgen_test] +fn module_exports() { + let module = WebAssembly::Module::new(&get_valid_wasm()); + let exports = WebAssembly::Module::exports(&module).unwrap(); + assert_eq!(exports.length(), 1); +} + +#[wasm_bindgen_test] +fn module_imports() { + let module = WebAssembly::Module::new(&get_valid_wasm()); + let imports = WebAssembly::Module::imports(&module).unwrap(); + assert_eq!(imports.length(), 1); +} + +#[wasm_bindgen_test] +fn table_inheritance() { + let table = WebAssembly::Table::new(&get_table_object().into()); + assert!(table.is_instance_of::()); + assert!(table.is_instance_of::()); + + let _: &Object = table.as_ref(); +} + +#[wasm_bindgen_test] +fn table() { + let table = WebAssembly::Table::new(&get_table_object().into()); + assert_eq!(table.length(), 1); +} + +#[wasm_bindgen_test] +fn compile_error_inheritance() { + let error = WebAssembly::CompileError::new(""); + assert!(error.is_instance_of::()); + assert!(error.is_instance_of::()); + + let _: &Error = error.as_ref(); +} + +#[wasm_bindgen_test] +fn link_error_inheritance() { + let error = WebAssembly::LinkError::new(""); + assert!(error.is_instance_of::()); + assert!(error.is_instance_of::()); + + let _: &Error = error.as_ref(); +} + +#[wasm_bindgen_test] +fn runtime_error_inheritance() { + let error = WebAssembly::RuntimeError::new(""); + assert!(error.is_instance_of::()); + assert!(error.is_instance_of::()); + + let _: &Error = error.as_ref(); } diff --git a/crates/js-sys/tests/wasm/main.rs b/crates/js-sys/tests/wasm/main.rs index 36271531..35202a2d 100755 --- a/crates/js-sys/tests/wasm/main.rs +++ b/crates/js-sys/tests/wasm/main.rs @@ -2,8 +2,10 @@ #![feature(use_extern_macros)] #![allow(non_snake_case)] +extern crate futures; extern crate js_sys; extern crate wasm_bindgen; +extern crate wasm_bindgen_futures; extern crate wasm_bindgen_test; pub mod global_fns; From b519c290f9a4e16fb4da63fb7eeee5eec12f7623 Mon Sep 17 00:00:00 2001 From: Frazer McLean Date: Thu, 16 Aug 2018 20:40:19 +0200 Subject: [PATCH 02/71] futures should be a dev dependency --- crates/js-sys/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/js-sys/Cargo.toml b/crates/js-sys/Cargo.toml index 2bd93a7c..ac8c7c76 100644 --- a/crates/js-sys/Cargo.toml +++ b/crates/js-sys/Cargo.toml @@ -18,9 +18,9 @@ test = false doctest = false [dependencies] -futures = "0.1.20" wasm-bindgen = { path = "../..", version = "0.2.16" } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] +futures = "0.1.20" wasm-bindgen-test = { path = '../test', version = '=0.2.16' } wasm-bindgen-futures = { path = '../futures', version = '=0.2.16' } From ffccfdee7dc6fdb514e9ea1352eec274cd7aeafa Mon Sep 17 00:00:00 2001 From: Frazer McLean Date: Thu, 16 Aug 2018 20:41:07 +0200 Subject: [PATCH 03/71] WebAssembly::Table::new takes an object --- crates/js-sys/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index c5efcbe0..dbc2f6e0 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2990,7 +2990,7 @@ pub mod WebAssembly { /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table #[wasm_bindgen(constructor, js_namespace = WebAssembly)] - pub fn new(table_descriptor: &JsValue) -> Table; + pub fn new(table_descriptor: &Object) -> Table; /// The `length` prototype property of the `WebAssembly.Table` object /// returns the length of the table, i.e. the number of elements in the From 4f18e21659b25fbff2718469f61412731d1cbfdd Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Thu, 16 Aug 2018 22:30:46 -0400 Subject: [PATCH 04/71] Initial example of using the WebAudio APIs from web-sys Part of #443 --- Cargo.toml | 1 + examples/webaudio/.gitignore | 4 + examples/webaudio/Cargo.toml | 11 +++ examples/webaudio/README.md | 14 +++ examples/webaudio/build.bat | 2 + examples/webaudio/build.sh | 10 ++ examples/webaudio/index.html | 31 ++++++ examples/webaudio/index.js | 40 ++++++++ examples/webaudio/package.json | 9 ++ examples/webaudio/src/lib.rs | 147 ++++++++++++++++++++++++++++ examples/webaudio/webpack.config.js | 10 ++ 11 files changed, 279 insertions(+) create mode 100644 examples/webaudio/.gitignore create mode 100644 examples/webaudio/Cargo.toml create mode 100644 examples/webaudio/README.md create mode 100644 examples/webaudio/build.bat create mode 100755 examples/webaudio/build.sh create mode 100644 examples/webaudio/index.html create mode 100644 examples/webaudio/index.js create mode 100644 examples/webaudio/package.json create mode 100644 examples/webaudio/src/lib.rs create mode 100644 examples/webaudio/webpack.config.js diff --git a/Cargo.toml b/Cargo.toml index d76eb37f..cf918adc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -65,6 +65,7 @@ members = [ "examples/performance", "examples/smorgasboard", "examples/wasm-in-wasm", + "examples/webaudio", "tests/no-std", ] diff --git a/examples/webaudio/.gitignore b/examples/webaudio/.gitignore new file mode 100644 index 00000000..89f520ca --- /dev/null +++ b/examples/webaudio/.gitignore @@ -0,0 +1,4 @@ +package-lock.json +node_modules/ +webaudio.js +webaudio_bg.wasm diff --git a/examples/webaudio/Cargo.toml b/examples/webaudio/Cargo.toml new file mode 100644 index 00000000..6d71cc84 --- /dev/null +++ b/examples/webaudio/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "webaudio" +version = "0.1.0" +authors = ["Andrew Chin "] + +[lib] +crate-type = ["cdylib"] + +[dependencies] +wasm-bindgen = { path = "../.." } +web-sys = { path = "../../crates/web-sys" } \ No newline at end of file diff --git a/examples/webaudio/README.md b/examples/webaudio/README.md new file mode 100644 index 00000000..98c9f0c6 --- /dev/null +++ b/examples/webaudio/README.md @@ -0,0 +1,14 @@ +# Web Audio example + +This directory is an example of how to use the Web Audio APIs from Rust. It creates a very simple +FM (frequency modulation) synth, and let's you control the primary frequency, the modulation amount, +and the modulation frequency. + +To run, first install some utilities via npm: + + > npm install + + Then build the project with either `build.bat` or `build.sh`. + + Finally, run a development web server with `npm run serve` and then open + [http://localhost:8080/](http://localhost:8080/) in a browser! \ No newline at end of file diff --git a/examples/webaudio/build.bat b/examples/webaudio/build.bat new file mode 100644 index 00000000..de86353e --- /dev/null +++ b/examples/webaudio/build.bat @@ -0,0 +1,2 @@ +cargo +nightly build --target wasm32-unknown-unknown +cargo +nightly run --manifest-path ../../crates/cli/Cargo.toml --bin wasm-bindgen -- ../../target/wasm32-unknown-unknown/debug/webaudio.wasm --out-dir . diff --git a/examples/webaudio/build.sh b/examples/webaudio/build.sh new file mode 100755 index 00000000..fa6c0c12 --- /dev/null +++ b/examples/webaudio/build.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +# For more coments about what's going on here, see the `hello_world` example + +set -ex + +cargo +nightly build --target wasm32-unknown-unknown +cargo +nightly run --manifest-path ../../crates/cli/Cargo.toml \ + --bin wasm-bindgen -- \ + ../../target/wasm32-unknown-unknown/debug/webaudio.wasm --out-dir . diff --git a/examples/webaudio/index.html b/examples/webaudio/index.html new file mode 100644 index 00000000..d091f797 --- /dev/null +++ b/examples/webaudio/index.html @@ -0,0 +1,31 @@ + + + + + + + + + + (headphone users, please make sure your volume is not too loud!) + +
+ Primary frequency: +
+ +
+ Modulation frequency: +
+ +
+ Modulation amount: +
+ + + diff --git a/examples/webaudio/index.js b/examples/webaudio/index.js new file mode 100644 index 00000000..6488f5de --- /dev/null +++ b/examples/webaudio/index.js @@ -0,0 +1,40 @@ +const rust = import('./webaudio'); + + +// Most browsers don't let WebAudio autoplay without some interaction from the user. So once the module is loaded, +// it's passed to this function which will set up the UI elements for the user to interact with +function setup(rust_module) { + play = function() { + console.log("About to create some music!"); + fm = new rust_module.FmOsc(); + + fm.set_note(50); + fm.set_fm_frequency(0); + fm.set_fm_amount(0); + fm.set_gain(0.8); + + }; + + // create some UI elements + const primary_slider = document.getElementById("primary_input"); + primary_slider.oninput = (e) => { + fm.set_note(e.target.value); + }; + + const fm_freq = document.getElementById("fm_freq"); + fm_freq.oninput = (e) => { + fm.set_fm_frequency(e.target.value); + }; + + const fm_amount = document.getElementById("fm_amount"); + fm_amount.oninput = (e) => { + fm.set_fm_amount(e.target.value); + }; + + console.log("Ready! Press the play button!"); +} + + +rust.then(m => { + setup(m); +}); diff --git a/examples/webaudio/package.json b/examples/webaudio/package.json new file mode 100644 index 00000000..07da0131 --- /dev/null +++ b/examples/webaudio/package.json @@ -0,0 +1,9 @@ +{ + "scripts": { + "serve": "webpack-serve ./webpack.config.js" + }, + "devDependencies": { + "webpack": "^4.16.5", + "webpack-serve": "^2.0.2" + } +} diff --git a/examples/webaudio/src/lib.rs b/examples/webaudio/src/lib.rs new file mode 100644 index 00000000..bca2256d --- /dev/null +++ b/examples/webaudio/src/lib.rs @@ -0,0 +1,147 @@ +#![feature(use_extern_macros, nll)] + +extern crate wasm_bindgen; +extern crate web_sys; + +use wasm_bindgen::prelude::*; +use web_sys::{AudioContext, BaseAudioContext, AudioNode, AudioScheduledSourceNode, OscillatorType}; + +/// Converts a midi note to frequency +/// +/// A midi note is an integer, generally in the range of 21 to 108 +pub fn midi_to_freq(note: u8) -> f32 { + 27.5 * 2f32.powf((note as f32 - 21.0) / 12.0) +} + +#[wasm_bindgen] +pub struct FmOsc { + ctx: AudioContext, + /// The primary oscillator. This will be the fundamental frequency + primary: web_sys::OscillatorNode, + + /// Overall gain (volume) control + gain: web_sys::GainNode, + + /// Amount of frequency modulation + fm_gain: web_sys::GainNode, + + /// The oscillator that will modulate the primary oscillator's frequency + fm_osc: web_sys::OscillatorNode, + + /// The ratio between the primary frequency and the fm_osc frequency. + /// + /// Generally fractional values like 1/2 or 1/4 sound best + fm_freq_ratio: f32, + + fm_gain_ratio: f32, + + +} + +#[wasm_bindgen] +impl FmOsc { + #[wasm_bindgen(constructor)] + pub fn new() -> FmOsc { + // TODO, how to throw from a constructor? + + let ctx = web_sys::AudioContext::new().unwrap(); + let base: &BaseAudioContext = ctx.as_ref(); + + // create our web audio objects + let primary = base.create_oscillator().unwrap(); + let fm_osc = base.create_oscillator().unwrap(); + let gain = base.create_gain().unwrap(); + let fm_gain = base.create_gain().unwrap(); + + // some initial settings: + primary.set_type(OscillatorType::Sine); + primary.frequency().set_value(440.0); // A4 note + gain.gain().set_value(0.0); // starts muted + fm_gain.gain().set_value(0.0); // no initial frequency modulation + fm_osc.set_type(OscillatorType::Sine); + fm_osc.frequency().set_value(0.0); + + + // Create base class references: + let primary_node: &AudioNode = primary.as_ref(); + let gain_node: &AudioNode = gain.as_ref(); + let fm_osc_node: &AudioNode = fm_osc.as_ref(); + let fm_gain_node: &AudioNode = fm_gain.as_ref(); + let destination = base.destination(); + let destination_node: &AudioNode = destination.as_ref(); + + + // connect them up: + + // The primary oscillator is routed through the gain node, so that it can control the overall output volume + primary_node.connect_with_destination_and_output_and_input_using_destination(gain.as_ref()); + // Then connect the gain node to the AudioContext destination (aka your speakers) + gain_node.connect_with_destination_and_output_and_input_using_destination(destination_node); + + // the FM oscillator is connected to its own gain node, so it can control the amount of modulation + fm_osc_node.connect_with_destination_and_output_and_input_using_destination(fm_gain.as_ref()); + + // Connect the FM oscillator to the frequency parameter of the main oscillator, so that the + // FM node can modulate its frequency + fm_gain_node.connect_with_destination_and_output_using_destination(&primary.frequency()); + + + // start the oscillators! + AsRef::::as_ref(&primary).start(); + AsRef::::as_ref(&fm_osc).start(); + + FmOsc { + ctx, + primary, + gain, + fm_gain, + fm_osc, + fm_freq_ratio: 0.0, + fm_gain_ratio: 0.0, + } + + } + + /// Sets the gain for this oscillator, between 0.0 and 1.0 + #[wasm_bindgen] + pub fn set_gain(&self, mut gain: f32) { + if gain > 1.0 { gain = 1.0; } + if gain < 0.0 { gain = 0.0; } + self.gain.gain().set_value(gain); + } + + #[wasm_bindgen] + pub fn set_primary_frequency(&self, freq: f32) { + self.primary.frequency().set_value(freq); + + // The frequency of the FM oscillator depends on the frequency of the primary oscillator, so + // we update the frequency of both in this method + self.fm_osc.frequency().set_value(self.fm_freq_ratio * freq); + self.fm_gain.gain().set_value(self.fm_gain_ratio * freq); + + } + + #[wasm_bindgen] + pub fn set_note(&self, note: u8) { + let freq = midi_to_freq(note); + self.set_primary_frequency(freq); + } + + /// This should be between 0 and 1, though higher values are accepted + #[wasm_bindgen] + pub fn set_fm_amount(&mut self, amt: f32) { + self.fm_gain_ratio = amt; + + self.fm_gain.gain().set_value(self.fm_gain_ratio * self.primary.frequency().value()); + + } + + /// This should be between 0 and 1, though higher values are accepted + #[wasm_bindgen] + pub fn set_fm_frequency(&mut self, amt: f32) { + self.fm_freq_ratio = amt; + self.fm_osc.frequency().set_value(self.fm_freq_ratio * self.primary.frequency().value()); + } + + +} \ No newline at end of file diff --git a/examples/webaudio/webpack.config.js b/examples/webaudio/webpack.config.js new file mode 100644 index 00000000..dce27149 --- /dev/null +++ b/examples/webaudio/webpack.config.js @@ -0,0 +1,10 @@ +const path = require('path'); + +module.exports = { + entry: './index.js', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'index.js', + }, + mode: 'development' +}; From 687412ec50a5babda2203b4411e9d6148d80fa0b Mon Sep 17 00:00:00 2001 From: Matt Kraai Date: Fri, 17 Aug 2018 13:09:30 -0700 Subject: [PATCH 05/71] Test for AsRef implementations Part of #670 --- crates/js-sys/tests/wasm/Array.rs | 1 + crates/js-sys/tests/wasm/ArrayBuffer.rs | 1 + crates/js-sys/tests/wasm/Boolean.rs | 1 + crates/js-sys/tests/wasm/DataView.rs | 2 ++ crates/js-sys/tests/wasm/Date.rs | 1 + crates/js-sys/tests/wasm/Error.rs | 1 + crates/js-sys/tests/wasm/EvalError.rs | 2 ++ crates/js-sys/tests/wasm/Function.rs | 1 + crates/js-sys/tests/wasm/Map.rs | 1 + crates/js-sys/tests/wasm/Number.rs | 1 + crates/js-sys/tests/wasm/RegExp.rs | 1 + crates/js-sys/tests/wasm/Set.rs | 1 + crates/js-sys/tests/wasm/WeakMap.rs | 1 + crates/js-sys/tests/wasm/WeakSet.rs | 1 + 14 files changed, 16 insertions(+) diff --git a/crates/js-sys/tests/wasm/Array.rs b/crates/js-sys/tests/wasm/Array.rs index 604bbf85..fe6d8867 100644 --- a/crates/js-sys/tests/wasm/Array.rs +++ b/crates/js-sys/tests/wasm/Array.rs @@ -306,4 +306,5 @@ fn array_inheritance() { let array = Array::new(); assert!(array.is_instance_of::()); assert!(array.is_instance_of::()); + let _: &Object = array.as_ref(); } diff --git a/crates/js-sys/tests/wasm/ArrayBuffer.rs b/crates/js-sys/tests/wasm/ArrayBuffer.rs index 21fa0491..a4a082a4 100644 --- a/crates/js-sys/tests/wasm/ArrayBuffer.rs +++ b/crates/js-sys/tests/wasm/ArrayBuffer.rs @@ -41,4 +41,5 @@ fn arraybuffer_inheritance() { let buf = ArrayBuffer::new(4); assert!(buf.is_instance_of::()); assert!(buf.is_instance_of::()); + let _: &Object = buf.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Boolean.rs b/crates/js-sys/tests/wasm/Boolean.rs index 34c53e01..c7aa9377 100644 --- a/crates/js-sys/tests/wasm/Boolean.rs +++ b/crates/js-sys/tests/wasm/Boolean.rs @@ -18,4 +18,5 @@ fn boolean_inheritance() { let b = Boolean::new(&JsValue::from(true)); assert!(b.is_instance_of::()); assert!(b.is_instance_of::()); + let _: &Object = b.as_ref(); } diff --git a/crates/js-sys/tests/wasm/DataView.rs b/crates/js-sys/tests/wasm/DataView.rs index 8efe0c6d..122a7dd2 100644 --- a/crates/js-sys/tests/wasm/DataView.rs +++ b/crates/js-sys/tests/wasm/DataView.rs @@ -50,4 +50,6 @@ fn dataview_inheritance() { assert!(v.is_instance_of::()); assert!(v.is_instance_of::()); + + let _: &Object = v.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Date.rs b/crates/js-sys/tests/wasm/Date.rs index c4026b47..d0496fa4 100644 --- a/crates/js-sys/tests/wasm/Date.rs +++ b/crates/js-sys/tests/wasm/Date.rs @@ -413,4 +413,5 @@ fn date_inheritance() { let date = Date::new(&"August 19, 1975 23:15:30".into()); assert!(date.is_instance_of::()); assert!(date.is_instance_of::()); + let _: &Object = date.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Error.rs b/crates/js-sys/tests/wasm/Error.rs index abe856f1..e05ed23c 100644 --- a/crates/js-sys/tests/wasm/Error.rs +++ b/crates/js-sys/tests/wasm/Error.rs @@ -42,4 +42,5 @@ fn error_inheritance() { let error = Error::new("test"); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Object = error.as_ref(); } diff --git a/crates/js-sys/tests/wasm/EvalError.rs b/crates/js-sys/tests/wasm/EvalError.rs index d1deb73a..e23a25b2 100644 --- a/crates/js-sys/tests/wasm/EvalError.rs +++ b/crates/js-sys/tests/wasm/EvalError.rs @@ -52,4 +52,6 @@ fn evalerror_inheritance() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Function.rs b/crates/js-sys/tests/wasm/Function.rs index c7fed283..86bfa919 100644 --- a/crates/js-sys/tests/wasm/Function.rs +++ b/crates/js-sys/tests/wasm/Function.rs @@ -66,4 +66,5 @@ fn to_string() { fn function_inheritance() { assert!(MAX.is_instance_of::()); assert!(MAX.is_instance_of::()); + let _: &Object = MAX.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Map.rs b/crates/js-sys/tests/wasm/Map.rs index f9ba7740..91282282 100644 --- a/crates/js-sys/tests/wasm/Map.rs +++ b/crates/js-sys/tests/wasm/Map.rs @@ -93,4 +93,5 @@ fn map_inheritance() { let map = Map::new(); assert!(map.is_instance_of::()); assert!(map.is_instance_of::()); + let _: &Object = map.as_ref(); } diff --git a/crates/js-sys/tests/wasm/Number.rs b/crates/js-sys/tests/wasm/Number.rs index 9d43f8a2..b3fae6b1 100644 --- a/crates/js-sys/tests/wasm/Number.rs +++ b/crates/js-sys/tests/wasm/Number.rs @@ -111,4 +111,5 @@ fn number_inheritance() { let n = Number::new(&JsValue::from(42)); assert!(n.is_instance_of::()); assert!(n.is_instance_of::()); + let _: &Object = n.as_ref(); } diff --git a/crates/js-sys/tests/wasm/RegExp.rs b/crates/js-sys/tests/wasm/RegExp.rs index a77d4892..eedbaafc 100644 --- a/crates/js-sys/tests/wasm/RegExp.rs +++ b/crates/js-sys/tests/wasm/RegExp.rs @@ -7,6 +7,7 @@ fn regexp_inheritance() { let re = RegExp::new(".", ""); assert!(re.is_instance_of::()); assert!(re.is_instance_of::()); + let _: &Object = re.as_ref(); } #[wasm_bindgen_test] diff --git a/crates/js-sys/tests/wasm/Set.rs b/crates/js-sys/tests/wasm/Set.rs index 419d66b8..f475c5a0 100644 --- a/crates/js-sys/tests/wasm/Set.rs +++ b/crates/js-sys/tests/wasm/Set.rs @@ -87,4 +87,5 @@ fn set_inheritance() { let set = Set::new(&JsValue::undefined()); assert!(set.is_instance_of::()); assert!(set.is_instance_of::()); + let _: &Object = set.as_ref(); } diff --git a/crates/js-sys/tests/wasm/WeakMap.rs b/crates/js-sys/tests/wasm/WeakMap.rs index 8cfe464c..9b3f0d78 100644 --- a/crates/js-sys/tests/wasm/WeakMap.rs +++ b/crates/js-sys/tests/wasm/WeakMap.rs @@ -57,4 +57,5 @@ fn weakmap_inheritance() { let map = WeakMap::new(); assert!(map.is_instance_of::()); assert!(map.is_instance_of::()); + let _: &Object = map.as_ref(); } diff --git a/crates/js-sys/tests/wasm/WeakSet.rs b/crates/js-sys/tests/wasm/WeakSet.rs index dc70ca8b..541bd448 100644 --- a/crates/js-sys/tests/wasm/WeakSet.rs +++ b/crates/js-sys/tests/wasm/WeakSet.rs @@ -47,4 +47,5 @@ fn weakset_inheritance() { let set = WeakSet::new(); assert!(set.is_instance_of::()); assert!(set.is_instance_of::()); + let _: &Object = set.as_ref(); } From bec3178e3c2046a9aa7fde72258811fd68030da6 Mon Sep 17 00:00:00 2001 From: Matt Kraai Date: Fri, 17 Aug 2018 13:10:11 -0700 Subject: [PATCH 06/71] Make all errors extend Object Part of #670 --- crates/js-sys/src/lib.rs | 10 +++++----- crates/js-sys/tests/wasm/RangeError.rs | 2 ++ crates/js-sys/tests/wasm/ReferenceError.rs | 2 ++ crates/js-sys/tests/wasm/SyntaxError.rs | 2 ++ crates/js-sys/tests/wasm/TypeError.rs | 2 ++ crates/js-sys/tests/wasm/UriError.rs | 2 ++ 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 67cff622..55b5c8d6 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2092,7 +2092,7 @@ extern { /// or range of allowed values. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError - #[wasm_bindgen(extends = Error)] + #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type RangeError; @@ -2111,7 +2111,7 @@ extern { /// variable is referenced. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError - #[wasm_bindgen(extends = Error)] + #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type ReferenceError; @@ -2505,7 +2505,7 @@ extern { /// parsing code. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError - #[wasm_bindgen(extends = Error)] + #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type SyntaxError; @@ -2525,7 +2525,7 @@ extern { /// expected type. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError - #[wasm_bindgen(extends = Error)] + #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type TypeError; @@ -2758,7 +2758,7 @@ extern { /// function was used in a wrong way. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError - #[wasm_bindgen(extends = Error, js_name = URIError)] + #[wasm_bindgen(extends = Error, extends = Object, js_name = URIError)] #[derive(Clone, Debug)] pub type UriError; diff --git a/crates/js-sys/tests/wasm/RangeError.rs b/crates/js-sys/tests/wasm/RangeError.rs index 18c7d7d0..93b42b99 100644 --- a/crates/js-sys/tests/wasm/RangeError.rs +++ b/crates/js-sys/tests/wasm/RangeError.rs @@ -9,6 +9,8 @@ fn range_error() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "out of range yo"); diff --git a/crates/js-sys/tests/wasm/ReferenceError.rs b/crates/js-sys/tests/wasm/ReferenceError.rs index 218ad52e..82d6e692 100644 --- a/crates/js-sys/tests/wasm/ReferenceError.rs +++ b/crates/js-sys/tests/wasm/ReferenceError.rs @@ -9,6 +9,8 @@ fn reference_error() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "bad reference, fool"); diff --git a/crates/js-sys/tests/wasm/SyntaxError.rs b/crates/js-sys/tests/wasm/SyntaxError.rs index 23a211f0..136746af 100644 --- a/crates/js-sys/tests/wasm/SyntaxError.rs +++ b/crates/js-sys/tests/wasm/SyntaxError.rs @@ -9,6 +9,8 @@ fn syntax_error() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "msg"); diff --git a/crates/js-sys/tests/wasm/TypeError.rs b/crates/js-sys/tests/wasm/TypeError.rs index ef7b09fb..e9a9957a 100644 --- a/crates/js-sys/tests/wasm/TypeError.rs +++ b/crates/js-sys/tests/wasm/TypeError.rs @@ -9,6 +9,8 @@ fn type_error() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "msg"); diff --git a/crates/js-sys/tests/wasm/UriError.rs b/crates/js-sys/tests/wasm/UriError.rs index ddcafc49..df939e5d 100644 --- a/crates/js-sys/tests/wasm/UriError.rs +++ b/crates/js-sys/tests/wasm/UriError.rs @@ -9,6 +9,8 @@ fn uri_error() { assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); assert!(error.is_instance_of::()); + let _: &Error = error.as_ref(); + let _: &Object = error.as_ref(); let base: &Error = error.as_ref(); assert_eq!(JsValue::from(base.message()), "msg"); From 6dccb7f777c56ad9b209c78ec660b24f5f10c2c5 Mon Sep 17 00:00:00 2001 From: Matt Kraai Date: Fri, 17 Aug 2018 14:50:15 -0700 Subject: [PATCH 07/71] Remove blank line Part of #670 --- crates/js-sys/tests/wasm/DataView.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/js-sys/tests/wasm/DataView.rs b/crates/js-sys/tests/wasm/DataView.rs index 122a7dd2..84fdf0f6 100644 --- a/crates/js-sys/tests/wasm/DataView.rs +++ b/crates/js-sys/tests/wasm/DataView.rs @@ -1,7 +1,7 @@ +use js_sys::*; +use wasm_bindgen::JsCast; use wasm_bindgen::JsValue; use wasm_bindgen_test::*; -use wasm_bindgen::JsCast; -use js_sys::*; #[wasm_bindgen_test] fn test() { @@ -36,7 +36,9 @@ fn test() { v.set_int8(0, 42); // TODO: figure out how to do `bytes[2]` - bytes.subarray(2, 3).for_each(&mut |x, _, _| assert_eq!(x, 42)); + bytes + .subarray(2, 3) + .for_each(&mut |x, _, _| assert_eq!(x, 42)); } #[wasm_bindgen_test] @@ -50,6 +52,5 @@ fn dataview_inheritance() { assert!(v.is_instance_of::()); assert!(v.is_instance_of::()); - let _: &Object = v.as_ref(); } From 4a994da90442312222f1654b204f4e56636bc052 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Fri, 17 Aug 2018 22:54:59 -0400 Subject: [PATCH 08/71] Show how to use web-sys::console::log from the console_log example --- examples/console_log/Cargo.toml | 1 + examples/console_log/README.md | 6 ++++-- examples/console_log/src/lib.rs | 8 ++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/examples/console_log/Cargo.toml b/examples/console_log/Cargo.toml index 25761c2d..aa558dc8 100644 --- a/examples/console_log/Cargo.toml +++ b/examples/console_log/Cargo.toml @@ -8,3 +8,4 @@ crate-type = ["cdylib"] [dependencies] wasm-bindgen = { path = "../.." } +web-sys = { path = "../../crates/web-sys" } \ No newline at end of file diff --git a/examples/console_log/README.md b/examples/console_log/README.md index 27a58418..dec3ea2e 100644 --- a/examples/console_log/README.md +++ b/examples/console_log/README.md @@ -2,8 +2,10 @@ [View this example online](https://webassembly.studio/?f=ppd7u8k9i9) -This directory is an example of using the `#[wasm_bindgen]` macro to import the -`console.log` function and call it + +This directory is an example of two ways to get access to the `console.log` function. +The first way uses the `#[wasm_bindgen]` macro to import the function and call it. +The second way uses the binding from the `web-sys` crate. You can build the example with: diff --git a/examples/console_log/src/lib.rs b/examples/console_log/src/lib.rs index 5b652e71..cd23275e 100644 --- a/examples/console_log/src/lib.rs +++ b/examples/console_log/src/lib.rs @@ -1,9 +1,14 @@ #![feature(use_extern_macros)] extern crate wasm_bindgen; +extern crate web_sys; use wasm_bindgen::prelude::*; +// You can use the console bindings from web-sys... +use web_sys::console; + +// ... or you can manually write the bindings yourself #[wasm_bindgen] extern "C" { #[wasm_bindgen(js_namespace = console)] @@ -19,4 +24,7 @@ pub fn run() { log("Hello from Rust!"); log_u32(42); log_many("Logging", "many values!"); + + console::log(JsValue::from("Another message from rust!")); + console::log(JsValue::from(56u32)); } From c543b5d1496549425850e0ca605383ab04b2dbd1 Mon Sep 17 00:00:00 2001 From: Mason Stallmo Date: Sat, 18 Aug 2018 09:11:07 -0500 Subject: [PATCH 09/71] Add extends attributes for js_sys:Generator --- crates/js-sys/src/lib.rs | 1 + crates/js-sys/tests/wasm/Generator.rs | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 67cff622..91746028 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -885,6 +885,7 @@ impl Function { // Generator #[wasm_bindgen] extern { + #[wasm_bindgen(extends = Object)] #[derive(Clone, Debug)] pub type Generator; diff --git a/crates/js-sys/tests/wasm/Generator.rs b/crates/js-sys/tests/wasm/Generator.rs index 5fb738fc..3395ced2 100644 --- a/crates/js-sys/tests/wasm/Generator.rs +++ b/crates/js-sys/tests/wasm/Generator.rs @@ -1,5 +1,6 @@ use wasm_bindgen::prelude::*; use wasm_bindgen_test::*; +use wasm_bindgen::JsCast; use js_sys::*; #[wasm_bindgen(module = "tests/wasm/Generator.js")] @@ -56,3 +57,10 @@ fn throw() { assert!(next.value().is_undefined()); assert!(next.done()); } + +#[wasm_bindgen_test] +fn generator_inheritance() { + let gen = dummy_generator(); + + assert!(gen.is_instance_of::()); +} From 302f7ba21d0480eb8c66e58c1d112fc25ebf8055 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Sat, 18 Aug 2018 11:23:29 -0400 Subject: [PATCH 10/71] Fix missing WindowOrWorkerGlobalScope partial interface mixins. Without the "mixin" keyword, wasm_bindgen_webidl would report: Partial interface WindowOrWorkerGlobalScope missing non-partial interface Also, including the "mixin" keyword here is consistent with the official webidl spec (for example see https://fetch.spec.whatwg.org/#fetch-method) --- .../webidls/enabled/WindowOrWorkerGlobalScope.webidl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/web-sys/webidls/enabled/WindowOrWorkerGlobalScope.webidl b/crates/web-sys/webidls/enabled/WindowOrWorkerGlobalScope.webidl index b02a355f..9bc0711b 100644 --- a/crates/web-sys/webidls/enabled/WindowOrWorkerGlobalScope.webidl +++ b/crates/web-sys/webidls/enabled/WindowOrWorkerGlobalScope.webidl @@ -43,25 +43,25 @@ interface mixin WindowOrWorkerGlobalScope { }; // https://fetch.spec.whatwg.org/#fetch-method -partial interface WindowOrWorkerGlobalScope { +partial interface mixin WindowOrWorkerGlobalScope { [NewObject, NeedsCallerType] Promise fetch(RequestInfo input, optional RequestInit init); }; // https://w3c.github.io/webappsec-secure-contexts/#monkey-patching-global-object -partial interface WindowOrWorkerGlobalScope { +partial interface mixin WindowOrWorkerGlobalScope { readonly attribute boolean isSecureContext; }; // http://w3c.github.io/IndexedDB/#factory-interface -partial interface WindowOrWorkerGlobalScope { +partial interface mixin WindowOrWorkerGlobalScope { // readonly attribute IDBFactory indexedDB; [Throws] readonly attribute IDBFactory? indexedDB; }; // https://w3c.github.io/ServiceWorker/#self-caches -partial interface WindowOrWorkerGlobalScope { +partial interface mixin WindowOrWorkerGlobalScope { [Throws, Func="mozilla::dom::DOMPrefs::DOMCachesEnabled", SameObject] readonly attribute CacheStorage caches; }; From 0d3f7061954d4f3cfdf9e6517c128c38fd15465b Mon Sep 17 00:00:00 2001 From: Danielle Pham Date: Sat, 18 Aug 2018 20:51:52 -0400 Subject: [PATCH 11/71] Add binding for String.prototype.localeCompare --- crates/js-sys/src/lib.rs | 8 ++++ crates/js-sys/tests/wasm/JsString.rs | 64 ++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 67cff622..73e77aa0 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2996,6 +2996,14 @@ extern "C" { #[wasm_bindgen(method, js_class = "String", js_name = lastIndexOf)] pub fn last_index_of(this: &JsString, search_value: &str, from_index: i32) -> i32; + /// The localeCompare() method returns a number indicating whether + /// a reference string comes before or after or is the same as + /// the given string in sort order. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare + #[wasm_bindgen(method, js_class = "String", js_name = localeCompare)] + pub fn locale_compare(this: &JsString, compare_string: &str, locales: &Array, options: &Object) -> i32; + /// The normalize() method returns the Unicode Normalization Form /// of a given string (if the value isn't a string, it will be converted to one first). /// diff --git a/crates/js-sys/tests/wasm/JsString.rs b/crates/js-sys/tests/wasm/JsString.rs index 66fc5771..ecdaa6ad 100644 --- a/crates/js-sys/tests/wasm/JsString.rs +++ b/crates/js-sys/tests/wasm/JsString.rs @@ -135,6 +135,70 @@ fn last_index_of() { assert_eq!(js.last_index_of("", 2), 2); } +#[wasm_bindgen_test] +fn locale_compare() { + let a = "résumé"; + let b = "RESUME"; + let js_a = JsString::from(a); + let js_b = JsString::from(b); + let locales = Array::new(); + let options = Object::new(); + + assert_eq!(js_a.locale_compare(a, &locales, &options), 0); + assert_eq!(js_b.locale_compare(b, &locales, &options), 0); + assert!(js_a.locale_compare(b, &locales, &options) > 0); + assert!(js_b.locale_compare(a, &locales, &options) < 0); + + locales.push(&"en".into()); + Reflect::set(options.as_ref(), &"sensitivity".into(), &"base".into()); + + assert_eq!(js_a.locale_compare(a, &locales, &options), 0); + assert_eq!(js_a.locale_compare(b, &locales, &options), 0); + assert_eq!(js_b.locale_compare(a, &locales, &options), 0); + assert_eq!(js_b.locale_compare(b, &locales, &options), 0); + + let a = "ä"; + let z = "z"; + let js_a = JsString::from(a); + let js_z = JsString::from(z); + let locales_de = Array::of1(&"de".into()); + let locales_sv = Array::of1(&"sv".into()); + let options = Object::new(); + + assert_eq!(js_a.locale_compare(a, &locales_de, &options), 0); + assert_eq!(js_z.locale_compare(z, &locales_de, &options), 0); + assert!(js_a.locale_compare(z, &locales_de, &options) < 0); + assert!(js_z.locale_compare(a, &locales_de, &options) > 0); + + assert_eq!(js_a.locale_compare(a, &locales_sv, &options), 0); + assert_eq!(js_z.locale_compare(z, &locales_sv, &options), 0); + assert!(js_a.locale_compare(z, &locales_sv, &options) < 0); + assert!(js_z.locale_compare(a, &locales_sv, &options) > 0); + + let two = "2"; + let ten = "10"; + let js_two = JsString::from(two); + let js_ten = JsString::from(ten); + let locales = Array::new(); + let options = Object::new(); + + assert_eq!(js_two.locale_compare(two, &locales, &options), 0); + assert_eq!(js_ten.locale_compare(ten, &locales, &options), 0); + assert!(js_two.locale_compare(ten, &locales, &options) > 0); + assert!(js_ten.locale_compare(two, &locales, &options) < 0); + + locales.push(&"en-u-kn-true".into()); + + assert!(js_two.locale_compare(ten, &locales, &options) < 0); + assert!(js_ten.locale_compare(two, &locales, &options) > 0); + + let locales = Array::new(); + Reflect::set(options.as_ref(), &"numeric".into(), &JsValue::TRUE); + + assert!(js_two.locale_compare(ten, &locales, &options) < 0); + assert!(js_ten.locale_compare(two, &locales, &options) > 0); +} + #[wasm_bindgen_test] fn normalize() { let js = JsString::from("\u{1E9B}\u{0323}"); From 00a0152adff8ef9e8627c6c3e66dbd5525583c29 Mon Sep 17 00:00:00 2001 From: Danielle Pham Date: Sat, 18 Aug 2018 20:52:11 -0400 Subject: [PATCH 12/71] Rename local param to locale --- crates/js-sys/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 73e77aa0..aab68ce9 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3070,14 +3070,14 @@ extern "C" { /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase #[wasm_bindgen(method, js_class = "String", js_name = toLocaleLowerCase)] - pub fn to_locale_lower_case(this: &JsString, local: Option<&str>) -> JsString; + pub fn to_locale_lower_case(this: &JsString, locale: Option<&str>) -> JsString; /// The toLocaleUpperCase() method returns the calling string value converted to upper case, /// according to any locale-specific case mappings. /// /// https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase #[wasm_bindgen(method, js_class = "String", js_name = toLocaleUpperCase)] - pub fn to_locale_upper_case(this: &JsString, local: Option<&str>) -> JsString; + pub fn to_locale_upper_case(this: &JsString, locale: Option<&str>) -> JsString; /// The `toLowerCase()` method returns the calling string value /// converted to lower case. From 27d48ad267ad12bf8365caa40b940066d4426e86 Mon Sep 17 00:00:00 2001 From: Danielle Pham Date: Fri, 17 Aug 2018 20:46:44 -0400 Subject: [PATCH 13/71] Add bindings for String.from_code_point --- crates/js-sys/src/lib.rs | 34 ++++++++++++++++++++++++++++ crates/js-sys/tests/wasm/JsString.rs | 17 ++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 67cff622..855c4dc9 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2973,6 +2973,40 @@ extern "C" { #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)] pub fn from_char_code5(a: u32, b: u32, c: u32, d: u32, e: u32) -> JsString; + + /// The static String.fromCodePoint() method returns a string created by + /// using the specified sequence of code points. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint + /// + /// # Exceptions + /// + /// A RangeError is thrown if an invalid Unicode code point is given + /// + /// # Notes + /// + /// There are a few bindings to `from_code_point` in `js-sys`: `from_code_point1`, `from_code_point2`, etc... + /// with different arities. + #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] + pub fn from_code_point1(a: u32) -> Result; + + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint + #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] + pub fn from_code_point2(a: u32, b: u32) -> Result; + + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint + #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] + pub fn from_code_point3(a: u32, b: u32, c: u32) -> Result; + + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint + #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] + pub fn from_code_point4(a: u32, b: u32, c: u32, d: u32) -> Result; + + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint + #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] + pub fn from_code_point5(a: u32, b: u32, c: u32, d: u32, e: u32) -> Result; + + /// The `includes()` method determines whether one string may be found /// within another string, returning true or false as appropriate. /// diff --git a/crates/js-sys/tests/wasm/JsString.rs b/crates/js-sys/tests/wasm/JsString.rs index 66fc5771..74f3eac8 100644 --- a/crates/js-sys/tests/wasm/JsString.rs +++ b/crates/js-sys/tests/wasm/JsString.rs @@ -85,6 +85,23 @@ fn from_char_code() { assert_eq!(JsString::from_char_code4(codes[0], codes[1], codes[2], codes[3]), "½+¾="); } +#[wasm_bindgen_test] +fn from_code_point() { + let s = "☃★♲你"; + let codes : Vec = s.chars() + .map(|char| char as u32) + .collect(); + + assert_eq!(JsString::from_code_point1(codes[0]).unwrap(), "☃"); + assert_eq!(JsString::from_code_point2(codes[0], codes[1]).unwrap(), "☃★"); + assert_eq!(JsString::from_code_point3(codes[0], codes[1], codes[2]).unwrap(), "☃★♲"); + assert_eq!(JsString::from_code_point4(codes[0], codes[1], codes[2], codes[3]).unwrap(), "☃★♲你"); + + assert!(!JsString::from_code_point1(0x10FFFF).is_err()); + assert!(JsString::from_code_point1(0x110000).is_err()); + assert!(JsString::from_code_point1(u32::max_value()).is_err()); +} + #[wasm_bindgen_test] fn includes() { let str = JsString::from("Blue Whale"); From f0811d5ac0becd7cb325c59e8d8d849805a31e7a Mon Sep 17 00:00:00 2001 From: Mason Stallmo Date: Sun, 19 Aug 2018 10:03:56 -0500 Subject: [PATCH 14/71] Add extends to js-sys:Intl.Collater --- crates/js-sys/src/lib.rs | 2 +- crates/js-sys/tests/wasm/Intl.rs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 487fc095..8b4e2854 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3401,7 +3401,7 @@ pub mod Intl { /// that enable language sensitive string comparison. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator - #[wasm_bindgen(js_namespace = Intl)] + #[wasm_bindgen(extends = Object, js_namespace = Intl)] #[derive(Clone, Debug)] pub type Collator; diff --git a/crates/js-sys/tests/wasm/Intl.rs b/crates/js-sys/tests/wasm/Intl.rs index 6fc8add6..a22b75e4 100644 --- a/crates/js-sys/tests/wasm/Intl.rs +++ b/crates/js-sys/tests/wasm/Intl.rs @@ -35,6 +35,10 @@ fn collator() { let a = Intl::Collator::supported_locales_of(&locales, &opts); assert!(a.is_instance_of::()); + + assert!(c.is_instance_of::()); + assert!(c.is_instance_of::()); + let _: &Object = c.as_ref(); } #[wasm_bindgen_test] From 780c7236f1de7196f6ab630e05afd6b499b6b087 Mon Sep 17 00:00:00 2001 From: Mason Stallmo Date: Sun, 19 Aug 2018 10:13:25 -0500 Subject: [PATCH 15/71] Add extends to js-sys:Intl.DateTimeFormat --- crates/js-sys/src/lib.rs | 2 +- crates/js-sys/tests/wasm/Intl.rs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 8b4e2854..89169596 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3445,7 +3445,7 @@ pub mod Intl { /// that enable language-sensitive date and time formatting. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat - #[wasm_bindgen(js_namespace = Intl)] + #[wasm_bindgen(extends = Object, js_namespace = Intl)] #[derive(Clone, Debug)] pub type DateTimeFormat; diff --git a/crates/js-sys/tests/wasm/Intl.rs b/crates/js-sys/tests/wasm/Intl.rs index a22b75e4..62f6102f 100644 --- a/crates/js-sys/tests/wasm/Intl.rs +++ b/crates/js-sys/tests/wasm/Intl.rs @@ -54,6 +54,10 @@ fn date_time_format() { let a = Intl::DateTimeFormat::supported_locales_of(&locales, &opts); assert!(a.is_instance_of::()); + + assert!(c.is_instance_of::()); + assert!(c.is_instance_of::()); + let _: &Object = c.as_ref(); } #[wasm_bindgen_test] From ee131888da9eb62b8cd416641c1e1e14793b0ebe Mon Sep 17 00:00:00 2001 From: Mason Stallmo Date: Sun, 19 Aug 2018 10:19:03 -0500 Subject: [PATCH 16/71] Add extends to js-sys:Intl.NumberFormat --- crates/js-sys/src/lib.rs | 2 +- crates/js-sys/tests/wasm/Intl.rs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 89169596..e402b6ab 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3496,7 +3496,7 @@ pub mod Intl { /// that enable language sensitive number formatting. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat - #[wasm_bindgen(js_namespace = Intl)] + #[wasm_bindgen(extends = Object, js_namespace = Intl)] #[derive(Clone, Debug)] pub type NumberFormat; diff --git a/crates/js-sys/tests/wasm/Intl.rs b/crates/js-sys/tests/wasm/Intl.rs index 62f6102f..8abff50b 100644 --- a/crates/js-sys/tests/wasm/Intl.rs +++ b/crates/js-sys/tests/wasm/Intl.rs @@ -72,6 +72,10 @@ fn number_format() { let a = Intl::NumberFormat::supported_locales_of(&locales, &opts); assert!(a.is_instance_of::()); + + assert!(n.is_instance_of::()); + assert!(n.is_instance_of::()); + let _: &Object = n.as_ref(); } #[wasm_bindgen_test] From 1762b3cba007fa5d2b4c389154d8ec7a97334a3d Mon Sep 17 00:00:00 2001 From: Mason Stallmo Date: Sun, 19 Aug 2018 11:03:55 -0500 Subject: [PATCH 17/71] Add extends to js-sys:Intl.PluralRules --- crates/js-sys/src/lib.rs | 2 +- crates/js-sys/tests/wasm/Intl.rs | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index e402b6ab..e429d413 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3546,7 +3546,7 @@ pub mod Intl { /// that enable plural sensitive formatting and plural language rules. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules - #[wasm_bindgen(js_namespace = Intl)] + #[wasm_bindgen(extends = Object, js_namespace = Intl)] #[derive(Clone, Debug)] pub type PluralRules; diff --git a/crates/js-sys/tests/wasm/Intl.rs b/crates/js-sys/tests/wasm/Intl.rs index 8abff50b..4fd43f5d 100644 --- a/crates/js-sys/tests/wasm/Intl.rs +++ b/crates/js-sys/tests/wasm/Intl.rs @@ -87,6 +87,10 @@ fn plural_rules() { assert!(r.resolved_options().is_instance_of::()); assert_eq!(r.select(1_f64), "one"); - let r = Intl::PluralRules::supported_locales_of(&locales, &opts); - assert!(r.is_instance_of::()); + let a = Intl::PluralRules::supported_locales_of(&locales, &opts); + assert!(a.is_instance_of::()); + + assert!(r.is_instance_of::()); + assert!(r.is_instance_of::()); + let _: &Object = r.as_ref(); } From b330bd1bf1065d826e86b219503afff6b74a84e3 Mon Sep 17 00:00:00 2001 From: Mason Stallmo Date: Sun, 19 Aug 2018 11:27:04 -0500 Subject: [PATCH 18/71] Refactor inheritance checks into their own tests --- crates/js-sys/tests/wasm/Intl.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/crates/js-sys/tests/wasm/Intl.rs b/crates/js-sys/tests/wasm/Intl.rs index 4fd43f5d..74c57ecd 100644 --- a/crates/js-sys/tests/wasm/Intl.rs +++ b/crates/js-sys/tests/wasm/Intl.rs @@ -35,6 +35,13 @@ fn collator() { let a = Intl::Collator::supported_locales_of(&locales, &opts); assert!(a.is_instance_of::()); +} + +#[wasm_bindgen_test] +fn collator_inheritance() { + let locales = Array::of1(&JsValue::from("en-US")); + let opts = Object::new(); + let c = Intl::Collator::new(&locales, &opts); assert!(c.is_instance_of::()); assert!(c.is_instance_of::()); @@ -54,6 +61,13 @@ fn date_time_format() { let a = Intl::DateTimeFormat::supported_locales_of(&locales, &opts); assert!(a.is_instance_of::()); +} + +#[wasm_bindgen_test] +fn date_time_format_inheritance() { + let locales = Array::of1(&JsValue::from("en-US")); + let opts = Object::new(); + let c = Intl::DateTimeFormat::new(&locales, &opts); assert!(c.is_instance_of::()); assert!(c.is_instance_of::()); @@ -72,6 +86,13 @@ fn number_format() { let a = Intl::NumberFormat::supported_locales_of(&locales, &opts); assert!(a.is_instance_of::()); +} + +#[wasm_bindgen_test] +fn number_format_inheritance() { + let locales = Array::of1(&JsValue::from("en-US")); + let opts = Object::new(); + let n = Intl::NumberFormat::new(&locales, &opts); assert!(n.is_instance_of::()); assert!(n.is_instance_of::()); @@ -89,6 +110,13 @@ fn plural_rules() { let a = Intl::PluralRules::supported_locales_of(&locales, &opts); assert!(a.is_instance_of::()); +} + +#[wasm_bindgen_test] +fn plural_rules_inheritance() { + let locales = Array::of1(&JsValue::from("en-US")); + let opts = Object::new(); + let r = Intl::PluralRules::new(&locales, &opts); assert!(r.is_instance_of::()); assert!(r.is_instance_of::()); From 7b53b1c88ec828f52c2ed613716aac6e113d585c Mon Sep 17 00:00:00 2001 From: Danielle Pham Date: Sat, 18 Aug 2018 21:55:59 -0400 Subject: [PATCH 19/71] Add binding for String.prototype.match --- crates/js-sys/src/lib.rs | 8 ++++++-- crates/js-sys/tests/wasm/JsString.rs | 25 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index e429d413..75d52cec 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2974,7 +2974,6 @@ extern "C" { #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)] pub fn from_char_code5(a: u32, b: u32, c: u32, d: u32, e: u32) -> JsString; - /// The static String.fromCodePoint() method returns a string created by /// using the specified sequence of code points. /// @@ -3007,7 +3006,6 @@ extern "C" { #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] pub fn from_code_point5(a: u32, b: u32, c: u32, d: u32, e: u32) -> Result; - /// The `includes()` method determines whether one string may be found /// within another string, returning true or false as appropriate. /// @@ -3039,6 +3037,12 @@ extern "C" { #[wasm_bindgen(method, js_class = "String", js_name = localeCompare)] pub fn locale_compare(this: &JsString, compare_string: &str, locales: &Array, options: &Object) -> i32; + /// The match() method retrieves the matches when matching a string against a regular expression. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match + #[wasm_bindgen(method, js_class = "String", js_name = match)] + pub fn match_(this: &JsString, pattern: &RegExp) -> Option; + /// The normalize() method returns the Unicode Normalization Form /// of a given string (if the value isn't a string, it will be converted to one first). /// diff --git a/crates/js-sys/tests/wasm/JsString.rs b/crates/js-sys/tests/wasm/JsString.rs index ca416cc9..a22fd653 100644 --- a/crates/js-sys/tests/wasm/JsString.rs +++ b/crates/js-sys/tests/wasm/JsString.rs @@ -216,6 +216,31 @@ fn locale_compare() { assert!(js_ten.locale_compare(two, &locales, &options) > 0); } +#[wasm_bindgen_test] +fn match_() { + let s = "The quick brown fox jumped over the lazy dog. It barked."; + let re = RegExp::new("[A-Z]", "g"); + let result = JsString::from(s).match_(&re); + let obj = result.unwrap(); + + assert_eq!(Reflect::get(obj.as_ref(), &"0".into()), "T"); + assert_eq!(Reflect::get(obj.as_ref(), &"1".into()), "I"); + + let result = JsString::from("foo").match_(&re); + assert!(result.is_none()); + + let s = "For more information, see Chapter 3.4.5.1"; + let re = RegExp::new("see (chapter \\d+(\\.\\d)*)", "i"); + let result = JsString::from(s).match_(&re); + let obj = result.unwrap(); + + assert_eq!(Reflect::get(obj.as_ref(), &"0".into()), "see Chapter 3.4.5.1"); + assert_eq!(Reflect::get(obj.as_ref(), &"1".into()), "Chapter 3.4.5.1"); + assert_eq!(Reflect::get(obj.as_ref(), &"2".into()), ".1"); + assert_eq!(Reflect::get(obj.as_ref(), &"index".into()), 22); + assert_eq!(Reflect::get(obj.as_ref(), &"input".into()), s); +} + #[wasm_bindgen_test] fn normalize() { let js = JsString::from("\u{1E9B}\u{0323}"); From 44877880bbf2ebc5062529becdb488c9c58db42b Mon Sep 17 00:00:00 2001 From: Danielle Pham Date: Sun, 19 Aug 2018 14:42:22 -0400 Subject: [PATCH 20/71] Add bindings for String.prototype.replace --- crates/js-sys/src/lib.rs | 14 ++++++++++++++ crates/js-sys/tests/wasm/JsString.js | 8 +++++++- crates/js-sys/tests/wasm/JsString.rs | 16 ++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 75d52cec..6cdc1fdd 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3075,6 +3075,20 @@ extern "C" { #[wasm_bindgen(method, js_class = "String")] pub fn repeat(this: &JsString, count: i32) -> JsString; + /// The replace() method returns a new string with some or all matches of a pattern + /// replaced by a replacement. The pattern can be a string or a RegExp, and + /// the replacement can be a string or a function to be called for each match. + /// + /// Note: The original string will remain unchanged. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace + #[wasm_bindgen(method, js_class = "String")] + pub fn replace(this: &JsString, pattern: &RegExp, replacement: &str) -> JsString; + + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace + #[wasm_bindgen(method, js_class = "String", js_name = replace)] + pub fn replace_function(this: &JsString, pattern: &RegExp, replacement: &Function) -> JsString; + /// The `slice()` method extracts a section of a string and returns it as a /// new string, without modifying the original string. /// diff --git a/crates/js-sys/tests/wasm/JsString.js b/crates/js-sys/tests/wasm/JsString.js index 04a64a9a..fbaec7ae 100644 --- a/crates/js-sys/tests/wasm/JsString.js +++ b/crates/js-sys/tests/wasm/JsString.js @@ -1 +1,7 @@ -exports.new_string_object = () => new String("hi"); \ No newline at end of file +exports.new_string_object = () => new String("hi"); + +exports.get_replacer_function = function() { + return function upperToHyphenLower(match, offset, string) { + return (offset > 0 ? '-' : '') + match.toLowerCase(); + }; +}; diff --git a/crates/js-sys/tests/wasm/JsString.rs b/crates/js-sys/tests/wasm/JsString.rs index a22fd653..47a3a8fe 100644 --- a/crates/js-sys/tests/wasm/JsString.rs +++ b/crates/js-sys/tests/wasm/JsString.rs @@ -7,6 +7,7 @@ use js_sys::*; #[wasm_bindgen(module = "tests/wasm/JsString.js")] extern { fn new_string_object() -> JsValue; + fn get_replacer_function() -> Function; } #[wasm_bindgen_test] @@ -284,6 +285,21 @@ fn repeat() { assert_eq!(JsString::from("test").repeat(3), "testtesttest"); } +#[wasm_bindgen_test] +fn replace() { + let js = JsString::from("The quick brown fox jumped over the lazy dog. If the dog reacted, was it really lazy?"); + let re = RegExp::new("dog", "g"); + let result = js.replace(&re, "ferret"); + + assert_eq!(result, "The quick brown fox jumped over the lazy ferret. If the ferret reacted, was it really lazy?"); + + let js = JsString::from("borderTop"); + let re = RegExp::new("[A-Z]", "g"); + let result = js.replace_function(&re, &get_replacer_function()); + + assert_eq!(result, "border-top"); +} + #[wasm_bindgen_test] fn slice() { let characters = JsString::from("acxn18"); From 8698084a432f7e4882ce4d27eebb150ff01aaf1d Mon Sep 17 00:00:00 2001 From: Danielle Pham Date: Sun, 19 Aug 2018 14:52:10 -0400 Subject: [PATCH 21/71] Add binding for String.prototype.search --- crates/js-sys/src/lib.rs | 7 +++++++ crates/js-sys/tests/wasm/JsString.rs | 15 +++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 6cdc1fdd..6c491346 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3089,6 +3089,13 @@ extern "C" { #[wasm_bindgen(method, js_class = "String", js_name = replace)] pub fn replace_function(this: &JsString, pattern: &RegExp, replacement: &Function) -> JsString; + /// The search() method executes a search for a match between + /// a regular expression and this String object. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search + #[wasm_bindgen(method, js_class = "String")] + pub fn search(this: &JsString, pattern: &RegExp) -> i32; + /// The `slice()` method extracts a section of a string and returns it as a /// new string, without modifying the original string. /// diff --git a/crates/js-sys/tests/wasm/JsString.rs b/crates/js-sys/tests/wasm/JsString.rs index 47a3a8fe..898ee767 100644 --- a/crates/js-sys/tests/wasm/JsString.rs +++ b/crates/js-sys/tests/wasm/JsString.rs @@ -300,6 +300,21 @@ fn replace() { assert_eq!(result, "border-top"); } +#[wasm_bindgen_test] +fn search() { + let js = JsString::from("The quick brown fox jumped over the lazy dog. If the dog reacted, was it really lazy?"); + let re = RegExp::new("[^\\w\\s]", "g"); + + assert_eq!(js.search(&re), 44); + + let js = JsString::from("hey JudE"); + let re1 = RegExp::new("[A-Z]", "g"); + let re2 = RegExp::new("[.]", "g"); + + assert_eq!(js.search(&re1), 4); + assert_eq!(js.search(&re2), -1); +} + #[wasm_bindgen_test] fn slice() { let characters = JsString::from("acxn18"); From 4f294224f079cfae9d1388edbc07f1f62601f815 Mon Sep 17 00:00:00 2001 From: Danielle Pham Date: Sun, 19 Aug 2018 15:09:45 -0400 Subject: [PATCH 22/71] Add bindings for String.prototype.split --- crates/js-sys/src/lib.rs | 11 ++++++++++ crates/js-sys/tests/wasm/JsString.rs | 33 ++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 6c491346..6f36d8f8 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3103,6 +3103,17 @@ extern "C" { #[wasm_bindgen(method, js_class = "String")] pub fn slice(this: &JsString, start: u32, end: u32) -> JsString; + /// The split() method splits a String object into an array of strings by separating the string + /// into substrings, using a specified separator string to determine where to make each split. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split + #[wasm_bindgen(method, js_class = "String")] + pub fn split(this: &JsString, separator: &str) -> Array; + + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split + #[wasm_bindgen(method, js_class = "String", js_name = split)] + pub fn split_limit(this: &JsString, separator: &str, limit: u32) -> Array; + /// The `startsWith()` method determines whether a string begins with the /// characters of a specified string, returning true or false as /// appropriate. diff --git a/crates/js-sys/tests/wasm/JsString.rs b/crates/js-sys/tests/wasm/JsString.rs index 898ee767..5458e3e7 100644 --- a/crates/js-sys/tests/wasm/JsString.rs +++ b/crates/js-sys/tests/wasm/JsString.rs @@ -321,6 +321,39 @@ fn slice() { assert_eq!(characters.slice(1, 3), "cx"); } +#[wasm_bindgen_test] +fn split() { + let js = JsString::from("Oh brave new world"); + let result = js.split(" "); + + let mut v = Vec::with_capacity(result.length() as usize); + result.for_each(&mut |x, _, _| v.push(x)); + + assert_eq!(v[0], "Oh"); + assert_eq!(v[1], "brave"); + assert_eq!(v[2], "new"); + assert_eq!(v[3], "world"); + + let js = JsString::from("Oct,Nov,Dec"); + let result = js.split(","); + + let mut v = Vec::with_capacity(result.length() as usize); + result.for_each(&mut |x, _, _| v.push(x)); + + assert_eq!(v[0], "Oct"); + assert_eq!(v[1], "Nov"); + assert_eq!(v[2], "Dec"); + + let result = js.split_limit(",", 2); + + let mut v = Vec::with_capacity(result.length() as usize); + result.for_each(&mut |x, _, _| v.push(x)); + + assert_eq!(result.length(), 2); + assert_eq!(v[0], "Oct"); + assert_eq!(v[1], "Nov"); +} + #[wasm_bindgen_test] fn starts_with() { let js = JsString::from("To be, or not to be, that is the question."); From d4297ad2d391aa93c685127616c46adfd1987f8a Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 19 Aug 2018 14:31:35 -0700 Subject: [PATCH 23/71] Remove `use_extern_macros` features This has now been stabilized! --- README.md | 2 - crates/futures/src/lib.rs | 3 - crates/futures/tests/tests.rs | 1 - crates/js-sys/src/lib.rs | 1 - crates/js-sys/tests/headless.rs | 1 - crates/js-sys/tests/wasm/main.rs | 1 - .../ui-tests/attribute-fails-to-parse.rs | 2 - .../ui-tests/attribute-fails-to-parse.stderr | 4 +- crates/macro/ui-tests/bad-signatures.rs | 2 - crates/macro/ui-tests/bad-signatures.stderr | 12 +-- crates/macro/ui-tests/invalid-attr.rs | 2 - crates/macro/ui-tests/invalid-attr.stderr | 12 +-- crates/macro/ui-tests/invalid-enums.rs | 2 - crates/macro/ui-tests/invalid-enums.stderr | 16 ++-- crates/macro/ui-tests/invalid-imports.rs | 2 - crates/macro/ui-tests/invalid-imports.stderr | 76 +++++++++---------- crates/macro/ui-tests/invalid-items.rs | 2 - crates/macro/ui-tests/invalid-items.stderr | 54 ++++++------- crates/macro/ui-tests/invalid-methods.rs | 2 - crates/macro/ui-tests/invalid-methods.stderr | 44 +++++------ crates/macro/ui-tests/non-public-function.rs | 2 - .../macro/ui-tests/non-public-function.stderr | 4 +- crates/test/README.md | 2 - crates/test/sample/src/lib.rs | 2 - crates/test/sample/tests/browser.rs | 2 - crates/test/sample/tests/node.rs | 2 - crates/test/src/lib.rs | 1 - crates/web-sys/tests/wasm/main.rs | 1 - crates/webidl-tests/main.rs | 2 - examples/add/src/lib.rs | 2 - examples/asm.js/src/lib.rs | 2 - examples/canvas/src/lib.rs | 2 - examples/char/src/lib.rs | 2 - examples/closures/src/lib.rs | 2 - examples/comments/src/lib.rs | 2 - examples/console_log/src/lib.rs | 2 - examples/dom/src/lib.rs | 2 - .../guide-supported-types-examples/src/lib.rs | 1 - examples/hello_world/src/lib.rs | 2 - examples/import_js/src/lib.rs | 2 - examples/julia_set/src/lib.rs | 2 - examples/math/src/lib.rs | 2 - examples/no_modules/src/lib.rs | 2 - examples/performance/src/lib.rs | 2 - examples/smorgasboard/src/lib.rs | 2 - examples/wasm-in-wasm/src/lib.rs | 2 - examples/webaudio/src/lib.rs | 4 +- guide/src/whirlwind-tour/basic-usage.md | 2 - .../src/whirlwind-tour/what-else-can-we-do.md | 2 - src/lib.rs | 2 +- tests/crates/a/src/lib.rs | 2 - tests/crates/b/src/lib.rs | 2 - tests/headless.rs | 1 - tests/no-std/test.rs | 1 - tests/non_wasm.rs | 2 - tests/std-crate-no-std-dep.rs | 1 - tests/wasm/main.rs | 1 - 57 files changed, 114 insertions(+), 198 deletions(-) diff --git a/README.md b/README.md index 5e827229..85861127 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,6 @@ Import JavaScript things into Rust and export Rust things to JavaScript. ```rust -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/crates/futures/src/lib.rs b/crates/futures/src/lib.rs index 41bdd4e3..d8c672be 100644 --- a/crates/futures/src/lib.rs +++ b/crates/futures/src/lib.rs @@ -33,8 +33,6 @@ //! `Promise`. //! //! ```rust,no_run -//! #![feature(use_extern_macros)] -//! //! extern crate futures; //! extern crate js_sys; //! extern crate wasm_bindgen; @@ -104,7 +102,6 @@ //! ``` #![deny(missing_docs)] -#![feature(use_extern_macros)] extern crate futures; extern crate wasm_bindgen; diff --git a/crates/futures/tests/tests.rs b/crates/futures/tests/tests.rs index a6225737..089003d5 100755 --- a/crates/futures/tests/tests.rs +++ b/crates/futures/tests/tests.rs @@ -1,4 +1,3 @@ -#![feature(use_extern_macros)] #![cfg(target_arch = "wasm32")] extern crate futures; diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 487fc095..7c4dd569 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -17,7 +17,6 @@ //! bindings. #![doc(html_root_url = "https://docs.rs/js-sys/0.2")] -#![feature(use_extern_macros)] extern crate wasm_bindgen; diff --git a/crates/js-sys/tests/headless.rs b/crates/js-sys/tests/headless.rs index 139c1358..1b45ea7b 100755 --- a/crates/js-sys/tests/headless.rs +++ b/crates/js-sys/tests/headless.rs @@ -1,4 +1,3 @@ -#![feature(use_extern_macros)] #![cfg(target_arch = "wasm32")] extern crate wasm_bindgen_test; diff --git a/crates/js-sys/tests/wasm/main.rs b/crates/js-sys/tests/wasm/main.rs index 36271531..7cdcc54a 100755 --- a/crates/js-sys/tests/wasm/main.rs +++ b/crates/js-sys/tests/wasm/main.rs @@ -1,5 +1,4 @@ #![cfg(target_arch = "wasm32")] -#![feature(use_extern_macros)] #![allow(non_snake_case)] extern crate js_sys; diff --git a/crates/macro/ui-tests/attribute-fails-to-parse.rs b/crates/macro/ui-tests/attribute-fails-to-parse.rs index 514876fa..d58395e9 100644 --- a/crates/macro/ui-tests/attribute-fails-to-parse.rs +++ b/crates/macro/ui-tests/attribute-fails-to-parse.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/crates/macro/ui-tests/attribute-fails-to-parse.stderr b/crates/macro/ui-tests/attribute-fails-to-parse.stderr index dbe5f5d5..eb7960eb 100644 --- a/crates/macro/ui-tests/attribute-fails-to-parse.stderr +++ b/crates/macro/ui-tests/attribute-fails-to-parse.stderr @@ -1,7 +1,7 @@ error: error parsing #[wasm_bindgen] attribute options: failed to parse anything - --> $DIR/attribute-fails-to-parse.rs:7:16 + --> $DIR/attribute-fails-to-parse.rs:5:16 | -7 | #[wasm_bindgen(nonsense)] +5 | #[wasm_bindgen(nonsense)] | ^^^^^^^^ error: aborting due to previous error diff --git a/crates/macro/ui-tests/bad-signatures.rs b/crates/macro/ui-tests/bad-signatures.rs index 7e414149..561d909b 100644 --- a/crates/macro/ui-tests/bad-signatures.rs +++ b/crates/macro/ui-tests/bad-signatures.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/crates/macro/ui-tests/bad-signatures.stderr b/crates/macro/ui-tests/bad-signatures.stderr index 0a8466ab..b36e8947 100644 --- a/crates/macro/ui-tests/bad-signatures.stderr +++ b/crates/macro/ui-tests/bad-signatures.stderr @@ -1,19 +1,19 @@ error: cannot return a borrowed ref with #[wasm_bindgen] - --> $DIR/bad-signatures.rs:8:17 + --> $DIR/bad-signatures.rs:6:17 | -8 | pub fn foo() -> &u32 {} +6 | pub fn foo() -> &u32 {} | ^^^^ error: unsupported pattern in #[wasm_bindgen] imported function - --> $DIR/bad-signatures.rs:12:12 + --> $DIR/bad-signatures.rs:10:12 | -12 | fn foo(Foo(x): Foo); +10 | fn foo(Foo(x): Foo); | ^^^^^^ error: cannot return references in #[wasm_bindgen] imports yet - --> $DIR/bad-signatures.rs:14:17 + --> $DIR/bad-signatures.rs:12:17 | -14 | fn foo() -> &u32; +12 | fn foo() -> &u32; | ^^^^ error: aborting due to 3 previous errors diff --git a/crates/macro/ui-tests/invalid-attr.rs b/crates/macro/ui-tests/invalid-attr.rs index 74c95a97..9496c8a3 100644 --- a/crates/macro/ui-tests/invalid-attr.rs +++ b/crates/macro/ui-tests/invalid-attr.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/crates/macro/ui-tests/invalid-attr.stderr b/crates/macro/ui-tests/invalid-attr.stderr index a35479da..ee918ec5 100644 --- a/crates/macro/ui-tests/invalid-attr.stderr +++ b/crates/macro/ui-tests/invalid-attr.stderr @@ -1,19 +1,19 @@ error: error parsing #[wasm_bindgen] attribute options: failed to parse anything - --> $DIR/invalid-attr.rs:7:16 + --> $DIR/invalid-attr.rs:5:16 | -7 | #[wasm_bindgen(x)] +5 | #[wasm_bindgen(x)] | ^ error: error parsing #[wasm_bindgen] attribute options: failed to parse anything - --> $DIR/invalid-attr.rs:12:20 + --> $DIR/invalid-attr.rs:10:20 | -12 | #[wasm_bindgen(y)] +10 | #[wasm_bindgen(y)] | ^ error: malformed #[wasm_bindgen] attribute - --> $DIR/invalid-attr.rs:15:5 + --> $DIR/invalid-attr.rs:13:5 | -15 | #[wasm_bindgen { }] +13 | #[wasm_bindgen { }] | ^^^^^^^^^^^^^^^^^^^^ error: aborting due to 3 previous errors diff --git a/crates/macro/ui-tests/invalid-enums.rs b/crates/macro/ui-tests/invalid-enums.rs index 44c983c0..1be6bbd0 100644 --- a/crates/macro/ui-tests/invalid-enums.rs +++ b/crates/macro/ui-tests/invalid-enums.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/crates/macro/ui-tests/invalid-enums.stderr b/crates/macro/ui-tests/invalid-enums.stderr index 06da7570..96b117df 100644 --- a/crates/macro/ui-tests/invalid-enums.stderr +++ b/crates/macro/ui-tests/invalid-enums.stderr @@ -1,25 +1,25 @@ error: only public enums are allowed with #[wasm_bindgen] - --> $DIR/invalid-enums.rs:8:1 + --> $DIR/invalid-enums.rs:6:1 | -8 | enum A {} +6 | enum A {} | ^^^^^^^^^ error: only C-Style enums allowed with #[wasm_bindgen] - --> $DIR/invalid-enums.rs:12:6 + --> $DIR/invalid-enums.rs:10:6 | -12 | D(u32), +10 | D(u32), | ^^^^^ error: enums with #[wasm_bidngen] may only have number literal values - --> $DIR/invalid-enums.rs:17:9 + --> $DIR/invalid-enums.rs:15:9 | -17 | X = 1 + 3, +15 | X = 1 + 3, | ^^^^^ error: enums with #[wasm_bindgen] can only support numbers that can be represented as u32 - --> $DIR/invalid-enums.rs:22:9 + --> $DIR/invalid-enums.rs:20:9 | -22 | X = 4294967296, +20 | X = 4294967296, | ^^^^^^^^^^ error: aborting due to 4 previous errors diff --git a/crates/macro/ui-tests/invalid-imports.rs b/crates/macro/ui-tests/invalid-imports.rs index 9ed8d84a..969afb9e 100644 --- a/crates/macro/ui-tests/invalid-imports.rs +++ b/crates/macro/ui-tests/invalid-imports.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/crates/macro/ui-tests/invalid-imports.stderr b/crates/macro/ui-tests/invalid-imports.stderr index f2574c45..2dd15706 100644 --- a/crates/macro/ui-tests/invalid-imports.stderr +++ b/crates/macro/ui-tests/invalid-imports.stderr @@ -1,91 +1,91 @@ error: it is currently not sound to use lifetimes in function signatures - --> $DIR/invalid-imports.rs:11:16 - | -11 | fn f() -> &'static u32; - | ^^^^^^^ + --> $DIR/invalid-imports.rs:9:16 + | +9 | fn f() -> &'static u32; + | ^^^^^^^ error: imported methods must have at least one argument - --> $DIR/invalid-imports.rs:14:5 + --> $DIR/invalid-imports.rs:12:5 | -14 | fn f1(); +12 | fn f1(); | ^^^^^^^^ error: first argument of method must be a shared reference - --> $DIR/invalid-imports.rs:16:14 + --> $DIR/invalid-imports.rs:14:14 | -16 | fn f2(x: u32); +14 | fn f2(x: u32); | ^^^ error: first argument of method must be a path - --> $DIR/invalid-imports.rs:18:14 + --> $DIR/invalid-imports.rs:16:14 | -18 | fn f3(x: &&u32); +16 | fn f3(x: &&u32); | ^^^^^ error: multi-segment paths are not supported yet - --> $DIR/invalid-imports.rs:20:15 + --> $DIR/invalid-imports.rs:18:15 | -20 | fn f4(x: &foo::Bar); +18 | fn f4(x: &foo::Bar); | ^^^^^^^^ error: global paths are not supported yet + --> $DIR/invalid-imports.rs:20:15 + | +20 | fn f4(x: &::Bar); + | ^^^^^ + +error: paths with type parameters are not supported yet --> $DIR/invalid-imports.rs:22:15 | -22 | fn f4(x: &::Bar); - | ^^^^^ +22 | fn f4(x: &Bar); + | ^^^^^^ error: paths with type parameters are not supported yet --> $DIR/invalid-imports.rs:24:15 | -24 | fn f4(x: &Bar); - | ^^^^^^ - -error: paths with type parameters are not supported yet - --> $DIR/invalid-imports.rs:26:15 - | -26 | fn f4(x: &Fn(T)); +24 | fn f4(x: &Fn(T)); | ^^^^^ error: constructor returns must be bare types - --> $DIR/invalid-imports.rs:29:5 + --> $DIR/invalid-imports.rs:27:5 | -29 | fn f(); +27 | fn f(); | ^^^^^^^ error: global paths are not supported yet - --> $DIR/invalid-imports.rs:31:15 + --> $DIR/invalid-imports.rs:29:15 | -31 | fn f() -> ::Bar; +29 | fn f() -> ::Bar; | ^^^^^ error: return value of constructor must be a bare path - --> $DIR/invalid-imports.rs:33:5 + --> $DIR/invalid-imports.rs:31:5 | -33 | fn f() -> &Bar; +31 | fn f() -> &Bar; | ^^^^^^^^^^^^^^^ +error: must be Result<...> + --> $DIR/invalid-imports.rs:34:15 + | +34 | fn f() -> u32; + | ^^^ + error: must be Result<...> --> $DIR/invalid-imports.rs:36:15 | -36 | fn f() -> u32; - | ^^^ - -error: must be Result<...> - --> $DIR/invalid-imports.rs:38:15 - | -38 | fn f() -> &u32; +36 | fn f() -> &u32; | ^^^^ error: must have at least one generic parameter - --> $DIR/invalid-imports.rs:40:15 + --> $DIR/invalid-imports.rs:38:15 | -40 | fn f() -> Result<>; +38 | fn f() -> Result<>; | ^^^^^^^^ error: it is currently not sound to use lifetimes in function signatures - --> $DIR/invalid-imports.rs:42:22 + --> $DIR/invalid-imports.rs:40:22 | -42 | fn f() -> Result<'a>; +40 | fn f() -> Result<'a>; | ^^ error: aborting due to 15 previous errors diff --git a/crates/macro/ui-tests/invalid-items.rs b/crates/macro/ui-tests/invalid-items.rs index 851800d3..e1efac92 100644 --- a/crates/macro/ui-tests/invalid-items.rs +++ b/crates/macro/ui-tests/invalid-items.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/crates/macro/ui-tests/invalid-items.stderr b/crates/macro/ui-tests/invalid-items.stderr index 6040cf4d..d0fe8f32 100644 --- a/crates/macro/ui-tests/invalid-items.stderr +++ b/crates/macro/ui-tests/invalid-items.stderr @@ -1,67 +1,67 @@ error: can only #[wasm_bindgen] public functions - --> $DIR/invalid-items.rs:8:1 + --> $DIR/invalid-items.rs:6:1 | -8 | fn foo() {} +6 | fn foo() {} | ^^^^^^^^^^^ error: can only #[wasm_bindgen] safe functions - --> $DIR/invalid-items.rs:11:5 - | -11 | pub unsafe fn foo1() {} - | ^^^^^^ + --> $DIR/invalid-items.rs:9:5 + | +9 | pub unsafe fn foo1() {} + | ^^^^^^ error: can only #[wasm_bindgen] non-const functions - --> $DIR/invalid-items.rs:14:5 + --> $DIR/invalid-items.rs:12:5 | -14 | pub const fn foo2() {} +12 | pub const fn foo2() {} | ^^^^^ error: structs with #[wasm_bindgen] cannot have lifetime or type parameters currently - --> $DIR/invalid-items.rs:17:11 + --> $DIR/invalid-items.rs:15:11 | -17 | struct Foo(T); +15 | struct Foo(T); | ^^^ error: cannot import mutable globals yet - --> $DIR/invalid-items.rs:21:12 + --> $DIR/invalid-items.rs:19:12 | -21 | static mut FOO: u32; +19 | static mut FOO: u32; | ^^^ error: can't #[wasm_bindgen] variadic functions - --> $DIR/invalid-items.rs:23:25 + --> $DIR/invalid-items.rs:21:25 | -23 | pub fn foo3(x: i32, ...); +21 | pub fn foo3(x: i32, ...); | ^^^ error: only foreign mods with the `C` ABI are allowed - --> $DIR/invalid-items.rs:27:8 + --> $DIR/invalid-items.rs:25:8 | -27 | extern "system" { +25 | extern "system" { | ^^^^^^^^ +error: can't #[wasm_bindgen] functions with lifetime or type parameters + --> $DIR/invalid-items.rs:29:12 + | +29 | pub fn foo4() {} + | ^^^ + error: can't #[wasm_bindgen] functions with lifetime or type parameters --> $DIR/invalid-items.rs:31:12 | -31 | pub fn foo4() {} - | ^^^ +31 | pub fn foo5<'a>() {} + | ^^^^ error: can't #[wasm_bindgen] functions with lifetime or type parameters --> $DIR/invalid-items.rs:33:12 | -33 | pub fn foo5<'a>() {} - | ^^^^ - -error: can't #[wasm_bindgen] functions with lifetime or type parameters - --> $DIR/invalid-items.rs:35:12 - | -35 | pub fn foo6<'a, T>() {} +33 | pub fn foo6<'a, T>() {} | ^^^^^^^ error: #[wasm_bindgen] can only be applied to a function, struct, enum, impl, or extern block - --> $DIR/invalid-items.rs:38:1 + --> $DIR/invalid-items.rs:36:1 | -38 | trait X {} +36 | trait X {} | ^^^^^^^^^^ error: aborting due to 11 previous errors diff --git a/crates/macro/ui-tests/invalid-methods.rs b/crates/macro/ui-tests/invalid-methods.rs index 9fcf3f4b..ef7fae01 100644 --- a/crates/macro/ui-tests/invalid-methods.rs +++ b/crates/macro/ui-tests/invalid-methods.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/crates/macro/ui-tests/invalid-methods.stderr b/crates/macro/ui-tests/invalid-methods.stderr index 9ac1b887..7e16053e 100644 --- a/crates/macro/ui-tests/invalid-methods.stderr +++ b/crates/macro/ui-tests/invalid-methods.stderr @@ -1,61 +1,61 @@ error: #[wasm_bindgen] default impls are not supported - --> $DIR/invalid-methods.rs:11:1 - | -11 | default impl A { - | ^^^^^^^ + --> $DIR/invalid-methods.rs:9:1 + | +9 | default impl A { + | ^^^^^^^ error: #[wasm_bindgen] unsafe impls are not supported - --> $DIR/invalid-methods.rs:15:1 + --> $DIR/invalid-methods.rs:13:1 | -15 | unsafe impl A { +13 | unsafe impl A { | ^^^^^^ error: #[wasm_bindgen] trait impls are not supported - --> $DIR/invalid-methods.rs:19:6 + --> $DIR/invalid-methods.rs:17:6 | -19 | impl Clone for A { +17 | impl Clone for A { | ^^^^^ error: #[wasm_bindgen] generic impls aren't supported - --> $DIR/invalid-methods.rs:23:5 + --> $DIR/invalid-methods.rs:21:5 | -23 | impl A { +21 | impl A { | ^^^ error: unsupported self type in #[wasm_bindgen] impl - --> $DIR/invalid-methods.rs:27:6 + --> $DIR/invalid-methods.rs:25:6 | -27 | impl &'static A { +25 | impl &'static A { | ^^^^^^^^^^ error: const definitions aren't supported with #[wasm_bindgen] - --> $DIR/invalid-methods.rs:34:5 + --> $DIR/invalid-methods.rs:32:5 | -34 | const X: u32 = 3; +32 | const X: u32 = 3; | ^^^^^^^^^^^^^^^^^ error: type definitions in impls aren't supported with #[wasm_bindgen] - --> $DIR/invalid-methods.rs:35:5 + --> $DIR/invalid-methods.rs:33:5 | -35 | type Y = u32; +33 | type Y = u32; | ^^^^^^^^^^^^^ error: macros in impls aren't supported - --> $DIR/invalid-methods.rs:36:5 + --> $DIR/invalid-methods.rs:34:5 | -36 | x!(); +34 | x!(); | ^^^^^ error: can only #[wasm_bindgen] non-const functions - --> $DIR/invalid-methods.rs:41:9 + --> $DIR/invalid-methods.rs:39:9 | -41 | pub const fn foo() {} +39 | pub const fn foo() {} | ^^^^^ error: can only bindgen safe functions - --> $DIR/invalid-methods.rs:42:9 + --> $DIR/invalid-methods.rs:40:9 | -42 | pub unsafe fn foo() {} +40 | pub unsafe fn foo() {} | ^^^^^^ error: aborting due to 10 previous errors diff --git a/crates/macro/ui-tests/non-public-function.rs b/crates/macro/ui-tests/non-public-function.rs index 8f0b117d..b318ea78 100644 --- a/crates/macro/ui-tests/non-public-function.rs +++ b/crates/macro/ui-tests/non-public-function.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/crates/macro/ui-tests/non-public-function.stderr b/crates/macro/ui-tests/non-public-function.stderr index 510dc537..517ebe7c 100644 --- a/crates/macro/ui-tests/non-public-function.stderr +++ b/crates/macro/ui-tests/non-public-function.stderr @@ -1,7 +1,7 @@ error: can only #[wasm_bindgen] public functions - --> $DIR/non-public-function.rs:8:1 + --> $DIR/non-public-function.rs:6:1 | -8 | fn foo() {} +6 | fn foo() {} | ^^^^^^^^^^^ error: aborting due to previous error diff --git a/crates/test/README.md b/crates/test/README.md index 4ce08be6..ef5bd8e6 100644 --- a/crates/test/README.md +++ b/crates/test/README.md @@ -38,8 +38,6 @@ ton of documentation just yet, but a taste of how it works is: ```rust // in tests/wasm.rs - #![feature(use_extern_macros)] - extern crate wasm_bindgen_test; use wasm_bindgen_test::*; diff --git a/crates/test/sample/src/lib.rs b/crates/test/sample/src/lib.rs index b45cedf8..02b0a2e3 100644 --- a/crates/test/sample/src/lib.rs +++ b/crates/test/sample/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - #[macro_use] extern crate futures; extern crate js_sys; diff --git a/crates/test/sample/tests/browser.rs b/crates/test/sample/tests/browser.rs index 5d5b36f8..0f2bcd4c 100644 --- a/crates/test/sample/tests/browser.rs +++ b/crates/test/sample/tests/browser.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate futures; extern crate sample; extern crate wasm_bindgen; diff --git a/crates/test/sample/tests/node.rs b/crates/test/sample/tests/node.rs index 84d87170..e9cb596c 100644 --- a/crates/test/sample/tests/node.rs +++ b/crates/test/sample/tests/node.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate futures; extern crate sample; extern crate wasm_bindgen; diff --git a/crates/test/src/lib.rs b/crates/test/src/lib.rs index 99326b17..477e743c 100644 --- a/crates/test/src/lib.rs +++ b/crates/test/src/lib.rs @@ -2,7 +2,6 @@ //! //! More documentation can be found in the README for this crate! -#![feature(use_extern_macros)] #![deny(missing_docs)] extern crate console_error_panic_hook; diff --git a/crates/web-sys/tests/wasm/main.rs b/crates/web-sys/tests/wasm/main.rs index 69e4d6f0..2f21cde6 100644 --- a/crates/web-sys/tests/wasm/main.rs +++ b/crates/web-sys/tests/wasm/main.rs @@ -1,4 +1,3 @@ -#![feature(use_extern_macros)] #![cfg(target_arch = "wasm32")] extern crate futures; diff --git a/crates/webidl-tests/main.rs b/crates/webidl-tests/main.rs index caedcb7b..9e743218 100644 --- a/crates/webidl-tests/main.rs +++ b/crates/webidl-tests/main.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate js_sys; extern crate wasm_bindgen; extern crate wasm_bindgen_test; diff --git a/examples/add/src/lib.rs b/examples/add/src/lib.rs index 77a63744..d8c7633a 100644 --- a/examples/add/src/lib.rs +++ b/examples/add/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/asm.js/src/lib.rs b/examples/asm.js/src/lib.rs index c6ee4f47..c2689b1b 100644 --- a/examples/asm.js/src/lib.rs +++ b/examples/asm.js/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/canvas/src/lib.rs b/examples/canvas/src/lib.rs index 05a67b19..f13e50ad 100755 --- a/examples/canvas/src/lib.rs +++ b/examples/canvas/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate js_sys; extern crate wasm_bindgen; extern crate web_sys; diff --git a/examples/char/src/lib.rs b/examples/char/src/lib.rs index 5682ae4c..ad7c1021 100644 --- a/examples/char/src/lib.rs +++ b/examples/char/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/closures/src/lib.rs b/examples/closures/src/lib.rs index 8b510f98..3aa0c30e 100755 --- a/examples/closures/src/lib.rs +++ b/examples/closures/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; extern crate js_sys; diff --git a/examples/comments/src/lib.rs b/examples/comments/src/lib.rs index cc416955..cc0a7e12 100644 --- a/examples/comments/src/lib.rs +++ b/examples/comments/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/console_log/src/lib.rs b/examples/console_log/src/lib.rs index cd23275e..7ae64334 100644 --- a/examples/console_log/src/lib.rs +++ b/examples/console_log/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; extern crate web_sys; diff --git a/examples/dom/src/lib.rs b/examples/dom/src/lib.rs index 43d98f76..98c4021e 100644 --- a/examples/dom/src/lib.rs +++ b/examples/dom/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/guide-supported-types-examples/src/lib.rs b/examples/guide-supported-types-examples/src/lib.rs index 9dbfdf48..13984c23 100755 --- a/examples/guide-supported-types-examples/src/lib.rs +++ b/examples/guide-supported-types-examples/src/lib.rs @@ -1,4 +1,3 @@ -#![feature(use_extern_macros)] #![allow(unused_variables, dead_code)] extern crate wasm_bindgen; diff --git a/examples/hello_world/src/lib.rs b/examples/hello_world/src/lib.rs index 41486fa4..3a3634b9 100644 --- a/examples/hello_world/src/lib.rs +++ b/examples/hello_world/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/import_js/src/lib.rs b/examples/import_js/src/lib.rs index 5093db75..aab964d6 100644 --- a/examples/import_js/src/lib.rs +++ b/examples/import_js/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/julia_set/src/lib.rs b/examples/julia_set/src/lib.rs index 2f7a00a9..a92eea48 100644 --- a/examples/julia_set/src/lib.rs +++ b/examples/julia_set/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/math/src/lib.rs b/examples/math/src/lib.rs index 35194922..9f3449c3 100644 --- a/examples/math/src/lib.rs +++ b/examples/math/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/no_modules/src/lib.rs b/examples/no_modules/src/lib.rs index 41486fa4..3a3634b9 100644 --- a/examples/no_modules/src/lib.rs +++ b/examples/no_modules/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/performance/src/lib.rs b/examples/performance/src/lib.rs index 1598ed95..9a50eb6f 100644 --- a/examples/performance/src/lib.rs +++ b/examples/performance/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate humantime; extern crate wasm_bindgen; diff --git a/examples/smorgasboard/src/lib.rs b/examples/smorgasboard/src/lib.rs index 308f3390..a1f1755d 100644 --- a/examples/smorgasboard/src/lib.rs +++ b/examples/smorgasboard/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/wasm-in-wasm/src/lib.rs b/examples/wasm-in-wasm/src/lib.rs index b2539293..2757438c 100644 --- a/examples/wasm-in-wasm/src/lib.rs +++ b/examples/wasm-in-wasm/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/examples/webaudio/src/lib.rs b/examples/webaudio/src/lib.rs index bca2256d..b048c27e 100644 --- a/examples/webaudio/src/lib.rs +++ b/examples/webaudio/src/lib.rs @@ -1,4 +1,4 @@ -#![feature(use_extern_macros, nll)] +#![feature(nll)] extern crate wasm_bindgen; extern crate web_sys; @@ -144,4 +144,4 @@ impl FmOsc { } -} \ No newline at end of file +} diff --git a/guide/src/whirlwind-tour/basic-usage.md b/guide/src/whirlwind-tour/basic-usage.md index 8d8bb820..5a1f9fd8 100644 --- a/guide/src/whirlwind-tour/basic-usage.md +++ b/guide/src/whirlwind-tour/basic-usage.md @@ -39,8 +39,6 @@ wasm-bindgen = "0.2" Next up our actual code! We'll write this in `src/lib.rs`: ```rust,ignore -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/guide/src/whirlwind-tour/what-else-can-we-do.md b/guide/src/whirlwind-tour/what-else-can-we-do.md index 61b65318..80bc19b0 100644 --- a/guide/src/whirlwind-tour/what-else-can-we-do.md +++ b/guide/src/whirlwind-tour/what-else-can-we-do.md @@ -5,8 +5,6 @@ can also [explore this code online](https://webassembly.studio/?f=t61j18noqz): ```rust,ignore // src/lib.rs -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/src/lib.rs b/src/lib.rs index 6d0d33f1..90d6b5a2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,7 +5,7 @@ //! this crate and this crate also provides JS bindings through the `JsValue` //! interface. -#![feature(use_extern_macros, unsize)] +#![feature(unsize)] #![no_std] #![doc(html_root_url = "https://docs.rs/wasm-bindgen/0.2")] diff --git a/tests/crates/a/src/lib.rs b/tests/crates/a/src/lib.rs index 04dde653..d39f7eee 100644 --- a/tests/crates/a/src/lib.rs +++ b/tests/crates/a/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/tests/crates/b/src/lib.rs b/tests/crates/b/src/lib.rs index 87f781da..c7876ed4 100644 --- a/tests/crates/b/src/lib.rs +++ b/tests/crates/b/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/tests/headless.rs b/tests/headless.rs index 70718911..6cb1449a 100644 --- a/tests/headless.rs +++ b/tests/headless.rs @@ -1,5 +1,4 @@ #![cfg(target_arch = "wasm32")] -#![feature(use_extern_macros)] extern crate wasm_bindgen_test; extern crate wasm_bindgen; diff --git a/tests/no-std/test.rs b/tests/no-std/test.rs index 4dc5c91e..a8e04ac8 100644 --- a/tests/no-std/test.rs +++ b/tests/no-std/test.rs @@ -4,7 +4,6 @@ //! This doesn't actually run any tests, it's mostly a compile-time verification //! that things work. -#![feature(use_extern_macros)] #![no_std] #![allow(dead_code)] diff --git a/tests/non_wasm.rs b/tests/non_wasm.rs index 7a8128f7..947dcf19 100644 --- a/tests/non_wasm.rs +++ b/tests/non_wasm.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/tests/std-crate-no-std-dep.rs b/tests/std-crate-no-std-dep.rs index 77a9a11e..e2b25037 100644 --- a/tests/std-crate-no-std-dep.rs +++ b/tests/std-crate-no-std-dep.rs @@ -2,7 +2,6 @@ //! `wasm-bindgen` is compiled itself with the `std` feature and everything //! works out just fine. -#![feature(use_extern_macros)] #![no_std] extern crate wasm_bindgen; diff --git a/tests/wasm/main.rs b/tests/wasm/main.rs index 6b783f93..95ceea15 100644 --- a/tests/wasm/main.rs +++ b/tests/wasm/main.rs @@ -1,5 +1,4 @@ #![cfg(target_arch = "wasm32")] -#![feature(use_extern_macros)] extern crate wasm_bindgen_test; extern crate wasm_bindgen; From 305ecb7910d7030d7e25594c8c8b2b0ef3eaf2f9 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 19 Aug 2018 14:42:25 -0700 Subject: [PATCH 24/71] Remove `nll` feature from `webaudio` example --- examples/webaudio/src/lib.rs | 56 ++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/examples/webaudio/src/lib.rs b/examples/webaudio/src/lib.rs index b048c27e..704f71e9 100644 --- a/examples/webaudio/src/lib.rs +++ b/examples/webaudio/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(nll)] - extern crate wasm_bindgen; extern crate web_sys; @@ -45,13 +43,20 @@ impl FmOsc { // TODO, how to throw from a constructor? let ctx = web_sys::AudioContext::new().unwrap(); - let base: &BaseAudioContext = ctx.as_ref(); + let primary; + let fm_osc; + let gain; + let fm_gain; - // create our web audio objects - let primary = base.create_oscillator().unwrap(); - let fm_osc = base.create_oscillator().unwrap(); - let gain = base.create_gain().unwrap(); - let fm_gain = base.create_gain().unwrap(); + { + let base: &BaseAudioContext = ctx.as_ref(); + + // create our web audio objects + primary = base.create_oscillator().unwrap(); + fm_osc = base.create_oscillator().unwrap(); + gain = base.create_gain().unwrap(); + fm_gain = base.create_gain().unwrap(); + } // some initial settings: primary.set_type(OscillatorType::Sine); @@ -63,27 +68,30 @@ impl FmOsc { // Create base class references: - let primary_node: &AudioNode = primary.as_ref(); - let gain_node: &AudioNode = gain.as_ref(); - let fm_osc_node: &AudioNode = fm_osc.as_ref(); - let fm_gain_node: &AudioNode = fm_gain.as_ref(); - let destination = base.destination(); - let destination_node: &AudioNode = destination.as_ref(); + { + let primary_node: &AudioNode = primary.as_ref(); + let gain_node: &AudioNode = gain.as_ref(); + let fm_osc_node: &AudioNode = fm_osc.as_ref(); + let fm_gain_node: &AudioNode = fm_gain.as_ref(); + let base: &BaseAudioContext = ctx.as_ref(); + let destination = base.destination(); + let destination_node: &AudioNode = destination.as_ref(); - // connect them up: + // connect them up: - // The primary oscillator is routed through the gain node, so that it can control the overall output volume - primary_node.connect_with_destination_and_output_and_input_using_destination(gain.as_ref()); - // Then connect the gain node to the AudioContext destination (aka your speakers) - gain_node.connect_with_destination_and_output_and_input_using_destination(destination_node); + // The primary oscillator is routed through the gain node, so that it can control the overall output volume + primary_node.connect_with_destination_and_output_and_input_using_destination(gain.as_ref()); + // Then connect the gain node to the AudioContext destination (aka your speakers) + gain_node.connect_with_destination_and_output_and_input_using_destination(destination_node); - // the FM oscillator is connected to its own gain node, so it can control the amount of modulation - fm_osc_node.connect_with_destination_and_output_and_input_using_destination(fm_gain.as_ref()); + // the FM oscillator is connected to its own gain node, so it can control the amount of modulation + fm_osc_node.connect_with_destination_and_output_and_input_using_destination(fm_gain.as_ref()); - // Connect the FM oscillator to the frequency parameter of the main oscillator, so that the - // FM node can modulate its frequency - fm_gain_node.connect_with_destination_and_output_using_destination(&primary.frequency()); + // Connect the FM oscillator to the frequency parameter of the main oscillator, so that the + // FM node can modulate its frequency + fm_gain_node.connect_with_destination_and_output_using_destination(&primary.frequency()); + } // start the oscillators! From 4c1bf937f297af22e0cb64b4fb0cf3278563ea25 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 19 Aug 2018 14:45:59 -0700 Subject: [PATCH 25/71] Move the `unsize` feature behind a `nightly` Cargo feature This should fully stabilize the `wasm-bindgen` crate, preparing us for stable Rust! --- .travis.yml | 1 + Cargo.toml | 1 + examples/closures/Cargo.toml | 2 +- src/closure.rs | 2 ++ src/lib.rs | 2 +- tests/wasm/closures.rs | 2 ++ 6 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index bfd64e01..8144c973 100644 --- a/.travis.yml +++ b/.travis.yml @@ -56,6 +56,7 @@ matrix: - cargo test # Run the main body of the test suite - cargo test --target wasm32-unknown-unknown + - cargo test --target wasm32-unknown-unknown --features nightly # Rerun the test suite but disable `--debug` in generated JS - WASM_BINDGEN_NO_DEBUG=1 cargo test --target wasm32-unknown-unknown # Make sure our serde tests work diff --git a/Cargo.toml b/Cargo.toml index 330a4ce3..724964e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,6 +21,7 @@ default = ["spans", "std"] spans = ["wasm-bindgen-macro/spans"] std = [] serde-serialize = ["serde", "serde_json", "std"] +nightly = [] # This is only for debugging wasm-bindgen! No stability guarantees, so enable # this at your own peril! diff --git a/examples/closures/Cargo.toml b/examples/closures/Cargo.toml index ce6e6da6..e33f3ac8 100644 --- a/examples/closures/Cargo.toml +++ b/examples/closures/Cargo.toml @@ -7,5 +7,5 @@ authors = ["Alex Crichton "] crate-type = ["cdylib"] [dependencies] -wasm-bindgen = { path = "../.." } +wasm-bindgen = { path = "../..", features = ['nightly'] } js-sys = { path = "../../crates/js-sys" } diff --git a/src/closure.rs b/src/closure.rs index b2afd680..633d35b1 100644 --- a/src/closure.rs +++ b/src/closure.rs @@ -7,6 +7,7 @@ #![allow(const_err)] // FIXME(rust-lang/rust#52603) use std::cell::UnsafeCell; +#[cfg(feature = "nightly")] use std::marker::Unsize; use std::mem::{self, ManuallyDrop}; use std::prelude::v1::*; @@ -90,6 +91,7 @@ impl Closure /// /// This is unfortunately pretty restrictive for now but hopefully some of /// these restrictions can be lifted in the future! + #[cfg(feature = "nightly")] pub fn new(t: F) -> Closure where F: Unsize + 'static { diff --git a/src/lib.rs b/src/lib.rs index 90d6b5a2..7c9ce9f9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -5,9 +5,9 @@ //! this crate and this crate also provides JS bindings through the `JsValue` //! interface. -#![feature(unsize)] #![no_std] #![doc(html_root_url = "https://docs.rs/wasm-bindgen/0.2")] +#![cfg_attr(feature = "nightly", feature(unsize))] #[cfg(feature = "serde-serialize")] extern crate serde; diff --git a/tests/wasm/closures.rs b/tests/wasm/closures.rs index 84794725..0b896a7e 100644 --- a/tests/wasm/closures.rs +++ b/tests/wasm/closures.rs @@ -1,3 +1,5 @@ +#![cfg(feature = "nightly")] + use wasm_bindgen_test::*; use wasm_bindgen::prelude::*; use std::cell::Cell; From 9d7c0af08f485e793cbf201e44a37a632202c0e9 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Sat, 18 Aug 2018 17:20:42 -0400 Subject: [PATCH 26/71] Initial example for the Fetch API --- Cargo.toml | 1 + examples/fetch/.gitignore | 4 ++ examples/fetch/Cargo.toml | 16 ++++++ examples/fetch/build.bat | 2 + examples/fetch/build.sh | 10 ++++ examples/fetch/index.html | 10 ++++ examples/fetch/index.js | 11 +++++ examples/fetch/package.json | 9 ++++ examples/fetch/src/lib.rs | 85 ++++++++++++++++++++++++++++++++ examples/fetch/webpack.config.js | 10 ++++ 10 files changed, 158 insertions(+) create mode 100644 examples/fetch/.gitignore create mode 100644 examples/fetch/Cargo.toml create mode 100644 examples/fetch/build.bat create mode 100755 examples/fetch/build.sh create mode 100644 examples/fetch/index.html create mode 100644 examples/fetch/index.js create mode 100644 examples/fetch/package.json create mode 100644 examples/fetch/src/lib.rs create mode 100644 examples/fetch/webpack.config.js diff --git a/Cargo.toml b/Cargo.toml index 330a4ce3..3ff677f8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,6 +56,7 @@ members = [ "examples/comments", "examples/console_log", "examples/dom", + "examples/fetch", "examples/guide-supported-types-examples", "examples/hello_world", "examples/import_js", diff --git a/examples/fetch/.gitignore b/examples/fetch/.gitignore new file mode 100644 index 00000000..cf66a572 --- /dev/null +++ b/examples/fetch/.gitignore @@ -0,0 +1,4 @@ +fetch.d.ts +fetch.js +fetch_bg.wasm +package-lock.json diff --git a/examples/fetch/Cargo.toml b/examples/fetch/Cargo.toml new file mode 100644 index 00000000..ef6df418 --- /dev/null +++ b/examples/fetch/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "fetch" +version = "0.1.0" +authors = ["Andrew Chin "] + +[lib] +crate-type = ["cdylib"] + +[dependencies] +futures = "0.1.20" +wasm-bindgen = { path = "../..", features = ["serde-serialize"] } +js-sys = { path = "../../crates/js-sys" } +web-sys = { path = "../../crates/web-sys" } +wasm-bindgen-futures = { path = "../../crates/futures" } +serde = "^1.0.59" +serde_derive = "^1.0.59" \ No newline at end of file diff --git a/examples/fetch/build.bat b/examples/fetch/build.bat new file mode 100644 index 00000000..590cd403 --- /dev/null +++ b/examples/fetch/build.bat @@ -0,0 +1,2 @@ +cargo +nightly build --target wasm32-unknown-unknown +cargo +nightly run --manifest-path ../../crates/cli/Cargo.toml --bin wasm-bindgen -- ../../target/wasm32-unknown-unknown/debug/fetch.wasm --out-dir . diff --git a/examples/fetch/build.sh b/examples/fetch/build.sh new file mode 100755 index 00000000..585f428c --- /dev/null +++ b/examples/fetch/build.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +# For more coments about what's going on here, see the `hello_world` example + +set -ex + +cargo +nightly build --target wasm32-unknown-unknown +cargo +nightly run --manifest-path ../../crates/cli/Cargo.toml \ + --bin wasm-bindgen -- \ + ../../target/wasm32-unknown-unknown/debug/fetch.wasm --out-dir . diff --git a/examples/fetch/index.html b/examples/fetch/index.html new file mode 100644 index 00000000..3556e137 --- /dev/null +++ b/examples/fetch/index.html @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/examples/fetch/index.js b/examples/fetch/index.js new file mode 100644 index 00000000..5cea1ca2 --- /dev/null +++ b/examples/fetch/index.js @@ -0,0 +1,11 @@ +const rust = import('./fetch'); + + +rust.then(m => { + m.run().then((data) => { + console.log(data); + + console.log("The latest commit to the wasm-bindgen %s branch is:", data.name); + console.log("%s, authored by %s <%s>", data.commit.sha, data.commit.commit.author.name, data.commit.commit.author.email); + }) +}); diff --git a/examples/fetch/package.json b/examples/fetch/package.json new file mode 100644 index 00000000..07da0131 --- /dev/null +++ b/examples/fetch/package.json @@ -0,0 +1,9 @@ +{ + "scripts": { + "serve": "webpack-serve ./webpack.config.js" + }, + "devDependencies": { + "webpack": "^4.16.5", + "webpack-serve": "^2.0.2" + } +} diff --git a/examples/fetch/src/lib.rs b/examples/fetch/src/lib.rs new file mode 100644 index 00000000..8bf494ac --- /dev/null +++ b/examples/fetch/src/lib.rs @@ -0,0 +1,85 @@ +#![feature(use_extern_macros)] + +extern crate wasm_bindgen; +extern crate js_sys; +extern crate web_sys; +extern crate wasm_bindgen_futures; +extern crate futures; +#[macro_use] +extern crate serde_derive; + +use wasm_bindgen::prelude::*; +use wasm_bindgen::JsCast; +use js_sys::Promise; +use web_sys::{Request, RequestInit, RequestMode, Response, Window}; +use wasm_bindgen_futures::JsFuture; +use futures::{future, Future}; +use wasm_bindgen_futures::future_to_promise; + +// A struct to hold some data from the github Branch API. +// Note how we don't have to define every member -- serde will ignore extra data when deserializing +#[derive(Debug, Serialize, Deserialize)] +pub struct Branch { + pub name: String, + pub commit: Commit, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Commit { + pub sha: String, + pub commit: CommitDetails, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct CommitDetails { + pub author: Signature, + pub committer: Signature, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct Signature { + pub name: String, + pub email: String, +} + +#[wasm_bindgen] +extern "C" { + static window: Window; +} + +#[wasm_bindgen] +pub fn run() -> Promise { + let mut request_options = RequestInit::new(); + request_options.method("GET"); + request_options.mode(RequestMode::Cors); + + let req = Request::new_using_usv_str_and_request_init("https://api.github.com/repos/rustwasm/wasm-bindgen/branches/master", &request_options).unwrap(); + + // the RequestInit struct will eventually support setting headers, but that's missing right now + req.headers().set("Accept", "application/vnd.github.v3+json").unwrap(); + + let req_promise = window.fetch_using_request(&req); + + let to_return = JsFuture::from(req_promise).and_then(|resp_value| { + // resp_value is a Response object + assert!(resp_value.is_instance_of::()); + let resp: Response = resp_value.dyn_into().unwrap(); + + resp.json() + + + }).and_then(|json_value: Promise| { + // convert this other promise into a rust Future + JsFuture::from(json_value) + }).and_then(|json| { + // Use serde to parse this into a struct + let branch_info: Branch = json.into_serde().unwrap(); + + // Send the Branch struct back to javascript as an object + future::ok(JsValue::from_serde(&branch_info).unwrap()) + }); + + // Convert this rust future back into a javascript promise. + // Return it to javascript so that it can be driven to completion. + future_to_promise(to_return) +} diff --git a/examples/fetch/webpack.config.js b/examples/fetch/webpack.config.js new file mode 100644 index 00000000..dce27149 --- /dev/null +++ b/examples/fetch/webpack.config.js @@ -0,0 +1,10 @@ +const path = require('path'); + +module.exports = { + entry: './index.js', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'index.js', + }, + mode: 'development' +}; From 2c72eabea1d4046e9817457d4fddaae016fa717f Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Sun, 19 Aug 2018 10:59:14 -0400 Subject: [PATCH 27/71] Make the list of examples alphabetical, and add webaudio and fetch examples --- examples/README.md | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/examples/README.md b/examples/README.md index b58d29bc..05084ced 100644 --- a/examples/README.md +++ b/examples/README.md @@ -10,31 +10,33 @@ when using `build.sh`! The examples here are: -* `hello_world` - the "hello world" of `#[wasm_bindgen]`, aka throwing up a - dialog greeting you -* `console_log` - a showcase of `#[wasm_bindgen]` importing classes and how to - bind `console.log` -* `math` - like `console_log` except showing how to import Math-related - functions instead -* `dom` - an example of accessing the global `document` object and appending - HTML to it -* `smorgasboard` - a bunch of features all thrown into one, showing off the - various capabilities of the `#[wasm_bindgen]` macro and what you can do with - it from JS -* `performance` - how to import APIs like `performance.now()` and time various - operations in Rust -* `wasm-in-wasm` - how to interact with namespaced APIs like - `WebAssembly.Module` and shows off creation of a WebAssembly module from Rust -* `closures` - an example of how to invoke functions like `setInterval` or use - the `onclick` property in conjunction with closures. -* `no_modules` - an example of how to use the `--no-modules` flag to - the `wasm-bindgen` CLI tool * `add` - an example of generating a tiny wasm binary, one that only adds two numbers. * `asm.js` - an example of using the `wasm2asm` tool from [binaryen] to convert the generated WebAssembly to normal JS * `char` - an example of passing the rust `char` type to and from the js `string` type -* `import_js` - an example of importing local JS functionality into a crate +* `closures` - an example of how to invoke functions like `setInterval` or use + the `onclick` property in conjunction with closures. * `comments` - an example of how Rust comments are copied into js bindings +* `console_log` - a showcase of `#[wasm_bindgen]` importing classes and how to + bind `console.log` +* `dom` - an example of accessing the global `document` object and appending + HTML to it +* `fetch` -- how to use the Fetch API to make async http requests +* `hello_world` - the "hello world" of `#[wasm_bindgen]`, aka throwing up a + dialog greeting you +* `import_js` - an example of importing local JS functionality into a crate +* `math` - like `console_log` except showing how to import Math-related + functions instead +* `no_modules` - an example of how to use the `--no-modules` flag to + the `wasm-bindgen` CLI tool +* `performance` - how to import APIs like `performance.now()` and time various + operations in Rust +* `smorgasboard` - a bunch of features all thrown into one, showing off the + various capabilities of the `#[wasm_bindgen]` macro and what you can do with + it from JS +* `wasm-in-wasm` - how to interact with namespaced APIs like + `WebAssembly.Module` and shows off creation of a WebAssembly module from Rust +* `webaudio` - how to use the Web Audio APIs to generate sounds [binaryen]: https://github.com/WebAssembly/binaryen From 19ee28d769b6e9bffc893e8114549dbf14c3c7a8 Mon Sep 17 00:00:00 2001 From: Frazer McLean Date: Mon, 20 Aug 2018 01:50:27 +0200 Subject: [PATCH 28/71] =?UTF-8?q?Don=E2=80=99t=20need=20catch=20for=20Modu?= =?UTF-8?q?le=20static=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/js-sys/src/lib.rs | 12 ++++++------ crates/js-sys/tests/wasm/WebAssembly.rs | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index d9110259..106f181f 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2961,22 +2961,22 @@ pub mod WebAssembly { /// string name. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/customSections - #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly, js_name = customSections, catch)] - pub fn custom_sections(module: &Module, sectionName: &str) -> Result; + #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly, js_name = customSections)] + pub fn custom_sections(module: &Module, sectionName: &str) -> Array; /// The `WebAssembly.exports()` function returns an array containing /// descriptions of all the declared exports of the given `Module`. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/exports - #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly, catch)] - pub fn exports(module: &Module) -> Result; + #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly)] + pub fn exports(module: &Module) -> Array; /// The `WebAssembly.imports()` function returns an array containing /// descriptions of all the declared imports of the given `Module`. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/imports - #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly, catch)] - pub fn imports(module: &Module) -> Result; + #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly)] + pub fn imports(module: &Module) -> Array; } // WebAssembly.Table diff --git a/crates/js-sys/tests/wasm/WebAssembly.rs b/crates/js-sys/tests/wasm/WebAssembly.rs index 6a2a9cc3..6070720b 100644 --- a/crates/js-sys/tests/wasm/WebAssembly.rs +++ b/crates/js-sys/tests/wasm/WebAssembly.rs @@ -76,21 +76,21 @@ fn module_inheritance() { #[wasm_bindgen_test] fn module_custom_sections() { let module = WebAssembly::Module::new(&get_valid_wasm()); - let cust_sec = WebAssembly::Module::custom_sections(&module, "abcd").unwrap(); + let cust_sec = WebAssembly::Module::custom_sections(&module, "abcd"); assert_eq!(cust_sec.length(), 0); } #[wasm_bindgen_test] fn module_exports() { let module = WebAssembly::Module::new(&get_valid_wasm()); - let exports = WebAssembly::Module::exports(&module).unwrap(); + let exports = WebAssembly::Module::exports(&module); assert_eq!(exports.length(), 1); } #[wasm_bindgen_test] fn module_imports() { let module = WebAssembly::Module::new(&get_valid_wasm()); - let imports = WebAssembly::Module::imports(&module).unwrap(); + let imports = WebAssembly::Module::imports(&module); assert_eq!(imports.length(), 1); } From a9a1e69f30314c605de7fd511498c31c44e77424 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Mon, 20 Aug 2018 10:42:12 +0200 Subject: [PATCH 29/71] feat(js-sys) Implement `String.split` with regexp. --- crates/js-sys/src/lib.rs | 8 ++++++++ crates/js-sys/tests/wasm/JsString.rs | 21 +++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 48e7cd30..34484add 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3113,6 +3113,14 @@ extern "C" { #[wasm_bindgen(method, js_class = "String", js_name = split)] pub fn split_limit(this: &JsString, separator: &str, limit: u32) -> Array; + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split + #[wasm_bindgen(method, js_class = "String", js_name = split)] + pub fn split_by_pattern(this: &JsString, pattern: &RegExp) -> Array; + + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split + #[wasm_bindgen(method, js_class = "String", js_name = split)] + pub fn split_by_pattern_limit(this: &JsString, pattern: &RegExp, limit: u32) -> Array; + /// The `startsWith()` method determines whether a string begins with the /// characters of a specified string, returning true or false as /// appropriate. diff --git a/crates/js-sys/tests/wasm/JsString.rs b/crates/js-sys/tests/wasm/JsString.rs index 5458e3e7..33040966 100644 --- a/crates/js-sys/tests/wasm/JsString.rs +++ b/crates/js-sys/tests/wasm/JsString.rs @@ -352,6 +352,27 @@ fn split() { assert_eq!(result.length(), 2); assert_eq!(v[0], "Oct"); assert_eq!(v[1], "Nov"); + + let js = JsString::from("Oh brave new world"); + let re = RegExp::new("\\s", "g"); + let result = js.split_by_pattern(&re); + + let mut v = Vec::with_capacity(result.length() as usize); + result.for_each(&mut |x, _, _| v.push(x)); + + assert_eq!(v[0], "Oh"); + assert_eq!(v[1], "brave"); + assert_eq!(v[2], "new"); + assert_eq!(v[3], "world"); + + let result = js.split_by_pattern_limit(&re, 2); + + let mut v = Vec::with_capacity(result.length() as usize); + result.for_each(&mut |x, _, _| v.push(x)); + + assert_eq!(result.length(), 2); + assert_eq!(v[0], "Oh"); + assert_eq!(v[1], "brave"); } #[wasm_bindgen_test] From 1e27b588e2ef52abec9a3e0763d2b84326986fa7 Mon Sep 17 00:00:00 2001 From: Ivan Enderlin Date: Mon, 20 Aug 2018 11:01:56 +0200 Subject: [PATCH 30/71] =?UTF-8?q?feat(js-sys)=20Implement=20`String.replac?= =?UTF-8?q?e(&str,=20=E2=80=A6)`.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/js-sys/src/lib.rs | 11 +++++++++-- crates/js-sys/tests/wasm/JsString.rs | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 48e7cd30..37bd4a55 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3082,11 +3082,18 @@ extern "C" { /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace #[wasm_bindgen(method, js_class = "String")] - pub fn replace(this: &JsString, pattern: &RegExp, replacement: &str) -> JsString; + pub fn replace(this: &JsString, pattern: &str, replacement: &str) -> JsString; /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace #[wasm_bindgen(method, js_class = "String", js_name = replace)] - pub fn replace_function(this: &JsString, pattern: &RegExp, replacement: &Function) -> JsString; + pub fn replace_with_function(this: &JsString, pattern: &str, replacement: &Function) -> JsString; + + #[wasm_bindgen(method, js_class = "String", js_name = replace)] + pub fn replace_by_pattern(this: &JsString, pattern: &RegExp, replacement: &str) -> JsString; + + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace + #[wasm_bindgen(method, js_class = "String", js_name = replace)] + pub fn replace_by_pattern_with_function(this: &JsString, pattern: &RegExp, replacement: &Function) -> JsString; /// The search() method executes a search for a match between /// a regular expression and this String object. diff --git a/crates/js-sys/tests/wasm/JsString.rs b/crates/js-sys/tests/wasm/JsString.rs index 5458e3e7..30ab4771 100644 --- a/crates/js-sys/tests/wasm/JsString.rs +++ b/crates/js-sys/tests/wasm/JsString.rs @@ -287,15 +287,25 @@ fn repeat() { #[wasm_bindgen_test] fn replace() { + let js = JsString::from("The quick brown fox jumped over the lazy dog. If the dog reacted, was it really lazy?"); + let result = js.replace("dog", "ferret"); + + assert_eq!(result, "The quick brown fox jumped over the lazy ferret. If the dog reacted, was it really lazy?"); + + let js = JsString::from("borderTop"); + let result = js.replace_with_function("T", &get_replacer_function()); + + assert_eq!(result, "border-top"); + let js = JsString::from("The quick brown fox jumped over the lazy dog. If the dog reacted, was it really lazy?"); let re = RegExp::new("dog", "g"); - let result = js.replace(&re, "ferret"); + let result = js.replace_by_pattern(&re, "ferret"); assert_eq!(result, "The quick brown fox jumped over the lazy ferret. If the ferret reacted, was it really lazy?"); let js = JsString::from("borderTop"); let re = RegExp::new("[A-Z]", "g"); - let result = js.replace_function(&re, &get_replacer_function()); + let result = js.replace_by_pattern_with_function(&re, &get_replacer_function()); assert_eq!(result, "border-top"); } From e4093eb178a07d6460bf4114ca098ca6601ac7af Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Mon, 20 Aug 2018 13:19:00 -0400 Subject: [PATCH 31/71] No more use_extern_macros feature! --- examples/fetch/src/lib.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/fetch/src/lib.rs b/examples/fetch/src/lib.rs index 8bf494ac..1964917d 100644 --- a/examples/fetch/src/lib.rs +++ b/examples/fetch/src/lib.rs @@ -1,5 +1,3 @@ -#![feature(use_extern_macros)] - extern crate wasm_bindgen; extern crate js_sys; extern crate web_sys; From 92b7de3d3d8ef39c8805bbf4ac266f4d193a58c5 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 16 Aug 2018 23:13:34 -0700 Subject: [PATCH 32/71] Skip args in overloaded method names if all same This commit updates how we name overloaded methods. Previously all argument names were concatenated, but after this commit it only concatenates argument names where at least one possibility has a different type. Otherwise if all possibilities have the same type name it in theory isn't adding too much more information! Additionally this commit also switches to using `_with_` consistently everywhere instead of `_with_` for constructors and `_using_` for methods. Closes #712 --- crates/web-sys/tests/wasm/console.rs | 4 ++-- crates/web-sys/tests/wasm/dom_point.rs | 4 ++-- crates/web-sys/tests/wasm/option_element.rs | 2 +- crates/web-sys/tests/wasm/table_element.rs | 2 +- crates/webidl-tests/simple.rs | 18 +++++++++--------- crates/webidl/src/util.rs | 8 ++++++-- examples/canvas/src/lib.rs | 18 +++++++++--------- examples/webaudio/src/lib.rs | 12 ++++++------ 8 files changed, 36 insertions(+), 32 deletions(-) diff --git a/crates/web-sys/tests/wasm/console.rs b/crates/web-sys/tests/wasm/console.rs index c2289293..b8363856 100644 --- a/crates/web-sys/tests/wasm/console.rs +++ b/crates/web-sys/tests/wasm/console.rs @@ -3,6 +3,6 @@ use web_sys::console; #[wasm_bindgen_test] fn test_console() { - console::time_using_label("test label"); - console::time_end_using_label("test label"); + console::time_with_label("test label"); + console::time_end_with_label("test label"); } diff --git a/crates/web-sys/tests/wasm/dom_point.rs b/crates/web-sys/tests/wasm/dom_point.rs index f1e87f3d..4ed22c37 100644 --- a/crates/web-sys/tests/wasm/dom_point.rs +++ b/crates/web-sys/tests/wasm/dom_point.rs @@ -4,7 +4,7 @@ use web_sys::{DomPoint, DomPointReadOnly}; #[wasm_bindgen_test] fn dom_point() { - let x = DomPoint::new_using_x_and_y_and_z_and_w(1.0, 2.0, 3.0, 4.0).unwrap(); + let x = DomPoint::new_with_x_and_y_and_z_and_w(1.0, 2.0, 3.0, 4.0).unwrap(); assert_eq!(x.x(), 1.0); x.set_x(1.5); assert_eq!(x.x(), 1.5); @@ -24,7 +24,7 @@ fn dom_point() { #[wasm_bindgen_test] fn dom_point_readonly() { - let x = DomPoint::new_using_x_and_y_and_z_and_w(1.0, 2.0, 3.0, 4.0).unwrap(); + let x = DomPoint::new_with_x_and_y_and_z_and_w(1.0, 2.0, 3.0, 4.0).unwrap(); let x = DomPointReadOnly::from(JsValue::from(x)); assert_eq!(x.x(), 1.0); assert_eq!(x.y(), 2.0); diff --git a/crates/web-sys/tests/wasm/option_element.rs b/crates/web-sys/tests/wasm/option_element.rs index e2e074e7..1cb2d262 100644 --- a/crates/web-sys/tests/wasm/option_element.rs +++ b/crates/web-sys/tests/wasm/option_element.rs @@ -3,7 +3,7 @@ use web_sys::HtmlOptionElement; #[wasm_bindgen_test] fn test_option_element() { - let option = HtmlOptionElement::new_using_text_and_value_and_default_selected_and_selected( + let option = HtmlOptionElement::new_with_text_and_value_and_default_selected_and_selected( "option_text", "option_value", false, diff --git a/crates/web-sys/tests/wasm/table_element.rs b/crates/web-sys/tests/wasm/table_element.rs index c83ae53e..0ed436cd 100644 --- a/crates/web-sys/tests/wasm/table_element.rs +++ b/crates/web-sys/tests/wasm/table_element.rs @@ -99,7 +99,7 @@ fn test_table_element() { ); table - .insert_row_using_index(0) + .insert_row_with_index(0) .expect("Failed to insert row at index 0"); assert!( table.rows().length() == 1, diff --git a/crates/webidl-tests/simple.rs b/crates/webidl-tests/simple.rs index b06d9dd4..f179894d 100644 --- a/crates/webidl-tests/simple.rs +++ b/crates/webidl-tests/simple.rs @@ -50,7 +50,7 @@ fn static_property() { } #[wasm_bindgen_test] -fn one_method_using_an_undefined_import_doesnt_break_all_other_methods() { +fn one_method_with_an_undefined_import_doesnt_break_all_other_methods() { let f = UndefinedMethod::new().unwrap(); assert!(f.ok_method()); } @@ -81,14 +81,14 @@ fn indexing() { #[wasm_bindgen_test] fn optional_and_union_arguments() { let f = OptionalAndUnionArguments::new().unwrap(); - assert_eq!(f.m_using_a("abc"), "string, abc, boolean, true, number, 123, number, 456"); - assert_eq!(f.m_using_a_and_b("abc", false), "string, abc, boolean, false, number, 123, number, 456"); - assert_eq!(f.m_using_dom_str_and_bool_and_i16("abc", false, 5), "string, abc, boolean, false, number, 5, number, 456"); - assert_eq!(f.m_using_dom_str_and_bool_and_dom_str("abc", false, "5"), "string, abc, boolean, false, string, 5, number, 456"); - assert_eq!(f.m_using_dom_str_and_bool_and_i16_and_opt_i64("abc", false, 5, Some(10)), "string, abc, boolean, false, number, 5, bigint, 10"); - assert_eq!(f.m_using_dom_str_and_bool_and_i16_and_opt_bool("abc", false, 5, Some(true)), "string, abc, boolean, false, number, 5, boolean, true"); - assert_eq!(f.m_using_dom_str_and_bool_and_dom_str_and_opt_i64("abc", false, "5", Some(10)), "string, abc, boolean, false, string, 5, bigint, 10"); - assert_eq!(f.m_using_dom_str_and_bool_and_dom_str_and_opt_bool("abc", false, "5", Some(true)), "string, abc, boolean, false, string, 5, boolean, true"); + assert_eq!(f.m("abc"), "string, abc, boolean, true, number, 123, number, 456"); + assert_eq!(f.m_with_b("abc", false), "string, abc, boolean, false, number, 123, number, 456"); + assert_eq!(f.m_with_bool_and_i16("abc", false, 5), "string, abc, boolean, false, number, 5, number, 456"); + assert_eq!(f.m_with_bool_and_dom_str("abc", false, "5"), "string, abc, boolean, false, string, 5, number, 456"); + assert_eq!(f.m_with_bool_and_i16_and_opt_i64("abc", false, 5, Some(10)), "string, abc, boolean, false, number, 5, bigint, 10"); + assert_eq!(f.m_with_bool_and_i16_and_opt_bool("abc", false, 5, Some(true)), "string, abc, boolean, false, number, 5, boolean, true"); + assert_eq!(f.m_with_bool_and_dom_str_and_opt_i64("abc", false, "5", Some(10)), "string, abc, boolean, false, string, 5, bigint, 10"); + assert_eq!(f.m_with_bool_and_dom_str_and_opt_bool("abc", false, "5", Some(true)), "string, abc, boolean, false, string, 5, boolean, true"); } #[wasm_bindgen_test] diff --git a/crates/webidl/src/util.rs b/crates/webidl/src/util.rs index aa80f93c..2276064d 100644 --- a/crates/webidl/src/util.rs +++ b/crates/webidl/src/util.rs @@ -273,9 +273,13 @@ impl<'src> FirstPassRecord<'src> { let rust_name = if possibilities.len() > 1 { let mut rust_name = rust_name.clone(); let mut first = true; - for ((argument_name, _, _), idl_type) in arguments.iter().zip(idl_types) { + let iter = arguments.iter().zip(idl_types).enumerate(); + for (i, ((argument_name, _, _), idl_type)) in iter { + if possibilities.iter().all(|p| p.get(i) == Some(idl_type)) { + continue + } if first { - rust_name.push_str("_using_"); + rust_name.push_str("_with_"); first = false; } else { rust_name.push_str("_and_"); diff --git a/examples/canvas/src/lib.rs b/examples/canvas/src/lib.rs index f13e50ad..722a10a9 100755 --- a/examples/canvas/src/lib.rs +++ b/examples/canvas/src/lib.rs @@ -20,7 +20,7 @@ pub fn draw() { .unwrap(); let context = canvas - .get_context_using_context_id("2d") + .get_context("2d") .unwrap() .unwrap() .dyn_into::() @@ -29,43 +29,43 @@ pub fn draw() { context.begin_path(); // Draw the outer circle. - context.arc_using_x_and_y_and_radius_and_start_angle_and_end_angle( + context.arc( 75.0, 75.0, 50.0, 0.0, f64::consts::PI * 2.0, - ); + ).unwrap(); // Draw the mouth. context.move_to(110.0, 75.0); - context.arc_using_x_and_y_and_radius_and_start_angle_and_end_angle( + context.arc( 75.0, 75.0, 35.0, 0.0, f64::consts::PI, - ); + ).unwrap(); // Draw the left eye. context.move_to(65.0, 65.0); - context.arc_using_x_and_y_and_radius_and_start_angle_and_end_angle( + context.arc( 60.0, 65.0, 5.0, 0.0, f64::consts::PI * 2.0, - ); + ).unwrap(); // Draw the right eye. context.move_to(95.0, 65.0); - context.arc_using_x_and_y_and_radius_and_start_angle_and_end_angle( + context.arc( 90.0, 65.0, 5.0, 0.0, f64::consts::PI * 2.0, - ); + ).unwrap(); context.stroke(); } diff --git a/examples/webaudio/src/lib.rs b/examples/webaudio/src/lib.rs index 704f71e9..3c86179c 100644 --- a/examples/webaudio/src/lib.rs +++ b/examples/webaudio/src/lib.rs @@ -81,22 +81,22 @@ impl FmOsc { // connect them up: // The primary oscillator is routed through the gain node, so that it can control the overall output volume - primary_node.connect_with_destination_and_output_and_input_using_destination(gain.as_ref()); + primary_node.connect_with_destination_and_output_and_input(gain.as_ref()).unwrap(); // Then connect the gain node to the AudioContext destination (aka your speakers) - gain_node.connect_with_destination_and_output_and_input_using_destination(destination_node); + gain_node.connect_with_destination_and_output_and_input(destination_node).unwrap(); // the FM oscillator is connected to its own gain node, so it can control the amount of modulation - fm_osc_node.connect_with_destination_and_output_and_input_using_destination(fm_gain.as_ref()); + fm_osc_node.connect_with_destination_and_output_and_input(fm_gain.as_ref()).unwrap(); // Connect the FM oscillator to the frequency parameter of the main oscillator, so that the // FM node can modulate its frequency - fm_gain_node.connect_with_destination_and_output_using_destination(&primary.frequency()); + fm_gain_node.connect_with_destination_and_output(&primary.frequency()).unwrap(); } // start the oscillators! - AsRef::::as_ref(&primary).start(); - AsRef::::as_ref(&fm_osc).start(); + AsRef::::as_ref(&primary).start().unwrap(); + AsRef::::as_ref(&fm_osc).start().unwrap(); FmOsc { ctx, From ddc42738cff1a5298059c7bc53201de4121c0d28 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 19 Aug 2018 10:24:23 -0700 Subject: [PATCH 33/71] Tweak some WebIDL type names in methods Instead of `dom_str`, `byte_str`, and `usv_str`, emit `str` for all of them. Similarly for `unrestricted_f64` just do `f64` instead. This reflects how we interpret the types already in terms of Rust types and although technically makes it possible to have name collisions in WebIDL they don't come up in practice. --- crates/webidl-tests/simple.rs | 6 +++--- crates/webidl/src/idl_type.rs | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/crates/webidl-tests/simple.rs b/crates/webidl-tests/simple.rs index f179894d..edec1965 100644 --- a/crates/webidl-tests/simple.rs +++ b/crates/webidl-tests/simple.rs @@ -84,11 +84,11 @@ fn optional_and_union_arguments() { assert_eq!(f.m("abc"), "string, abc, boolean, true, number, 123, number, 456"); assert_eq!(f.m_with_b("abc", false), "string, abc, boolean, false, number, 123, number, 456"); assert_eq!(f.m_with_bool_and_i16("abc", false, 5), "string, abc, boolean, false, number, 5, number, 456"); - assert_eq!(f.m_with_bool_and_dom_str("abc", false, "5"), "string, abc, boolean, false, string, 5, number, 456"); + assert_eq!(f.m_with_bool_and_str("abc", false, "5"), "string, abc, boolean, false, string, 5, number, 456"); assert_eq!(f.m_with_bool_and_i16_and_opt_i64("abc", false, 5, Some(10)), "string, abc, boolean, false, number, 5, bigint, 10"); assert_eq!(f.m_with_bool_and_i16_and_opt_bool("abc", false, 5, Some(true)), "string, abc, boolean, false, number, 5, boolean, true"); - assert_eq!(f.m_with_bool_and_dom_str_and_opt_i64("abc", false, "5", Some(10)), "string, abc, boolean, false, string, 5, bigint, 10"); - assert_eq!(f.m_with_bool_and_dom_str_and_opt_bool("abc", false, "5", Some(true)), "string, abc, boolean, false, string, 5, boolean, true"); + assert_eq!(f.m_with_bool_and_str_and_opt_i64("abc", false, "5", Some(10)), "string, abc, boolean, false, string, 5, bigint, 10"); + assert_eq!(f.m_with_bool_and_str_and_opt_bool("abc", false, "5", Some(true)), "string, abc, boolean, false, string, 5, boolean, true"); } #[wasm_bindgen_test] diff --git a/crates/webidl/src/idl_type.rs b/crates/webidl/src/idl_type.rs index c1dfa8b0..c5504fdf 100644 --- a/crates/webidl/src/idl_type.rs +++ b/crates/webidl/src/idl_type.rs @@ -348,13 +348,13 @@ impl<'a> IdlType<'a> { IdlType::UnsignedLong => dst.push_str("u32"), IdlType::LongLong => dst.push_str("i64"), IdlType::UnsignedLongLong => dst.push_str("u64"), - IdlType::Float => dst.push_str("f32"), - IdlType::UnrestrictedFloat => dst.push_str("unrestricted_f32"), - IdlType::Double => dst.push_str("f64"), - IdlType::UnrestrictedDouble => dst.push_str("unrestricted_f64"), - IdlType::DomString => dst.push_str("dom_str"), - IdlType::ByteString => dst.push_str("byte_str"), - IdlType::UsvString => dst.push_str("usv_str"), + IdlType::Float | + IdlType::UnrestrictedFloat => dst.push_str("f32"), + IdlType::Double | + IdlType::UnrestrictedDouble => dst.push_str("f64"), + IdlType::DomString | + IdlType::ByteString | + IdlType::UsvString => dst.push_str("str"), IdlType::Object => dst.push_str("object"), IdlType::Symbol => dst.push_str("symbol"), IdlType::Error => dst.push_str("error"), From 4195af68e774473ef1097d3229868d2e8de31582 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 20 Aug 2018 10:40:54 -0700 Subject: [PATCH 34/71] Fix the `constructor` and `catch` attributes combined This commit fixes annotations that include both the `constructor` and `catch` attributes on imported types, ensuring that we infer the right type being returned after extracting the first type parameter of the `Result`. Closes #735 --- crates/macro-support/src/parser.rs | 2 +- tests/wasm/import_class.js | 8 ++++++++ tests/wasm/import_class.rs | 10 ++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/crates/macro-support/src/parser.rs b/crates/macro-support/src/parser.rs index 18b198a6..a3de4d17 100644 --- a/crates/macro-support/src/parser.rs +++ b/crates/macro-support/src/parser.rs @@ -486,7 +486,7 @@ impl<'a> ConvertToAst<(BindgenAttrs, &'a Option)> for syn::ForeignItemFn ast::ImportFunctionKind::Method { class, ty, kind } } else if opts.constructor() { - let class = match wasm.ret { + let class = match js_ret { Some(ref ty) => ty, _ => bail_span!(self, "constructor returns must be bare types"), }; diff --git a/tests/wasm/import_class.js b/tests/wasm/import_class.js index 6154d9ce..fa60847c 100644 --- a/tests/wasm/import_class.js +++ b/tests/wasm/import_class.js @@ -123,3 +123,11 @@ exports.run_rust_option_tests = function() { assert.strictEqual(wasm.rust_return_none(), undefined); assert.strictEqual(wasm.rust_return_some() === undefined, false); }; + +exports.CatchConstructors = class { + constructor(x) { + if (x == 0) { + throw new Error('bad!'); + } + } +}; diff --git a/tests/wasm/import_class.rs b/tests/wasm/import_class.rs index 06083ea2..64c97d14 100644 --- a/tests/wasm/import_class.rs +++ b/tests/wasm/import_class.rs @@ -76,6 +76,10 @@ extern { fn return_undefined() -> Option; fn return_some() -> Option; fn run_rust_option_tests(); + + type CatchConstructors; + #[wasm_bindgen(constructor, catch)] + fn new(x: u32) -> Result; } #[wasm_bindgen] @@ -199,3 +203,9 @@ pub fn rust_return_none() -> Option { pub fn rust_return_some() -> Option { Some(Options::new()) } + +#[wasm_bindgen_test] +fn catch_constructors() { + assert!(CatchConstructors::new(0).is_err()); + assert!(CatchConstructors::new(1).is_ok()); +} From f8cf4ab7329fd77b561e32208a76591981b98bf5 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 20 Aug 2018 10:52:54 -0700 Subject: [PATCH 35/71] Support importing same-name statics from two modules Closes #714 --- crates/macro-support/src/parser.rs | 15 +++++++-------- tests/wasm/duplicates.rs | 8 ++++++++ tests/wasm/duplicates_a.js | 1 + tests/wasm/duplicates_b.js | 1 + tests/wasm/duplicates_c.js | 1 + 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/crates/macro-support/src/parser.rs b/crates/macro-support/src/parser.rs index 18b198a6..6f1bdba2 100644 --- a/crates/macro-support/src/parser.rs +++ b/crates/macro-support/src/parser.rs @@ -560,10 +560,12 @@ impl ConvertToAst for syn::ForeignItemType { } } -impl ConvertToAst for syn::ForeignItemStatic { +impl<'a> ConvertToAst<(BindgenAttrs, &'a Option)> for syn::ForeignItemStatic { type Target = ast::ImportKind; - fn convert(self, opts: BindgenAttrs) -> Result { + fn convert(self, (opts, module): (BindgenAttrs, &'a Option)) + -> Result + { if self.mutability.is_some() { bail_span!(self.mutability, "cannot import mutable globals yet") } @@ -571,11 +573,8 @@ impl ConvertToAst for syn::ForeignItemStatic { let js_name = opts.js_name().unwrap_or(&default_name); let shim = format!( "__wbg_static_accessor_{}_{}", - js_name - .chars() - .filter(|c| c.is_ascii_alphanumeric()) - .collect::(), - self.ident + self.ident, + ShortHash((&js_name, module, &self.ident)), ); Ok(ast::ImportKind::Static(ast::ImportStatic { ty: *self.ty, @@ -973,7 +972,7 @@ impl<'a> MacroParse<&'a BindgenAttrs> for syn::ForeignItem { let kind = match self { syn::ForeignItem::Fn(f) => f.convert((item_opts, &module))?, syn::ForeignItem::Type(t) => t.convert(item_opts)?, - syn::ForeignItem::Static(s) => s.convert(item_opts)?, + syn::ForeignItem::Static(s) => s.convert((item_opts, &module))?, _ => panic!("only foreign functions/types allowed for now"), }; diff --git a/tests/wasm/duplicates.rs b/tests/wasm/duplicates.rs index f35e6d37..60b17c82 100644 --- a/tests/wasm/duplicates.rs +++ b/tests/wasm/duplicates.rs @@ -6,6 +6,7 @@ pub mod same_function_different_locations_a { #[wasm_bindgen(module = "tests/wasm/duplicates_a.js")] extern { pub fn foo(); + pub static bar: JsValue; } } @@ -15,6 +16,7 @@ pub mod same_function_different_locations_b { #[wasm_bindgen(module = "tests/wasm/duplicates_a.js")] extern { pub fn foo(); + pub static bar: JsValue; } } @@ -22,6 +24,8 @@ pub mod same_function_different_locations_b { fn same_function_different_locations() { same_function_different_locations_a::foo(); same_function_different_locations_b::foo(); + assert_eq!(*same_function_different_locations_a::bar, 3); + assert_eq!(*same_function_different_locations_a::bar, 3); } pub mod same_function_different_modules_a { @@ -30,6 +34,7 @@ pub mod same_function_different_modules_a { #[wasm_bindgen(module = "tests/wasm/duplicates_b.js")] extern { pub fn foo() -> bool; + pub static bar: JsValue; } } @@ -39,6 +44,7 @@ pub mod same_function_different_modules_b { #[wasm_bindgen(module = "tests/wasm/duplicates_c.js")] extern { pub fn foo() -> bool; + pub static bar: JsValue; } } @@ -46,4 +52,6 @@ pub mod same_function_different_modules_b { fn same_function_different_modules() { assert!(same_function_different_modules_a::foo()); assert!(!same_function_different_modules_b::foo()); + assert_eq!(*same_function_different_modules_a::bar, 4); + assert_eq!(*same_function_different_modules_b::bar, 5); } diff --git a/tests/wasm/duplicates_a.js b/tests/wasm/duplicates_a.js index ee5ebb32..e52f346b 100644 --- a/tests/wasm/duplicates_a.js +++ b/tests/wasm/duplicates_a.js @@ -1 +1,2 @@ exports.foo = () => {}; +exports.bar = 3; diff --git a/tests/wasm/duplicates_b.js b/tests/wasm/duplicates_b.js index 00128ede..75263a24 100644 --- a/tests/wasm/duplicates_b.js +++ b/tests/wasm/duplicates_b.js @@ -1 +1,2 @@ exports.foo = () => true; +exports.bar = 4; diff --git a/tests/wasm/duplicates_c.js b/tests/wasm/duplicates_c.js index 90ca9240..601a99a5 100644 --- a/tests/wasm/duplicates_c.js +++ b/tests/wasm/duplicates_c.js @@ -1 +1,2 @@ exports.foo = () => false; +exports.bar = 5; From 61491eafbf6e958df97c3d296ae88a8e92667a50 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 15 Aug 2018 17:52:26 -0700 Subject: [PATCH 36/71] Add experimental support for `WeakRef` This commit adds experimental support for `WeakRef` to be used to automatically free wasm objects instead of having to always call the `free` function manually. Note that when enabled the `free` function for all exported objects is still generated, it's just optionally invoked by the application. Support isn't exposed through a CLI flag right now due to the early stages of the `WeakRef` proposal, but the env var `WASM_BINDGEN_WEAKREF` can be used to enable this generation. Upon doing so the output can then be edited slightly as well to work in the SpiderMonkey shell and it looks like this is working! Closes #704 --- crates/cli-support/src/js/mod.rs | 74 +++++++++++++++++++++++++++++--- crates/cli-support/src/lib.rs | 5 +++ 2 files changed, 73 insertions(+), 6 deletions(-) diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index 220f6e70..4e4b5ca6 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -490,6 +490,39 @@ impl<'a> Context<'a> { let mut dst = format!("class {} {{\n", name); let mut ts_dst = format!("export {}", dst); + let (mkweakref, freeref) = if self.config.weak_refs { + // When weak refs are enabled we use them to automatically free the + // contents of an exported rust class when it's gc'd. Note that a + // manual `free` function still exists for deterministic + // destruction. + // + // This is implemented by using a `WeakRefGroup` to run finalizers + // for all `WeakRef` objects that it creates. Upon construction of + // a new wasm object we use `makeRef` with "holdings" of a thunk to + // free the wasm instance. Once the `this` (the instance we're + // creating) is gc'd then the finalizer will run with the + // `WeakRef`, and we'll pull out the `holdings`, our pointer. + // + // Note, though, that if manual finalization happens we want to + // cancel the `WeakRef`-generated finalization, so we retain the + // `WeakRef` in a global map. This global map is then used to + // `drop()` the `WeakRef` (cancel finalization) whenever it is + // finalized. + self.expose_cleanup_groups(); + let mk = format!(" + const cleanup_ptr = this.ptr; + const ref = CLEANUPS.makeRef(this, () => free{}(cleanup_ptr)); + CLEANUPS_MAP.set(this.ptr, ref); + ", name); + let free = " + CLEANUPS_MAP.get(ptr).drop(); + CLEANUPS_MAP.delete(ptr); + "; + (mk, free) + } else { + (String::new(), "") + }; + if self.config.debug || class.constructor.is_some() { self.expose_constructor_token(); @@ -516,9 +549,11 @@ impl<'a> Context<'a> { // This invocation of new will call this constructor with a ConstructorToken let instance = {class}.{constructor}(...args); this.ptr = instance.ptr; + {mkweakref} ", class = name, - constructor = constructor + constructor = constructor, + mkweakref = mkweakref, )); } else { dst.push_str( @@ -537,9 +572,11 @@ impl<'a> Context<'a> { constructor(ptr) {{ this.ptr = ptr; + {} }} ", - name + name, + mkweakref, )); } @@ -599,16 +636,29 @@ impl<'a> Context<'a> { } } - dst.push_str(&format!( + self.global(&format!( " - free() {{ - const ptr = this.ptr; - this.ptr = 0; + function free{}(ptr) {{ + {} wasm.{}(ptr); }} ", + name, + freeref, shared::free_function(&name) )); + dst.push_str(&format!( + " + free() {{ + if (this.ptr === 0) + return; + const ptr = this.ptr; + this.ptr = 0; + free{}(this.ptr); + }} + ", + name, + )); ts_dst.push_str("free(): void;\n"); dst.push_str(&class.contents); ts_dst.push_str(&class.typescript); @@ -1594,6 +1644,18 @@ impl<'a> Context<'a> { "); } + fn expose_cleanup_groups(&mut self) { + if !self.exposed_globals.insert("cleanup_groups") { + return + } + self.global( + " + const CLEANUPS = new WeakRefGroup(x => x.holdings()); + const CLEANUPS_MAP = new Map(); + " + ); + } + fn gc(&mut self) -> Result<(), Error> { let module = mem::replace(self.module, Module::default()); let module = module.parse_names().unwrap_or_else(|p| p.1); diff --git a/crates/cli-support/src/lib.rs b/crates/cli-support/src/lib.rs index 5933a691..59f4eb85 100644 --- a/crates/cli-support/src/lib.rs +++ b/crates/cli-support/src/lib.rs @@ -10,6 +10,7 @@ extern crate failure; use std::any::Any; use std::collections::BTreeSet; +use std::env; use std::fmt; use std::fs; use std::mem; @@ -33,6 +34,9 @@ pub struct Bindgen { typescript: bool, demangle: bool, keep_debug: bool, + // Experimental support for `WeakRefGroup`, an upcoming ECMAScript feature. + // Currently only enable-able through an env var. + weak_refs: bool, } enum Input { @@ -55,6 +59,7 @@ impl Bindgen { typescript: false, demangle: true, keep_debug: false, + weak_refs: env::var("WASM_BINDGEN_WEAKREF").is_ok(), } } From 66d96aac11509ce6971f63a81563ef53bcc833df Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 20 Aug 2018 11:23:02 -0700 Subject: [PATCH 37/71] Fix merge conflicts with `fetch` example --- examples/fetch/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/fetch/src/lib.rs b/examples/fetch/src/lib.rs index 1964917d..1b4854cb 100644 --- a/examples/fetch/src/lib.rs +++ b/examples/fetch/src/lib.rs @@ -51,12 +51,12 @@ pub fn run() -> Promise { request_options.method("GET"); request_options.mode(RequestMode::Cors); - let req = Request::new_using_usv_str_and_request_init("https://api.github.com/repos/rustwasm/wasm-bindgen/branches/master", &request_options).unwrap(); + let req = Request::new_with_str_and_request_init("https://api.github.com/repos/rustwasm/wasm-bindgen/branches/master", &request_options).unwrap(); // the RequestInit struct will eventually support setting headers, but that's missing right now req.headers().set("Accept", "application/vnd.github.v3+json").unwrap(); - let req_promise = window.fetch_using_request(&req); + let req_promise = window.fetch_with_request(&req); let to_return = JsFuture::from(req_promise).and_then(|resp_value| { // resp_value is a Response object From 1ea1410f98124e0f56d10e5c9e69a37b27164da9 Mon Sep 17 00:00:00 2001 From: Frazer McLean Date: Mon, 20 Aug 2018 22:12:29 +0200 Subject: [PATCH 38/71] Catch errors in Table and Module constructors --- crates/js-sys/src/lib.rs | 8 +++---- crates/js-sys/tests/wasm/WebAssembly.js | 7 +++++- crates/js-sys/tests/wasm/WebAssembly.rs | 30 ++++++++++++++++++++----- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 3747feab..ff2362c4 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -2953,8 +2953,8 @@ pub mod WebAssembly { /// efficiently shared with Workers, and instantiated multiple times. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module - #[wasm_bindgen(constructor, js_namespace = WebAssembly)] - pub fn new(buffer_source: &JsValue) -> Module; + #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)] + pub fn new(buffer_source: &JsValue) -> Result; /// The `WebAssembly.customSections()` function returns a copy of the /// contents of all custom sections in the given module with the given @@ -2994,8 +2994,8 @@ pub mod WebAssembly { /// of the given size and element type. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table - #[wasm_bindgen(constructor, js_namespace = WebAssembly)] - pub fn new(table_descriptor: &Object) -> Table; + #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)] + pub fn new(table_descriptor: &Object) -> Result; /// The `length` prototype property of the `WebAssembly.Table` object /// returns the length of the table, i.e. the number of elements in the diff --git a/crates/js-sys/tests/wasm/WebAssembly.js b/crates/js-sys/tests/wasm/WebAssembly.js index ec9310a3..51d0c343 100644 --- a/crates/js-sys/tests/wasm/WebAssembly.js +++ b/crates/js-sys/tests/wasm/WebAssembly.js @@ -17,7 +17,12 @@ function getTableObject() { return { element: "anyfunc", initial: 1 } } +function getInvalidTableObject() { + return { element: "anyfunc", initial: 1, maximum: 0 } +} + module.exports = { - getWasmArray, + getInvalidTableObject, getTableObject, + getWasmArray, }; diff --git a/crates/js-sys/tests/wasm/WebAssembly.rs b/crates/js-sys/tests/wasm/WebAssembly.rs index 6070720b..fe16378e 100644 --- a/crates/js-sys/tests/wasm/WebAssembly.rs +++ b/crates/js-sys/tests/wasm/WebAssembly.rs @@ -11,6 +11,9 @@ extern { #[wasm_bindgen(js_name = getTableObject)] fn get_table_object() -> Object; + + #[wasm_bindgen(js_name = getInvalidTableObject)] + fn get_invalid_table_object() -> Object; } fn get_invalid_wasm() -> JsValue { @@ -66,46 +69,61 @@ fn compile_valid() -> impl Future { #[wasm_bindgen_test] fn module_inheritance() { - let module = WebAssembly::Module::new(&get_valid_wasm()); + let module = WebAssembly::Module::new(&get_valid_wasm()).unwrap(); assert!(module.is_instance_of::()); assert!(module.is_instance_of::()); let _: &Object = module.as_ref(); } +#[wasm_bindgen_test] +fn module_error() { + let error = WebAssembly::Module::new(&get_invalid_wasm()).err().unwrap(); + assert!(error.is_instance_of::()); + + let error = WebAssembly::Module::new(&get_bad_type_wasm()).err().unwrap(); + assert!(error.is_instance_of::()); +} + #[wasm_bindgen_test] fn module_custom_sections() { - let module = WebAssembly::Module::new(&get_valid_wasm()); + let module = WebAssembly::Module::new(&get_valid_wasm()).unwrap(); let cust_sec = WebAssembly::Module::custom_sections(&module, "abcd"); assert_eq!(cust_sec.length(), 0); } #[wasm_bindgen_test] fn module_exports() { - let module = WebAssembly::Module::new(&get_valid_wasm()); + let module = WebAssembly::Module::new(&get_valid_wasm()).unwrap(); let exports = WebAssembly::Module::exports(&module); assert_eq!(exports.length(), 1); } #[wasm_bindgen_test] fn module_imports() { - let module = WebAssembly::Module::new(&get_valid_wasm()); + let module = WebAssembly::Module::new(&get_valid_wasm()).unwrap(); let imports = WebAssembly::Module::imports(&module); assert_eq!(imports.length(), 1); } #[wasm_bindgen_test] fn table_inheritance() { - let table = WebAssembly::Table::new(&get_table_object().into()); + let table = WebAssembly::Table::new(&get_table_object().into()).unwrap(); assert!(table.is_instance_of::()); assert!(table.is_instance_of::()); let _: &Object = table.as_ref(); } +#[wasm_bindgen_test] +fn table_error() { + let error = WebAssembly::Table::new(&get_invalid_table_object()).err().unwrap(); + assert!(error.is_instance_of::()); +} + #[wasm_bindgen_test] fn table() { - let table = WebAssembly::Table::new(&get_table_object().into()); + let table = WebAssembly::Table::new(&get_table_object().into()).unwrap(); assert_eq!(table.length(), 1); } From 2972599ee3aa5d0a385faf2cbc043aa8a1021aa2 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 20 Aug 2018 14:14:55 -0700 Subject: [PATCH 39/71] Fix some mistakes from `WeakRef` support * Be sure to free the pointer, not `this.ptr` which is always 0 * Unconditionally attempt to free data and let Rust throw an exception if it's null --- crates/cli-support/src/js/mod.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index 4e4b5ca6..357c3837 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -650,11 +650,9 @@ impl<'a> Context<'a> { dst.push_str(&format!( " free() {{ - if (this.ptr === 0) - return; const ptr = this.ptr; this.ptr = 0; - free{}(this.ptr); + free{}(ptr); }} ", name, From 3c3e6c4498d6b724d43993adc195aa6c5c6f1ace Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 20 Aug 2018 14:15:42 -0700 Subject: [PATCH 40/71] Provide no input for yarn Hopefully it won't hang waiting for input as a result --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8144c973..8319842d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -125,7 +125,7 @@ matrix: install: - *INSTALL_NODE_VIA_NVM - travis_retry curl -OLSf https://yarnpkg.com/install.sh - - travis_retry bash install.sh -- --version 1.7.0 + - travis_retry bash install.sh -- --version 1.7.0 < /dev/null - export PATH=$HOME/.yarn/bin:$PATH - yarn install --freeze-lockfile script: cargo test api::works From 6343f2659a5b81a26afd7d8910811c7c3ce6230a Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 19 Aug 2018 17:07:30 -0700 Subject: [PATCH 41/71] Remove dependency on `wasmi` This is a pretty heavyweight dependency which accounts for a surprising amount of runtime for larger modules in `wasm-bindgen`. We don't need 90% of the crate and so this commit bundles a small interpreter for instructions we know are only going to appear in describe-related functions. --- crates/cli-support/Cargo.toml | 2 +- crates/cli-support/src/descriptor.rs | 2 +- crates/cli-support/src/js/mod.rs | 7 +- crates/cli-support/src/lib.rs | 126 +------------- crates/wasm-interpreter/Cargo.toml | 17 ++ crates/wasm-interpreter/src/lib.rs | 231 ++++++++++++++++++++++++ crates/wasm-interpreter/tests/smoke.rs | 232 +++++++++++++++++++++++++ src/describe.rs | 20 ++- 8 files changed, 503 insertions(+), 134 deletions(-) create mode 100644 crates/wasm-interpreter/Cargo.toml create mode 100644 crates/wasm-interpreter/src/lib.rs create mode 100644 crates/wasm-interpreter/tests/smoke.rs diff --git a/crates/cli-support/Cargo.toml b/crates/cli-support/Cargo.toml index e47dfeb5..40102d7d 100644 --- a/crates/cli-support/Cargo.toml +++ b/crates/cli-support/Cargo.toml @@ -18,5 +18,5 @@ serde = "1.0" serde_json = "1.0" tempfile = "3.0" wasm-bindgen-shared = { path = "../shared", version = '=0.2.17' } +wasm-bindgen-wasm-interpreter = { path = "../wasm-interpreter", version = '=0.2.17' } wasm-gc-api = "0.1.9" -wasmi = "0.3" diff --git a/crates/cli-support/src/descriptor.rs b/crates/cli-support/src/descriptor.rs index 122edad9..593e75a2 100644 --- a/crates/cli-support/src/descriptor.rs +++ b/crates/cli-support/src/descriptor.rs @@ -94,7 +94,7 @@ pub enum VectorKind { impl Descriptor { pub fn decode(mut data: &[u32]) -> Descriptor { let descriptor = Descriptor::_decode(&mut data); - assert!(data.is_empty()); + assert!(data.is_empty(), "remaining data {:?}", data); descriptor } diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index 357c3837..a1986c35 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -10,6 +10,7 @@ use wasm_gc; use super::Bindgen; use descriptor::{Descriptor, VectorKind}; +use wasm_interpreter::Interpreter; mod js2rust; use self::js2rust::Js2Rust; @@ -41,7 +42,7 @@ pub struct Context<'a> { pub exported_classes: HashMap, pub function_table_needed: bool, - pub run_descriptor: &'a Fn(&str) -> Option>, + pub interpreter: &'a mut Interpreter, } #[derive(Default)] @@ -1668,9 +1669,9 @@ impl<'a> Context<'a> { Ok(()) } - fn describe(&self, name: &str) -> Option { + fn describe(&mut self, name: &str) -> Option { let name = format!("__wbindgen_describe_{}", name); - (self.run_descriptor)(&name).map(|d| Descriptor::decode(&d)) + Some(Descriptor::decode(self.interpreter.interpret(&name, self.module)?)) } fn global(&mut self, s: &str) { diff --git a/crates/cli-support/src/lib.rs b/crates/cli-support/src/lib.rs index 59f4eb85..fdb09dc6 100644 --- a/crates/cli-support/src/lib.rs +++ b/crates/cli-support/src/lib.rs @@ -4,14 +4,13 @@ extern crate parity_wasm; extern crate wasm_bindgen_shared as shared; extern crate serde_json; extern crate wasm_gc; -extern crate wasmi; #[macro_use] extern crate failure; +extern crate wasm_bindgen_wasm_interpreter as wasm_interpreter; use std::any::Any; use std::collections::BTreeSet; use std::env; -use std::fmt; use std::fs; use std::mem; use std::path::{Path, PathBuf}; @@ -184,13 +183,7 @@ impl Bindgen { // This means that whenever we encounter an import or export we'll // execute a shim function which informs us about its type so we can // then generate the appropriate bindings. - // - // TODO: avoid a `clone` here of the module if we can - let instance = wasmi::Module::from_parity_wasm_module(module.clone()) - .with_context(|_| "failed to create wasmi module")?; - let instance = wasmi::ModuleInstance::new(&instance, &MyResolver) - .with_context(|_| "failed to instantiate wasm module")?; - let instance = instance.not_started_instance(); + let mut instance = wasm_interpreter::Interpreter::new(&module); let (js, ts) = { let mut cx = js::Context { @@ -206,20 +199,7 @@ impl Bindgen { config: &self, module: &mut module, function_table_needed: false, - run_descriptor: &|name| { - let mut v = MyExternals(Vec::new()); - match instance.invoke_export(name, &[], &mut v) { - Ok(None) => Some(v.0), - Ok(Some(_)) => unreachable!( - "there is only one export, and we only return None from it" - ), - // Allow missing exported describe functions. This can - // happen when a nested dependency crate exports things - // but the root crate doesn't use them. - Err(wasmi::Error::Function(_)) => None, - Err(e) => panic!("unexpected error running descriptor: {}", e), - } - }, + interpreter: &mut instance, }; for program in programs.iter() { js::SubContext { @@ -409,106 +389,6 @@ to open an issue at https://github.com/rustwasm/wasm-bindgen/issues! Ok(ret) } -struct MyResolver; - -impl wasmi::ImportResolver for MyResolver { - fn resolve_func( - &self, - module_name: &str, - field_name: &str, - signature: &wasmi::Signature, - ) -> Result { - // Route our special "describe" export to 1 and everything else to 0. - // That way whenever the function 1 is invoked we know what to do and - // when 0 is invoked (by accident) we'll trap and produce an error. - let idx = (module_name == "__wbindgen_placeholder__" && field_name == "__wbindgen_describe") - as usize; - Ok(wasmi::FuncInstance::alloc_host(signature.clone(), idx)) - } - - fn resolve_global( - &self, - _module_name: &str, - _field_name: &str, - descriptor: &wasmi::GlobalDescriptor, - ) -> Result { - // dummy implementation to ensure instantiation succeeds - let val = match descriptor.value_type() { - wasmi::ValueType::I32 => wasmi::RuntimeValue::I32(0), - wasmi::ValueType::I64 => wasmi::RuntimeValue::I64(0), - wasmi::ValueType::F32 => wasmi::RuntimeValue::F32(0.0.into()), - wasmi::ValueType::F64 => wasmi::RuntimeValue::F64(0.0.into()), - }; - Ok(wasmi::GlobalInstance::alloc(val, descriptor.is_mutable())) - } - - fn resolve_memory( - &self, - _module_name: &str, - _field_name: &str, - descriptor: &wasmi::MemoryDescriptor, - ) -> Result { - // dummy implementation to ensure instantiation succeeds - use wasmi::memory_units::Pages; - let initial = Pages(descriptor.initial() as usize); - let maximum = descriptor.maximum().map(|i| Pages(i as usize)); - wasmi::MemoryInstance::alloc(initial, maximum) - } - - fn resolve_table( - &self, - _module_name: &str, - _field_name: &str, - descriptor: &wasmi::TableDescriptor, - ) -> Result { - // dummy implementation to ensure instantiation succeeds - let initial = descriptor.initial(); - let maximum = descriptor.maximum(); - wasmi::TableInstance::alloc(initial, maximum) - } -} - -struct MyExternals(Vec); - -#[derive(Debug)] -struct MyError(String); - -impl wasmi::Externals for MyExternals { - fn invoke_index( - &mut self, - index: usize, - args: wasmi::RuntimeArgs, - ) -> Result, wasmi::Trap> { - macro_rules! bail { - ($($t:tt)*) => ({ - let s = MyError(format!($($t)*)); - return Err(wasmi::Trap::new(wasmi::TrapKind::Host(Box::new(s)))) - }) - } - // We only recognize one function here which was mapped to the index 1 - // by the resolver above. - if index != 1 { - bail!("only __wbindgen_describe can be run at this time") - } - if args.len() != 1 { - bail!("must have exactly one argument"); - } - match args.nth_value_checked(0)? { - wasmi::RuntimeValue::I32(i) => self.0.push(i as u32), - _ => bail!("expected one argument of i32 type"), - } - Ok(None) - } -} - -impl wasmi::HostError for MyError {} - -impl fmt::Display for MyError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - self.0.fmt(f) - } -} - fn reset_indentation(s: &str) -> String { let mut indent: u32 = 0; let mut dst = String::new(); diff --git a/crates/wasm-interpreter/Cargo.toml b/crates/wasm-interpreter/Cargo.toml new file mode 100644 index 00000000..eb837fed --- /dev/null +++ b/crates/wasm-interpreter/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "wasm-bindgen-wasm-interpreter" +version = "0.2.17" +authors = ["The wasm-bindgen Developers"] +license = "MIT/Apache-2.0" +repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/wasm-interpreter" +homepage = "https://rustwasm.github.io/wasm-bindgen/" +documentation = "https://docs.rs/wasm-bindgen-wasm-interpreter" +description = """ +Micro-interpreter optimized for wasm-bindgen's use case +""" + +[dependencies] +parity-wasm = "0.31" + +[dev-dependencies] +tempfile = "3" diff --git a/crates/wasm-interpreter/src/lib.rs b/crates/wasm-interpreter/src/lib.rs new file mode 100644 index 00000000..bac96390 --- /dev/null +++ b/crates/wasm-interpreter/src/lib.rs @@ -0,0 +1,231 @@ +//! A tiny and incomplete wasm interpreter +//! +//! This module contains a tiny and incomplete wasm interpreter built on top of +//! `parity-wasm`'s module structure. Each `Interpreter` contains some state +//! about the execution of a wasm instance. The "incomplete" part here is +//! related to the fact that this is *only* used to execute the various +//! descriptor functions for wasm-bindgen. +//! +//! As a recap, the wasm-bindgen macro generate "descriptor functions" which +//! basically as a mapping of rustc's trait resolution in executable code. This +//! allows us to detect, after the macro is invoke, what trait selection did and +//! what types of functions look like. By executing descriptor functions they'll +//! each invoke a known import (with only one argument) some number of times, +//! which gives us a list of `u32` values to then decode. +//! +//! The interpreter here is only geared towards this one exact use case, so it's +//! quite small and likely not extra-efficient. + +#![deny(missing_docs)] + +extern crate parity_wasm; + +use std::collections::HashMap; + +use parity_wasm::elements::*; + +/// A ready-to-go interpreter of a wasm module. +/// +/// An interpreter currently represents effectively cached state. It is reused +/// between calls to `interpret` and is precomputed from a `Module`. It houses +/// state like the wasm stack, wasm memory, etc. +#[derive(Default)] +pub struct Interpreter { + // Number of imported functions in the wasm module (used in index + // calculations) + imports: usize, + + // Function index of the `__wbindgen_describe` imported function. We special + // case this to know when the environment's imported function is called. + describe_idx: Option, + + // A mapping of string names to the function index, filled with all exported + // functions. + name_map: HashMap, + + // The numerical index of the code section in the wasm module, indexed into + // the module's list of sections. + code_idx: Option, + + // The current stack pointer (global 0) and wasm memory (the stack). Only + // used in a limited capacity. + sp: i32, + mem: Vec, + + // The wasm stack. Note how it's just `i32` which is intentional, we don't + // support other types. + stack: Vec, + + // The descriptor which we're assembling, a list of `u32` entries. This is + // very specific to wasm-bindgen and is the purpose for the existence of + // this module. + descriptor: Vec, +} + +impl Interpreter { + /// Creates a new interpreter from a provided `Module`, precomputing all + /// information necessary to interpret further. + /// + /// Note that the `module` passed in to this function must be the same as + /// the `module` passed to `interpret` below. + pub fn new(module: &Module) -> Interpreter { + let mut ret = Interpreter::default(); + + // The descriptor functions shouldn't really use all that much memory + // (the LLVM call stack, now the wasm stack). To handle that let's give + // our selves a little bit of memory and set the stack pointer (global + // 0) to the top. + ret.mem = vec![0; 0x100]; + ret.sp = ret.mem.len() as i32; + + // Figure out where our code section, if any, is. + for (i, s) in module.sections().iter().enumerate() { + match s { + Section::Code(_) => ret.code_idx = Some(i), + _ => {} + } + } + + // Figure out where the `__wbindgen_describe` imported function is, if + // it exists. We'll special case calls to this function as our + // interpretation should only invoke this function as an imported + // function. + if let Some(i) = module.import_section() { + ret.imports = i.functions(); + for (i, entry) in i.entries().iter().enumerate() { + if entry.module() != "__wbindgen_placeholder__" { + continue + } + if entry.field() != "__wbindgen_describe" { + continue + } + ret.describe_idx = Some(i as u32); + } + } + + // Build up the mapping of exported functions to function indices. + if let Some(e) = module.export_section() { + for e in e.entries() { + let i = match e.internal() { + Internal::Function(i) => i, + _ => continue, + }; + ret.name_map.insert(e.field().to_string(), *i); + } + } + + return ret + } + + /// Interprets the execution of the descriptor function `func`. + /// + /// This function will execute `func` in the `module` provided. Note that + /// the `module` provided here must be the same as the one passed to `new` + /// when this `Interpreter` was constructed. + /// + /// The `func` must be a wasm-bindgen descriptor function meaning that it + /// doesn't do anything like use floats or i64. Instead all it should do is + /// call other functions, sometimes some stack pointer manipulation, and + /// then call the one imported `__wbindgen_describe` function. Anything else + /// will cause this interpreter to panic. + /// + /// When the descriptor has finished running the assembled descriptor list + /// is returned. The descriptor returned can then be re-parsed into an + /// actual `Descriptor` in the cli-support crate. + /// + /// # Return value + /// + /// Returns `Some` if `func` was found in the `module` and `None` if it was + /// not found in the `module`. + pub fn interpret(&mut self, func: &str, module: &Module) -> Option<&[u32]> { + self.descriptor.truncate(0); + let idx = *self.name_map.get(func)?; + let code = match &module.sections()[self.code_idx.unwrap()] { + Section::Code(s) => s, + _ => panic!(), + }; + + // We should have a blank wasm and LLVM stack at both the start and end + // of the call. + assert_eq!(self.sp, self.mem.len() as i32); + assert_eq!(self.stack.len(), 0); + self.call(idx, code); + assert_eq!(self.stack.len(), 0); + assert_eq!(self.sp, self.mem.len() as i32); + Some(&self.descriptor) + } + + fn call(&mut self, idx: u32, code: &CodeSection) { + use parity_wasm::elements::Instruction::*; + + let idx = idx as usize; + assert!(idx >= self.imports); // can't call imported functions + let body = &code.bodies()[idx - self.imports]; + + // Allocate space for our call frame's local variables. All local + // variables should be of the `i32` type. + assert!(body.locals().len() <= 1, "too many local types"); + let locals = body.locals() + .get(0) + .map(|i| { + assert_eq!(i.value_type(), ValueType::I32); + i.count() + }) + .unwrap_or(0); + let mut locals = vec![0; locals as usize]; + + // Actual interpretation loop! We keep track of our stack's length to + // recover it as part of the `Return` instruction, and otherwise this is + // a pretty straightforward interpretation loop. + let before = self.stack.len(); + for instr in body.code().elements() { + match instr { + I32Const(x) => self.stack.push(*x), + SetLocal(i) => locals[*i as usize] = self.stack.pop().unwrap(), + GetLocal(i) => self.stack.push(locals[*i as usize]), + Call(idx) => { + if Some(*idx) == self.describe_idx { + self.descriptor.push(self.stack.pop().unwrap() as u32); + } else { + self.call(*idx, code); + } + } + GetGlobal(0) => self.stack.push(self.sp), + SetGlobal(0) => self.sp = self.stack.pop().unwrap(), + I32Sub => { + let b = self.stack.pop().unwrap(); + let a = self.stack.pop().unwrap(); + self.stack.push(a - b); + } + I32Add => { + let a = self.stack.pop().unwrap(); + let b = self.stack.pop().unwrap(); + self.stack.push(a + b); + } + I32Store(/* align = */ 2, offset) => { + let val = self.stack.pop().unwrap(); + let addr = self.stack.pop().unwrap() as u32; + self.mem[((addr + *offset) as usize) / 4] = val; + } + I32Load(/* align = */ 2, offset) => { + let addr = self.stack.pop().unwrap() as u32; + self.stack.push(self.mem[((addr + *offset) as usize) / 4]); + } + Return => self.stack.truncate(before), + End => break, + + // All other instructions shouldn't be used by our various + // descriptor functions. LLVM optimizations may mean that some + // of the above instructions aren't actually needed either, but + // the above instructions have empirically been required when + // executing our own test suite in wasm-bindgen. + // + // Note that LLVM may change over time to generate new + // instructions in debug mode, and we'll have to react to those + // sorts of changes as they arise. + s => panic!("unknown instruction {:?}", s), + } + } + assert_eq!(self.stack.len(), before); + } +} diff --git a/crates/wasm-interpreter/tests/smoke.rs b/crates/wasm-interpreter/tests/smoke.rs new file mode 100644 index 00000000..f2fe894d --- /dev/null +++ b/crates/wasm-interpreter/tests/smoke.rs @@ -0,0 +1,232 @@ +extern crate parity_wasm; +extern crate tempfile; +extern crate wasm_bindgen_wasm_interpreter; + +use std::fs; +use std::process::Command; + +use wasm_bindgen_wasm_interpreter::Interpreter; + +fn interpret(wat: &str, name: &str, result: Option<&[u32]>) { + let input = tempfile::NamedTempFile::new().unwrap(); + let output = tempfile::NamedTempFile::new().unwrap(); + fs::write(input.path(), wat).unwrap(); + let status = Command::new("wat2wasm") + .arg(input.path()) + .arg("-o").arg(output.path()) + .status() + .unwrap(); + println!("status: {}", status); + assert!(status.success()); + let module = parity_wasm::deserialize_file(output.path()).unwrap(); + let mut i = Interpreter::new(&module); + assert_eq!(i.interpret(name, &module), result); +} + +#[test] +fn smoke() { + let wat = r#" + (module + (export "foo" (func $foo)) + + (func $foo) + ) + "#; + interpret(wat, "foo", Some(&[])); + interpret(wat, "bar", None); + + let wat = r#" + (module + (import "__wbindgen_placeholder__" "__wbindgen_describe" + (func $__wbindgen_describe (param i32))) + + (func $foo + i32.const 1 + call $__wbindgen_describe + ) + + (export "foo" (func $foo)) + ) + "#; + interpret(wat, "foo", Some(&[1])); +} + +#[test] +fn locals() { + let wat = r#" + (module + (import "__wbindgen_placeholder__" "__wbindgen_describe" + (func $__wbindgen_describe (param i32))) + + (func $foo + (local i32) + i32.const 2 + set_local 0 + get_local 0 + call $__wbindgen_describe + ) + + (export "foo" (func $foo)) + ) + "#; + interpret(wat, "foo", Some(&[2])); +} + +#[test] +fn globals() { + let wat = r#" + (module + (import "__wbindgen_placeholder__" "__wbindgen_describe" + (func $__wbindgen_describe (param i32))) + + (global i32 (i32.const 0)) + + (func $foo + (local i32) + get_global 0 + set_local 0 + get_local 0 + call $__wbindgen_describe + get_local 0 + set_global 0 + ) + + (export "foo" (func $foo)) + ) + "#; + interpret(wat, "foo", Some(&[256])); +} + +#[test] +fn arithmetic() { + let wat = r#" + (module + (import "__wbindgen_placeholder__" "__wbindgen_describe" + (func $__wbindgen_describe (param i32))) + + (func $foo + i32.const 1 + i32.const 2 + i32.add + call $__wbindgen_describe + i32.const 2 + i32.const 1 + i32.sub + call $__wbindgen_describe + ) + + (export "foo" (func $foo)) + ) + "#; + interpret(wat, "foo", Some(&[3, 1])); +} + +#[test] +fn return_early() { + let wat = r#" + (module + (import "__wbindgen_placeholder__" "__wbindgen_describe" + (func $__wbindgen_describe (param i32))) + + (func $foo + i32.const 1 + i32.const 2 + call $__wbindgen_describe + return + ) + + (export "foo" (func $foo)) + ) + "#; + interpret(wat, "foo", Some(&[2])); +} + +#[test] +fn loads_and_stores() { + let wat = r#" + (module + (import "__wbindgen_placeholder__" "__wbindgen_describe" + (func $__wbindgen_describe (param i32))) + + (global i32 (i32.const 0)) + (memory 1) + + (func $foo + (local i32) + + ;; decrement the stack pointer, setting our local to the + ;; lowest address of our stack + get_global 0 + i32.const 16 + i32.sub + set_local 0 + get_local 0 + set_global 0 + + ;; store 1 at fp+0 + get_local 0 + i32.const 1 + i32.store offset=0 + + ;; store 2 at fp+4 + get_local 0 + i32.const 2 + i32.store offset=4 + + ;; store 3 at fp+8 + get_local 0 + i32.const 3 + i32.store offset=8 + + ;; load fp+0 and call + get_local 0 + i32.load offset=0 + call $__wbindgen_describe + + ;; load fp+4 and call + get_local 0 + i32.load offset=4 + call $__wbindgen_describe + + ;; load fp+8 and call + get_local 0 + i32.load offset=8 + call $__wbindgen_describe + + ;; increment our stack pointer + get_local 0 + i32.const 16 + i32.add + set_global 0 + ) + + (export "foo" (func $foo)) + ) + "#; + interpret(wat, "foo", Some(&[1, 2, 3])); +} + +#[test] +fn calling_functions() { + let wat = r#" + (module + (import "__wbindgen_placeholder__" "__wbindgen_describe" + (func $__wbindgen_describe (param i32))) + + (global i32 (i32.const 0)) + (memory 1) + + (func $foo + call $bar + ) + + (func $bar + i32.const 0 + call $__wbindgen_describe + ) + + (export "foo" (func $foo)) + ) + "#; + interpret(wat, "foo", Some(&[0])); +} diff --git a/src/describe.rs b/src/describe.rs index 34c90e2b..cbc0f7c9 100644 --- a/src/describe.rs +++ b/src/describe.rs @@ -41,6 +41,7 @@ tys! { OPTIONAL } +#[inline(always)] // see `interpret.rs` in the the cli-support crate pub fn inform(a: u32) { unsafe { super::__wbindgen_describe(a) } } @@ -130,8 +131,15 @@ if_std! { } } -fn _cnt() -> u32 { - 1 +macro_rules! cnt { + () => (0); + (A) => (1); + (A B) => (2); + (A B C) => (3); + (A B C D) => (4); + (A B C D E) => (5); + (A B C D E F) => (6); + (A B C D E F G) => (7); } macro_rules! doit { @@ -142,7 +150,7 @@ macro_rules! doit { { fn describe() { inform(FUNCTION); - inform(0 $(+ _cnt::<$var>())*); + inform(cnt!($($var)*)); $(<$var as WasmDescribe>::describe();)* inform(1); ::describe(); @@ -154,7 +162,7 @@ macro_rules! doit { { fn describe() { inform(FUNCTION); - inform(0 $(+ _cnt::<$var>())*); + inform(cnt!($($var)*)); $(<$var as WasmDescribe>::describe();)* inform(0); } @@ -166,7 +174,7 @@ macro_rules! doit { { fn describe() { inform(FUNCTION); - inform(0 $(+ _cnt::<$var>())*); + inform(cnt!($($var)*)); $(<$var as WasmDescribe>::describe();)* inform(1); ::describe(); @@ -178,7 +186,7 @@ macro_rules! doit { { fn describe() { inform(FUNCTION); - inform(0 $(+ _cnt::<$var>())*); + inform(cnt!($($var)*)); $(<$var as WasmDescribe>::describe();)* inform(0); } From bf791efe2c623b1b20053e8e39c3aa4e8eb60a1c Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 20 Aug 2018 16:18:09 -0700 Subject: [PATCH 42/71] Fix wasm-interpreter with mixed types of imports We counted all imports until the index of the descriptor function, now we only count imported functions --- crates/wasm-interpreter/src/lib.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/crates/wasm-interpreter/src/lib.rs b/crates/wasm-interpreter/src/lib.rs index bac96390..da397f3d 100644 --- a/crates/wasm-interpreter/src/lib.rs +++ b/crates/wasm-interpreter/src/lib.rs @@ -92,14 +92,19 @@ impl Interpreter { // function. if let Some(i) = module.import_section() { ret.imports = i.functions(); - for (i, entry) in i.entries().iter().enumerate() { + let mut idx = 0; + for entry in i.entries() { + match entry.external() { + External::Function(_) => idx += 1, + _ => continue, + } if entry.module() != "__wbindgen_placeholder__" { continue } if entry.field() != "__wbindgen_describe" { continue } - ret.describe_idx = Some(i as u32); + ret.describe_idx = Some(idx - 1 as u32); } } @@ -184,6 +189,13 @@ impl Interpreter { SetLocal(i) => locals[*i as usize] = self.stack.pop().unwrap(), GetLocal(i) => self.stack.push(locals[*i as usize]), Call(idx) => { + // If this function is calling the `__wbindgen_describe` + // function, which we've precomputed the index for, then + // it's telling us about the next `u32` element in the + // descriptor to return. We "call" the imported function + // here by directly inlining it. + // + // Otherwise this is a normal call so we recurse. if Some(*idx) == self.describe_idx { self.descriptor.push(self.stack.pop().unwrap() as u32); } else { From 304af77015e9b5375d9d8737160ce19c34ad5a35 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 22 Aug 2018 08:12:59 +0000 Subject: [PATCH 43/71] Bump webpack from 4.16.5 to 4.17.0 Bumps [webpack](https://github.com/webpack/webpack) from 4.16.5 to 4.17.0. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v4.16.5...v4.17.0) Signed-off-by: dependabot[bot] --- package-lock.json | 115 ++++++++++++++++++++++++++-------------------- package.json | 2 +- yarn.lock | 6 +-- 3 files changed, 69 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf26ed76..7cb96541 100644 --- a/package-lock.json +++ b/package-lock.json @@ -221,15 +221,15 @@ } }, "ajv": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz", - "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.1" + "uri-js": "^4.2.2" } }, "ajv-keywords": { @@ -488,6 +488,12 @@ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", @@ -725,14 +731,6 @@ "ssri": "^5.2.4", "unique-filename": "^1.1.0", "y18n": "^4.0.0" - }, - "dependencies": { - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - } } }, "cache-base": { @@ -1321,9 +1319,9 @@ "dev": true }, "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -1453,6 +1451,16 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", @@ -1923,7 +1931,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1944,12 +1953,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1964,17 +1975,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2091,7 +2105,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2103,6 +2118,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2117,6 +2133,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2124,12 +2141,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -2148,6 +2167,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2228,7 +2248,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2240,6 +2261,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2325,7 +2347,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2361,6 +2384,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2380,6 +2404,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2423,12 +2448,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -3511,9 +3538,9 @@ "dev": true }, "neo-async": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", - "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", + "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", "dev": true }, "next-tick": { @@ -4378,9 +4405,9 @@ "dev": true }, "schema-utils": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", - "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", "dev": true, "requires": { "ajv": "^6.1.0", @@ -5136,9 +5163,9 @@ } }, "uglifyjs-webpack-plugin": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz", - "integrity": "sha512-1VicfKhCYHLS8m1DCApqBhoulnASsEoJ/BvpUpP4zoNAPpKzdH+ghk0olGJMmwX2/jprK2j3hAHdUbczBSy2FA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", "dev": true, "requires": { "cacache": "^10.0.4", @@ -5401,9 +5428,9 @@ } }, "webpack": { - "version": "4.16.5", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.16.5.tgz", - "integrity": "sha512-i5cHYHonzSc1zBuwB5MSzW4v9cScZFbprkHK8ZgzPDCRkQXGGpYzPmJhbus5bOrZ0tXTcQp+xyImRSvKb0b+Kw==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.17.0.tgz", + "integrity": "sha512-5oVYOsryM1h7AC83l64iZx7IrK8DlMkbFOsT2R5frwz/hbdoyjHb8/ybBEFsMEavKa2IaqVlx5b4uYiFcT+2Nw==", "dev": true, "requires": { "@webassemblyjs/ast": "1.5.13", @@ -5431,18 +5458,6 @@ "uglifyjs-webpack-plugin": "^1.2.4", "watchpack": "^1.5.0", "webpack-sources": "^1.0.1" - }, - "dependencies": { - "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - } } }, "webpack-cli": { diff --git a/package.json b/package.json index 33d0962b..f088abd5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "license": "MIT", "devDependencies": { - "webpack": "^4.16.5", + "webpack": "^4.17.0", "webpack-cli": "^3.1.0", "webpack-dev-server": "^3.1.5" } diff --git a/yarn.lock b/yarn.lock index 6a305ac5..6e4d847c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3510,9 +3510,9 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.16.5: - version "4.16.5" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.16.5.tgz#29fb39462823d7eb8aefcab8b45f7f241db0d092" +webpack@^4.17.0: + version "4.17.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.17.0.tgz#7e8df9529dd5fca65c700b3341a001aeae27c749" dependencies: "@webassemblyjs/ast" "1.5.13" "@webassemblyjs/helper-module-context" "1.5.13" From c99b27a367339dcb91775b67cb244944b7823553 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 23 Aug 2018 08:12:54 +0000 Subject: [PATCH 44/71] Bump webpack from 4.17.0 to 4.17.1 Bumps [webpack](https://github.com/webpack/webpack) from 4.17.0 to 4.17.1. - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v4.17.0...v4.17.1) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- package.json | 2 +- yarn.lock | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7cb96541..af0ccb42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5428,9 +5428,9 @@ } }, "webpack": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.17.0.tgz", - "integrity": "sha512-5oVYOsryM1h7AC83l64iZx7IrK8DlMkbFOsT2R5frwz/hbdoyjHb8/ybBEFsMEavKa2IaqVlx5b4uYiFcT+2Nw==", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.17.1.tgz", + "integrity": "sha512-vdPYogljzWPhFKDj3Gcp01Vqgu7K3IQlybc3XIdKSQHelK1C3eIQuysEUR7MxKJmdandZlQB/9BG2Jb1leJHaw==", "dev": true, "requires": { "@webassemblyjs/ast": "1.5.13", diff --git a/package.json b/package.json index f088abd5..8e926008 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "license": "MIT", "devDependencies": { - "webpack": "^4.17.0", + "webpack": "^4.17.1", "webpack-cli": "^3.1.0", "webpack-dev-server": "^3.1.5" } diff --git a/yarn.lock b/yarn.lock index 6e4d847c..f143d239 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3510,9 +3510,9 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.17.0: - version "4.17.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.17.0.tgz#7e8df9529dd5fca65c700b3341a001aeae27c749" +webpack@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.17.1.tgz#0f026e3d823f3fc604f811ed3ea8f0d9b267fb1e" dependencies: "@webassemblyjs/ast" "1.5.13" "@webassemblyjs/helper-module-context" "1.5.13" From 042cfad5ce9a5b80e89fb3a5e7e6df916483f58a Mon Sep 17 00:00:00 2001 From: Roberto Huertas Date: Fri, 24 Aug 2018 01:25:43 +0200 Subject: [PATCH 45/71] feat(extends): extend promise --- crates/js-sys/src/lib.rs | 1 + crates/js-sys/tests/wasm/Promise.rs | 11 +++++++++++ crates/js-sys/tests/wasm/main.rs | 1 + 3 files changed, 13 insertions(+) create mode 100644 crates/js-sys/tests/wasm/Promise.rs diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index ff2362c4..a4aa02be 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3783,6 +3783,7 @@ extern { /// an asynchronous operation, and its resulting value. /// /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise + #[wasm_bindgen(extends = Object)] pub type Promise; /// Creates a new `Promise` with the provided executor `cb` diff --git a/crates/js-sys/tests/wasm/Promise.rs b/crates/js-sys/tests/wasm/Promise.rs new file mode 100644 index 00000000..a070b784 --- /dev/null +++ b/crates/js-sys/tests/wasm/Promise.rs @@ -0,0 +1,11 @@ +use wasm_bindgen_test::*; +use wasm_bindgen::JsCast; +use js_sys::*; + +#[wasm_bindgen_test] +fn promise_inheritance() { + let promise = Promise::new(&mut |_, _| ()); + assert!(promise.is_instance_of::()); + assert!(promise.is_instance_of::()); + let _: &Object = promise.as_ref(); +} diff --git a/crates/js-sys/tests/wasm/main.rs b/crates/js-sys/tests/wasm/main.rs index 285e2ae3..c72a998d 100755 --- a/crates/js-sys/tests/wasm/main.rs +++ b/crates/js-sys/tests/wasm/main.rs @@ -26,6 +26,7 @@ pub mod MapIterator; pub mod Math; pub mod Number; pub mod Object; +pub mod Promise; pub mod Proxy; pub mod RangeError; pub mod ReferenceError; From 9729efe50e2c374a59dac2a0c9dfdd8ff205d855 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 24 Aug 2018 20:45:11 -0700 Subject: [PATCH 46/71] Remove casting to `&mut T` for JS casts I discussed this with @fitzgen awhile back and this sort of casting seems especially problematic when you have code along the lines of: let mut x: HtmlElement = ...; { let y: &mut JsValue = x.as_ref(); *y = 3.into(); } x.some_html_element_method(); as that will immediately throw! We didn't have a use case for mutable casting other than consistency, so this commit removes it for now. We can possibly add it back in later if motivated, but for now it seems reasonable to try to avoid these sorts of pitfalls! --- crates/backend/src/codegen.rs | 23 ----------------- src/cast.rs | 48 +---------------------------------- src/lib.rs | 5 ---- 3 files changed, 1 insertion(+), 75 deletions(-) diff --git a/crates/backend/src/codegen.rs b/crates/backend/src/codegen.rs index 45711ba3..8bdd391c 100644 --- a/crates/backend/src/codegen.rs +++ b/crates/backend/src/codegen.rs @@ -618,9 +618,6 @@ impl ToTokens for ast::ImportType { fn as_ref(&self) -> &JsValue { &self.obj } } - impl AsMut for #rust_name { - fn as_mut(&mut self) -> &mut JsValue { &mut self.obj } - } impl From<#rust_name> for JsValue { fn from(obj: #rust_name) -> JsValue { @@ -656,12 +653,6 @@ impl ToTokens for ast::ImportType { // wrapper around `val` unsafe { &*(val as *const JsValue as *const #rust_name) } } - - fn unchecked_from_js_mut(val: &mut JsValue) -> &mut Self { - // Should be safe because `#rust_name` is a transparent - // wrapper around `val` - unsafe { &mut *(val as *mut JsValue as *mut #rust_name) } - } } () @@ -683,13 +674,6 @@ impl ToTokens for ast::ImportType { #superclass::unchecked_from_js_ref(self.as_ref()) } } - - impl AsMut<#superclass> for #rust_name { - fn as_mut(&mut self) -> &mut #superclass { - use wasm_bindgen::JsCast; - #superclass::unchecked_from_js_mut(self.as_mut()) - } - } }).to_tokens(tokens); } } @@ -1191,9 +1175,6 @@ impl ToTokens for ast::Dictionary { impl AsRef for #name { fn as_ref(&self) -> &JsValue { self.obj.as_ref() } } - impl AsMut for #name { - fn as_mut(&mut self) -> &mut JsValue { self.obj.as_mut() } - } // Boundary conversion impls impl WasmDescribe for #name { @@ -1257,10 +1238,6 @@ impl ToTokens for ast::Dictionary { fn unchecked_from_js_ref(val: &JsValue) -> &Self { unsafe { &*(val as *const JsValue as *const #name) } } - - fn unchecked_from_js_mut(val: &mut JsValue) -> &mut Self { - unsafe { &mut *(val as *mut JsValue as *mut #name) } - } } }; }).to_tokens(tokens); diff --git a/src/cast.rs b/src/cast.rs index 928283d3..f856761b 100644 --- a/src/cast.rs +++ b/src/cast.rs @@ -14,7 +14,7 @@ use JsValue; /// [rfc]: https://github.com/rustwasm/rfcs/pull/2 pub trait JsCast where - Self: AsRef + AsMut + Into, + Self: AsRef + Into, { /// Test whether this JS value is an instance of the type `T`. /// @@ -61,24 +61,6 @@ where } } - /// Performs a dynamic cast (checked at runtime) of this value into the - /// target type `T`. - /// - /// This method will return `None` is `self.is_instance_of::()` - /// returns `false`, and otherwise it will return `Some(&mut T)` - /// manufactured with an unchecked cast (verified correct via the - /// `instanceof` operation). - fn dyn_mut(&mut self) -> Option<&mut T> - where - T: JsCast, - { - if self.is_instance_of::() { - Some(self.unchecked_mut()) - } else { - None - } - } - /// Performs a zero-cost unchecked cast into the specified type. /// /// This method will convert the `self` value to the type `T`, where both @@ -111,24 +93,6 @@ where T::unchecked_from_js_ref(self.as_ref()) } - /// Performs a zero-cost unchecked cast into a mutable reference to the - /// specified type. - /// - /// This method will convert the `self` value to the type `T`, where both - /// `self` and `T` are simple wrappers around `JsValue`. This method **does - /// not check whether `self` is an instance of `T`**. If used incorrectly - /// then this method may cause runtime exceptions in both Rust and JS, this - /// should be used with caution. - /// - /// This method, unlike `unchecked_into`, does not consume ownership of - /// `self` and instead works over a utable reference. - fn unchecked_mut(&mut self) -> &mut T - where - T: JsCast, - { - T::unchecked_from_js_mut(self.as_mut()) - } - /// Performs a dynamic `instanceof` check to see whether the `JsValue` /// provided is an instance of this type. /// @@ -152,14 +116,4 @@ where /// This is intended to be an internal implementation detail, you likely /// won't need to call this. fn unchecked_from_js_ref(val: &JsValue) -> &Self; - - /// Performs a zero-cost unchecked conversion from a `&mut JsValue` into an - /// instance of `&mut Self`. - /// - /// Note the safety of this method, which basically means that `Self` must - /// be a newtype wrapper around `JsValue`. - /// - /// This is intended to be an internal implementation detail, you likely - /// won't need to call this. - fn unchecked_from_js_mut(val: &mut JsValue) -> &mut Self; } diff --git a/src/lib.rs b/src/lib.rs index 7c9ce9f9..b26c872d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -370,11 +370,6 @@ impl JsCast for JsValue { fn instanceof(_val: &JsValue) -> bool { true } fn unchecked_from_js(val: JsValue) -> Self { val } fn unchecked_from_js_ref(val: &JsValue) -> &Self { val } - fn unchecked_from_js_mut(val: &mut JsValue) -> &mut Self { val } -} - -impl AsMut for JsValue { - fn as_mut(&mut self) -> &mut JsValue { self } } impl AsRef for JsValue { From 4f4da747adbe1afc284113410c811e09e95db401 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sat, 25 Aug 2018 10:45:51 -0700 Subject: [PATCH 47/71] Remove a hack around an LLVM bug This has since been fixed in rust-lang/rust#52506 --- crates/cli-support/src/lib.rs | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/crates/cli-support/src/lib.rs b/crates/cli-support/src/lib.rs index fdb09dc6..d646b92c 100644 --- a/crates/cli-support/src/lib.rs +++ b/crates/cli-support/src/lib.rs @@ -321,7 +321,6 @@ fn extract_programs(module: &mut Module) -> Result, Error> to_remove.push(i); let mut payload = custom.payload(); - let mut added_programs = Vec::new(); while payload.len() > 0 { let len = ((payload[0] as usize) << 0) | ((payload[1] as usize) << 8) @@ -330,19 +329,6 @@ fn extract_programs(module: &mut Module) -> Result, Error> let (a, b) = payload[4..].split_at(len as usize); payload = b; - // Due to a nasty LLVM bug it's currently possible for LLVM to - // duplicate custom section directives in intermediate object files. - // This means that we could see multiple program directives when in - // fact we were originally only meant to see one! - // - // Work around the issue here until the upstream bug, - // https://bugs.llvm.org/show_bug.cgi?id=38184, is hopefully fixed - // via some other means. - if added_programs.iter().any(|p| a == *p) { - continue - } - added_programs.push(a); - let p: shared::ProgramOnlySchema = match serde_json::from_slice(&a) { Ok(f) => f, Err(e) => bail!("failed to decode what looked like wasm-bindgen data: {}", e), From bb7ca348c2293dbd477b39d6dbe7eaa5a8daddc2 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Aug 2018 13:31:31 -0700 Subject: [PATCH 48/71] Add WebAssembly.Memory to js-sys This adds definitions for the `WebAssembly.Memory` type to `js-sys`. --- crates/js-sys/src/lib.rs | 38 +++++++++++++++++++++++++ crates/js-sys/tests/wasm/WebAssembly.rs | 17 +++++++++++ 2 files changed, 55 insertions(+) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index a4aa02be..92f8b599 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -3005,6 +3005,44 @@ pub mod WebAssembly { #[wasm_bindgen(method, getter, js_namespace = WebAssembly)] pub fn length(this: &Table) -> u32; } + + // WebAssembly.Memory + #[wasm_bindgen] + extern "C" { + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory + #[wasm_bindgen(js_namespace = WebAssembly, extends = Object)] + #[derive(Clone, Debug)] + pub type Memory; + + /// The `WebAssembly.Memory()` constructor creates a new `Memory` object + /// which is a resizable `ArrayBuffer` that holds the raw bytes of + /// memory accessed by a WebAssembly `Instance`. + /// + /// A memory created by JavaScript or in WebAssembly code will be + /// accessible and mutable from both JavaScript and WebAssembly. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory + #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)] + pub fn new(descriptor: &Object) -> Result; + + /// An accessor property that returns the buffer contained in the + /// memory. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer + #[wasm_bindgen(method, getter, js_namespace = WebAssembly)] + pub fn buffer(this: &Memory) -> JsValue; + + /// The `grow()` protoype method of the `Memory` object increases the + /// size of the memory instance by a specified number of WebAssembly + /// pages. + /// + /// Takes the number of pages to grow (64KiB in size) and returns the + /// previous size of memory, in pages. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow + #[wasm_bindgen(method, js_namespace = WebAssembly)] + pub fn grow(this: &Memory, pages: u32) -> u32; + } } // JSON diff --git a/crates/js-sys/tests/wasm/WebAssembly.rs b/crates/js-sys/tests/wasm/WebAssembly.rs index fe16378e..35207f96 100644 --- a/crates/js-sys/tests/wasm/WebAssembly.rs +++ b/crates/js-sys/tests/wasm/WebAssembly.rs @@ -153,3 +153,20 @@ fn runtime_error_inheritance() { let _: &Error = error.as_ref(); } + +#[wasm_bindgen_test] +fn memory_works() { + let obj = Object::new(); + Reflect::set(obj.as_ref(), &"initial".into(), &1.into()); + let mem = WebAssembly::Memory::new(&obj).unwrap(); + assert!(mem.is_instance_of::()); + assert!(mem.is_instance_of::()); + assert!(mem.buffer().is_instance_of::()); + assert_eq!(mem.grow(1), 1); + assert_eq!(mem.grow(2), 2); + assert_eq!(mem.grow(3), 4); + assert_eq!( + mem.buffer().dyn_into::().unwrap().byte_length(), + 7 * 64 * 1024, + ); +} From 335c0b1ab6d27b9b578de8eb5fb9696025220c4a Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 20 Aug 2018 23:33:29 -0700 Subject: [PATCH 49/71] Add support for modules importing memory The default of Rust wasm binaries is to export the memory that they contain, but LLD also supports an `--import-memory` option where memory is imported into a module instead. It's looking like importing memory is along the lines of how shared memory wasm modules will work (they'll all import the same memory). This commit adds support to wasm-bindgen to support modules which import memory. Memory accessors are tweaked to no longer always assume that the wasm module exports its memory. Additionally JS bindings will create a `memory` option automatically because LLD always imports memory from an `env` module which won't actually exist. --- crates/cli-support/src/js/mod.rs | 54 ++++++++++++++++++++++++++-- crates/cli-support/src/lib.rs | 1 + crates/cli-support/src/wasm2es6js.rs | 13 ------- 3 files changed, 53 insertions(+), 15 deletions(-) diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index a1986c35..efedf96e 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -43,6 +43,7 @@ pub struct Context<'a> { pub exported_classes: HashMap, pub function_table_needed: bool, pub interpreter: &'a mut Interpreter, + pub memory_init: Option, } #[derive(Default)] @@ -377,6 +378,7 @@ impl<'a> Context<'a> { )) })?; + self.create_memory_export(); self.unexport_unused_internal_exports(); self.gc()?; @@ -685,6 +687,20 @@ impl<'a> Context<'a> { } } + fn create_memory_export(&mut self) { + let limits = match self.memory_init.clone() { + Some(limits) => limits, + None => return, + }; + let mut initializer = String::from("new WebAssembly.Memory({"); + initializer.push_str(&format!("initial:{}", limits.initial())); + if let Some(max) = limits.maximum() { + initializer.push_str(&format!(",maximum:{}", max)); + } + initializer.push_str("})"); + self.export("memory", &initializer, None); + } + fn rewrite_imports(&mut self, module_name: &str) { for (name, contents) in self._rewrite_imports(module_name) { self.export(&name, &contents, None); @@ -715,6 +731,15 @@ impl<'a> Context<'a> { continue; } + // If memory is imported we'll have exported it from the shim module + // so let's import it from there. + if import.field() == "memory" { + import.module_mut().truncate(0); + import.module_mut().push_str("./"); + import.module_mut().push_str(module_name); + continue + } + let renamed_import = format!("__wbindgen_{}", import.field()); let mut bind_math = |expr: &str| { math_imports.push((renamed_import.clone(), format!("function{}", expr))); @@ -1333,18 +1358,20 @@ impl<'a> Context<'a> { if !self.exposed_globals.insert(name) { return; } + let mem = self.memory(); self.global(&format!( " let cache{name} = null; function {name}() {{ - if (cache{name} === null || cache{name}.buffer !== wasm.memory.buffer) {{ - cache{name} = new {js}(wasm.memory.buffer); + if (cache{name} === null || cache{name}.buffer !== {mem}.buffer) {{ + cache{name} = new {js}({mem}.buffer); }} return cache{name}; }} ", name = name, js = js, + mem = mem, )); } @@ -1690,6 +1717,29 @@ impl<'a> Context<'a> { fn use_node_require(&self) -> bool { self.config.nodejs && !self.config.nodejs_experimental_modules } + + fn memory(&mut self) -> &'static str { + if self.module.memory_section().is_some() { + return "wasm.memory"; + } + + let (entry, mem) = self.module.import_section() + .expect("must import memory") + .entries() + .iter() + .filter_map(|i| { + match i.external() { + External::Memory(m) => Some((i, m)), + _ => None, + } + }) + .next() + .expect("must import memory"); + assert_eq!(entry.module(), "env"); + assert_eq!(entry.field(), "memory"); + self.memory_init = Some(mem.limits().clone()); + "memory" + } } impl<'a, 'b> SubContext<'a, 'b> { diff --git a/crates/cli-support/src/lib.rs b/crates/cli-support/src/lib.rs index fdb09dc6..37280354 100644 --- a/crates/cli-support/src/lib.rs +++ b/crates/cli-support/src/lib.rs @@ -200,6 +200,7 @@ impl Bindgen { module: &mut module, function_table_needed: false, interpreter: &mut instance, + memory_init: None, }; for program in programs.iter() { js::SubContext { diff --git a/crates/cli-support/src/wasm2es6js.rs b/crates/cli-support/src/wasm2es6js.rs index 9d7cda53..517ee635 100644 --- a/crates/cli-support/src/wasm2es6js.rs +++ b/crates/cli-support/src/wasm2es6js.rs @@ -150,19 +150,6 @@ impl Output { if let Some(i) = self.module.import_section() { let mut set = HashSet::new(); for entry in i.entries() { - match *entry.external() { - External::Function(_) => {} - External::Table(_) => { - bail!("wasm imports a table which isn't supported yet"); - } - External::Memory(_) => { - bail!("wasm imports memory which isn't supported yet"); - } - External::Global(_) => { - bail!("wasm imports globals which aren't supported yet"); - } - } - if !set.insert(entry.module()) { continue; } From 9225642eaa527358d43e28765bbf8f09720be502 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 27 Aug 2018 08:13:19 +0000 Subject: [PATCH 50/71] Bump webpack-dev-server from 3.1.5 to 3.1.6 Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 3.1.5 to 3.1.6. - [Release notes](https://github.com/webpack/webpack-dev-server/releases) - [Changelog](https://github.com/webpack/webpack-dev-server/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-dev-server/compare/v3.1.5...v3.1.6) Signed-off-by: dependabot[bot] --- package-lock.json | 410 ++++++++++++---------------------------------- package.json | 2 +- yarn.lock | 203 +++-------------------- 3 files changed, 129 insertions(+), 486 deletions(-) diff --git a/package-lock.json b/package-lock.json index af0ccb42..06d75bd1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -238,6 +238,12 @@ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", "dev": true }, + "ansi-colors": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.0.5.tgz", + "integrity": "sha512-VVjWpkfaphxUBFarydrQ3n26zX5nIK7hcbT3/ielrvwDDyBBjuh2vuSw1P9zkPq0cfqvdw7lkYHnu+OLSfIBsg==", + "dev": true + }, "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -311,16 +317,6 @@ "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", "dev": true }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" - } - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -1137,15 +1133,6 @@ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", "dev": true }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -1179,16 +1166,6 @@ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", "dev": true }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" - } - }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -1230,6 +1207,20 @@ } } }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -1383,62 +1374,6 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", - "dev": true, - "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, - "requires": { - "is-callable": "^1.1.1", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" - } - }, - "es5-ext": { - "version": "0.10.45", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", - "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1842,9 +1777,9 @@ } }, "follow-redirects": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.1.tgz", - "integrity": "sha512-v9GI1hpaqq1ZZR6pBD1+kI7O24PhDvNGNodjS3MdcEqyrahCp8zbtpv+2B/krUnSmUH80lbAS7MrdeK5IylgKg==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz", + "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==", "dev": true, "requires": { "debug": "^3.1.0" @@ -1856,12 +1791,6 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -2459,12 +2388,6 @@ } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -2530,6 +2453,27 @@ "integrity": "sha512-IGGoWyy46gnsPYwGeTh53oTfHedfOh9IUI3adk9tCIcli6AG55TugvhIUh99MxMWKSF09tWS40Un9Mt5HYaEOA==", "dev": true }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -2542,27 +2486,12 @@ "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -2799,9 +2728,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", - "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", "dev": true }, "is-accessor-descriptor": { @@ -2854,12 +2783,6 @@ "builtin-modules": "^1.0.0" } }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -2880,12 +2803,6 @@ } } }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -3000,27 +2917,12 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -3113,6 +3015,14 @@ "pify": "^2.0.0", "pinkie-promise": "^2.0.0", "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "loader-runner": { @@ -3154,31 +3064,12 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, "loglevel": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", "dev": true }, - "loglevelnext": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", - "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", - "dev": true, - "requires": { - "es6-symbol": "^3.1.1", - "object.assign": "^4.1.0" - } - }, "long": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", @@ -3368,18 +3259,18 @@ "dev": true }, "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==", + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", "dev": true }, "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "dev": true, "requires": { - "mime-db": "~1.35.0" + "mime-db": "~1.36.0" } }, "mimic-fn": { @@ -3543,12 +3434,6 @@ "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", "dev": true }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "nice-try": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", @@ -3673,12 +3558,6 @@ } } }, - "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", - "dev": true - }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -3688,18 +3567,6 @@ "isobject": "^3.0.0" } }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -3758,12 +3625,12 @@ } }, "original": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.1.tgz", - "integrity": "sha512-IEvtB5vM5ULvwnqMxWBLxkS13JIEXbakizMSo3yoPNPCIWzg8TG3Usn/UhXoZFM/m+FuEA20KdzPSFq/0rS+UA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", "dev": true, "requires": { - "url-parse": "~1.4.0" + "url-parse": "^1.4.3" } }, "os-browserify": { @@ -3927,6 +3794,14 @@ "graceful-fs": "^4.1.2", "pify": "^2.0.0", "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "pbkdf2": { @@ -3943,9 +3818,9 @@ } }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pinkie": { @@ -3973,9 +3848,9 @@ } }, "portfinder": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", - "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz", + "integrity": "sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==", "dev": true, "requires": { "async": "^1.5.2", @@ -4019,13 +3894,13 @@ "dev": true }, "proxy-addr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", - "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", "dev": true, "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.6.0" + "ipaddr.js": "1.8.0" } }, "prr": { @@ -5383,9 +5258,9 @@ "dev": true }, "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -5529,18 +5404,18 @@ } }, "webpack-dev-middleware": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz", - "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz", + "integrity": "sha512-YJLMF/96TpKXaEQwaLEo+Z4NDK8aV133ROF6xp9pe3gQoS7sxfpXh4Rv9eC+8vCvWfmDjRQaMSlRPbO+9G6jgA==", "dev": true, "requires": { "loud-rejection": "^1.6.0", "memory-fs": "~0.4.1", - "mime": "^2.1.0", + "mime": "^2.3.1", "path-is-absolute": "^1.0.0", "range-parser": "^1.0.3", "url-join": "^4.0.0", - "webpack-log": "^1.0.1" + "webpack-log": "^2.0.0" }, "dependencies": { "mime": { @@ -5552,13 +5427,12 @@ } }, "webpack-dev-server": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.5.tgz", - "integrity": "sha512-LVHg+EPwZLHIlfvokSTgtJqO/vI5CQi89fASb5JEDtVMDjY0yuIEqPPdMiKaBJIB/Ab7v/UN/sYZ7WsZvntQKw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.6.tgz", + "integrity": "sha512-uc6YP0DzzW4870TDKoK73uONytLgu27h+x6XfgSvERRChkpd5Ils7US6d5k22LBoh0sDkmPZ6ERHSsrkwtkFFQ==", "dev": true, "requires": { "ansi-html": "0.0.7", - "array-includes": "^3.0.3", "bonjour": "^3.5.0", "chokidar": "^2.0.0", "compression": "^1.5.2", @@ -5582,52 +5456,11 @@ "spdy": "^3.4.1", "strip-ansi": "^3.0.0", "supports-color": "^5.1.0", - "webpack-dev-middleware": "3.1.3", - "webpack-log": "^1.1.2", - "yargs": "11.0.0" + "webpack-dev-middleware": "3.2.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.1" }, "dependencies": { - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -5636,45 +5469,17 @@ "requires": { "ansi-regex": "^2.0.0" } - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - } } } }, "webpack-log": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", - "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", "dev": true, "requires": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "loglevelnext": "^1.0.1", - "uuid": "^3.1.0" + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" } }, "webpack-sources": { @@ -5882,15 +5687,6 @@ } } } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } } } } diff --git a/package.json b/package.json index 8e926008..fee3233d 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,6 @@ "devDependencies": { "webpack": "^4.17.1", "webpack-cli": "^3.1.0", - "webpack-dev-server": "^3.1.5" + "webpack-dev-server": "^3.1.6" } } diff --git a/yarn.lock b/yarn.lock index f143d239..f9c3b944 100644 --- a/yarn.lock +++ b/yarn.lock @@ -172,6 +172,10 @@ ajv@^6.1.0: json-schema-traverse "^0.4.1" uri-js "^4.2.1" +ansi-colors@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.5.tgz#cb9dc64993b64fd6945485f797fc3853137d9a7b" + ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" @@ -236,13 +240,6 @@ array-flatten@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -510,7 +507,7 @@ camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1: +chalk@^2.0.0, chalk@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -774,12 +771,6 @@ cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" @@ -796,7 +787,7 @@ debug@^3.1.0: dependencies: ms "2.0.0" -decamelize@^1.1.1, decamelize@^1.1.2: +decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -818,13 +809,6 @@ deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -982,47 +966,6 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.7.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" - is-regex "^1.0.4" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.45" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.45.tgz#0bfdf7b473da5919d5adf3bd25ceb754fccc3653" - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "1" - -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -1257,10 +1200,6 @@ for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -1308,10 +1247,6 @@ fsevents@^1.2.2: nan "^2.9.2" node-pre-gyp "^0.10.0" -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -1385,10 +1320,6 @@ has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" -has-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -1420,12 +1351,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - dependencies: - function-bind "^1.1.1" - hash-base@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" @@ -1648,10 +1573,6 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -1664,10 +1585,6 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -1768,20 +1685,10 @@ is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -1902,23 +1809,10 @@ lodash@^4.17.5, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" -log-symbols@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - dependencies: - chalk "^2.0.1" - loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" -loglevelnext@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" - dependencies: - es6-symbol "^3.1.1" - object.assign "^4.1.0" - long@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" @@ -2055,7 +1949,7 @@ mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" -mime@^2.1.0: +mime@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" @@ -2193,10 +2087,6 @@ neo-async@^2.5.0: version "2.5.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" -next-tick@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - nice-try@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" @@ -2312,25 +2202,12 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-keys@^1.0.11, object-keys@^1.0.8: - version "1.0.12" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" - object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" dependencies: isobject "^3.0.0" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -3394,7 +3271,7 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" -uuid@^3.0.1, uuid@^3.1.0: +uuid@^3.0.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -3449,24 +3326,23 @@ webpack-cli@^3.1.0: v8-compile-cache "^2.0.0" yargs "^12.0.1" -webpack-dev-middleware@3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz#8b32aa43da9ae79368c1bf1183f2b6cf5e1f39ed" +webpack-dev-middleware@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz#a20ceef194873710052da678f3c6ee0aeed92552" dependencies: loud-rejection "^1.6.0" memory-fs "~0.4.1" - mime "^2.1.0" + mime "^2.3.1" path-is-absolute "^1.0.0" range-parser "^1.0.3" url-join "^4.0.0" - webpack-log "^1.0.1" + webpack-log "^2.0.0" -webpack-dev-server@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.5.tgz#87477252e1ac6789303fb8cd3e585fa5d508a401" +webpack-dev-server@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.6.tgz#8617503768b1131fd539cf43c3e2e63bd34c1521" dependencies: ansi-html "0.0.7" - array-includes "^3.0.3" bonjour "^3.5.0" chokidar "^2.0.0" compression "^1.5.2" @@ -3490,18 +3366,16 @@ webpack-dev-server@^3.1.5: spdy "^3.4.1" strip-ansi "^3.0.0" supports-color "^5.1.0" - webpack-dev-middleware "3.1.3" - webpack-log "^1.1.2" - yargs "11.0.0" + webpack-dev-middleware "3.2.0" + webpack-log "^2.0.0" + yargs "12.0.1" -webpack-log@^1.0.1, webpack-log@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" dependencies: - chalk "^2.1.0" - log-symbols "^2.1.0" - loglevelnext "^1.0.1" - uuid "^3.1.0" + ansi-colors "^3.0.0" + uuid "^3.3.2" webpack-sources@^1.0.1, webpack-sources@^1.1.0: version "1.1.0" @@ -3592,10 +3466,6 @@ xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -3614,30 +3484,7 @@ yargs-parser@^10.1.0: dependencies: camelcase "^4.1.0" -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - dependencies: - camelcase "^4.1.0" - -yargs@11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^12.0.1: +yargs@12.0.1, yargs@^12.0.1: version "12.0.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.1.tgz#6432e56123bb4e7c3562115401e98374060261c2" dependencies: From 85fd49f90afb4c23bc6d9c206aeab30fc27623be Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Aug 2018 09:59:47 -0700 Subject: [PATCH 51/71] Fix importing same types in two modules/crates This'll hopefully fix fallout from 4f4da747adbe1 --- crates/cli-support/src/js/mod.rs | 14 ++++++++++++++ crates/cli-support/src/lib.rs | 2 ++ 2 files changed, 16 insertions(+) diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index efedf96e..10ce5a76 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -24,6 +24,8 @@ pub struct Context<'a> { pub typescript: String, pub exposed_globals: HashSet<&'static str>, pub required_internal_exports: HashSet<&'static str>, + pub imported_functions: HashSet, + pub imported_statics: HashSet, pub config: &'a Bindgen, pub module: &'a mut Module, @@ -1884,6 +1886,12 @@ impl<'a, 'b> SubContext<'a, 'b> { info: &shared::Import, import: &shared::ImportStatic, ) -> Result<(), Error> { + // The same static can be imported in multiple locations, so only + // generate bindings once for it. + if !self.cx.imported_statics.insert(import.shim.clone()) { + return Ok(()) + } + // TODO: should support more types to import here let obj = self.import_name(info, &import.name)?; self.cx.expose_add_heap_object(); @@ -1911,6 +1919,12 @@ impl<'a, 'b> SubContext<'a, 'b> { return Ok(()); } + // It's possible for the same function to be imported in two locations, + // but we only want to generate one. + if !self.cx.imported_functions.insert(import.shim.clone()) { + return Ok(()); + } + let descriptor = match self.cx.describe(&import.shim) { None => return Ok(()), Some(d) => d, diff --git a/crates/cli-support/src/lib.rs b/crates/cli-support/src/lib.rs index c17337b5..6af4ac1a 100644 --- a/crates/cli-support/src/lib.rs +++ b/crates/cli-support/src/lib.rs @@ -201,6 +201,8 @@ impl Bindgen { function_table_needed: false, interpreter: &mut instance, memory_init: None, + imported_functions: Default::default(), + imported_statics: Default::default(), }; for program in programs.iter() { js::SubContext { From e1474110d418b3841f4eb18b5dfe382650b60ed4 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 21 Aug 2018 10:42:52 -0700 Subject: [PATCH 52/71] Add an accessor for wasm's own memory as a JS object In addition to closing #495 this'll be useful eventually when instantiating multiple wasm modules from Rust as you'd now be able to acquire a reference to the current module in Rust itself. --- Cargo.toml | 3 ++- crates/cli-support/src/js/mod.rs | 12 ++++++++++++ src/lib.rs | 9 +++++++++ tests/wasm/api.rs | 16 ++++++++++++++++ tests/wasm/main.rs | 1 + 5 files changed, 40 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index e1f1079d..3c38fb5c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,8 +33,9 @@ serde = { version = "1.0", optional = true } serde_json = { version = "1.0", optional = true } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] -wasm-bindgen-test = { path = 'crates/test', version = '=0.2.17' } +js-sys = { path = 'crates/js-sys', version = '0.2' } serde_derive = "1.0" +wasm-bindgen-test = { path = 'crates/test', version = '=0.2.17' } wasm-bindgen-test-crate-a = { path = 'tests/crates/a' } wasm-bindgen-test-crate-b = { path = 'tests/crates/b' } diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index 10ce5a76..c6ea9920 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -380,6 +380,18 @@ impl<'a> Context<'a> { )) })?; + self.bind("__wbindgen_memory", &|me| { + me.expose_add_heap_object(); + let mem = me.memory(); + Ok(format!( + " + function() {{ + return addHeapObject({}); + }} + ", mem + )) + })?; + self.create_memory_export(); self.unexport_unused_internal_exports(); self.gc()?; diff --git a/src/lib.rs b/src/lib.rs index b26c872d..d96b5993 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -437,6 +437,8 @@ externs! { fn __wbindgen_json_parse(ptr: *const u8, len: usize) -> u32; fn __wbindgen_json_serialize(idx: u32, ptr: *mut *mut u8) -> usize; fn __wbindgen_jsval_eq(a: u32, b: u32) -> u32; + + fn __wbindgen_memory() -> u32; } impl Clone for JsValue { @@ -562,6 +564,13 @@ pub fn throw(s: &str) -> ! { } } +/// Returns a handle to this wasm instance's `WebAssembly.Memory` +pub fn memory() -> JsValue { + unsafe { + JsValue { idx: __wbindgen_memory() } + } +} + #[doc(hidden)] pub mod __rt { use core::cell::{Cell, UnsafeCell}; diff --git a/tests/wasm/api.rs b/tests/wasm/api.rs index 1953929b..6b28d40d 100644 --- a/tests/wasm/api.rs +++ b/tests/wasm/api.rs @@ -1,5 +1,7 @@ +use wasm_bindgen::{self, JsCast}; use wasm_bindgen_test::*; use wasm_bindgen::prelude::*; +use js_sys::{WebAssembly, Uint8Array}; #[wasm_bindgen(module = "tests/wasm/api.js")] extern { @@ -135,3 +137,17 @@ fn null_keeps_working() { assert_null(JsValue::null()); assert_null(JsValue::null()); } + +#[wasm_bindgen_test] +fn memory_accessor_appears_to_work() { + let data = 3u32; + let ptr = &data as *const u32 as u32; + + let my_mem = wasm_bindgen::memory(); + let mem = my_mem.dyn_into::().unwrap(); + let buf = mem.buffer(); + let slice = Uint8Array::new(&buf); + let mut v = Vec::new(); + slice.subarray(ptr, ptr + 4).for_each(&mut |val, _, _| v.push(val)); + assert_eq!(v, [3, 0, 0, 0]); +} diff --git a/tests/wasm/main.rs b/tests/wasm/main.rs index 95ceea15..895d1591 100644 --- a/tests/wasm/main.rs +++ b/tests/wasm/main.rs @@ -1,5 +1,6 @@ #![cfg(target_arch = "wasm32")] +extern crate js_sys; extern crate wasm_bindgen_test; extern crate wasm_bindgen; extern crate wasm_bindgen_test_crate_a; From 98008b9e771c72850329b2f0a44d76bcc3feb9a1 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Aug 2018 13:25:38 -0700 Subject: [PATCH 53/71] Bump to 0.2.18 At the same time, also add a `publish.rs` script to ease our publishing woes. --- .gitignore | 2 + Cargo.toml | 10 +- crates/backend/Cargo.toml | 4 +- crates/cli-support/Cargo.toml | 6 +- crates/cli/Cargo.toml | 6 +- crates/futures/Cargo.toml | 8 +- crates/js-sys/Cargo.toml | 8 +- crates/macro-support/Cargo.toml | 6 +- crates/macro/Cargo.toml | 4 +- crates/shared/Cargo.toml | 2 +- crates/test-macro/Cargo.toml | 2 +- crates/test/Cargo.toml | 10 +- crates/wasm-interpreter/Cargo.toml | 2 +- crates/web-sys/Cargo.toml | 9 +- crates/webidl/Cargo.toml | 2 +- publish.rs | 197 +++++++++++++++++++++++++++++ 16 files changed, 238 insertions(+), 40 deletions(-) create mode 100644 publish.rs diff --git a/.gitignore b/.gitignore index 3e7a542c..aedc2d91 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ package-lock.json npm-shrinkwrap.json yarn.lock *.d.ts +/publish +/publish.exe diff --git a/Cargo.toml b/Cargo.toml index e1f1079d..6ca9412e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen" -version = "0.2.17" +version = "0.2.18" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" readme = "README.md" @@ -28,15 +28,15 @@ nightly = [] xxx_debug_only_print_generated_code = ["wasm-bindgen-macro/xxx_debug_only_print_generated_code"] [dependencies] -wasm-bindgen-macro = { path = "crates/macro", version = "=0.2.17" } +wasm-bindgen-macro = { path = "crates/macro", version = "=0.2.18" } serde = { version = "1.0", optional = true } serde_json = { version = "1.0", optional = true } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] -wasm-bindgen-test = { path = 'crates/test', version = '=0.2.17' } +wasm-bindgen-test = { path = 'crates/test', version = '=0.2.18' } serde_derive = "1.0" -wasm-bindgen-test-crate-a = { path = 'tests/crates/a' } -wasm-bindgen-test-crate-b = { path = 'tests/crates/b' } +wasm-bindgen-test-crate-a = { path = 'tests/crates/a', version = '0.1' } +wasm-bindgen-test-crate-b = { path = 'tests/crates/b', version = '0.1' } [workspace] members = [ diff --git a/crates/backend/Cargo.toml b/crates/backend/Cargo.toml index 7d61d9ae..f2bc2839 100644 --- a/crates/backend/Cargo.toml +++ b/crates/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-backend" -version = "0.2.17" +version = "0.2.18" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/backend" @@ -21,4 +21,4 @@ proc-macro2 = "0.4.8" quote = '0.6' serde_json = "1.0" syn = { version = '0.14', features = ['full', 'visit'] } -wasm-bindgen-shared = { path = "../shared", version = "=0.2.17" } +wasm-bindgen-shared = { path = "../shared", version = "=0.2.18" } diff --git a/crates/cli-support/Cargo.toml b/crates/cli-support/Cargo.toml index 40102d7d..f6662363 100644 --- a/crates/cli-support/Cargo.toml +++ b/crates/cli-support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-cli-support" -version = "0.2.17" +version = "0.2.18" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/cli-support" @@ -17,6 +17,6 @@ parity-wasm = "0.31" serde = "1.0" serde_json = "1.0" tempfile = "3.0" -wasm-bindgen-shared = { path = "../shared", version = '=0.2.17' } -wasm-bindgen-wasm-interpreter = { path = "../wasm-interpreter", version = '=0.2.17' } +wasm-bindgen-shared = { path = "../shared", version = '=0.2.18' } +wasm-bindgen-wasm-interpreter = { path = "../wasm-interpreter", version = '=0.2.18' } wasm-gc-api = "0.1.9" diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 7f4291fa..8cfe2ad7 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-cli" -version = "0.2.17" +version = "0.2.18" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/cli" @@ -23,8 +23,8 @@ rouille = { version = "2.1.0", default-features = false } serde = "1.0" serde_derive = "1.0" serde_json = "1.0" -wasm-bindgen-cli-support = { path = "../cli-support", version = "=0.2.17" } -wasm-bindgen-shared = { path = "../shared", version = "=0.2.17" } +wasm-bindgen-cli-support = { path = "../cli-support", version = "=0.2.18" } +wasm-bindgen-shared = { path = "../shared", version = "=0.2.18" } openssl = { version = '0.10.11', optional = true } [features] diff --git a/crates/futures/Cargo.toml b/crates/futures/Cargo.toml index 1e8fadab..f73def61 100644 --- a/crates/futures/Cargo.toml +++ b/crates/futures/Cargo.toml @@ -7,12 +7,12 @@ license = "MIT/Apache-2.0" name = "wasm-bindgen-futures" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/futures" readme = "./README.md" -version = "0.2.17" +version = "0.2.18" [dependencies] futures = "0.1.20" -js-sys = { path = "../js-sys", version = '0.2.1' } -wasm-bindgen = { path = "../..", version = '0.2.17' } +js-sys = { path = "../js-sys", version = '0.2.3' } +wasm-bindgen = { path = "../..", version = '0.2.18' } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] -wasm-bindgen-test = { path = '../test', version = '0.2.17' } +wasm-bindgen-test = { path = '../test', version = '0.2.18' } diff --git a/crates/js-sys/Cargo.toml b/crates/js-sys/Cargo.toml index fada74bc..33ad544d 100644 --- a/crates/js-sys/Cargo.toml +++ b/crates/js-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "js-sys" -version = "0.2.2" +version = "0.2.3" authors = ["The wasm-bindgen Developers"] readme = "./README.md" categories = ["wasm"] @@ -18,9 +18,9 @@ test = false doctest = false [dependencies] -wasm-bindgen = { path = "../..", version = "0.2.17" } +wasm-bindgen = { path = "../..", version = "0.2.18" } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] futures = "0.1.20" -wasm-bindgen-test = { path = '../test', version = '=0.2.17' } -wasm-bindgen-futures = { path = '../futures', version = '=0.2.17' } +wasm-bindgen-test = { path = '../test', version = '=0.2.18' } +wasm-bindgen-futures = { path = '../futures', version = '=0.2.18' } diff --git a/crates/macro-support/Cargo.toml b/crates/macro-support/Cargo.toml index 49c867d4..0c0156af 100644 --- a/crates/macro-support/Cargo.toml +++ b/crates/macro-support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-macro-support" -version = "0.2.17" +version = "0.2.18" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro-support" @@ -18,5 +18,5 @@ extra-traits = ["syn/extra-traits"] syn = { version = '0.14', features = ['full'] } quote = '0.6' proc-macro2 = "0.4.9" -wasm-bindgen-backend = { path = "../backend", version = "=0.2.17" } -wasm-bindgen-shared = { path = "../shared", version = "=0.2.17" } +wasm-bindgen-backend = { path = "../backend", version = "=0.2.18" } +wasm-bindgen-shared = { path = "../shared", version = "=0.2.18" } diff --git a/crates/macro/Cargo.toml b/crates/macro/Cargo.toml index 2f46fc16..2c4b4f03 100644 --- a/crates/macro/Cargo.toml +++ b/crates/macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-macro" -version = "0.2.17" +version = "0.2.18" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro" @@ -18,5 +18,5 @@ spans = ["wasm-bindgen-macro-support/spans"] xxx_debug_only_print_generated_code = [] [dependencies] -wasm-bindgen-macro-support = { path = "../macro-support", version = "=0.2.17" } +wasm-bindgen-macro-support = { path = "../macro-support", version = "=0.2.18" } quote = "0.6" diff --git a/crates/shared/Cargo.toml b/crates/shared/Cargo.toml index 9b6d9b80..eebeb8d1 100644 --- a/crates/shared/Cargo.toml +++ b/crates/shared/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-shared" -version = "0.2.17" +version = "0.2.18" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/shared" diff --git a/crates/test-macro/Cargo.toml b/crates/test-macro/Cargo.toml index 14271bb4..3b9a3914 100644 --- a/crates/test-macro/Cargo.toml +++ b/crates/test-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-test-macro" -version = "0.2.17" +version = "0.2.18" authors = ["The wasm-bindgen Developers"] description = "Internal testing macro for wasm-bindgen" license = "MIT/Apache-2.0" diff --git a/crates/test/Cargo.toml b/crates/test/Cargo.toml index 274cae20..e043d09f 100644 --- a/crates/test/Cargo.toml +++ b/crates/test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-test" -version = "0.2.17" +version = "0.2.18" authors = ["The wasm-bindgen Developers"] description = "Internal testing crate for wasm-bindgen" license = "MIT/Apache-2.0" @@ -9,11 +9,11 @@ repository = "https://github.com/rustwasm/wasm-bindgen" [dependencies] console_error_panic_hook = '0.1' futures = "0.1" -js-sys = { path = '../js-sys', version = '0.2.1' } +js-sys = { path = '../js-sys', version = '0.2.3' } scoped-tls = "0.1" -wasm-bindgen = { path = '../..', version = '0.2.17' } -wasm-bindgen-futures = { path = '../futures', version = '0.2.17' } -wasm-bindgen-test-macro = { path = '../test-macro', version = '=0.2.17' } +wasm-bindgen = { path = '../..', version = '0.2.18' } +wasm-bindgen-futures = { path = '../futures', version = '0.2.18' } +wasm-bindgen-test-macro = { path = '../test-macro', version = '=0.2.18' } [lib] test = false diff --git a/crates/wasm-interpreter/Cargo.toml b/crates/wasm-interpreter/Cargo.toml index eb837fed..ec420f91 100644 --- a/crates/wasm-interpreter/Cargo.toml +++ b/crates/wasm-interpreter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-wasm-interpreter" -version = "0.2.17" +version = "0.2.18" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/wasm-interpreter" diff --git a/crates/web-sys/Cargo.toml b/crates/web-sys/Cargo.toml index 25261494..623fca83 100644 --- a/crates/web-sys/Cargo.toml +++ b/crates/web-sys/Cargo.toml @@ -15,11 +15,10 @@ wasm-bindgen-webidl = { path = "../webidl", version = "=0.2.17" } sourcefile = "0.1" [dependencies] -wasm-bindgen = { path = "../..", version = "0.2.17" } -js-sys = { path = '../js-sys', version = '0.2.1' } +wasm-bindgen = { path = "../..", version = "0.2.18" } +js-sys = { path = '../js-sys', version = '0.2.3' } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] futures = "0.1" -js-sys = { path = '../js-sys', version = '0.2.1' } -wasm-bindgen-test = { path = '../test', version = '0.2.17' } -wasm-bindgen-futures = { path = '../futures', version = '0.2.17' } +wasm-bindgen-test = { path = '../test', version = '0.2.18' } +wasm-bindgen-futures = { path = '../futures', version = '0.2.18' } diff --git a/crates/webidl/Cargo.toml b/crates/webidl/Cargo.toml index 6a0d67fc..48d49559 100644 --- a/crates/webidl/Cargo.toml +++ b/crates/webidl/Cargo.toml @@ -19,5 +19,5 @@ log = "0.4.1" proc-macro2 = "0.4.8" quote = '0.6' syn = { version = '0.14', features = ['full'] } -wasm-bindgen-backend = { version = "=0.2.17", path = "../backend" } +wasm-bindgen-backend = { version = "=0.2.18", path = "../backend" } weedle = "0.6" diff --git a/publish.rs b/publish.rs new file mode 100644 index 00000000..6afa8b16 --- /dev/null +++ b/publish.rs @@ -0,0 +1,197 @@ +//! Helper script to publish the wasm-bindgen suite of crates +//! +//! Usage: +//! +//! * First, compile this script +//! * Next, set cwd to the root of the wasm-bindgen repository +//! * Execute `./publish bump` to bump versions +//! * Send a PR +//! * Merge when green +//! * Execute `./publish publish` to publish crates + +use std::env; +use std::fs; +use std::path::{Path, PathBuf}; +use std::process::Command; + +const CRATES_TO_PUBLISH: &[&str] = &[ + "wasm-bindgen", + "js-sys", + "wasm-bindgen-backend", + "wasm-bindgen-cli", + "wasm-bindgen-cli-support", + "wasm-bindgen-futures", + "wasm-bindgen-macro", + "wasm-bindgen-macro-support", + "wasm-bindgen-shared", + "wasm-bindgen-test", + "wasm-bindgen-test-macro", + "wasm-bindgen-wasm-interpreter", +]; + +const CRATES_TO_AVOID_PUBLISH: &[&str] = &[ + // We'll publish these when they're ready one day + "wasm-bindgen-typescript", + "web-sys", + "wasm-bindgen-webidl", + + // These are internal crates, unlikely to ever be published + "ui-tests", + "sample", + "webidl-tests", +]; + +struct Crate { + manifest: PathBuf, + name: String, + version: String, + next_version: String, +} + +fn main() { + let mut crates = Vec::new(); + crates.push(read_crate("./Cargo.toml".as_ref())); + find_crates("crates".as_ref(), &mut crates); + + match &env::args().nth(1).expect("must have one argument")[..] { + "bump" => { + for krate in crates.iter() { + bump_version(&krate, &crates); + } + } + + "publish" => { + for krate in crates.iter() { + publish(&krate); + } + } + + s => panic!("unknown command: {}", s), + } +} + +fn find_crates(dir: &Path, dst: &mut Vec) { + if dir.join("Cargo.toml").exists() { + let krate = read_crate(&dir.join("Cargo.toml")); + if CRATES_TO_PUBLISH.iter() + .chain(CRATES_TO_AVOID_PUBLISH) + .any(|c| krate.name == *c) + { + dst.push(krate); + } else { + panic!("failed to find {:?} in whitelist or blacklist", krate.name); + } + } + + for entry in dir.read_dir().unwrap() { + let entry = entry.unwrap(); + if entry.file_type().unwrap().is_dir() { + find_crates(&entry.path(), dst); + } + } +} + +fn read_crate(manifest: &Path) -> Crate { + let mut name = None; + let mut version = None; + for line in fs::read_to_string(manifest).unwrap().lines() { + if name.is_none() && line.starts_with("name = \"") { + name = Some(line.replace("name = \"", "") + .replace("\"", "") + .trim() + .to_string()); + } + if version.is_none() && line.starts_with("version = \"") { + version = Some(line.replace("version = \"", "") + .replace("\"", "") + .trim() + .to_string()); + } + } + let name = name.unwrap(); + let version = version.unwrap(); + let next_version = if CRATES_TO_PUBLISH.contains(&&name[..]) { + bump(&version) + } else { + version.clone() + }; + Crate { + manifest: manifest.to_path_buf(), + name, + version, + next_version, + } +} + +fn bump_version(krate: &Crate, crates: &[Crate]) { + let contents = fs::read_to_string(&krate.manifest).unwrap(); + + let mut new_manifest = String::new(); + let mut is_deps = false; + for line in contents.lines() { + let mut rewritten = false; + if line.starts_with("version =") { + if CRATES_TO_PUBLISH.contains(&&krate.name[..]) { + println!("bump `{}` {} => {}", + krate.name, + krate.version, + krate.next_version); + new_manifest.push_str(&line.replace(&krate.version, &krate.next_version)); + rewritten = true; + } + } + + is_deps = if line.starts_with("[") { + line.contains("dependencies") + } else { + is_deps + }; + + for other in crates { + if !is_deps || !line.starts_with(&format!("{} ", other.name)) { + continue + } + if !line.contains(&other.version) { + if !line.contains("version =") { + continue + } + panic!("{:?} has a dep on {} but doesn't list version {}", + krate.manifest, + other.name, + other.version); + } + rewritten = true; + new_manifest.push_str(&line.replace(&other.version, &other.next_version)); + break + } + if !rewritten { + new_manifest.push_str(line); + } + new_manifest.push_str("\n"); + } + fs::write(&krate.manifest, new_manifest).unwrap(); +} + +fn bump(version: &str) -> String { + let mut iter = version.split('.').map(|s| s.parse::().unwrap()); + let major = iter.next().expect("major version"); + let minor = iter.next().expect("minor version"); + let patch = iter.next().expect("patch version"); + format!("{}.{}.{}", major, minor, patch + 1) +} + +fn publish(krate: &Crate) { + if !CRATES_TO_PUBLISH.iter().any(|s| *s == krate.name) { + return + } + let status = Command::new("cargo") + .arg("publish") + .current_dir(krate.manifest.parent().unwrap()) + .arg("--no-verify") + .arg("--allow-dirty") + .status() + .expect("failed to run cargo"); + if !status.success() { + println!("FAIL: failed to publish `{}`: {}", krate.name, status); + } +} From d9bc0a3176d06d6ad4bd0c843d32a346e3ecc99e Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Aug 2018 13:39:23 -0700 Subject: [PATCH 54/71] Bump to 0.2.19 --- Cargo.toml | 8 ++++---- crates/backend/Cargo.toml | 4 ++-- crates/cli-support/Cargo.toml | 6 +++--- crates/cli/Cargo.toml | 6 +++--- crates/futures/Cargo.toml | 8 ++++---- crates/js-sys/Cargo.toml | 8 ++++---- crates/macro-support/Cargo.toml | 6 +++--- crates/macro/Cargo.toml | 4 ++-- crates/shared/Cargo.toml | 2 +- crates/test-macro/Cargo.toml | 2 +- crates/test/Cargo.toml | 10 +++++----- crates/wasm-interpreter/Cargo.toml | 2 +- crates/web-sys/Cargo.toml | 8 ++++---- crates/webidl/Cargo.toml | 2 +- 14 files changed, 38 insertions(+), 38 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e0f70775..af1e021b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen" -version = "0.2.18" +version = "0.2.19" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" readme = "README.md" @@ -28,13 +28,13 @@ nightly = [] xxx_debug_only_print_generated_code = ["wasm-bindgen-macro/xxx_debug_only_print_generated_code"] [dependencies] -wasm-bindgen-macro = { path = "crates/macro", version = "=0.2.18" } +wasm-bindgen-macro = { path = "crates/macro", version = "=0.2.19" } serde = { version = "1.0", optional = true } serde_json = { version = "1.0", optional = true } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] -js-sys = { path = 'crates/js-sys', version = '0.2.3' } -wasm-bindgen-test = { path = 'crates/test', version = '=0.2.18' } +js-sys = { path = 'crates/js-sys', version = '0.2.4' } +wasm-bindgen-test = { path = 'crates/test', version = '=0.2.19' } serde_derive = "1.0" wasm-bindgen-test-crate-a = { path = 'tests/crates/a', version = '0.1' } wasm-bindgen-test-crate-b = { path = 'tests/crates/b', version = '0.1' } diff --git a/crates/backend/Cargo.toml b/crates/backend/Cargo.toml index f2bc2839..dace168a 100644 --- a/crates/backend/Cargo.toml +++ b/crates/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-backend" -version = "0.2.18" +version = "0.2.19" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/backend" @@ -21,4 +21,4 @@ proc-macro2 = "0.4.8" quote = '0.6' serde_json = "1.0" syn = { version = '0.14', features = ['full', 'visit'] } -wasm-bindgen-shared = { path = "../shared", version = "=0.2.18" } +wasm-bindgen-shared = { path = "../shared", version = "=0.2.19" } diff --git a/crates/cli-support/Cargo.toml b/crates/cli-support/Cargo.toml index f6662363..0d44ed2c 100644 --- a/crates/cli-support/Cargo.toml +++ b/crates/cli-support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-cli-support" -version = "0.2.18" +version = "0.2.19" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/cli-support" @@ -17,6 +17,6 @@ parity-wasm = "0.31" serde = "1.0" serde_json = "1.0" tempfile = "3.0" -wasm-bindgen-shared = { path = "../shared", version = '=0.2.18' } -wasm-bindgen-wasm-interpreter = { path = "../wasm-interpreter", version = '=0.2.18' } +wasm-bindgen-shared = { path = "../shared", version = '=0.2.19' } +wasm-bindgen-wasm-interpreter = { path = "../wasm-interpreter", version = '=0.2.19' } wasm-gc-api = "0.1.9" diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 8cfe2ad7..8926ea97 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-cli" -version = "0.2.18" +version = "0.2.19" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/cli" @@ -23,8 +23,8 @@ rouille = { version = "2.1.0", default-features = false } serde = "1.0" serde_derive = "1.0" serde_json = "1.0" -wasm-bindgen-cli-support = { path = "../cli-support", version = "=0.2.18" } -wasm-bindgen-shared = { path = "../shared", version = "=0.2.18" } +wasm-bindgen-cli-support = { path = "../cli-support", version = "=0.2.19" } +wasm-bindgen-shared = { path = "../shared", version = "=0.2.19" } openssl = { version = '0.10.11', optional = true } [features] diff --git a/crates/futures/Cargo.toml b/crates/futures/Cargo.toml index f73def61..1f982b71 100644 --- a/crates/futures/Cargo.toml +++ b/crates/futures/Cargo.toml @@ -7,12 +7,12 @@ license = "MIT/Apache-2.0" name = "wasm-bindgen-futures" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/futures" readme = "./README.md" -version = "0.2.18" +version = "0.2.19" [dependencies] futures = "0.1.20" -js-sys = { path = "../js-sys", version = '0.2.3' } -wasm-bindgen = { path = "../..", version = '0.2.18' } +js-sys = { path = "../js-sys", version = '0.2.4' } +wasm-bindgen = { path = "../..", version = '0.2.19' } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] -wasm-bindgen-test = { path = '../test', version = '0.2.18' } +wasm-bindgen-test = { path = '../test', version = '0.2.19' } diff --git a/crates/js-sys/Cargo.toml b/crates/js-sys/Cargo.toml index 33ad544d..3aeca413 100644 --- a/crates/js-sys/Cargo.toml +++ b/crates/js-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "js-sys" -version = "0.2.3" +version = "0.2.4" authors = ["The wasm-bindgen Developers"] readme = "./README.md" categories = ["wasm"] @@ -18,9 +18,9 @@ test = false doctest = false [dependencies] -wasm-bindgen = { path = "../..", version = "0.2.18" } +wasm-bindgen = { path = "../..", version = "0.2.19" } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] futures = "0.1.20" -wasm-bindgen-test = { path = '../test', version = '=0.2.18' } -wasm-bindgen-futures = { path = '../futures', version = '=0.2.18' } +wasm-bindgen-test = { path = '../test', version = '=0.2.19' } +wasm-bindgen-futures = { path = '../futures', version = '=0.2.19' } diff --git a/crates/macro-support/Cargo.toml b/crates/macro-support/Cargo.toml index 0c0156af..295239f3 100644 --- a/crates/macro-support/Cargo.toml +++ b/crates/macro-support/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-macro-support" -version = "0.2.18" +version = "0.2.19" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro-support" @@ -18,5 +18,5 @@ extra-traits = ["syn/extra-traits"] syn = { version = '0.14', features = ['full'] } quote = '0.6' proc-macro2 = "0.4.9" -wasm-bindgen-backend = { path = "../backend", version = "=0.2.18" } -wasm-bindgen-shared = { path = "../shared", version = "=0.2.18" } +wasm-bindgen-backend = { path = "../backend", version = "=0.2.19" } +wasm-bindgen-shared = { path = "../shared", version = "=0.2.19" } diff --git a/crates/macro/Cargo.toml b/crates/macro/Cargo.toml index 2c4b4f03..c262d0c2 100644 --- a/crates/macro/Cargo.toml +++ b/crates/macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-macro" -version = "0.2.18" +version = "0.2.19" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro" @@ -18,5 +18,5 @@ spans = ["wasm-bindgen-macro-support/spans"] xxx_debug_only_print_generated_code = [] [dependencies] -wasm-bindgen-macro-support = { path = "../macro-support", version = "=0.2.18" } +wasm-bindgen-macro-support = { path = "../macro-support", version = "=0.2.19" } quote = "0.6" diff --git a/crates/shared/Cargo.toml b/crates/shared/Cargo.toml index eebeb8d1..e82dd453 100644 --- a/crates/shared/Cargo.toml +++ b/crates/shared/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-shared" -version = "0.2.18" +version = "0.2.19" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/shared" diff --git a/crates/test-macro/Cargo.toml b/crates/test-macro/Cargo.toml index 3b9a3914..deba77af 100644 --- a/crates/test-macro/Cargo.toml +++ b/crates/test-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-test-macro" -version = "0.2.18" +version = "0.2.19" authors = ["The wasm-bindgen Developers"] description = "Internal testing macro for wasm-bindgen" license = "MIT/Apache-2.0" diff --git a/crates/test/Cargo.toml b/crates/test/Cargo.toml index e043d09f..6d04c3b7 100644 --- a/crates/test/Cargo.toml +++ b/crates/test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-test" -version = "0.2.18" +version = "0.2.19" authors = ["The wasm-bindgen Developers"] description = "Internal testing crate for wasm-bindgen" license = "MIT/Apache-2.0" @@ -9,11 +9,11 @@ repository = "https://github.com/rustwasm/wasm-bindgen" [dependencies] console_error_panic_hook = '0.1' futures = "0.1" -js-sys = { path = '../js-sys', version = '0.2.3' } +js-sys = { path = '../js-sys', version = '0.2.4' } scoped-tls = "0.1" -wasm-bindgen = { path = '../..', version = '0.2.18' } -wasm-bindgen-futures = { path = '../futures', version = '0.2.18' } -wasm-bindgen-test-macro = { path = '../test-macro', version = '=0.2.18' } +wasm-bindgen = { path = '../..', version = '0.2.19' } +wasm-bindgen-futures = { path = '../futures', version = '0.2.19' } +wasm-bindgen-test-macro = { path = '../test-macro', version = '=0.2.19' } [lib] test = false diff --git a/crates/wasm-interpreter/Cargo.toml b/crates/wasm-interpreter/Cargo.toml index ec420f91..bce5cbde 100644 --- a/crates/wasm-interpreter/Cargo.toml +++ b/crates/wasm-interpreter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-bindgen-wasm-interpreter" -version = "0.2.18" +version = "0.2.19" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/wasm-interpreter" diff --git a/crates/web-sys/Cargo.toml b/crates/web-sys/Cargo.toml index 623fca83..5a30a50a 100644 --- a/crates/web-sys/Cargo.toml +++ b/crates/web-sys/Cargo.toml @@ -15,10 +15,10 @@ wasm-bindgen-webidl = { path = "../webidl", version = "=0.2.17" } sourcefile = "0.1" [dependencies] -wasm-bindgen = { path = "../..", version = "0.2.18" } -js-sys = { path = '../js-sys', version = '0.2.3' } +wasm-bindgen = { path = "../..", version = "0.2.19" } +js-sys = { path = '../js-sys', version = '0.2.4' } [target.'cfg(target_arch = "wasm32")'.dev-dependencies] futures = "0.1" -wasm-bindgen-test = { path = '../test', version = '0.2.18' } -wasm-bindgen-futures = { path = '../futures', version = '0.2.18' } +wasm-bindgen-test = { path = '../test', version = '0.2.19' } +wasm-bindgen-futures = { path = '../futures', version = '0.2.19' } diff --git a/crates/webidl/Cargo.toml b/crates/webidl/Cargo.toml index 48d49559..bcf03b11 100644 --- a/crates/webidl/Cargo.toml +++ b/crates/webidl/Cargo.toml @@ -19,5 +19,5 @@ log = "0.4.1" proc-macro2 = "0.4.8" quote = '0.6' syn = { version = '0.14', features = ['full'] } -wasm-bindgen-backend = { version = "=0.2.18", path = "../backend" } +wasm-bindgen-backend = { version = "=0.2.19", path = "../backend" } weedle = "0.6" From 4863ccd10021177c4b6cc1756786adc8ac038e11 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Aug 2018 13:49:34 -0700 Subject: [PATCH 55/71] Update CHANGELOG for 0.2.19 --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b3a76d7..a97046a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,36 @@ Released YYYY-MM-DD. -------------------------------------------------------------------------------- +## 0.2.19 (and 0.2.18) + +Released 2018-08-27. + +### Added + +* Added bindings to `js-sys` for some `WebAssembly` types. +* Added bindings to `js-sys` for some `Intl` types. +* Added bindings to `js-sys` for some `String` methods. +* Added an example of using the WebAudio APIs. +* Added an example of using the `fetch` API. +* Added more `extends` annotations for types in `js-sys`. +* Experimental support for `WeakRef` was added to automatically deallocate Rust + objects when gc'd. +* Added support for executing `wasm-bindgen` over modules that import their + memory. +* Added a global `memory()` function in the `wasm-bindgen` crate for accessing + the JS object that represent wasm's own memory. + +### Removed + +* Removed `AsMut` implementations for imported objects. + +### Fixed + +* Fixed the `constructor` and `catch` attributes combined on imported types. +* Fixed importing the same-named static in two modules. + +-------------------------------------------------------------------------------- + ## 0.2.17 Released 2018-08-16. From 69a831423bcb52cbd3f7cb7e0e8f5f48b1818702 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Aug 2018 13:51:47 -0700 Subject: [PATCH 56/71] Update publishing instructions We've got a publish script now! --- guide/src/publishing.md | 41 ++++++++--------------------------------- 1 file changed, 8 insertions(+), 33 deletions(-) diff --git a/guide/src/publishing.md b/guide/src/publishing.md index 296ac45b..fa916332 100644 --- a/guide/src/publishing.md +++ b/guide/src/publishing.md @@ -8,54 +8,29 @@ git pull origin master ``` -* [ ] Update `Cargo.toml` versions and dependency versions: +* [ ] Run `rustc ./publish.rs` - ``` - git ls-files | grep Cargo.toml | xargs sed -i '' -e 's/0\.X\.Y/0.X.Z/g' - ``` - - where "0.X.Y" is the old version and "0.X.Z" is the new version. +* [ ] Run `./publish bump` - this will update all version numbers * [ ] Write a "0.X.Z" entry in the CHANGELOG.md -* [ ] Run all the tests for sanity - - ``` - cargo test - cargo test -p js-sys - cargo test -p js-sys --target wasm32-unknown-unknown - cargo test -p wasm-bindgen-webidl - cargo test -p web-sys - ``` - * [ ] Commit the version bump: ``` git commit -m "Bump to version 0.X.Z" ``` +* [ ] Send a PR to the `wasm-bindgen` repository, get it merged + +* [ ] Check out the merge commit of `wasm-bindgen` + * [ ] Comment out the `[patch]` section in the root `Cargo.toml` that only exists to make sure that `console_error_panic_hook` in tests is using *this* `wasm-bindgen` rather than one from crates.io. -* [ ] Publish the crates in reverse dependency order: +* [ ] Run `rustc ./publish.rs` - ``` - cd crates/shared && cargo publish && cd - - cd crates/backend && cargo publish && cd - - cd crates/macro && cargo publish && cd - - cd crates/cli-support && cargo publish && cd - - cd crates/test-macro && cargo publish && cd - - cd crates/test && cargo publish --no-verify && cd - - cd crates/cli && cargo publish && cd - - cargo publish --allow-dirty # because of uncommitted, commented out [patch] section - ``` - -* [ ] Push the commit: - - ``` - git push origin master - ``` +* [ ] Run `./publish publish` * [ ] Tag the release and push it: From 26c351ecf430ce319ab4bc34df9d5d01b7c3d01b Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Mon, 27 Aug 2018 15:18:48 -0700 Subject: [PATCH 57/71] js-sys: Make MDN URLs into links --- crates/js-sys/src/lib.rs | 834 +++++++++++++++++++-------------------- 1 file changed, 417 insertions(+), 417 deletions(-) diff --git a/crates/js-sys/src/lib.rs b/crates/js-sys/src/lib.rs index 92f8b599..89e728ee 100644 --- a/crates/js-sys/src/lib.rs +++ b/crates/js-sys/src/lib.rs @@ -50,14 +50,14 @@ extern "C" { /// The `decodeURI()` function decodes a Uniform Resource Identifier (URI) /// previously created by `encodeURI` or by a similar routine. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI) #[wasm_bindgen(catch, js_name = decodeURI)] pub fn decode_uri(encoded: &str) -> Result; /// The decodeURIComponent() function decodes a Uniform Resource Identifier (URI) component /// previously created by encodeURIComponent or by a similar routine. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent) #[wasm_bindgen(catch, js_name = decodeURIComponent)] pub fn decode_uri_component(encoded: &str) -> Result; @@ -67,7 +67,7 @@ extern "C" { /// (will only be four escape sequences for characters composed of two /// "surrogate" characters). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI) #[wasm_bindgen(js_name = encodeURI)] pub fn encode_uri(decoded: &str) -> JsString; @@ -76,41 +76,41 @@ extern "C" { /// representing the UTF-8 encoding of the character /// (will only be four escape sequences for characters composed of two "surrogate" characters). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) #[wasm_bindgen(js_name = encodeURIComponent)] pub fn encode_uri_component(decoded: &str) -> JsString; /// The `eval()` function evaluates JavaScript code represented as a string. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) #[wasm_bindgen(catch)] pub fn eval(js_source_text: &str) -> Result; /// The global isFinite() function determines whether the passed value is a finite number. /// If needed, the parameter is first converted to a number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite) #[wasm_bindgen(js_name = isFinite)] pub fn is_finite(value: &JsValue) -> bool; /// The `parseInt()` function parses a string argument and returns an integer /// of the specified radix (the base in mathematical numeral systems), or NaN on error. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt) #[wasm_bindgen(js_name = parseInt)] pub fn parse_int(text: &str, radix: u8) -> f64; /// The parseFloat() function parses an argument and returns a floating point number, /// or NaN on error. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat) #[wasm_bindgen(js_name = parseFloat)] pub fn parse_float(text: &str) -> f64; /// The escape() function computes a new string in which certain characters have been /// replaced by a hexadecimal escape sequence. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape) #[wasm_bindgen] pub fn escape(string: &str) -> JsString; @@ -119,7 +119,7 @@ extern "C" { /// be introduced by a function like escape. Usually, decodeURI or decodeURIComponent /// are preferred over unescape. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/unescape) #[wasm_bindgen] pub fn unescape(string: &str) -> JsString; } @@ -143,82 +143,82 @@ extern "C" { /// The copyWithin() method shallow copies part of an array to another /// location in the same array and returns it, without modifying its size. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin) #[wasm_bindgen(method, js_name = copyWithin)] pub fn copy_within(this: &Array, target: i32, start: i32, end: i32) -> Array; /// The concat() method is used to merge two or more arrays. This method /// does not change the existing arrays, but instead returns a new array. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat) #[wasm_bindgen(method)] pub fn concat(this: &Array, array: &Array) -> Array; /// The every() method tests whether all elements in the array pass the test /// implemented by the provided function. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every) #[wasm_bindgen(method)] pub fn every(this: &Array, predicate: &mut FnMut(JsValue, u32, Array) -> bool) -> bool; /// The fill() method fills all the elements of an array from a start index /// to an end index with a static value. The end index is not included. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill) #[wasm_bindgen(method)] pub fn fill(this: &Array, value: &JsValue, start: u32, end: u32) -> Array; /// The `filter()` method creates a new array with all elements that pass the /// test implemented by the provided function. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) #[wasm_bindgen(method)] pub fn filter(this: &Array, predicate: &mut FnMut(JsValue, u32, Array) -> bool) -> Array; /// The `find()` method returns the value of the first element in the array that satisfies /// the provided testing function. Otherwise `undefined` is returned. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find) #[wasm_bindgen(method)] pub fn find(this: &Array, predicate: &mut FnMut(JsValue, u32, Array) -> bool) -> JsValue; /// The findIndex() method returns the index of the first element in the array that /// satisfies the provided testing function. Otherwise -1 is returned. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex) #[wasm_bindgen(method, js_name = findIndex)] pub fn find_index(this: &Array, predicate: &mut FnMut(JsValue, u32, Array) -> bool) -> i32; /// The `forEach()` method executes a provided function once for each array element. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach) #[wasm_bindgen(method, js_name = forEach)] pub fn for_each(this: &Array, callback: &mut FnMut(JsValue, u32, Array)); /// The includes() method determines whether an array includes a certain /// element, returning true or false as appropriate. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes) #[wasm_bindgen(method)] pub fn includes(this: &Array, value: &JsValue, from_index: i32) -> bool; /// The indexOf() method returns the first index at which a given element /// can be found in the array, or -1 if it is not present. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) #[wasm_bindgen(method, js_name = indexOf)] pub fn index_of(this: &Array, value: &JsValue, from_index: i32) -> i32; /// The Array.isArray() method determines whether the passed value is an Array. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray) #[wasm_bindgen(static_method_of = Array, js_name = isArray)] pub fn is_array(value: &JsValue) -> bool; /// The join() method joins all elements of an array (or an array-like object) /// into a string and returns this string. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join) #[wasm_bindgen(method)] pub fn join(this: &Array, delimiter: &str) -> JsString; @@ -226,7 +226,7 @@ extern "C" { /// can be found in the array, or -1 if it is not present. The array is /// searched backwards, starting at fromIndex. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf) #[wasm_bindgen(method, js_name = lastIndexOf)] pub fn last_index_of(this: &Array, value: &JsValue, from_index: i32) -> i32; @@ -235,7 +235,7 @@ extern "C" { /// unsigned, 32-bit integer that is always numerically greater than the /// highest index in the array. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length) #[wasm_bindgen(method, getter, structural)] pub fn length(this: &Array) -> u32; @@ -245,7 +245,7 @@ extern "C" { /// It is not called for missing elements of the array (that is, indexes that have /// never been set, which have been deleted or which have never been assigned a value). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) #[wasm_bindgen(method)] pub fn map(this: &Array, predicate: &mut FnMut(JsValue, u32, Array) -> JsValue) -> Array; @@ -258,7 +258,7 @@ extern "C" { /// property of `7` (Note: this implies an array of 7 empty slots, not slots /// with actual undefined values). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of) /// /// # Notes /// @@ -267,61 +267,61 @@ extern "C" { #[wasm_bindgen(static_method_of = Array, js_name = of)] pub fn of1(a: &JsValue) -> Array; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of) #[wasm_bindgen(static_method_of = Array, js_name = of)] pub fn of2(a: &JsValue, b: &JsValue) -> Array; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of) #[wasm_bindgen(static_method_of = Array, js_name = of)] pub fn of3(a: &JsValue, b: &JsValue, c: &JsValue) -> Array; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of) #[wasm_bindgen(static_method_of = Array, js_name = of)] pub fn of4(a: &JsValue, b: &JsValue, c: &JsValue, d: &JsValue) -> Array; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of) #[wasm_bindgen(static_method_of = Array, js_name = of)] pub fn of5(a: &JsValue, b: &JsValue, c: &JsValue, d: &JsValue, e: &JsValue) -> Array; /// The pop() method removes the last element from an array and returns that /// element. This method changes the length of the array. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop) #[wasm_bindgen(method)] pub fn pop(this: &Array) -> JsValue; /// The push() method adds one or more elements to the end of an array and /// returns the new length of the array. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push) #[wasm_bindgen(method)] pub fn push(this: &Array, value: &JsValue) -> u32; /// The reduce() method applies a function against an accumulator and each element in /// the array (from left to right) to reduce it to a single value. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce) #[wasm_bindgen(method)] pub fn reduce(this: &Array, predicate: &mut FnMut(JsValue, JsValue, u32, Array) -> JsValue, initial_value: &JsValue) -> JsValue; /// The reduceRight() method applies a function against an accumulator and each value /// of the array (from right-to-left) to reduce it to a single value. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight) #[wasm_bindgen(method, js_name = reduceRight)] pub fn reduce_right(this: &Array, predicate: &mut FnMut(JsValue, JsValue, u32, Array) -> JsValue, initial_value: &JsValue) -> JsValue; /// The reverse() method reverses an array in place. The first array /// element becomes the last, and the last array element becomes the first. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse) #[wasm_bindgen(method)] pub fn reverse(this: &Array) -> Array; /// The shift() method removes the first element from an array and returns /// that removed element. This method changes the length of the array. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift) #[wasm_bindgen(method)] pub fn shift(this: &Array) -> JsValue; @@ -329,14 +329,14 @@ extern "C" { /// a new array object selected from begin to end (end not included). /// The original array will not be modified. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice) #[wasm_bindgen(method)] pub fn slice(this: &Array, start: u32, end: u32) -> Array; /// The some() method tests whether at least one element in the array passes the test implemented /// by the provided function. /// Note: This method returns false for any condition put on an empty array. - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some) #[wasm_bindgen(method)] pub fn some(this: &Array, predicate: &mut FnMut(JsValue) -> bool) -> bool; @@ -347,14 +347,14 @@ extern "C" { /// The time and space complexity of the sort cannot be guaranteed as it /// is implementation dependent. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) #[wasm_bindgen(method)] pub fn sort(this: &Array) -> Array; /// The splice() method changes the contents of an array by removing existing elements and/or /// adding new elements. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice) #[wasm_bindgen(method)] pub fn splice(this: &Array, start: u32, delete_count: u32, item: &JsValue) -> Array; @@ -362,21 +362,21 @@ extern "C" { /// The elements are converted to Strings using their toLocaleString methods and these /// Strings are separated by a locale-specific String (such as a comma “,”). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toLocaleString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toLocaleString) #[wasm_bindgen(method, js_name = toLocaleString)] pub fn to_locale_string(this: &Array, locales: &JsValue, options: &JsValue) -> JsString; /// The toString() method returns a string representing the specified array /// and its elements. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString) #[wasm_bindgen(method, js_name = toString)] pub fn to_string(this: &Array) -> JsString; /// The unshift() method adds one or more elements to the beginning of an /// array and returns the new length of the array. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift) #[wasm_bindgen(method)] pub fn unshift(this: &Array, value: &JsValue) -> u32; } @@ -395,7 +395,7 @@ extern "C" { /// which represents the buffer in a specific format, and use that /// to read and write the contents of the buffer. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) #[wasm_bindgen(constructor)] pub fn new(length: u32) -> ArrayBuffer; @@ -405,14 +405,14 @@ extern "C" { /// The value is established when the array is constructed and cannot be changed. /// This property returns 0 if this ArrayBuffer has been detached. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength) #[wasm_bindgen(method, getter, js_name = byteLength)] pub fn byte_length(this: &ArrayBuffer) -> u32; /// The `isView()` method returns true if arg is one of the `ArrayBuffer` /// views, such as typed array objects or a DataView; false otherwise. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView) #[wasm_bindgen(static_method_of = ArrayBuffer, js_name = isView)] pub fn is_view(value: &JsValue) -> bool; @@ -420,13 +420,13 @@ extern "C" { /// are a copy of this `ArrayBuffer`'s bytes from begin, inclusive, /// up to end, exclusive. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice) #[wasm_bindgen(method)] pub fn slice(this: &ArrayBuffer, begin: u32) -> ArrayBuffer; /// Like `slice()` but with the `end` argument. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice) #[wasm_bindgen(method, js_name = slice)] pub fn slice_with_end(this: &ArrayBuffer, begin: u32, end: u32) -> ArrayBuffer; } @@ -437,21 +437,21 @@ extern "C" { /// The keys() method returns a new Array Iterator object that contains the /// keys for each index in the array. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/keys + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/keys) #[wasm_bindgen(method)] pub fn keys(this: &Array) -> Iterator; /// The entries() method returns a new Array Iterator object that contains /// the key/value pairs for each index in the array. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/entries + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/entries) #[wasm_bindgen(method)] pub fn entries(this: &Array) -> Iterator; /// The values() method returns a new Array Iterator object that /// contains the values for each index in the array. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/values + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/values) #[wasm_bindgen(method)] pub fn values(this: &Array) -> Iterator; } @@ -465,13 +465,13 @@ extern "C" { /// The `Boolean()` constructor creates an object wrapper for a boolean value. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) #[wasm_bindgen(constructor)] pub fn new(value: &JsValue) -> Boolean; /// The `valueOf()` method returns the primitive value of a `Boolean` object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/valueOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/valueOf) #[wasm_bindgen(method, js_name = valueOf)] pub fn value_of(this: &Boolean) -> bool; } @@ -487,139 +487,139 @@ extern "C" { /// writing multiple number types in an `ArrayBuffer` irrespective of the /// platform's endianness. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView) #[wasm_bindgen(constructor)] pub fn new(buffer: &ArrayBuffer, byteOffset: usize, byteLength: usize) -> DataView; /// The ArrayBuffer referenced by this view. Fixed at construction time and thus read only. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/buffer + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/buffer) #[wasm_bindgen(method, getter, structural)] pub fn buffer(this: &DataView) -> ArrayBuffer; /// The length (in bytes) of this view from the start of its ArrayBuffer. /// Fixed at construction time and thus read only. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/byteLength + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/byteLength) #[wasm_bindgen(method, getter, structural, js_name = byteLength)] pub fn byte_length(this: &DataView) -> usize; /// The offset (in bytes) of this view from the start of its ArrayBuffer. /// Fixed at construction time and thus read only. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/byteOffset + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/byteOffset) #[wasm_bindgen(method, getter, structural, js_name = byteOffset)] pub fn byte_offset(this: &DataView) -> usize; /// The getInt8() method gets a signed 8-bit integer (byte) at the /// specified byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt8 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt8) #[wasm_bindgen(method, js_name = getInt8)] pub fn get_int8(this: &DataView, byte_offset: usize) -> i8; /// The getUint8() method gets a unsigned 8-bit integer (byte) at the specified /// byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint8 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint8) #[wasm_bindgen(method, js_name = getUint8)] pub fn get_uint8(this: &DataView, byte_offset: usize) -> u8; /// The getInt16() method gets a signed 16-bit integer (byte) at the specified /// byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt16 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt16) #[wasm_bindgen(method, js_name = getInt16)] pub fn get_int16(this: &DataView, byte_offset: usize) -> i16; /// The getUint16() an unsigned 16-bit integer (unsigned byte) at the specified /// byte offset from the start of the view. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint16 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint16) #[wasm_bindgen(method, js_name = getUint16)] pub fn get_uint16(this: &DataView, byte_offset: usize) -> u16; /// The getInt32() method gets a signed 16-bit integer (byte) at the specified /// byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt32 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getInt32) #[wasm_bindgen(method, js_name = getInt32)] pub fn get_int32(this: &DataView, byte_offset: usize) -> i32; /// The getUint32() an unsigned 16-bit integer (unsigned byte) at the specified /// byte offset from the start of the view. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint32 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getUint32) #[wasm_bindgen(method, js_name = getUint32)] pub fn get_uint32(this: &DataView, byte_offset: usize) -> u32; /// The getFloat32() method gets a signed 32-bit float (float) at the specified /// byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getFloat32 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getFloat32) #[wasm_bindgen(method, js_name = getFloat32)] pub fn get_float32(this: &DataView, byte_offset: usize) -> f32; /// The getFloat64() method gets a signed 32-bit float (float) at the specified /// byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getFloat64 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getFloat64) #[wasm_bindgen(method, js_name = getFloat64)] pub fn get_float64(this: &DataView, byte_offset: usize) -> f64; /// The setInt8() method stores a signed 8-bit integer (byte) value at the /// specified byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt8 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt8) #[wasm_bindgen(method, js_name = setInt8)] pub fn set_int8(this: &DataView, byte_offset: usize, value: i8); /// The setUint8() method stores an unsigned 8-bit integer (byte) value at the /// specified byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint8 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint8) #[wasm_bindgen(method, js_name = setUint8)] pub fn set_uint8(this: &DataView, byte_offset: usize, value: u8); /// The setInt16() method stores a signed 16-bit integer (byte) value at the /// specified byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt16 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt16) #[wasm_bindgen(method, js_name = setInt16)] pub fn set_int16(this: &DataView, byte_offset: usize, value: i16); /// The setUint16() method stores an unsigned 16-bit integer (byte) value at the /// specified byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint16 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint16) #[wasm_bindgen(method, js_name = setUint16)] pub fn set_uint16(this: &DataView, byte_offset: usize, value: u16); /// The setInt32() method stores a signed 32-bit integer (byte) value at the /// specified byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt32 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setInt32) #[wasm_bindgen(method, js_name = setInt32)] pub fn set_int32(this: &DataView, byte_offset: usize, value: i32); /// The setUint32() method stores an unsigned 32-bit integer (byte) value at the /// specified byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint32 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setUint32) #[wasm_bindgen(method, js_name = setUint32)] pub fn set_uint32(this: &DataView, byte_offset: usize, value: u32); /// The setFloat32() method stores a signed 32-bit float (float) value at the /// specified byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setFloat32 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setFloat32) #[wasm_bindgen(method, js_name = setFloat32)] pub fn set_float32(this: &DataView, byte_offset: usize, value: f32); /// The setFloat64() method stores a signed 64-bit float (float) value at the /// specified byte offset from the start of the DataView. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setFloat64 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/setFloat64) #[wasm_bindgen(method, js_name = setFloat64)] pub fn set_float64(this: &DataView, byte_offset: usize, value: f64); } @@ -636,13 +636,13 @@ extern "C" { /// The Error object can also be used as a base object for user-defined exceptions. /// See below for standard built-in error types. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) #[wasm_bindgen(constructor)] pub fn new(message: &str) -> Error; /// The message property is a human-readable description of the error. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/message + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/message) #[wasm_bindgen(method, getter, structural)] pub fn message(this: &Error) -> JsString; #[wasm_bindgen(method, setter, structural)] @@ -650,7 +650,7 @@ extern "C" { /// The name property represents a name for the type of error. The initial value is "Error". /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/name + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/name) #[wasm_bindgen(method, getter, structural)] pub fn name(this: &Error) -> JsString; #[wasm_bindgen(method, setter, structural)] @@ -658,7 +658,7 @@ extern "C" { /// The toString() method returns a string representing the specified Error object /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/toString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/toString) #[wasm_bindgen(method, js_name = toString)] pub fn to_string(this: &Error) -> JsString; } @@ -674,7 +674,7 @@ extern "C" { /// exception is not thrown by JavaScript anymore, however the EvalError object remains for /// compatibility. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) #[wasm_bindgen(constructor)] pub fn new(message: &str) -> EvalError; } @@ -688,14 +688,14 @@ extern "C" { /// The `Float32Array()` constructor creates an array of 32-bit floats. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array) #[wasm_bindgen(constructor)] pub fn new(constructor_arg: &JsValue) -> Float32Array; /// The fill() method fills all the elements of an array from a start index /// to an end index with a static value. The end index is not included. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill) #[wasm_bindgen(method)] pub fn fill(this: &Float32Array, value: f32, start: u32, end: u32) -> Float32Array; @@ -741,14 +741,14 @@ extern "C" { /// The `Float64Array()` constructor creates an array of 64-bit floats. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array) #[wasm_bindgen(constructor)] pub fn new(constructor_arg: &JsValue) -> Float64Array; /// The fill() method fills all the elements of an array from a start index /// to an end index with a static value. The end index is not included. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill) #[wasm_bindgen(method)] pub fn fill(this: &Float64Array, value: f64, start: u32, end: u32) -> Float64Array; @@ -799,55 +799,55 @@ extern "C" { /// allows executing code in the global scope, prompting better programming /// habits and allowing for more efficient code minification. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) #[wasm_bindgen(constructor)] pub fn new_no_args(body: &str) -> Function; /// The apply() method calls a function with a given this value, and arguments provided as an array /// (or an array-like object). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply) #[wasm_bindgen(method, catch)] pub fn apply(this: &Function, context: &JsValue, args: &Array) -> Result; /// The `call()` method calls a function with a given this value and /// arguments provided individually. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call) #[wasm_bindgen(method, catch, js_name = call)] pub fn call0(this: &Function, context: &JsValue) -> Result; /// The `call()` method calls a function with a given this value and /// arguments provided individually. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call) #[wasm_bindgen(method, catch, js_name = call)] pub fn call1(this: &Function, context: &JsValue, arg1: &JsValue) -> Result; /// The `call()` method calls a function with a given this value and /// arguments provided individually. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call) #[wasm_bindgen(method, catch, js_name = call)] pub fn call2(this: &Function, context: &JsValue, arg1: &JsValue, arg2: &JsValue) -> Result; /// The `call()` method calls a function with a given this value and /// arguments provided individually. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call) #[wasm_bindgen(method, catch, js_name = call)] pub fn call3(this: &Function, context: &JsValue, arg1: &JsValue, arg2: &JsValue, arg3: &JsValue) -> Result; /// The bind() method creates a new function that, when called, has its this keyword set to the provided value, /// with a given sequence of arguments preceding any provided when the new function is called. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) #[wasm_bindgen(method)] pub fn bind(this: &Function, context: &JsValue) -> Function; /// The length property indicates the number of arguments expected by the function. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length) #[wasm_bindgen(method, getter, structural)] pub fn length(this: &Function) -> u32; @@ -855,13 +855,13 @@ extern "C" { /// name as specified when it was created or "anonymous" for functions /// created anonymously. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name) #[wasm_bindgen(method, getter, structural)] pub fn name(this: &Function) -> JsString; /// The toString() method returns a string representing the source code of the function. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/toString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/toString) #[wasm_bindgen(method, js_name = toString)] pub fn to_string(this: &Function) -> JsString; } @@ -891,20 +891,20 @@ extern { /// The next() method returns an object with two properties done and value. /// You can also provide a parameter to the next method to send a value to the generator. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/next + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/next) #[wasm_bindgen(method, structural, catch)] pub fn next(this: &Generator, value: &JsValue) -> Result; /// The return() method returns the given value and finishes the generator. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/return + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/return) #[wasm_bindgen(method, structural, js_name = return)] pub fn return_(this: &Generator, value: &JsValue) -> JsValue; /// The throw() method resumes the execution of a generator by throwing an error into it /// and returns an object with two properties done and value. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/throw + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator/throw) #[wasm_bindgen(method, structural, catch)] pub fn throw(this: &Generator, error: &Error) -> Result; } @@ -918,14 +918,14 @@ extern "C" { /// The `Int8Array()` constructor creates an array of signed 8-bit integers. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array) #[wasm_bindgen(constructor)] pub fn new(constructor_arg: &JsValue) -> Int8Array; /// The fill() method fills all the elements of an array from a start index /// to an end index with a static value. The end index is not included. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill) #[wasm_bindgen(method)] pub fn fill(this: &Int8Array, value: i8, start: u32, end: u32) -> Int8Array; @@ -971,14 +971,14 @@ extern "C" { /// The `Int16Array()` constructor creates an array of signed 16-bit integers. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array) #[wasm_bindgen(constructor)] pub fn new(constructor_arg: &JsValue) -> Int16Array; /// The fill() method fills all the elements of an array from a start index /// to an end index with a static value. The end index is not included. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill) #[wasm_bindgen(method)] pub fn fill(this: &Int16Array, value: i16, start: u32, end: u32) -> Int16Array; @@ -1024,14 +1024,14 @@ extern "C" { /// The `Int32Array()` constructor creates an array of signed 32-bit integers. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array) #[wasm_bindgen(constructor)] pub fn new(constructor_arg: &JsValue) -> Int32Array; /// The fill() method fills all the elements of an array from a start index /// to an end index with a static value. The end index is not included. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill) #[wasm_bindgen(method)] pub fn fill(this: &Int32Array, value: i32, start: u32, end: u32) -> Int32Array; @@ -1077,47 +1077,47 @@ extern { /// The clear() method removes all elements from a Map object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/clear + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/clear) #[wasm_bindgen(method)] pub fn clear(this: &Map); /// The delete() method removes the specified element from a Map object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete) #[wasm_bindgen(method)] pub fn delete(this: &Map, key: &JsValue) -> bool; /// The forEach() method executes a provided function once per each /// key/value pair in the Map object, in insertion order. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach) #[wasm_bindgen(method, js_name = forEach)] pub fn for_each(this: &Map, callback: &mut FnMut(JsValue, JsValue)); /// The get() method returns a specified element from a Map object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get) #[wasm_bindgen(method)] pub fn get(this: &Map, key: &JsValue) -> JsValue; /// The has() method returns a boolean indicating whether an element with /// the specified key exists or not. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has) #[wasm_bindgen(method)] pub fn has(this: &Map, key: &JsValue) -> bool; /// The Map object holds key-value pairs. Any value (both objects and /// primitive values) maybe used as either a key or a value. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map) #[wasm_bindgen(constructor)] pub fn new() -> Map; /// The set() method adds or updates an element with a specified key /// and value to a Map object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/set + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/set) #[wasm_bindgen(method)] pub fn set(this: &Map, key: &JsValue, value: &JsValue) -> Map; @@ -1125,7 +1125,7 @@ extern { /// the Map object has. A set accessor function for size is undefined; /// you can not change this property. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size) #[wasm_bindgen(method, getter, structural)] pub fn size(this: &Map) -> u32; } @@ -1137,21 +1137,21 @@ extern { /// the [key, value] pairs for each element in the Map object in /// insertion order. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/entries + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/entries) #[wasm_bindgen(method)] pub fn entries(this: &Map) -> Iterator; /// The keys() method returns a new Iterator object that contains the /// keys for each element in the Map object in insertion order. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/keys + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/keys) #[wasm_bindgen(method)] pub fn keys(this: &Map) -> Iterator; /// The values() method returns a new Iterator object that contains the /// values for each element in the Map object in insertion order. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/values + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/values) #[wasm_bindgen(method)] pub fn values(this: &Map) -> Iterator; } @@ -1162,7 +1162,7 @@ extern { /// Any object that conforms to the JS iterator protocol. For example, /// something returned by `myArray[Symbol.iterator]()`. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) #[derive(Clone, Debug)] pub type Iterator; @@ -1179,7 +1179,7 @@ extern { extern { /// The result of calling `next()` on a JS iterator. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) #[derive(Clone, Debug)] pub type IteratorNext; @@ -1208,7 +1208,7 @@ extern "C" { /// The Math.abs() function returns the absolute value of a number, that is /// Math.abs(x) = |x| /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abs + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abs) #[wasm_bindgen(static_method_of = Math)] pub fn abs(x: f64) -> f64; @@ -1216,7 +1216,7 @@ extern "C" { /// number, that is ∀x∊[-1;1] /// Math.acos(x) = arccos(x) = the unique y∊[0;π] such that cos(y)=x /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acos + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acos) #[wasm_bindgen(static_method_of = Math)] pub fn acos(x: f64) -> f64; @@ -1224,7 +1224,7 @@ extern "C" { /// number, that is ∀x ≥ 1 /// Math.acosh(x) = arcosh(x) = the unique y ≥ 0 such that cosh(y) = x /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acosh + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acosh) #[wasm_bindgen(static_method_of = Math)] pub fn acosh(x: f64) -> f64; @@ -1232,14 +1232,14 @@ extern "C" { /// number, that is ∀x ∊ [-1;1] /// Math.asin(x) = arcsin(x) = the unique y∊[-π2;π2] such that sin(y) = x /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asin + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asin) #[wasm_bindgen(static_method_of = Math)] pub fn asin(x: f64) -> f64; /// The Math.asinh() function returns the hyperbolic arcsine of a /// number, that is Math.asinh(x) = arsinh(x) = the unique y such that sinh(y) = x /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asinh + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asinh) #[wasm_bindgen(static_method_of = Math)] pub fn asinh(x: f64) -> f64; @@ -1252,7 +1252,7 @@ extern "C" { /// The Math.atan2() function returns the arctangent of the quotient of /// its arguments. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2) #[wasm_bindgen(static_method_of = Math)] pub fn atan2(y: f64, x: f64) -> f64; @@ -1260,35 +1260,35 @@ extern "C" { /// that is ∀x ∊ (-1,1), Math.atanh(x) = arctanh(x) = the unique y such that /// tanh(y) = x /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atanh + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atanh) #[wasm_bindgen(static_method_of = Math)] pub fn atanh(x: f64) -> f64; /// The Math.cbrt() function returns the cube root of a number, that is /// Math.cbrt(x) = x^3 = the unique y such that y^3 = x /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cbrt + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cbrt) #[wasm_bindgen(static_method_of = Math)] pub fn cbrt(x: f64) -> f64; /// The Math.ceil() function returns the smallest integer greater than /// or equal to a given number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil) #[wasm_bindgen(static_method_of = Math)] pub fn ceil(x: f64) -> f64; /// The Math.clz32() function returns the number of leading zero bits in /// the 32-bit binary representation of a number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32) #[wasm_bindgen(static_method_of = Math)] pub fn clz32(x: i32) -> u32; /// The Math.cos() static function returns the cosine of the specified angle, /// which must be specified in radians. This value is length(adjacent)/length(hypotenuse). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cos + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cos) #[wasm_bindgen(static_method_of = Math)] pub fn cos(x: f64) -> f64; @@ -1296,90 +1296,90 @@ extern "C" { /// The Math.cosh() function returns the hyperbolic cosine of a number, /// that can be expressed using the constant e. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cosh + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cosh) #[wasm_bindgen(static_method_of = Math)] pub fn cosh(x: f64) -> f64; /// The Math.exp() function returns e^x, where x is the argument, and e is Euler's number /// (also known as Napier's constant), the base of the natural logarithms. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/exp + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/exp) #[wasm_bindgen(static_method_of = Math)] pub fn exp(x: f64) -> f64; /// The Math.expm1() function returns e^x - 1, where x is the argument, and e the base of the /// natural logarithms. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/expm1 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/expm1) #[wasm_bindgen(static_method_of = Math)] pub fn expm1(x: f64) -> f64; /// The Math.floor() function returns the largest integer less than or /// equal to a given number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor) #[wasm_bindgen(static_method_of = Math)] pub fn floor(x: f64) -> f64; /// The Math.fround() function returns the nearest 32-bit single precision float representation /// of a Number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround) #[wasm_bindgen(static_method_of = Math)] pub fn fround(x: f64) -> f32; /// The Math.hypot() function returns the square root of the sum of squares of its arguments. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot) #[wasm_bindgen(static_method_of = Math)] pub fn hypot(x: f64, y: f64) -> f64; /// The Math.imul() function returns the result of the C-like 32-bit multiplication of the /// two parameters. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul) #[wasm_bindgen(static_method_of = Math)] pub fn imul(x: i32, y: i32) -> i32; /// The Math.log() function returns the natural logarithm (base e) of a number. /// The JavaScript Math.log() function is equivalent to ln(x) in mathematics. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log) #[wasm_bindgen(static_method_of = Math)] pub fn log(x: f64) -> f64; /// The Math.log10() function returns the base 10 logarithm of a number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log10) #[wasm_bindgen(static_method_of = Math)] pub fn log10(x: f64) -> f64; /// The Math.log1p() function returns the natural logarithm (base e) of 1 + a number. - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log1p + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log1p) #[wasm_bindgen(static_method_of = Math)] pub fn log1p(x: f64) -> f64; /// The Math.log2() function returns the base 2 logarithm of a number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2 + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log2) #[wasm_bindgen(static_method_of = Math)] pub fn log2(x: f64) -> f64; /// The Math.max() function returns the largest of two numbers. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max) #[wasm_bindgen(static_method_of = Math)] pub fn max(x: f64, y: f64) -> f64; /// The static function Math.min() returns the lowest-valued number passed into it. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/min + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/min) #[wasm_bindgen(static_method_of = Math)] pub fn min(x: f64, y: f64) -> f64; /// The Math.pow() function returns the base to the exponent power, that is, base^exponent. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow) #[wasm_bindgen(static_method_of = Math)] pub fn pow(base: f64, exponent: f64) -> f64; @@ -1389,60 +1389,60 @@ extern "C" { /// The implementation selects the initial seed to the random number generation algorithm; /// it cannot be chosen or reset by the user. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random) #[wasm_bindgen(static_method_of = Math)] pub fn random() -> f64; /// The Math.round() function returns the value of a number rounded to the nearest integer. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round) #[wasm_bindgen(static_method_of = Math)] pub fn round(x: f64) -> f64; /// The Math.sign() function returns the sign of a number, indicating whether the number is /// positive, negative or zero. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign) #[wasm_bindgen(static_method_of = Math)] pub fn sign(x: f64) -> f64; /// The Math.sin() function returns the sine of a number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sin + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sin) #[wasm_bindgen(static_method_of = Math)] pub fn sin(x: f64) -> f64; /// The Math.sinh() function returns the hyperbolic sine of a number, that can be expressed /// using the constant e: Math.sinh(x) = (e^x - e^-x)/2 /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sinh + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sinh) #[wasm_bindgen(static_method_of = Math)] pub fn sinh(x: f64) -> f64; /// The Math.sqrt() function returns the square root of a number, that is /// ∀x ≥ 0, Math.sqrt(x) = √x = the unique y ≥ 0 such that y^2 = x /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt) #[wasm_bindgen(static_method_of = Math)] pub fn sqrt(x: f64) -> f64; /// The Math.tan() function returns the tangent of a number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tan + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tan) #[wasm_bindgen(static_method_of = Math)] pub fn tan(x: f64) -> f64; /// The Math.tanh() function returns the hyperbolic tangent of a number, that is /// tanh x = sinh x / cosh x = (e^x - e^-x)/(e^x + e^-x) = (e^2x - 1)/(e^2x + 1) /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tanh + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tanh) #[wasm_bindgen(static_method_of = Math)] pub fn tanh(x: f64) -> f64; /// The Math.trunc() function returns the integer part of a number by removing any fractional /// digits. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc) #[wasm_bindgen(static_method_of = Math)] pub fn trunc(x: f64) -> f64; } @@ -1456,27 +1456,27 @@ extern "C" { /// The Number.isFinite() method determines whether the passed value is a finite number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite) #[wasm_bindgen(static_method_of = Number, js_name = isFinite)] pub fn is_finite(value: &JsValue) -> bool; /// The Number.isInteger() method determines whether the passed value is an integer. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger) #[wasm_bindgen(static_method_of = Number, js_name = isInteger)] pub fn is_integer(value: &JsValue) -> bool; /// The Number.isNaN() method determines whether the passed value is NaN and its type is Number. /// It is a more robust version of the original, global isNaN(). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN) #[wasm_bindgen(static_method_of = Number, js_name = isNaN)] pub fn is_nan(value: &JsValue) -> bool; /// The Number.isSafeInteger() method determines whether the provided value is a number /// that is a safe integer. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger) #[wasm_bindgen(static_method_of = Number, js_name = isSafeInteger)] pub fn is_safe_integer(value: &JsValue) -> bool; @@ -1484,63 +1484,63 @@ extern "C" { /// you to work with numerical values. A `Number` object is /// created using the `Number()` constructor. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) #[wasm_bindgen(constructor)] pub fn new(value: &JsValue) -> Number; /// The Number.parseInt() method parses a string argument and returns an /// integer of the specified radix or base. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt) #[wasm_bindgen(static_method_of = Number, js_name = parseInt)] pub fn parse_int(text: &str, radix: u8) -> f64; /// The Number.parseFloat() method parses a string argument and returns a /// floating point number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat) #[wasm_bindgen(static_method_of = Number, js_name = parseFloat)] pub fn parse_float(text: &str) -> f64; /// The toLocaleString() method returns a string with a language sensitive /// representation of this number. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString) #[wasm_bindgen(method, js_name = toLocaleString)] pub fn to_locale_string(this: &Number, locale: &str) -> JsString; /// The toPrecision() method returns a string representing the Number /// object to the specified precision. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision) #[wasm_bindgen(catch, method, js_name = toPrecision)] pub fn to_precision(this: &Number, precision: u8) -> Result; /// The toFixed() method returns a string representing the Number /// object using fixed-point notation. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) #[wasm_bindgen(catch, method, js_name = toFixed)] pub fn to_fixed(this: &Number, digits: u8) -> Result; /// The toExponential() method returns a string representing the Number /// object in exponential notation. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponential + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponential) #[wasm_bindgen(catch, method, js_name = toExponential)] pub fn to_exponential(this: &Number, fraction_digits: u8) -> Result; /// The toString() method returns a string representing the /// specified Number object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString) #[wasm_bindgen(catch, method, js_name = toString)] pub fn to_string(this: &Number, radix: u8) -> Result; /// The valueOf() method returns the wrapped primitive value of /// a Number object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/valueOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/valueOf) #[wasm_bindgen(method, js_name = valueOf)] pub fn value_of(this: &Number) -> f64; } @@ -1555,117 +1555,117 @@ extern "C" { /// The getDate() method returns the day of the month for the /// specified date according to local time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate) #[wasm_bindgen(method, js_name = getDate)] pub fn get_date(this: &Date) -> u32; /// The getDay() method returns the day of the week for the specified date according to local time, /// where 0 represents Sunday. For the day of the month see getDate(). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay) #[wasm_bindgen(method, js_name = getDay)] pub fn get_day(this: &Date) -> u32; /// The getFullYear() method returns the year of the specified date according to local time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYear + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYear) #[wasm_bindgen(method, js_name = getFullYear)] pub fn get_full_year(this: &Date) -> u32; /// The getHours() method returns the hour for the specified date, according to local time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getHours + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getHours) #[wasm_bindgen(method, js_name = getHours)] pub fn get_hours(this: &Date) -> u32; /// The getMilliseconds() method returns the milliseconds in the specified date according to local time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds) #[wasm_bindgen(method, js_name = getMilliseconds)] pub fn get_milliseconds(this: &Date) -> u32; /// The getMinutes() method returns the minutes in the specified date according to local time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMinutes + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMinutes) #[wasm_bindgen(method, js_name = getMinutes)] pub fn get_minutes(this: &Date) -> u32; /// The getMonth() method returns the month in the specified date according to local time, /// as a zero-based value (where zero indicates the first month of the year). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonth + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonth) #[wasm_bindgen(method, js_name = getMonth)] pub fn get_month(this: &Date) -> u32; /// The getSeconds() method returns the seconds in the specified date according to local time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getSeconds + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getSeconds) #[wasm_bindgen(method, js_name = getSeconds)] pub fn get_seconds(this: &Date) -> u32; /// The getTime() method returns the numeric value corresponding to the time for the specified date /// according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) #[wasm_bindgen(method, js_name = getTime)] pub fn get_time(this: &Date) -> f64; /// The getTimezoneOffset() method returns the time zone difference, in minutes, /// from current locale (host system settings) to UTC. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset) #[wasm_bindgen(method, js_name = getTimezoneOffset)] pub fn get_timezone_offset(this: &Date) -> f64; /// The getUTCDate() method returns the day (date) of the month in the specified date /// according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDate + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDate) #[wasm_bindgen(method, js_name = getUTCDate)] pub fn get_utc_date(this: &Date) -> u32; /// The getUTCDay() method returns the day of the week in the specified date according to universal time, /// where 0 represents Sunday. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDay + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDay) #[wasm_bindgen(method, js_name = getUTCDay)] pub fn get_utc_day(this: &Date) -> u32; /// The getUTCFullYear() method returns the year in the specified date according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear) #[wasm_bindgen(method, js_name = getUTCFullYear)] pub fn get_utc_full_year(this: &Date) -> u32; /// The getUTCHours() method returns the hours in the specified date according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCHours + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCHours) #[wasm_bindgen(method, js_name = getUTCHours)] pub fn get_utc_hours(this: &Date) -> u32; /// The getUTCMilliseconds() method returns the milliseconds in the specified date /// according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds) #[wasm_bindgen(method, js_name = getUTCMilliseconds)] pub fn get_utc_milliseconds(this: &Date) -> u32; /// The getUTCMinutes() method returns the minutes in the specified date according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes) #[wasm_bindgen(method, js_name = getUTCMinutes)] pub fn get_utc_minutes(this: &Date) -> u32; /// The getUTCMonth() returns the month of the specified date according to universal time, /// as a zero-based value (where zero indicates the first month of the year). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth) #[wasm_bindgen(method, js_name = getUTCMonth)] pub fn get_utc_month(this: &Date) -> u32; /// The getUTCSeconds() method returns the seconds in the specified date according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds) #[wasm_bindgen(method, js_name = getUTCSeconds)] pub fn get_utc_seconds(this: &Date) -> u32; @@ -1673,14 +1673,14 @@ extern "C" { /// a single moment in time. Date objects are based on a time value that is /// the number of milliseconds since 1 January 1970 UTC. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) #[wasm_bindgen(constructor)] pub fn new(init: &JsValue) -> Date; /// The `Date.now()` method returns the number of milliseconds /// elapsed since January 1, 1970 00:00:00 UTC. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now) #[wasm_bindgen(static_method_of = Date)] pub fn now() -> f64; @@ -1688,20 +1688,20 @@ extern "C" { /// since January 1, 1970, 00:00:00 UTC or NaN if the string is unrecognized or, in some cases, /// contains illegal date values (e.g. 2015-02-31). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse) #[wasm_bindgen(static_method_of = Date)] pub fn parse(date: &str) -> f64; /// The setDate() method sets the day of the Date object relative to the beginning of the currently set month. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate) #[wasm_bindgen(method, js_name = setDate)] pub fn set_date(this: &Date, day: u32) -> f64; /// The setFullYear() method sets the full year for a specified date according to local time. /// Returns new timestamp. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear) #[wasm_bindgen(method, js_name = setFullYear)] pub fn set_full_year(this: &Date, year: u32) -> f64; @@ -1709,51 +1709,51 @@ extern "C" { /// and returns the number of milliseconds since January 1, 1970 00:00:00 UTC until the time represented /// by the updated Date instance. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setHours + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setHours) #[wasm_bindgen(method, js_name = setHours)] pub fn set_hours(this: &Date, hours: u32) -> f64; /// The setMilliseconds() method sets the milliseconds for a specified date according to local time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds) #[wasm_bindgen(method, js_name = setMilliseconds)] pub fn set_milliseconds(this: &Date, milliseconds: u32) -> f64; /// The setMinutes() method sets the minutes for a specified date according to local time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMinutes + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMinutes) #[wasm_bindgen(method, js_name = setMinutes)] pub fn set_minutes(this: &Date, minutes: u32) -> f64; /// The setMonth() method sets the month for a specified date according to the currently set year. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMonth + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMonth) #[wasm_bindgen(method, js_name = setMonth)] pub fn set_month(this: &Date, month: u32) -> f64; /// The setSeconds() method sets the seconds for a specified date according to local time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setSeconds + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setSeconds) #[wasm_bindgen(method, js_name = setSeconds)] pub fn set_seconds(this: &Date, seconds: u32) -> f64; /// The setTime() method sets the Date object to the time represented by a number of milliseconds /// since January 1, 1970, 00:00:00 UTC. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setTime + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setTime) #[wasm_bindgen(method, js_name = setTime)] pub fn set_time(this: &Date, time: f64) -> f64; /// The setUTCDate() method sets the day of the month for a specified date /// according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCDate + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCDate) #[wasm_bindgen(method, js_name = setUTCDate)] pub fn set_utc_date(this: &Date, day: u32) -> f64; /// The setUTCFullYear() method sets the full year for a specified date according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear) #[wasm_bindgen(method, js_name = setUTCFullYear)] pub fn set_utc_full_year(this: &Date, year: u32) -> f64; @@ -1761,39 +1761,39 @@ extern "C" { /// and returns the number of milliseconds since January 1, 1970 00:00:00 UTC until the time /// represented by the updated Date instance. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCHours + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCHours) #[wasm_bindgen(method, js_name = setUTCHours)] pub fn set_utc_hours(this: &Date, hours: u32) -> f64; /// The setUTCMilliseconds() method sets the milliseconds for a specified date /// according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds) #[wasm_bindgen(method, js_name = setUTCMilliseconds)] pub fn set_utc_milliseconds(this: &Date, milliseconds: u32) -> f64; /// The setUTCMinutes() method sets the minutes for a specified date according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes) #[wasm_bindgen(method, js_name = setUTCMinutes)] pub fn set_utc_minutes(this: &Date, minutes: u32) -> f64; /// The setUTCMonth() method sets the month for a specified date according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth) #[wasm_bindgen(method, js_name = setUTCMonth)] pub fn set_utc_month(this: &Date, month: u32) -> f64; /// The setUTCSeconds() method sets the seconds for a specified date according to universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds) #[wasm_bindgen(method, js_name = setUTCSeconds)] pub fn set_utc_seconds(this: &Date, seconds: u32) -> f64; /// The toDateString() method returns the date portion of a Date object /// in human readable form in American English. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toDateString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toDateString) #[wasm_bindgen(method, js_name = toDateString)] pub fn to_date_string(this: &Date) -> JsString; @@ -1802,13 +1802,13 @@ extern "C" { /// ±YYYYYY-MM-DDTHH:mm:ss.sssZ, respectively). The timezone is always zero UTC offset, /// as denoted by the suffix "Z" /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) #[wasm_bindgen(method, js_name = toISOString)] pub fn to_iso_string(this: &Date) -> JsString; /// The toJSON() method returns a string representation of the Date object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON) #[wasm_bindgen(method, js_name = toJSON)] pub fn to_json(this: &Date) -> JsString; @@ -1820,7 +1820,7 @@ extern "C" { /// the locale used and the form of the string /// returned are entirely implementation dependent. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString) #[wasm_bindgen(method, js_name = toLocaleDateString)] pub fn to_locale_date_string(this: &Date, locale: &str, options: &JsValue) -> JsString; @@ -1832,7 +1832,7 @@ extern "C" { /// and options arguments, the locale used and the form of the string /// returned are entirely implementation dependent. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString) #[wasm_bindgen(method, js_name = toLocaleString)] pub fn to_locale_string(this: &Date, locale: &str, options: &JsValue) -> JsString; @@ -1843,28 +1843,28 @@ extern "C" { /// the locales and options arguments, the locale used and the form of the string /// returned are entirely implementation dependent. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString) #[wasm_bindgen(method, js_name = toLocaleTimeString)] pub fn to_locale_time_string(this: &Date, locale: &str) -> JsString; /// The toString() method returns a string representing /// the specified Date object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toString) #[wasm_bindgen(method, js_name = toString)] pub fn to_string(this: &Date) -> JsString; /// The toTimeString() method returns the time portion of a Date object in human /// readable form in American English. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeString) #[wasm_bindgen(method, js_name = toTimeString)] pub fn to_time_string(this: &Date) -> JsString; /// The toUTCString() method converts a date to a string, /// using the UTC time zone. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString) #[wasm_bindgen(method, js_name = toUTCString)] pub fn to_utc_string(this: &Date) -> JsString; @@ -1873,14 +1873,14 @@ extern "C" { /// milliseconds in a `Date` object since January 1, 1970, /// 00:00:00, universal time. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC) #[wasm_bindgen(static_method_of = Date, js_name = UTC)] pub fn utc(year: f64, month: f64) -> f64; /// The valueOf() method returns the primitive value of /// a Date object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf) #[wasm_bindgen(method, js_name = valueOf)] pub fn value_of(this: &Date) -> f64; } @@ -1895,7 +1895,7 @@ extern "C" { /// own properties from one or more source objects to a target object. It /// will return the target object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) #[wasm_bindgen(static_method_of = Object)] pub fn assign(target: &Object, source: &Object) -> Object; @@ -1903,7 +1903,7 @@ extern "C" { /// own properties from one or more source objects to a target object. It /// will return the target object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) #[wasm_bindgen(static_method_of = Object, js_name = assign)] pub fn assign2(target: &Object, source1: &Object, source2: &Object) -> Object; @@ -1911,14 +1911,14 @@ extern "C" { /// own properties from one or more source objects to a target object. It /// will return the target object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) #[wasm_bindgen(static_method_of = Object, js_name = assign)] pub fn assign3(target: &Object, source1: &Object, source2: &Object, source3: &Object) -> Object; /// The Object.create() method creates a new object, using an existing /// object to provide the newly created object's prototype. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create) #[wasm_bindgen(static_method_of = Object)] pub fn create(prototype: &Object) -> Object; @@ -1928,7 +1928,7 @@ extern "C" { /// configurability, or writability, from being changed, it also prevents /// the prototype from being changed. The method returns the passed object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze) #[wasm_bindgen(static_method_of = Object)] pub fn freeze(value: &Object) -> Object; @@ -1936,52 +1936,52 @@ extern "C" { /// object has the specified property as its own property (as opposed to /// inheriting it). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty) #[wasm_bindgen(method, js_name = hasOwnProperty)] pub fn has_own_property(this: &Object, property: &JsValue) -> bool; /// The Object.is() method determines whether two values are the same value. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) #[wasm_bindgen(static_method_of = Object)] pub fn is(value_1: &JsValue, value_2: &JsValue) -> bool; /// The `Object.isExtensible()` method determines if an object is extensible /// (whether it can have new properties added to it). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible) #[wasm_bindgen(static_method_of = Object, js_name = isExtensible)] pub fn is_extensible(object: &Object) -> bool; /// The `Object.isFrozen()` determines if an object is frozen. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen) #[wasm_bindgen(static_method_of = Object, js_name = isFrozen)] pub fn is_frozen(object: &Object) -> bool; /// The `Object.isSealed()` method determines if an object is sealed. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed) #[wasm_bindgen(static_method_of = Object, js_name = isSealed)] pub fn is_sealed(object: &Object) -> bool; /// The `isPrototypeOf()` method checks if an object exists in another /// object's prototype chain. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf) #[wasm_bindgen(method, js_name = isPrototypeOf)] pub fn is_prototype_of(this: &Object, value: &JsValue) -> bool; /// The `Object.keys()` method returns an array of a given object's property /// names, in the same order as we get with a normal loop. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) #[wasm_bindgen(static_method_of = Object)] pub fn keys(object: &Object) -> Array; /// The [`Object`] constructor creates an object wrapper. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) #[wasm_bindgen(constructor)] pub fn new() -> Object; @@ -1989,14 +1989,14 @@ extern "C" { /// ever being added to an object (i.e. prevents future extensions to the /// object). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/preventExtensions) #[wasm_bindgen(static_method_of = Object, js_name = preventExtensions)] pub fn prevent_extensions(object: &Object); /// The `propertyIsEnumerable()` method returns a Boolean indicating /// whether the specified property is enumerable. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable) #[wasm_bindgen(method, js_name = propertyIsEnumerable)] pub fn property_is_enumerable(this: &Object, property: &JsValue) -> bool; @@ -2005,7 +2005,7 @@ extern "C" { /// non-configurable. Values of present properties can still be changed as /// long as they are writable. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal) #[wasm_bindgen(static_method_of = Object)] pub fn seal(value: &Object) -> Object; @@ -2013,7 +2013,7 @@ extern "C" { /// internal `[[Prototype]]` property) of a specified object to another /// object or `null`. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf) #[wasm_bindgen(static_method_of = Object, js_name = setPrototypeOf)] pub fn set_prototype_of(object: &Object, prototype: &Object) -> Object; @@ -2021,20 +2021,20 @@ extern "C" { /// This method is meant to be overridden by derived objects for /// locale-specific purposes. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString) #[wasm_bindgen(method, js_name = toLocaleString)] pub fn to_locale_string(this: &Object) -> JsString; /// The `toString()` method returns a string representing the object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) #[wasm_bindgen(method, js_name = toString)] pub fn to_string(this: &Object) -> JsString; /// The `valueOf()` method returns the primitive value of the /// specified object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf) #[wasm_bindgen(method, js_name = valueOf)] pub fn value_of(this: &Object) -> Object; @@ -2043,7 +2043,7 @@ extern "C" { /// `for...in` loop (the difference being that a for-in loop enumerates /// properties in the prototype chain as well). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values) #[wasm_bindgen(static_method_of = Object)] pub fn values(object: &Object) -> Array; } @@ -2073,14 +2073,14 @@ extern { /// operations (e.g. property lookup, assignment, enumeration, function /// invocation, etc). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) #[wasm_bindgen(constructor)] pub fn new(target: &JsValue, handler: &Object) -> Proxy; /// The `Proxy.revocable()` method is used to create a revocable [`Proxy`] /// object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/revocable + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/revocable) #[wasm_bindgen(static_method_of = Proxy)] pub fn revocable(target: &JsValue, handler: &Object) -> Object; } @@ -2091,7 +2091,7 @@ extern { /// The RangeError object indicates an error when a value is not in the set /// or range of allowed values. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type RangeError; @@ -2099,7 +2099,7 @@ extern { /// The RangeError object indicates an error when a value is not in the set /// or range of allowed values. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) #[wasm_bindgen(constructor)] pub fn new(message: &str) -> RangeError; } @@ -2110,7 +2110,7 @@ extern { /// The ReferenceError object represents an error when a non-existent /// variable is referenced. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type ReferenceError; @@ -2118,7 +2118,7 @@ extern { /// The ReferenceError object represents an error when a non-existent /// variable is referenced. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) #[wasm_bindgen(constructor)] pub fn new(message: &str) -> ReferenceError; } @@ -2132,7 +2132,7 @@ extern "C" { /// The static `Reflect.apply()` method calls a target function with /// arguments as specified. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/apply + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/apply) #[wasm_bindgen(static_method_of = Reflect, catch)] pub fn apply(target: &Function, this_argument: &JsValue, arguments_list: &Array) -> Result; @@ -2141,7 +2141,7 @@ extern "C" { /// as a function. It is equivalent to calling `new target(...args)`. It /// gives also the added option to specify a different prototype. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/construct + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/construct) #[wasm_bindgen(static_method_of = Reflect)] pub fn construct(target: &Function, arguments_list: &Array) -> JsValue; #[wasm_bindgen(static_method_of = Reflect, js_name = construct)] @@ -2150,21 +2150,21 @@ extern "C" { /// The static `Reflect.defineProperty()` method is like /// `Object.defineProperty()` but returns a `Boolean`. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty) #[wasm_bindgen(static_method_of = Reflect, js_name = defineProperty)] pub fn define_property(target: &Object, property_key: &JsValue, attributes: &Object) -> bool; /// The static `Reflect.deleteProperty()` method allows to delete /// properties. It is like the `delete` operator as a function. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty) #[wasm_bindgen(static_method_of = Reflect, js_name = deleteProperty)] pub fn delete_property(target: &Object, key: &JsValue) -> bool; /// The static `Reflect.get()` method works like getting a property from /// an object (`target[propertyKey]`) as a function. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/get + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/get) #[wasm_bindgen(static_method_of = Reflect)] pub fn get(target: &JsValue, key: &JsValue) -> JsValue; @@ -2172,7 +2172,7 @@ extern "C" { /// `Object.getOwnPropertyDescriptor()`. It returns a property descriptor /// of the given property if it exists on the object, `undefined` otherwise. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor) #[wasm_bindgen(static_method_of = Reflect, js_name = getOwnPropertyDescriptor)] pub fn get_own_property_descriptor(target: &Object, property_key: &JsValue) -> JsValue; @@ -2181,14 +2181,14 @@ extern "C" { /// (i.e. the value of the internal `[[Prototype]]` property) of /// the specified object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getPrototypeOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getPrototypeOf) #[wasm_bindgen(static_method_of = Reflect, js_name = getPrototypeOf)] pub fn get_prototype_of(target: &JsValue) -> Object; /// The static `Reflect.has()` method works like the in operator as a /// function. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/has + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/has) #[wasm_bindgen(static_method_of = Reflect)] pub fn has(target: &JsValue, property_key: &JsValue) -> bool; @@ -2196,14 +2196,14 @@ extern "C" { /// extensible (whether it can have new properties added to it). It is /// similar to `Object.isExtensible()`, but with some differences. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/isExtensible + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/isExtensible) #[wasm_bindgen(static_method_of = Reflect, js_name = isExtensible)] pub fn is_extensible(target: &Object) -> bool; /// The static `Reflect.ownKeys()` method returns an array of the /// target object's own property keys. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys) #[wasm_bindgen(static_method_of = Reflect, js_name = ownKeys)] pub fn own_keys(target: &JsValue) -> Array; @@ -2212,14 +2212,14 @@ extern "C" { /// future extensions to the object). It is similar to /// `Object.preventExtensions()`, but with some differences. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensions + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensions) #[wasm_bindgen(static_method_of = Reflect, js_name = preventExtensions)] pub fn prevent_extensions(target: &Object) -> bool; /// The static `Reflect.set()` method works like setting a /// property on an object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/set + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/set) #[wasm_bindgen(static_method_of = Reflect)] pub fn set(target: &JsValue, property_key: &JsValue, value: &JsValue) -> bool; #[wasm_bindgen(static_method_of = Reflect, js_name = set)] @@ -2230,7 +2230,7 @@ extern "C" { /// (i.e., the internal `[[Prototype]]` property) of a specified /// object to another object or to null. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/setPrototypeOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/setPrototypeOf) #[wasm_bindgen(static_method_of = Reflect, js_name = setPrototypeOf)] pub fn set_prototype_of(target: &Object, prototype: &JsValue) -> bool; } @@ -2245,14 +2245,14 @@ extern { /// The exec() method executes a search for a match in a specified /// string. Returns a result array, or null. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec) #[wasm_bindgen(method)] pub fn exec(this: &RegExp, text: &str) -> Option; /// The flags property returns a string consisting of the flags of /// the current regular expression object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/flags + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/flags) #[wasm_bindgen(method, getter)] pub fn flags(this: &RegExp) -> JsString; @@ -2260,7 +2260,7 @@ extern { /// used with the regular expression. global is a read-only /// property of an individual regular expression instance. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/global + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/global) #[wasm_bindgen(method, getter)] pub fn global(this: &RegExp) -> bool; @@ -2268,7 +2268,7 @@ extern { /// is used with the regular expression. ignoreCase is a read-only /// property of an individual regular expression instance. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase) #[wasm_bindgen(method, getter, js_name = ignoreCase)] pub fn ignore_case(this: &RegExp) -> bool; @@ -2277,21 +2277,21 @@ extern { /// regular expression is matched. RegExp.$_ is an alias for this /// property. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/input + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/input) #[wasm_bindgen(static_method_of = RegExp, getter)] pub fn input() -> JsString; /// The lastIndex is a read/write integer property of regular expression /// instances that specifies the index at which to start the next match. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex) #[wasm_bindgen(structural, getter = lastIndex, method)] pub fn last_index(this: &RegExp) -> u32; /// The lastIndex is a read/write integer property of regular expression /// instances that specifies the index at which to start the next match. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex) #[wasm_bindgen(structural, setter = lastIndex, method)] pub fn set_last_index(this: &RegExp, index: u32); @@ -2299,7 +2299,7 @@ extern { /// property of regular expressions that contains the last matched /// characters. RegExp.$& is an alias for this property. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch) #[wasm_bindgen(static_method_of = RegExp, getter, js_name = lastMatch)] pub fn last_match() -> JsString; @@ -2308,7 +2308,7 @@ extern { /// parenthesized substring match, if any. RegExp.$+ is an alias /// for this property. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastParen + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastParen) #[wasm_bindgen(static_method_of = RegExp, getter, js_name = lastParen)] pub fn last_paren() -> JsString; @@ -2317,7 +2317,7 @@ extern { /// substring preceding the most recent match. RegExp.$` is an /// alias for this property. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/leftContext + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/leftContext) #[wasm_bindgen(static_method_of = RegExp, getter, js_name = leftContext)] pub fn left_context() -> JsString; @@ -2325,7 +2325,7 @@ extern { /// is used with the regular expression. multiline is a read-only /// property of an individual regular expression instance. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/multiline + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/multiline) #[wasm_bindgen(method, getter)] pub fn multiline(this: &RegExp) -> bool; @@ -2333,7 +2333,7 @@ extern { /// are static and read-only properties of regular expressions /// that contain parenthesized substring matches. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/n + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/n) #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$1")] pub fn n1() -> JsString; #[wasm_bindgen(static_method_of = RegExp, getter, js_name = "$2")] @@ -2355,7 +2355,7 @@ extern { /// The RegExp constructor creates a regular expression object for matching text with a pattern. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) #[wasm_bindgen(constructor)] pub fn new(pattern: &str, flags: &str) -> RegExp; #[wasm_bindgen(constructor)] @@ -2366,7 +2366,7 @@ extern { /// substring following the most recent match. RegExp.$' is an /// alias for this property. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/rightContext + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/rightContext) #[wasm_bindgen(static_method_of = RegExp, getter, js_name = rightContext)] pub fn right_context() -> JsString; @@ -2374,7 +2374,7 @@ extern { /// text of the regexp object, and it doesn't contain the two /// forward slashes on both sides and any flags. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/source + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/source) #[wasm_bindgen(method, getter)] pub fn source(this: &RegExp) -> JsString; @@ -2384,7 +2384,7 @@ extern { /// a read-only property of an individual regular expression /// object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky) #[wasm_bindgen(method, getter)] pub fn sticky(this: &RegExp) -> bool; @@ -2392,14 +2392,14 @@ extern { /// regular expression and a specified string. Returns true or /// false. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test) #[wasm_bindgen(method)] pub fn test(this: &RegExp, text: &str) -> bool; /// The toString() method returns a string representing the /// regular expression. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/toString) #[wasm_bindgen(method, js_name = toString)] pub fn to_string(this: &RegExp) -> JsString; @@ -2407,7 +2407,7 @@ extern { /// used with a regular expression. unicode is a read-only /// property of an individual regular expression instance. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode) #[wasm_bindgen(method, getter)] pub fn unicode(this: &RegExp) -> bool; } @@ -2422,48 +2422,48 @@ extern { /// The `add()` method appends a new element with a specified value to the /// end of a [`Set`] object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/add + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/add) #[wasm_bindgen(method)] pub fn add(this: &Set, value: &JsValue) -> Set; /// The `clear()` method removes all elements from a [`Set`] object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/clear + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/clear) #[wasm_bindgen(method)] pub fn clear(this: &Set); /// The `delete()` method removes the specified element from a [`Set`] /// object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/delete + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/delete) #[wasm_bindgen(method)] pub fn delete(this: &Set, value: &JsValue) -> bool; /// The forEach() method executes a provided function once for each value /// in the Set object, in insertion order. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/forEach + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/forEach) #[wasm_bindgen(method, js_name = forEach)] pub fn for_each(this: &Set, callback: &mut FnMut(JsValue, JsValue, Set)); /// The `has()` method returns a boolean indicating whether an element with /// the specified value exists in a [`Set`] object or not. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/has + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/has) #[wasm_bindgen(method)] pub fn has(this: &Set, value: &JsValue) -> bool; /// The [`Set`] object lets you store unique values of any type, whether /// primitive values or object references. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) #[wasm_bindgen(constructor)] pub fn new(init: &JsValue) -> Set; /// The size accessor property returns the number of elements in a [`Set`] /// object. /// - /// https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Set/size + /// [MDN documentation](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Set/size) #[wasm_bindgen(method, getter, structural)] pub fn size(this: &Set) -> u32; } @@ -2477,7 +2477,7 @@ extern { /// keep the API similar to the Map object, each entry has the same value /// for its key and value here, so that an array [value, value] is returned. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/entries + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/entries) #[wasm_bindgen(method)] pub fn entries(set: &Set) -> Iterator; @@ -2485,14 +2485,14 @@ extern { /// Map objects); it behaves exactly the same and returns values /// of Set elements. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/values + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/values) #[wasm_bindgen(method)] pub fn keys(set: &Set) -> Iterator; /// The `values()` method returns a new Iterator object that contains the /// values for each element in the Set object in insertion order. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/values + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/values) #[wasm_bindgen(method)] pub fn values(set: &Set) -> Iterator; } @@ -2504,7 +2504,7 @@ extern { /// token order that does not conform to the syntax of the language when /// parsing code. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type SyntaxError; @@ -2513,7 +2513,7 @@ extern { /// token order that does not conform to the syntax of the language when /// parsing code. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) #[wasm_bindgen(constructor)] pub fn new(message: &str) -> SyntaxError; } @@ -2524,7 +2524,7 @@ extern { /// The TypeError object represents an error when a value is not of the /// expected type. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) #[wasm_bindgen(extends = Error, extends = Object)] #[derive(Clone, Debug)] pub type TypeError; @@ -2532,7 +2532,7 @@ extern { /// The TypeError object represents an error when a value is not of the /// expected type. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) #[wasm_bindgen(constructor)] pub fn new(message: &str) -> TypeError; } @@ -2546,14 +2546,14 @@ extern "C" { /// The `Uint8Array()` constructor creates an array of unsigned 8-bit integers. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) #[wasm_bindgen(constructor)] pub fn new(constructor_arg: &JsValue) -> Uint8Array; /// The fill() method fills all the elements of an array from a start index /// to an end index with a static value. The end index is not included. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill) #[wasm_bindgen(method)] pub fn fill(this: &Uint8Array, value: u8, start: u32, end: u32) -> Uint8Array; @@ -2601,14 +2601,14 @@ extern "C" { /// to 0-255; if you specified a value that is out of the range of [0,255], 0 or 255 will be /// set instead. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray) #[wasm_bindgen(constructor)] pub fn new(constructor_arg: &JsValue) -> Uint8ClampedArray; /// The fill() method fills all the elements of an array from a start index /// to an end index with a static value. The end index is not included. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill) #[wasm_bindgen(method)] pub fn fill(this: &Uint8ClampedArray, value: u8, start: u32, end: u32) -> Uint8ClampedArray; @@ -2654,14 +2654,14 @@ extern "C" { /// The `Uint16Array()` constructor creates an array of unsigned 16-bit integers. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array) #[wasm_bindgen(constructor)] pub fn new(constructor_arg: &JsValue) -> Uint16Array; /// The fill() method fills all the elements of an array from a start index /// to an end index with a static value. The end index is not included. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill) #[wasm_bindgen(method)] pub fn fill(this: &Uint16Array, value: u16, start: u32, end: u32) -> Uint16Array; @@ -2707,14 +2707,14 @@ extern "C" { /// The `Uint32Array()` constructor creates an array of unsigned 32-bit integers. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array) #[wasm_bindgen(constructor)] pub fn new(constructor_arg: &JsValue) -> Uint32Array; /// The fill() method fills all the elements of an array from a start index /// to an end index with a static value. The end index is not included. /// - /// http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill) #[wasm_bindgen(method)] pub fn fill(this: &Uint32Array, value: u32, start: u32, end: u32) -> Uint32Array; @@ -2757,7 +2757,7 @@ extern { /// The URIError object represents an error when a global URI handling /// function was used in a wrong way. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError) #[wasm_bindgen(extends = Error, extends = Object, js_name = URIError)] #[derive(Clone, Debug)] pub type UriError; @@ -2765,7 +2765,7 @@ extern { /// The URIError object represents an error when a global URI handling /// function was used in a wrong way. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError) #[wasm_bindgen(constructor, js_class = "URIError")] pub fn new(message: &str) -> UriError; } @@ -2781,35 +2781,35 @@ extern "C" { /// keys are weakly referenced. The keys must be objects and the values can /// be arbitrary values. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) #[wasm_bindgen(constructor)] pub fn new() -> WeakMap; /// The `set()` method sets the value for the key in the [`WeakMap`] object. /// Returns the [`WeakMap`] object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/set + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/set) #[wasm_bindgen(method, js_class = "WeakMap")] pub fn set(this: &WeakMap, key: &Object, value: &JsValue) -> WeakMap; /// The get() method returns a specified by key element /// from a [`WeakMap`] object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/get + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/get) #[wasm_bindgen(method)] pub fn get(this: &WeakMap, key: &Object) -> JsValue; /// The `has()` method returns a boolean indicating whether an element with /// the specified key exists in the [`WeakMap`] object or not. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/has + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/has) #[wasm_bindgen(method)] pub fn has(this: &WeakMap, key: &Object) -> bool; /// The `delete()` method removes the specified element from a [`WeakMap`] /// object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/delete + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap/delete) #[wasm_bindgen(method)] pub fn delete(this: &WeakMap, key: &Object) -> bool; } @@ -2823,27 +2823,27 @@ extern "C" { /// The `WeakSet` object lets you store weakly held objects in a collection. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) #[wasm_bindgen(constructor)] pub fn new() -> WeakSet; /// The `has()` method returns a boolean indicating whether an object exists /// in a WeakSet or not. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/has + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/has) #[wasm_bindgen(method)] pub fn has(this: &WeakSet, value: &Object) -> bool; /// The `add()` method appends a new object to the end of a WeakSet object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/add + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/add) #[wasm_bindgen(method)] pub fn add(this: &WeakSet, value: &Object) -> WeakSet; /// The `delete()` method removes the specified element from a WeakSet /// object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/delete + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/delete) #[wasm_bindgen(method)] pub fn delete(this: &WeakSet, value: &Object) -> bool; } @@ -2860,7 +2860,7 @@ pub mod WebAssembly { /// necessary to a compile a module before it can be instantiated /// (otherwise, the `WebAssembly.instantiate()` function should be used). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/compile) #[wasm_bindgen(js_namespace = WebAssembly)] pub fn compile(buffer_source: &JsValue) -> Promise; @@ -2868,7 +2868,7 @@ pub mod WebAssembly { /// array of WebAssembly binary code, returning whether the bytes /// form a valid wasm module (`true`) or not (`false`). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/validate + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/validate) #[wasm_bindgen(js_namespace = WebAssembly, catch)] pub fn validate(buffer_source: &JsValue) -> Result; } @@ -2880,7 +2880,7 @@ pub mod WebAssembly { /// WebAssembly `CompileError` object, which indicates an error during /// WebAssembly decoding or validation. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError) #[wasm_bindgen(extends = Error, js_namespace = WebAssembly)] #[derive(Clone, Debug)] pub type CompileError; @@ -2889,7 +2889,7 @@ pub mod WebAssembly { /// WebAssembly `CompileError` object, which indicates an error during /// WebAssembly decoding or validation. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/CompileError) #[wasm_bindgen(constructor, js_namespace = WebAssembly)] pub fn new(message: &str) -> CompileError; } @@ -2901,7 +2901,7 @@ pub mod WebAssembly { /// LinkError object, which indicates an error during module /// instantiation (besides traps from the start function). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError) #[wasm_bindgen(extends = Error, js_namespace = WebAssembly)] #[derive(Clone, Debug)] pub type LinkError; @@ -2910,7 +2910,7 @@ pub mod WebAssembly { /// LinkError object, which indicates an error during module /// instantiation (besides traps from the start function). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/LinkError) #[wasm_bindgen(constructor, js_namespace = WebAssembly)] pub fn new(message: &str) -> LinkError; } @@ -2922,7 +2922,7 @@ pub mod WebAssembly { /// `RuntimeError` object — the type that is thrown whenever WebAssembly /// specifies a trap. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError) #[wasm_bindgen(extends = Error, js_namespace = WebAssembly)] #[derive(Clone, Debug)] pub type RuntimeError; @@ -2931,7 +2931,7 @@ pub mod WebAssembly { /// `RuntimeError` object — the type that is thrown whenever WebAssembly /// specifies a trap. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/RuntimeError) #[wasm_bindgen(constructor, js_namespace = WebAssembly)] pub fn new(message: &str) -> RuntimeError; } @@ -2943,7 +2943,7 @@ pub mod WebAssembly { /// that has already been compiled by the browser and can be /// efficiently shared with Workers, and instantiated multiple times. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module) #[wasm_bindgen(js_namespace = WebAssembly, extends = Object)] #[derive(Clone, Debug)] pub type Module; @@ -2952,7 +2952,7 @@ pub mod WebAssembly { /// that has already been compiled by the browser and can be /// efficiently shared with Workers, and instantiated multiple times. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module) #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)] pub fn new(buffer_source: &JsValue) -> Result; @@ -2960,21 +2960,21 @@ pub mod WebAssembly { /// contents of all custom sections in the given module with the given /// string name. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/customSections + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/customSections) #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly, js_name = customSections)] pub fn custom_sections(module: &Module, sectionName: &str) -> Array; /// The `WebAssembly.exports()` function returns an array containing /// descriptions of all the declared exports of the given `Module`. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/exports + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/exports) #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly)] pub fn exports(module: &Module) -> Array; /// The `WebAssembly.imports()` function returns an array containing /// descriptions of all the declared imports of the given `Module`. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/imports + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module/imports) #[wasm_bindgen(static_method_of = Module, js_namespace = WebAssembly)] pub fn imports(module: &Module) -> Array; } @@ -2985,7 +2985,7 @@ pub mod WebAssembly { /// The `WebAssembly.Table()` constructor creates a new `Table` object /// of the given size and element type. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table) #[wasm_bindgen(js_namespace = WebAssembly, extends = Object)] #[derive(Clone, Debug)] pub type Table; @@ -2993,7 +2993,7 @@ pub mod WebAssembly { /// The `WebAssembly.Table()` constructor creates a new `Table` object /// of the given size and element type. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table) #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)] pub fn new(table_descriptor: &Object) -> Result; @@ -3001,7 +3001,7 @@ pub mod WebAssembly { /// returns the length of the table, i.e. the number of elements in the /// table. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/length + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/length) #[wasm_bindgen(method, getter, js_namespace = WebAssembly)] pub fn length(this: &Table) -> u32; } @@ -3009,7 +3009,7 @@ pub mod WebAssembly { // WebAssembly.Memory #[wasm_bindgen] extern "C" { - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory) #[wasm_bindgen(js_namespace = WebAssembly, extends = Object)] #[derive(Clone, Debug)] pub type Memory; @@ -3021,14 +3021,14 @@ pub mod WebAssembly { /// A memory created by JavaScript or in WebAssembly code will be /// accessible and mutable from both JavaScript and WebAssembly. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory) #[wasm_bindgen(constructor, js_namespace = WebAssembly, catch)] pub fn new(descriptor: &Object) -> Result; /// An accessor property that returns the buffer contained in the /// memory. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/buffer) #[wasm_bindgen(method, getter, js_namespace = WebAssembly)] pub fn buffer(this: &Memory) -> JsValue; @@ -3039,7 +3039,7 @@ pub mod WebAssembly { /// Takes the number of pages to grow (64KiB in size) and returns the /// previous size of memory, in pages. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Memory/grow) #[wasm_bindgen(method, js_namespace = WebAssembly)] pub fn grow(this: &Memory, pages: u32) -> u32; } @@ -3055,7 +3055,7 @@ extern "C" { /// The `JSON.parse()` method parses a JSON string, constructing the /// JavaScript value or object described by the string. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse) #[wasm_bindgen(catch, static_method_of = JSON)] pub fn parse(text: &str) -> Result; @@ -3064,7 +3064,7 @@ extern "C" { /// optionally including only the specified properties if a replacer array is /// specified. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) #[wasm_bindgen(catch, static_method_of = JSON)] pub fn stringify(obj: &JsValue) -> Result; @@ -3080,7 +3080,7 @@ extern "C" { /// The length property of a String object indicates the length of a string, /// in UTF-16 code units. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length) #[wasm_bindgen(method, getter, structural)] pub fn length(this: &JsString) -> u32; @@ -3088,7 +3088,7 @@ extern "C" { /// the single UTF-16 code unit located at the specified offset into the /// string. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt) #[wasm_bindgen(method, js_class = "String", js_name = charAt)] pub fn char_at(this: &JsString, index: u32) -> JsString; @@ -3102,35 +3102,35 @@ extern "C" { /// /// Returns `NaN` if index is out of range. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt) #[wasm_bindgen(method, js_class = "String", js_name = charCodeAt)] pub fn char_code_at(this: &JsString, index: u32) -> f64; /// The `codePointAt()` method returns a non-negative integer that is the /// Unicode code point value. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt) #[wasm_bindgen(method, js_class = "String", js_name = codePointAt)] pub fn code_point_at(this: &JsString, pos: u32) -> JsValue; /// The `concat()` method concatenates the string arguments to the calling /// string and returns a new string. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/concat + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/concat) #[wasm_bindgen(method, js_class = "String")] pub fn concat(this: &JsString, string_2: &JsValue) -> JsString; /// The endsWith() method determines whether a string ends with the characters of a /// specified string, returning true or false as appropriate. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith) #[wasm_bindgen(method, js_class = "String", js_name = endsWith)] pub fn ends_with(this: &JsString, search_string: &str, length: i32) -> bool; /// The static String.fromCharCode() method returns a string created from /// the specified sequence of UTF-16 code units. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode) /// /// # Notes /// @@ -3139,26 +3139,26 @@ extern "C" { #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)] pub fn from_char_code1(a: u32) -> JsString; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode) #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)] pub fn from_char_code2(a: u32, b: u32) -> JsString; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode) #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)] pub fn from_char_code3(a: u32, b: u32, c: u32) -> JsString; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode) #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)] pub fn from_char_code4(a: u32, b: u32, c: u32, d: u32) -> JsString; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode) #[wasm_bindgen(static_method_of = JsString, js_class = "String", js_name = fromCharCode)] pub fn from_char_code5(a: u32, b: u32, c: u32, d: u32, e: u32) -> JsString; /// The static String.fromCodePoint() method returns a string created by /// using the specified sequence of code points. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint) /// /// # Exceptions /// @@ -3171,26 +3171,26 @@ extern "C" { #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] pub fn from_code_point1(a: u32) -> Result; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint) #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] pub fn from_code_point2(a: u32, b: u32) -> Result; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint) #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] pub fn from_code_point3(a: u32, b: u32, c: u32) -> Result; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint) #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] pub fn from_code_point4(a: u32, b: u32, c: u32, d: u32) -> Result; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint) #[wasm_bindgen(catch, static_method_of = JsString, js_class = "String", js_name = fromCodePoint)] pub fn from_code_point5(a: u32, b: u32, c: u32, d: u32, e: u32) -> Result; /// The `includes()` method determines whether one string may be found /// within another string, returning true or false as appropriate. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes) #[wasm_bindgen(method, js_class = "String")] pub fn includes(this: &JsString, search_string: &str, position: i32) -> bool; @@ -3198,7 +3198,7 @@ extern "C" { /// object of the first occurrence of the specified value, starting the /// search at fromIndex. Returns -1 if the value is not found. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf) #[wasm_bindgen(method, js_class = "String", js_name = indexOf)] pub fn index_of(this: &JsString, search_value: &str, from_index: i32) -> i32; @@ -3206,7 +3206,7 @@ extern "C" { /// object of the last occurrence of the specified value, searching /// backwards from fromIndex. Returns -1 if the value is not found. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf) #[wasm_bindgen(method, js_class = "String", js_name = lastIndexOf)] pub fn last_index_of(this: &JsString, search_value: &str, from_index: i32) -> i32; @@ -3214,20 +3214,20 @@ extern "C" { /// a reference string comes before or after or is the same as /// the given string in sort order. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare) #[wasm_bindgen(method, js_class = "String", js_name = localeCompare)] pub fn locale_compare(this: &JsString, compare_string: &str, locales: &Array, options: &Object) -> i32; /// The match() method retrieves the matches when matching a string against a regular expression. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) #[wasm_bindgen(method, js_class = "String", js_name = match)] pub fn match_(this: &JsString, pattern: &RegExp) -> Option; /// The normalize() method returns the Unicode Normalization Form /// of a given string (if the value isn't a string, it will be converted to one first). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize) #[wasm_bindgen(method, js_class = "String")] pub fn normalize(this: &JsString, form: &str) -> JsString; @@ -3236,7 +3236,7 @@ extern "C" { /// length. The padding is applied from the end (right) of the current /// string. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd) #[wasm_bindgen(method, js_class = "String", js_name = padEnd)] pub fn pad_end(this: &JsString, target_length: u32, pad_string: &str) -> JsString; @@ -3245,14 +3245,14 @@ extern "C" { /// length. The padding is applied from the start (left) of the current /// string. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart) #[wasm_bindgen(method, js_class = "String", js_name = padStart)] pub fn pad_start(this: &JsString, target_length: u32, pad_string: &str) -> JsString; /// The repeat() method constructs and returns a new string which contains the specified /// number of copies of the string on which it was called, concatenated together. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat) #[wasm_bindgen(method, js_class = "String")] pub fn repeat(this: &JsString, count: i32) -> JsString; @@ -3262,51 +3262,51 @@ extern "C" { /// /// Note: The original string will remain unchanged. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) #[wasm_bindgen(method, js_class = "String")] pub fn replace(this: &JsString, pattern: &str, replacement: &str) -> JsString; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) #[wasm_bindgen(method, js_class = "String", js_name = replace)] pub fn replace_with_function(this: &JsString, pattern: &str, replacement: &Function) -> JsString; #[wasm_bindgen(method, js_class = "String", js_name = replace)] pub fn replace_by_pattern(this: &JsString, pattern: &RegExp, replacement: &str) -> JsString; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace) #[wasm_bindgen(method, js_class = "String", js_name = replace)] pub fn replace_by_pattern_with_function(this: &JsString, pattern: &RegExp, replacement: &Function) -> JsString; /// The search() method executes a search for a match between /// a regular expression and this String object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search) #[wasm_bindgen(method, js_class = "String")] pub fn search(this: &JsString, pattern: &RegExp) -> i32; /// The `slice()` method extracts a section of a string and returns it as a /// new string, without modifying the original string. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice) #[wasm_bindgen(method, js_class = "String")] pub fn slice(this: &JsString, start: u32, end: u32) -> JsString; /// The split() method splits a String object into an array of strings by separating the string /// into substrings, using a specified separator string to determine where to make each split. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) #[wasm_bindgen(method, js_class = "String")] pub fn split(this: &JsString, separator: &str) -> Array; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) #[wasm_bindgen(method, js_class = "String", js_name = split)] pub fn split_limit(this: &JsString, separator: &str, limit: u32) -> Array; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) #[wasm_bindgen(method, js_class = "String", js_name = split)] pub fn split_by_pattern(this: &JsString, pattern: &RegExp) -> Array; - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split) #[wasm_bindgen(method, js_class = "String", js_name = split)] pub fn split_by_pattern_limit(this: &JsString, pattern: &RegExp, limit: u32) -> Array; @@ -3314,56 +3314,56 @@ extern "C" { /// characters of a specified string, returning true or false as /// appropriate. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith) #[wasm_bindgen(method, js_class = "String", js_name = startsWith)] pub fn starts_with(this: &JsString, search_string: &str, position: u32) -> bool; /// The `substring()` method returns the part of the string between the /// start and end indexes, or to the end of the string. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring) #[wasm_bindgen(method, js_class = "String")] pub fn substring(this: &JsString, index_start: u32, index_end: u32) -> JsString; /// The `substr()` method returns the part of a string between /// the start index and a number of characters after it. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr) #[wasm_bindgen(method, js_class = "String")] pub fn substr(this: &JsString, start: i32, length: i32) -> JsString; /// The toLocaleLowerCase() method returns the calling string value converted to lower case, /// according to any locale-specific case mappings. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase) #[wasm_bindgen(method, js_class = "String", js_name = toLocaleLowerCase)] pub fn to_locale_lower_case(this: &JsString, locale: Option<&str>) -> JsString; /// The toLocaleUpperCase() method returns the calling string value converted to upper case, /// according to any locale-specific case mappings. /// - /// https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase + /// [MDN documentation](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase) #[wasm_bindgen(method, js_class = "String", js_name = toLocaleUpperCase)] pub fn to_locale_upper_case(this: &JsString, locale: Option<&str>) -> JsString; /// The `toLowerCase()` method returns the calling string value /// converted to lower case. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase) #[wasm_bindgen(method, js_class = "String", js_name = toLowerCase)] pub fn to_lower_case(this: &JsString) -> JsString; /// The `toString()` method returns a string representing the specified /// object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toString) #[wasm_bindgen(method, js_class = "String", js_name = toString)] pub fn to_string(this: &JsString) -> JsString; /// The `toUpperCase()` method returns the calling string value converted to /// uppercase (the value will be converted to a string if it isn't one). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) #[wasm_bindgen(method, js_class = "String", js_name = toUpperCase)] pub fn to_upper_case(this: &JsString) -> JsString; @@ -3372,41 +3372,41 @@ extern "C" { /// no-break space, etc.) and all the line terminator characters (LF, CR, /// etc.). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim) #[wasm_bindgen(method, js_class = "String")] pub fn trim(this: &JsString) -> JsString; /// The `trimEnd()` method removes whitespace from the end of a string. /// `trimRight()` is an alias of this method. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd) #[wasm_bindgen(method, js_class = "String", js_name = trimEnd)] pub fn trim_end(this: &JsString) -> JsString; /// The `trimEnd()` method removes whitespace from the end of a string. /// `trimRight()` is an alias of this method. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimEnd) #[wasm_bindgen(method, js_class = "String", js_name = trimRight)] pub fn trim_right(this: &JsString) -> JsString; /// The `trimStart()` method removes whitespace from the beginning of a /// string. `trimLeft()` is an alias of this method. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart) #[wasm_bindgen(method, js_class = "String", js_name = trimStart)] pub fn trim_start(this: &JsString) -> JsString; /// The `trimStart()` method removes whitespace from the beginning of a /// string. `trimLeft()` is an alias of this method. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trimStart) #[wasm_bindgen(method, js_class = "String", js_name = trimLeft)] pub fn trim_left(this: &JsString) -> JsString; /// The `valueOf()` method returns the primitive value of a `String` object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/valueOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/valueOf) #[wasm_bindgen(method, js_class = "String", js_name = valueOf)] pub fn value_of(this: &JsString) -> JsString; } @@ -3492,7 +3492,7 @@ extern "C" { /// if a constructor object recognizes an object as its instance. /// The `instanceof` operator's behavior can be customized by this symbol. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance) #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = hasInstance)] pub fn has_instance() -> Symbol; @@ -3500,14 +3500,14 @@ extern "C" { /// if an object should be flattened to its array elements when using the /// `Array.prototype.concat()` method. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable) #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = isConcatSpreadable)] pub fn is_concat_spreadable() -> Symbol; /// The `Symbol.iterator` well-known symbol specifies the default iterator /// for an object. Used by `for...of`. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator) #[wasm_bindgen(static_method_of = Symbol, getter, structural)] pub fn iterator() -> Symbol; @@ -3515,7 +3515,7 @@ extern "C" { /// expression against a string. This function is called by the /// `String.prototype.match()` method. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/match + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/match) #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = match)] pub fn match_() -> Symbol; @@ -3526,7 +3526,7 @@ extern "C" { /// For more information, see `RegExp.prototype[@@replace]()` and /// `String.prototype.replace()`. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/replace) #[wasm_bindgen(static_method_of = Symbol, getter, structural)] pub fn replace() -> Symbol; @@ -3537,14 +3537,14 @@ extern "C" { /// For more information, see `RegExp.prototype[@@search]()` and /// `String.prototype.search()`. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/search + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/search) #[wasm_bindgen(static_method_of = Symbol, getter, structural)] pub fn search() -> Symbol; /// The well-known symbol `Symbol.species` specifies a function-valued /// property that the constructor function uses to create derived objects. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/species + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/species) #[wasm_bindgen(static_method_of = Symbol, getter, structural)] pub fn species() -> Symbol; @@ -3554,7 +3554,7 @@ extern "C" { /// /// For more information, see `RegExp.prototype[@@split]()` and /// `String.prototype.split()`. - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/split + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/split) #[wasm_bindgen(static_method_of = Symbol, getter, structural)] pub fn split() -> Symbol; @@ -3562,7 +3562,7 @@ extern "C" { /// property that is called to convert an object to a corresponding /// primitive value. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive) #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = toPrimitive)] pub fn to_primitive() -> Symbol; @@ -3571,7 +3571,7 @@ extern "C" { /// object. It is accessed internally by the `Object.prototype.toString()` /// method. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toString) #[wasm_bindgen(static_method_of = Symbol, getter, structural, js_name = toStringTag)] pub fn to_string_tag() -> Symbol; @@ -3579,19 +3579,19 @@ extern "C" { /// the given key and returns it if found. /// Otherwise a new symbol gets created in the global symbol registry with this key. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for) #[wasm_bindgen(static_method_of = Symbol, js_name = for)] pub fn for_(key: &str) -> Symbol; /// The Symbol.keyFor(sym) method retrieves a shared symbol key from the global symbol registry for the given symbol. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/keyFor + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/keyFor) #[wasm_bindgen(static_method_of = Symbol, js_name = keyFor)] pub fn key_for(sym: &Symbol) -> JsValue; /// The toString() method returns a string representing the specified Symbol object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toString + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toString) #[wasm_bindgen(method, js_name = toString)] pub fn to_string(this: &Symbol) -> JsString; @@ -3599,13 +3599,13 @@ extern "C" { /// value of whose own and inherited property names are excluded from the /// with environment bindings of the associated object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/unscopables + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/unscopables) #[wasm_bindgen(static_method_of = Symbol, getter, structural)] pub fn unscopables() -> Symbol; /// The valueOf() method returns the primitive value of a Symbol object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/valueOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/valueOf) #[wasm_bindgen(method, js_name = valueOf)] pub fn value_of(this: &Symbol) -> Symbol; } @@ -3621,7 +3621,7 @@ pub mod Intl { /// the canonical locale names. Duplicates will be omitted and elements /// will be validated as structurally valid language tags. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales) #[wasm_bindgen(js_name = getCanonicalLocales, js_namespace = Intl)] pub fn get_canonical_locales(s: &JsValue) -> Array; } @@ -3632,7 +3632,7 @@ pub mod Intl { /// The Intl.Collator object is a constructor for collators, objects /// that enable language sensitive string comparison. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator) #[wasm_bindgen(extends = Object, js_namespace = Intl)] #[derive(Clone, Debug)] pub type Collator; @@ -3640,7 +3640,7 @@ pub mod Intl { /// The Intl.Collator object is a constructor for collators, objects /// that enable language sensitive string comparison. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator) #[wasm_bindgen(constructor, js_namespace = Intl)] pub fn new(locales: &Array, options: &Object) -> Collator; @@ -3648,7 +3648,7 @@ pub mod Intl { /// compares two strings according to the sort order of this Collator /// object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/compare + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/compare) #[wasm_bindgen(method, getter, js_class = "Intl.Collator")] pub fn compare(this: &Collator) -> Function; @@ -3656,7 +3656,7 @@ pub mod Intl { /// object with properties reflecting the locale and collation options /// computed during initialization of this Collator object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/resolvedOptions + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/resolvedOptions) #[wasm_bindgen(method, js_namespace = Intl, js_name = resolvedOptions)] pub fn resolved_options(this: &Collator) -> Object; @@ -3665,7 +3665,7 @@ pub mod Intl { /// collation without having to fall back to the runtime's default /// locale. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/supportedLocalesOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Collator/supportedLocalesOf) #[wasm_bindgen(static_method_of = Collator, js_namespace = Intl, js_name = supportedLocalesOf)] pub fn supported_locales_of(locales: &Array, options: &Object) -> Array; } @@ -3676,7 +3676,7 @@ pub mod Intl { /// The Intl.DateTimeFormat object is a constructor for objects /// that enable language-sensitive date and time formatting. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat) #[wasm_bindgen(extends = Object, js_namespace = Intl)] #[derive(Clone, Debug)] pub type DateTimeFormat; @@ -3684,7 +3684,7 @@ pub mod Intl { /// The Intl.DateTimeFormat object is a constructor for objects /// that enable language-sensitive date and time formatting. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat) #[wasm_bindgen(constructor, js_namespace = Intl)] pub fn new(locales: &Array, options: &Object) -> DateTimeFormat; @@ -3692,14 +3692,14 @@ pub mod Intl { /// formats a date according to the locale and formatting options of this /// Intl.DateTimeFormat object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/format + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/format) #[wasm_bindgen(method, getter, js_class = "Intl.DateTimeFormat")] pub fn format(this: &DateTimeFormat) -> Function; /// The Intl.DateTimeFormat.prototype.formatToParts() method allows locale-aware /// formatting of strings produced by DateTimeFormat formatters. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts) #[wasm_bindgen(method, js_class = "Intl.DateTimeFormat", js_name = formatToParts)] pub fn format_to_parts(this: &DateTimeFormat, date: &Date) -> Array; @@ -3707,7 +3707,7 @@ pub mod Intl { /// object with properties reflecting the locale and date and time formatting /// options computed during initialization of this DateTimeFormat object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/resolvedOptions + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/resolvedOptions) #[wasm_bindgen(method, js_namespace = Intl, js_name = resolvedOptions)] pub fn resolved_options(this: &DateTimeFormat) -> Object; @@ -3716,7 +3716,7 @@ pub mod Intl { /// and time formatting without having to fall back to the runtime's default /// locale. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/supportedLocalesOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/supportedLocalesOf) #[wasm_bindgen(static_method_of = DateTimeFormat, js_namespace = Intl, js_name = supportedLocalesOf)] pub fn supported_locales_of(locales: &Array, options: &Object) -> Array; } @@ -3727,7 +3727,7 @@ pub mod Intl { /// The Intl.NumberFormat object is a constructor for objects /// that enable language sensitive number formatting. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat) #[wasm_bindgen(extends = Object, js_namespace = Intl)] #[derive(Clone, Debug)] pub type NumberFormat; @@ -3735,7 +3735,7 @@ pub mod Intl { /// The Intl.NumberFormat object is a constructor for objects /// that enable language sensitive number formatting. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat) #[wasm_bindgen(constructor, js_namespace = Intl)] pub fn new(locales: &Array, options: &Object) -> NumberFormat; @@ -3743,14 +3743,14 @@ pub mod Intl { /// formats a number according to the locale and formatting options of this /// NumberFormat object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/format + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/format) #[wasm_bindgen(method, getter, js_class = "Intl.NumberFormat")] pub fn format(this: &NumberFormat) -> Function; /// The Intl.Numberformat.prototype.formatToParts() method allows locale-aware /// formatting of strings produced by NumberTimeFormat formatters. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/formatToParts + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/formatToParts) #[wasm_bindgen(method, js_class = "Intl.NumberFormat", js_name = formatToParts)] pub fn format_to_parts(this: &NumberFormat, number: f64) -> Array; @@ -3758,7 +3758,7 @@ pub mod Intl { /// object with properties reflecting the locale and number formatting /// options computed during initialization of this NumberFormat object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/resolvedOptions + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/resolvedOptions) #[wasm_bindgen(method, js_namespace = Intl, js_name = resolvedOptions)] pub fn resolved_options(this: &NumberFormat) -> Object; @@ -3766,7 +3766,7 @@ pub mod Intl { /// containing those of the provided locales that are supported in number /// formatting without having to fall back to the runtime's default locale. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/supportedLocalesOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/supportedLocalesOf) #[wasm_bindgen(static_method_of = NumberFormat, js_namespace = Intl, js_name = supportedLocalesOf)] pub fn supported_locales_of(locales: &Array, options: &Object) -> Array; } @@ -3777,7 +3777,7 @@ pub mod Intl { /// The Intl.PluralRules object is a constructor for objects /// that enable plural sensitive formatting and plural language rules. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules) #[wasm_bindgen(extends = Object, js_namespace = Intl)] #[derive(Clone, Debug)] pub type PluralRules; @@ -3785,7 +3785,7 @@ pub mod Intl { /// The Intl.PluralRules object is a constructor for objects /// that enable plural sensitive formatting and plural language rules. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules) #[wasm_bindgen(constructor, js_namespace = Intl)] pub fn new(locales: &Array, options: &Object) -> PluralRules; @@ -3793,14 +3793,14 @@ pub mod Intl { /// object with properties reflecting the locale and plural formatting /// options computed during initialization of this PluralRules object. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules/resolvedOptions + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules/resolvedOptions) #[wasm_bindgen(method, js_namespace = Intl, js_name = resolvedOptions)] pub fn resolved_options(this: &PluralRules) -> Object; /// The Intl.PluralRules.prototype.select method returns a String indicating /// which plural rule to use for locale-aware formatting. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules/select + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules/select) #[wasm_bindgen(method, js_namespace = Intl)] pub fn select(this: &PluralRules, number: f64) -> JsString; @@ -3808,7 +3808,7 @@ pub mod Intl { /// containing those of the provided locales that are supported in plural /// formatting without having to fall back to the runtime's default locale. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules/supportedLocalesOf + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/PluralRules/supportedLocalesOf) #[wasm_bindgen(static_method_of = PluralRules, js_namespace = Intl, js_name = supportedLocalesOf)] pub fn supported_locales_of(locales: &Array, options: &Object) -> Array; } @@ -3820,7 +3820,7 @@ extern { /// The `Promise` object represents the eventual completion (or failure) of /// an asynchronous operation, and its resulting value. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) #[wasm_bindgen(extends = Object)] pub type Promise; @@ -3839,7 +3839,7 @@ extern { /// If an error is thrown in the executor function, the promise is rejected. /// The return value of the executor is ignored. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) #[wasm_bindgen(constructor)] pub fn new(cb: &mut FnMut(Function, Function)) -> Promise; @@ -3848,7 +3848,7 @@ extern { /// or when the iterable argument contains no promises. It rejects with the /// reason of the first promise that rejects. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all) #[wasm_bindgen(static_method_of = Promise)] pub fn all(obj: &JsValue) -> Promise; @@ -3856,14 +3856,14 @@ extern { /// rejects as soon as one of the promises in the iterable resolves or /// rejects, with the value or reason from that promise. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race) #[wasm_bindgen(static_method_of = Promise)] pub fn race(obj: &JsValue) -> Promise; /// The `Promise.reject(reason)` method returns a `Promise` object that is /// rejected with the given reason. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject) #[wasm_bindgen(static_method_of = Promise)] pub fn reject(obj: &JsValue) -> Promise; @@ -3873,7 +3873,7 @@ extern { /// returned promise will "follow" that thenable, adopting its eventual /// state; otherwise the returned promise will be fulfilled with the value. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve) #[wasm_bindgen(static_method_of = Promise)] pub fn resolve(obj: &JsValue) -> Promise; @@ -3882,14 +3882,14 @@ extern { /// onRejected)` (in fact, calling `obj.catch(onRejected)` internally calls /// `obj.then(undefined, onRejected)`). /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch) #[wasm_bindgen(method)] pub fn catch(this: &Promise, cb: &Closure) -> Promise; /// The `then()` method returns a `Promise`. It takes up to two arguments: /// callback functions for the success and failure cases of the `Promise`. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) #[wasm_bindgen(method)] pub fn then(this: &Promise, cb: &Closure) -> Promise; @@ -3908,7 +3908,7 @@ extern { /// This lets you avoid duplicating code in both the promise's `then()` and /// `catch()` handlers. /// - /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/finally + /// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/finally) #[wasm_bindgen(method)] pub fn finally(this: &Promise, cb: &Closure) -> Promise; } From 6c0a00ca39e3b13bb690ce876cae107a1ab33e5e Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Aug 2018 17:34:35 -0700 Subject: [PATCH 58/71] Build tags on AppVeyor --- .appveyor.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.appveyor.yml b/.appveyor.yml index 9a0ae593..089c417d 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -31,6 +31,7 @@ test_script: branches: only: - master + - /^\d/ before_deploy: - ps: | From 7154372af92924d00fb906a1b162470a8949fe8a Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Aug 2018 17:39:40 -0700 Subject: [PATCH 59/71] Remove yarn tests on CI We're not actually using them any more! --- .travis.yml | 12 - yarn.lock | 3502 --------------------------------------------------- 2 files changed, 3514 deletions(-) delete mode 100644 yarn.lock diff --git a/.travis.yml b/.travis.yml index 8319842d..b188ed3f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -119,18 +119,6 @@ matrix: chrome: stable if: branch = master - # Tests pass on nightly using yarn - - rust: nightly - env: JOB=test-yarn-smoke - install: - - *INSTALL_NODE_VIA_NVM - - travis_retry curl -OLSf https://yarnpkg.com/install.sh - - travis_retry bash install.sh -- --version 1.7.0 < /dev/null - - export PATH=$HOME/.yarn/bin:$PATH - - yarn install --freeze-lockfile - script: cargo test api::works - if: branch = master - # WebIDL tests pass on nightly - rust: nightly env: JOB=test-webidl diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index f9c3b944..00000000 --- a/yarn.lock +++ /dev/null @@ -1,3502 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@webassemblyjs/ast@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.5.13.tgz#81155a570bd5803a30ec31436bc2c9c0ede38f25" - dependencies: - "@webassemblyjs/helper-module-context" "1.5.13" - "@webassemblyjs/helper-wasm-bytecode" "1.5.13" - "@webassemblyjs/wast-parser" "1.5.13" - debug "^3.1.0" - mamacro "^0.0.3" - -"@webassemblyjs/floating-point-hex-parser@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz#29ce0baa97411f70e8cce68ce9c0f9d819a4e298" - -"@webassemblyjs/helper-api-error@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz#e49b051d67ee19a56e29b9aa8bd949b5b4442a59" - -"@webassemblyjs/helper-buffer@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz#873bb0a1b46449231137c1262ddfd05695195a1e" - dependencies: - debug "^3.1.0" - -"@webassemblyjs/helper-code-frame@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz#1bd2181b6a0be14e004f0fe9f5a660d265362b58" - dependencies: - "@webassemblyjs/wast-printer" "1.5.13" - -"@webassemblyjs/helper-fsm@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz#cdf3d9d33005d543a5c5e5adaabf679ffa8db924" - -"@webassemblyjs/helper-module-context@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz#dc29ddfb51ed657655286f94a5d72d8a489147c5" - dependencies: - debug "^3.1.0" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz#03245817f0a762382e61733146f5773def15a747" - -"@webassemblyjs/helper-wasm-section@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz#efc76f44a10d3073b584b43c38a179df173d5c7d" - dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-buffer" "1.5.13" - "@webassemblyjs/helper-wasm-bytecode" "1.5.13" - "@webassemblyjs/wasm-gen" "1.5.13" - debug "^3.1.0" - -"@webassemblyjs/ieee754@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz#573e97c8c12e4eebb316ca5fde0203ddd90b0364" - dependencies: - ieee754 "^1.1.11" - -"@webassemblyjs/leb128@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.5.13.tgz#ab52ebab9cec283c1c1897ac1da833a04a3f4cee" - dependencies: - long "4.0.0" - -"@webassemblyjs/utf8@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.5.13.tgz#6b53d2cd861cf94fa99c1f12779dde692fbc2469" - -"@webassemblyjs/wasm-edit@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz#c9cef5664c245cf11b3b3a73110c9155831724a8" - dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-buffer" "1.5.13" - "@webassemblyjs/helper-wasm-bytecode" "1.5.13" - "@webassemblyjs/helper-wasm-section" "1.5.13" - "@webassemblyjs/wasm-gen" "1.5.13" - "@webassemblyjs/wasm-opt" "1.5.13" - "@webassemblyjs/wasm-parser" "1.5.13" - "@webassemblyjs/wast-printer" "1.5.13" - debug "^3.1.0" - -"@webassemblyjs/wasm-gen@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz#8e6ea113c4b432fa66540189e79b16d7a140700e" - dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-wasm-bytecode" "1.5.13" - "@webassemblyjs/ieee754" "1.5.13" - "@webassemblyjs/leb128" "1.5.13" - "@webassemblyjs/utf8" "1.5.13" - -"@webassemblyjs/wasm-opt@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz#147aad7717a7ee4211c36b21a5f4c30dddf33138" - dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-buffer" "1.5.13" - "@webassemblyjs/wasm-gen" "1.5.13" - "@webassemblyjs/wasm-parser" "1.5.13" - debug "^3.1.0" - -"@webassemblyjs/wasm-parser@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz#6f46516c5bb23904fbdf58009233c2dd8a54c72f" - dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-api-error" "1.5.13" - "@webassemblyjs/helper-wasm-bytecode" "1.5.13" - "@webassemblyjs/ieee754" "1.5.13" - "@webassemblyjs/leb128" "1.5.13" - "@webassemblyjs/utf8" "1.5.13" - -"@webassemblyjs/wast-parser@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz#5727a705d397ae6a3ae99d7f5460acf2ec646eea" - dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/floating-point-hex-parser" "1.5.13" - "@webassemblyjs/helper-api-error" "1.5.13" - "@webassemblyjs/helper-code-frame" "1.5.13" - "@webassemblyjs/helper-fsm" "1.5.13" - long "^3.2.0" - mamacro "^0.0.3" - -"@webassemblyjs/wast-printer@1.5.13": - version "1.5.13" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz#bb34d528c14b4f579e7ec11e793ec50ad7cd7c95" - dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/wast-parser" "1.5.13" - long "^3.2.0" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - -accepts@~1.3.4, accepts@~1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" - -acorn-dynamic-import@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" - dependencies: - acorn "^5.0.0" - -acorn@^5.0.0, acorn@^5.6.2: - version "5.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" - -ajv-keywords@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" - -ajv@^6.1.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.1.tgz#88ebc1263c7133937d108b80c5572e64e1d9322d" - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.1" - -ansi-colors@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.0.5.tgz#cb9dc64993b64fd6945485f797fc3853137d9a7b" - -ansi-escapes@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - dependencies: - color-convert "^1.9.0" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - -array-flatten@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - dependencies: - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -atob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -base64-js@^1.0.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - -binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" - -bluebird@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - -body-parser@1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.1" - http-errors "~1.6.2" - iconv-lite "0.4.19" - on-finished "~2.3.0" - qs "6.5.1" - raw-body "2.3.2" - type-is "~1.6.15" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.0, braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.1.tgz#3343124db6d7ad53e26a8826318712bdc8450f9c" - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - dependencies: - pako "~1.0.5" - -buffer-from@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - -cacache@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.1" - mississippi "^2.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^5.2.4" - unique-filename "^1.1.0" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -chalk@^2.0.0, chalk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chardet@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.5.0.tgz#fe3ac73c00c3d865ffcc02a0682e2c20b6a06029" - -chokidar@^2.0.0, chokidar@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" - dependencies: - anymatch "^2.0.0" - async-each "^1.0.0" - braces "^2.3.0" - glob-parent "^3.1.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - lodash.debounce "^4.0.8" - normalize-path "^2.1.1" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - upath "^1.0.5" - optionalDependencies: - fsevents "^1.2.2" - -chownr@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" - -chrome-trace-event@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" - dependencies: - tslib "^1.9.0" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" - dependencies: - color-name "1.1.1" - -color-name@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" - -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - -compressible@~2.0.13: - version "2.0.14" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.14.tgz#326c5f507fbb055f54116782b969a81b67a29da7" - dependencies: - mime-db ">= 1.34.0 < 2" - -compression@^1.5.2: - version "1.7.2" - resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" - dependencies: - accepts "~1.3.4" - bytes "3.0.0" - compressible "~2.0.13" - debug "2.6.9" - on-headers "~1.0.1" - safe-buffer "5.1.1" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -connect-history-api-fallback@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - -cyclist@~0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - -debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - -decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - dependencies: - xregexp "4.0.0" - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - -deep-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - dependencies: - globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -depd@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - -depd@~1.1.1, depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - -detect-node@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - dependencies: - buffer-indexof "^1.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -elliptic@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -enhanced-resolve@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - dependencies: - is-arrayish "^0.2.1" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -eslint-scope@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - dependencies: - estraverse "^4.1.0" - -estraverse@^4.1.0, estraverse@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - -eventemitter3@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -eventsource@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" - dependencies: - original ">=0.0.5" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -express@^4.16.2: - version "4.16.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" - dependencies: - accepts "~1.3.5" - array-flatten "1.1.1" - body-parser "1.18.2" - content-disposition "0.5.2" - content-type "~1.0.4" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.1.1" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.2" - path-to-regexp "0.1.7" - proxy-addr "~2.0.3" - qs "6.5.1" - range-parser "~1.2.0" - safe-buffer "5.1.1" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -external-editor@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.0.tgz#dc35c48c6f98a30ca27a20e9687d7f3c77704bb6" - dependencies: - chardet "^0.5.0" - iconv-lite "^0.4.22" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - -fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - dependencies: - websocket-driver ">=0.5.1" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" - unpipe "~1.0.0" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - dependencies: - locate-path "^3.0.0" - -flush-write-stream@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.4" - -follow-redirects@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.1.tgz#67a8f14f5a1f67f962c2c46469c79eaec0a90291" - dependencies: - debug "^3.1.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - dependencies: - minipass "^2.2.1" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules-path@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.1.0.tgz#923ec524e8726bb0c1a4ed4b8e21e1ff80c88bbb" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -handle-thing@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.4.tgz#8b50e1f35d51bd01e5ed9ece4dbe3549ccfa0a3c" - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - -http-errors@1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-parser-js@>=0.4.0: - version "0.4.13" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.13.tgz#3bd6d6fde6e3172c9334c3b33b6c193d80fe1137" - -http-proxy-middleware@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" - dependencies: - http-proxy "^1.16.2" - is-glob "^4.0.0" - lodash "^4.17.5" - micromatch "^3.1.9" - -http-proxy@^1.16.2: - version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" - dependencies: - eventemitter3 "^3.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - -iconv-lite@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - -iconv-lite@^0.4.22, iconv-lite@^0.4.4: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.11, ieee754@^1.1.4: - version "1.1.12" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - dependencies: - minimatch "^3.0.4" - -import-local@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - -inquirer@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.0.0.tgz#e8c20303ddc15bbfc2c12a6213710ccd9e1413d8" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.0" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.1.0" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -internal-ip@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" - dependencies: - meow "^3.3.0" - -interpret@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - -ipaddr.js@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - -is-odd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" - dependencies: - is-number "^4.0.0" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - dependencies: - path-is-inside "^1.0.1" - -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - dependencies: - isobject "^3.0.1" - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - -json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -killable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - -loader-utils@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - -lodash@^4.17.5, lodash@^4.3.0: - version "4.17.10" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" - -loglevel@^1.4.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - -long@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - -long@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - -loud-rejection@^1.0.0, loud-rejection@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lru-cache@^4.0.1, lru-cache@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - dependencies: - pify "^3.0.0" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -memory-fs@^0.4.0, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - -micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -"mime-db@>= 1.34.0 < 2": - version "1.34.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.34.0.tgz#452d0ecff5c30346a6dc1e64b1eaee0d3719ff9a" - -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - -mime-types@~2.1.17, mime-types@~2.1.18: - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" - dependencies: - mime-db "~1.33.0" - -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - -mime@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -minipass@^2.2.1, minipass@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" - dependencies: - minipass "^2.2.1" - -mississippi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^2.0.1" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - -nan@^2.9.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" - -nanomatch@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-odd "^2.0.0" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -needle@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" - dependencies: - debug "^2.1.2" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -neo-async@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" - -nice-try@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" - -node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - -node-libs-browser@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.0" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-pre-gyp@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.0" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.1.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -npm-bundled@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" - -npm-packlist@^1.1.6: - version "1.1.10" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - dependencies: - isobject "^3.0.1" - -obuf@^1.0.0, obuf@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -opn@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" - dependencies: - is-wsl "^1.1.0" - -original@>=0.0.5: - version "1.0.1" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.1.tgz#b0a53ff42ba997a8c9cd1fb5daaeb42b9d693190" - dependencies: - url-parse "~1.4.0" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - dependencies: - p-limit "^2.0.0" - -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - -p-try@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" - -pako@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" - -parallel-transform@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - dependencies: - cyclist "~0.2.2" - inherits "^2.0.3" - readable-stream "^2.1.5" - -parse-asn1@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -pbkdf2@^3.0.3: - version "3.0.16" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - dependencies: - find-up "^2.1.0" - -portfinder@^1.0.9: - version "1.0.13" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" - dependencies: - async "^1.5.2" - debug "^2.2.0" - mkdirp "0.5.x" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - -process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - -proxy-addr@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.6.0" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -public-encrypt@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - -pump@^2.0.0, pump@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - -qs@6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - -querystringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.0.3, range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-body@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" - dependencies: - bytes "3.0.0" - http-errors "1.6.2" - iconv-lite "0.4.19" - unpipe "1.0.0" - -rc@^1.1.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - dependencies: - resolve-from "^3.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - dependencies: - is-promise "^2.1.0" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - dependencies: - aproba "^1.1.1" - -rxjs@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.2.1.tgz#246cebec189a6cbc143a3ef9f62d6f4c91813ca1" - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - -schema-utils@^0.4.4, schema-utils@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" - dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - -selfsigned@^1.9.1: - version "1.10.3" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823" - dependencies: - node-forge "0.7.5" - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" - -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" - -serialize-javascript@^1.4.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" - -serve-index@^1.7.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.5.tgz#1bb7c0f7222c40f42adf14f4442cbd1269771a83" - dependencies: - debug "^2.6.6" - eventsource "0.1.6" - faye-websocket "~0.11.0" - inherits "^2.0.1" - json3 "^3.3.2" - url-parse "^1.1.8" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -source-list-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" - -source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - -spdx-correct@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" - -spdy-transport@^2.0.18: - version "2.1.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" - dependencies: - debug "^2.6.8" - detect-node "^2.0.3" - hpack.js "^2.1.6" - obuf "^1.1.1" - readable-stream "^2.2.9" - safe-buffer "^5.0.1" - wbuf "^1.7.2" - -spdy@^3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" - dependencies: - debug "^2.6.8" - handle-thing "^1.2.5" - http-deceiver "^1.2.7" - safe-buffer "^5.0.1" - select-hose "^2.0.0" - spdy-transport "^2.0.18" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - dependencies: - extend-shallow "^3.0.0" - -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - dependencies: - safe-buffer "^5.1.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - -stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@^1.0.0, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - dependencies: - has-flag "^3.0.0" - -tapable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" - -tar@^4: - version "4.4.4" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" - dependencies: - chownr "^1.0.1" - fs-minipass "^1.2.5" - minipass "^2.3.3" - minizlib "^1.1.0" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - -through2@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -thunky@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" - -timers-browserify@^2.0.4: - version "2.0.10" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" - dependencies: - setimmediate "^1.0.4" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - dependencies: - os-tmpdir "~1.0.2" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -tslib@^1.9.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.2.tgz#8be0cc9a1f6dc7727c38deb16c2ebd1a2892988e" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - -type-is@~1.6.15, type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.18" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -uglify-es@^3.3.4: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - dependencies: - commander "~2.13.0" - source-map "~0.6.1" - -uglifyjs-webpack-plugin@^1.2.4: - version "1.2.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.6.tgz#f4bb44f02431e82b301d8d4624330a6a35729381" - dependencies: - cacache "^10.0.4" - find-cache-dir "^1.0.0" - schema-utils "^0.4.5" - serialize-javascript "^1.4.0" - source-map "^0.6.1" - uglify-es "^3.3.4" - webpack-sources "^1.1.0" - worker-farm "^1.5.2" - -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - -unique-filename@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" - dependencies: - imurmurhash "^0.1.4" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.0.5: - version "1.1.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" - -uri-js@^4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - -url-join@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" - -url-parse@^1.1.8, url-parse@~1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.1.tgz#4dec9dad3dc8585f862fed461d2e19bbf623df30" - dependencies: - querystringify "^2.0.0" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" - dependencies: - kind-of "^6.0.2" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - dependencies: - inherits "2.0.1" - -util@^0.10.3: - version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" - dependencies: - inherits "2.0.3" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - -uuid@^3.0.1, uuid@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - -v8-compile-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz#526492e35fc616864284700b7043e01baee09f0a" - -validate-npm-package-license@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - dependencies: - indexof "0.0.1" - -watchpack@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - dependencies: - chokidar "^2.0.2" - graceful-fs "^4.1.2" - neo-async "^2.5.0" - -wbuf@^1.1.0, wbuf@^1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - dependencies: - minimalistic-assert "^1.0.0" - -webpack-cli@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.0.tgz#d71a83687dcfeb758fdceeb0fe042f96bcf62994" - dependencies: - chalk "^2.4.1" - cross-spawn "^6.0.5" - enhanced-resolve "^4.0.0" - global-modules-path "^2.1.0" - import-local "^1.0.0" - inquirer "^6.0.0" - interpret "^1.1.0" - loader-utils "^1.1.0" - supports-color "^5.4.0" - v8-compile-cache "^2.0.0" - yargs "^12.0.1" - -webpack-dev-middleware@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz#a20ceef194873710052da678f3c6ee0aeed92552" - dependencies: - loud-rejection "^1.6.0" - memory-fs "~0.4.1" - mime "^2.3.1" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - url-join "^4.0.0" - webpack-log "^2.0.0" - -webpack-dev-server@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.6.tgz#8617503768b1131fd539cf43c3e2e63bd34c1521" - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.0.0" - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" - debug "^3.1.0" - del "^3.0.0" - express "^4.16.2" - html-entities "^1.2.0" - http-proxy-middleware "~0.18.0" - import-local "^1.0.0" - internal-ip "1.2.0" - ip "^1.1.5" - killable "^1.0.0" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" - selfsigned "^1.9.1" - serve-index "^1.7.2" - sockjs "0.3.19" - sockjs-client "1.1.5" - spdy "^3.4.1" - strip-ansi "^3.0.0" - supports-color "^5.1.0" - webpack-dev-middleware "3.2.0" - webpack-log "^2.0.0" - yargs "12.0.1" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-sources@^1.0.1, webpack-sources@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.17.1.tgz#0f026e3d823f3fc604f811ed3ea8f0d9b267fb1e" - dependencies: - "@webassemblyjs/ast" "1.5.13" - "@webassemblyjs/helper-module-context" "1.5.13" - "@webassemblyjs/wasm-edit" "1.5.13" - "@webassemblyjs/wasm-opt" "1.5.13" - "@webassemblyjs/wasm-parser" "1.5.13" - acorn "^5.6.2" - acorn-dynamic-import "^3.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" - json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" - schema-utils "^0.4.4" - tapable "^1.0.0" - uglifyjs-webpack-plugin "^1.2.4" - watchpack "^1.5.0" - webpack-sources "^1.0.1" - -websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - dependencies: - http-parser-js ">=0.4.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - dependencies: - string-width "^1.0.2 || 2" - -worker-farm@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" - dependencies: - errno "~0.1.7" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" - -yargs-parser@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - dependencies: - camelcase "^4.1.0" - -yargs@12.0.1, yargs@^12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.1.tgz#6432e56123bb4e7c3562115401e98374060261c2" - dependencies: - cliui "^4.0.0" - decamelize "^2.0.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^10.1.0" From 0e38388e7b770cd083327b0f9ec1e5565eff8639 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Aug 2018 17:40:46 -0700 Subject: [PATCH 60/71] Remove package-lock.json It shouldn't be critical now that we're no longer testing with it and the examples build should be testing against the latest anyway! --- .travis.yml | 2 +- package-lock.json | 5692 --------------------------------------------- 2 files changed, 1 insertion(+), 5693 deletions(-) delete mode 100644 package-lock.json diff --git a/.travis.yml b/.travis.yml index b188ed3f..78e26d2c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -75,7 +75,7 @@ matrix: env: JOB=examples-build install: - *INSTALL_NODE_VIA_NVM - - npm ci --verbose + - npm install script: - | for dir in `ls examples | grep -v README | grep -v asm.js | grep -v no_modules`; do diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 06d75bd1..00000000 --- a/package-lock.json +++ /dev/null @@ -1,5692 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@webassemblyjs/ast": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.5.13.tgz", - "integrity": "sha512-49nwvW/Hx9i+OYHg+mRhKZfAlqThr11Dqz8TsrvqGKMhdI2ijy3KBJOun2Z4770TPjrIJhR6KxChQIDaz8clDA==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "debug": "^3.1.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.5.13.tgz", - "integrity": "sha512-vrvvB18Kh4uyghSKb0NTv+2WZx871WL2NzwMj61jcq2bXkyhRC+8Q0oD7JGVf0+5i/fKQYQSBCNMMsDMRVAMqA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.5.13.tgz", - "integrity": "sha512-dBh2CWYqjaDlvMmRP/kudxpdh30uXjIbpkLj9HQe+qtYlwvYjPRjdQXrq1cTAAOUSMTtzqbXIxEdEZmyKfcwsg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.5.13.tgz", - "integrity": "sha512-v7igWf1mHcpJNbn4m7e77XOAWXCDT76Xe7Is1VQFXc4K5jRcFrl9D0NrqM4XifQ0bXiuTSkTKMYqDxu5MhNljA==", - "dev": true, - "requires": { - "debug": "^3.1.0" - } - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.5.13.tgz", - "integrity": "sha512-yN6ScQQDFCiAXnVctdVO/J5NQRbwyTbQzsGzEgXsAnrxhjp0xihh+nNHQTMrq5UhOqTb5LykpJAvEv9AT0jnAQ==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.5.13" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.5.13.tgz", - "integrity": "sha512-hSIKzbXjVMRvy3Jzhgu+vDd/aswJ+UMEnLRCkZDdknZO3Z9e6rp1DAs0tdLItjCFqkz9+0BeOPK/mk3eYvVzZg==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.5.13.tgz", - "integrity": "sha512-zxJXULGPLB7r+k+wIlvGlXpT4CYppRz8fLUM/xobGHc9Z3T6qlmJD9ySJ2jknuktuuiR9AjnNpKYDECyaiX+QQ==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.5.13.tgz", - "integrity": "sha512-0n3SoNGLvbJIZPhtMFq0XmmnA/YmQBXaZKQZcW8maGKwLpVcgjNrxpFZHEOLKjXJYVN5Il8vSfG7nRX50Zn+aw==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.5.13.tgz", - "integrity": "sha512-IJ/goicOZ5TT1axZFSnlAtz4m8KEjYr12BNOANAwGFPKXM4byEDaMNXYowHMG0yKV9a397eU/NlibFaLwr1fbw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.5.13.tgz", - "integrity": "sha512-TseswvXEPpG5TCBKoLx9tT7+/GMACjC1ruo09j46ULRZWYm8XHpDWaosOjTnI7kr4SRJFzA6MWoUkAB+YCGKKg==", - "dev": true, - "requires": { - "ieee754": "^1.1.11" - } - }, - "@webassemblyjs/leb128": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.5.13.tgz", - "integrity": "sha512-0NRMxrL+GG3eISGZBmLBLAVjphbN8Si15s7jzThaw1UE9e5BY1oH49/+MA1xBzxpf1OW5sf9OrPDOclk9wj2yg==", - "dev": true, - "requires": { - "long": "4.0.0" - }, - "dependencies": { - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - } - } - }, - "@webassemblyjs/utf8": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.5.13.tgz", - "integrity": "sha512-Ve1ilU2N48Ew0lVGB8FqY7V7hXjaC4+PeZM+vDYxEd+R2iQ0q+Wb3Rw8v0Ri0+rxhoz6gVGsnQNb4FjRiEH/Ng==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.5.13.tgz", - "integrity": "sha512-X7ZNW4+Hga4f2NmqENnHke2V/mGYK/xnybJSIXImt1ulxbCOEs/A+ZK/Km2jgihjyVxp/0z0hwIcxC6PrkWtgw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/helper-wasm-section": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "@webassemblyjs/wast-printer": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.5.13.tgz", - "integrity": "sha512-yfv94Se8R73zmr8GAYzezFHc3lDwE/lBXQddSiIZEKZFuqy7yWtm3KMwA1uGbv5G1WphimJxboXHR80IgX1hQA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.5.13.tgz", - "integrity": "sha512-IkXSkgzVhQ0QYAdIayuCWMmXSYx0dHGU8Ah/AxJf1gBvstMWVnzJnBwLsXLyD87VSBIcsqkmZ28dVb0mOC3oBg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-buffer": "1.5.13", - "@webassemblyjs/wasm-gen": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "debug": "^3.1.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.5.13.tgz", - "integrity": "sha512-XnYoIcu2iqq8/LrtmdnN3T+bRjqYFjRHqWbqK3osD/0r/Fcv4d9ecRzjVtC29ENEuNTK4mQ9yyxCBCbK8S/cpg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-wasm-bytecode": "1.5.13", - "@webassemblyjs/ieee754": "1.5.13", - "@webassemblyjs/leb128": "1.5.13", - "@webassemblyjs/utf8": "1.5.13" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.5.13.tgz", - "integrity": "sha512-Lbz65T0LQ1LgzKiUytl34CwuhMNhaCLgrh0JW4rJBN6INnBB8NMwUfQM+FxTnLY9qJ+lHJL/gCM5xYhB9oWi4A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/floating-point-hex-parser": "1.5.13", - "@webassemblyjs/helper-api-error": "1.5.13", - "@webassemblyjs/helper-code-frame": "1.5.13", - "@webassemblyjs/helper-fsm": "1.5.13", - "long": "^3.2.0", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.5.13.tgz", - "integrity": "sha512-QcwogrdqcBh8Z+eUF8SG+ag5iwQSXxQJELBEHmLkk790wgQgnIMmntT2sMAMw53GiFNckArf5X0bsCA44j3lWQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/wast-parser": "1.5.13", - "long": "^3.2.0" - } - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz", - "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } - }, - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "ansi-colors": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.0.5.tgz", - "integrity": "sha512-VVjWpkfaphxUBFarydrQ3n26zX5nIK7hcbT3/ielrvwDDyBBjuh2vuSw1P9zkPq0cfqvdw7lkYHnu+OLSfIBsg==", - "dev": true - }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", - "dev": true - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "dev": true, - "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true - }, - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "compressible": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz", - "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=", - "dev": true, - "requires": { - "mime-db": ">= 1.34.0 < 2" - } - }, - "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.14", - "debug": "2.6.9", - "on-headers": "~1.0.1", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true, - "requires": { - "original": ">=0.0.5" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "express": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", - "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", - "qs": "6.5.1", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "follow-redirects": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.7.tgz", - "integrity": "sha512-NONJVIFiX7Z8k2WxfqBjtwqMifx7X42ORLFrOZ2LTKGj71G3C0kfdyTqGqr8fx5zSX6Foo/D95dgGWbPUiwnew==", - "dev": true, - "requires": { - "debug": "^3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": "^2.1.0" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "global-modules-path": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.2.0.tgz", - "integrity": "sha512-IGGoWyy46gnsPYwGeTh53oTfHedfOh9IUI3adk9tCIcli6AG55TugvhIUh99MxMWKSF09tWS40Un9Mt5HYaEOA==", - "dev": true - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash.js": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", - "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "http-parser-js": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", - "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", - "dev": true - }, - "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", - "dev": true, - "requires": { - "eventemitter3": "^3.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", - "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", - "dev": true, - "requires": { - "http-proxy": "^1.16.2", - "is-glob": "^4.0.0", - "lodash": "^4.17.5", - "micromatch": "^3.1.9" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "dev": true, - "requires": { - "meow": "^3.3.0" - } - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "killable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", - "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", - "dev": true - }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", - "dev": true - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - }, - "dependencies": { - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - } - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", - "dev": true - }, - "mime-types": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", - "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", - "dev": true, - "requires": { - "mime-db": "~1.36.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "neo-async": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", - "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", - "dev": true - }, - "nice-try": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", - "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", - "dev": true - }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", - "dev": true - }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "pbkdf2": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", - "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, - "portfinder": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz", - "integrity": "sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==", - "dev": true, - "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", - "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", - "dev": true - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } - } - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", - "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", - "dev": true, - "requires": { - "node-forge": "0.7.5" - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", - "dev": true - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - } - }, - "sockjs-client": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz", - "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=", - "dev": true, - "requires": { - "debug": "^2.6.6", - "eventsource": "0.1.6", - "faye-websocket": "~0.11.0", - "inherits": "^2.0.1", - "json3": "^3.3.2", - "url-parse": "^1.1.8" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - } - } - }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true - }, - "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true, - "requires": { - "debug": "^2.6.8", - "handle-thing": "^1.2.5", - "http-deceiver": "^1.2.7", - "safe-buffer": "^5.0.1", - "select-hose": "^2.0.0", - "spdy-transport": "^2.0.18" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "spdy-transport": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", - "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", - "dev": true, - "requires": { - "debug": "^2.6.8", - "detect-node": "^2.0.3", - "hpack.js": "^2.1.6", - "obuf": "^1.1.1", - "readable-stream": "^2.2.9", - "safe-buffer": "^5.0.1", - "wbuf": "^1.7.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" - } - }, - "thunky": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", - "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.18" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "uglifyjs-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", - "dev": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "schema-utils": "^0.4.5", - "serialize-javascript": "^1.4.0", - "source-map": "^0.6.1", - "uglify-es": "^3.3.4", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unique-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", - "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", - "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-join": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", - "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", - "dev": true - }, - "url-parse": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", - "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", - "dev": true, - "requires": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.0.tgz", - "integrity": "sha512-qNdTUMaCjPs4eEnM3W9H94R3sU70YCuT+/ST7nUf+id1bVOrdjrpUaeZLqPBPRph3hsgn4a4BvwpxhHZx+oSDg==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "webpack": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.17.1.tgz", - "integrity": "sha512-vdPYogljzWPhFKDj3Gcp01Vqgu7K3IQlybc3XIdKSQHelK1C3eIQuysEUR7MxKJmdandZlQB/9BG2Jb1leJHaw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.5.13", - "@webassemblyjs/helper-module-context": "1.5.13", - "@webassemblyjs/wasm-edit": "1.5.13", - "@webassemblyjs/wasm-opt": "1.5.13", - "@webassemblyjs/wasm-parser": "1.5.13", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.0.0", - "uglifyjs-webpack-plugin": "^1.2.4", - "watchpack": "^1.5.0", - "webpack-sources": "^1.0.1" - } - }, - "webpack-cli": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.0.tgz", - "integrity": "sha512-p5NeKDtYwjZozUWq6kGNs9w+Gtw/CPvyuXjXn2HMdz8Tie+krjEg8oAtonvIyITZdvpF7XG9xDHwscLr2c+ugQ==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.0.0", - "global-modules-path": "^2.1.0", - "import-local": "^1.0.0", - "inquirer": "^6.0.0", - "interpret": "^1.1.0", - "loader-utils": "^1.1.0", - "supports-color": "^5.4.0", - "v8-compile-cache": "^2.0.0", - "yargs": "^12.0.1" - }, - "dependencies": { - "chardet": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.5.0.tgz", - "integrity": "sha512-9ZTaoBaePSCFvNlNGrsyI8ZVACP2svUtq0DkM7t4K2ClAa96sqOIRjAzDTc8zXzFt1cZR46rRzLTiHFSJ+Qw0g==", - "dev": true - }, - "external-editor": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.0.tgz", - "integrity": "sha512-mpkfj0FEdxrIhOC04zk85X7StNtr0yXnG7zCb+8ikO8OJi2jsHh5YGoknNTyXgsbHOf1WOOcVU3kPFWT2WgCkQ==", - "dev": true, - "requires": { - "chardet": "^0.5.0", - "iconv-lite": "^0.4.22", - "tmp": "^0.0.33" - } - }, - "inquirer": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.0.0.tgz", - "integrity": "sha512-tISQWRwtcAgrz+SHPhTH7d3e73k31gsOy6i1csonLc0u1dVK/wYvuOnFeiWqC5OXFIYbmrIFInef31wbT8MEJg==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.1.0", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - } - }, - "rxjs": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz", - "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - } - } - }, - "webpack-dev-middleware": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.2.0.tgz", - "integrity": "sha512-YJLMF/96TpKXaEQwaLEo+Z4NDK8aV133ROF6xp9pe3gQoS7sxfpXh4Rv9eC+8vCvWfmDjRQaMSlRPbO+9G6jgA==", - "dev": true, - "requires": { - "loud-rejection": "^1.6.0", - "memory-fs": "~0.4.1", - "mime": "^2.3.1", - "path-is-absolute": "^1.0.0", - "range-parser": "^1.0.3", - "url-join": "^4.0.0", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", - "dev": true - } - } - }, - "webpack-dev-server": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.6.tgz", - "integrity": "sha512-uc6YP0DzzW4870TDKoK73uONytLgu27h+x6XfgSvERRChkpd5Ils7US6d5k22LBoh0sDkmPZ6ERHSsrkwtkFFQ==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.0.0", - "compression": "^1.5.2", - "connect-history-api-fallback": "^1.3.0", - "debug": "^3.1.0", - "del": "^3.0.0", - "express": "^4.16.2", - "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.18.0", - "import-local": "^1.0.0", - "internal-ip": "1.2.0", - "ip": "^1.1.5", - "killable": "^1.0.0", - "loglevel": "^1.4.1", - "opn": "^5.1.0", - "portfinder": "^1.0.9", - "selfsigned": "^1.9.1", - "serve-index": "^1.7.2", - "sockjs": "0.3.19", - "sockjs-client": "1.1.5", - "spdy": "^3.4.1", - "strip-ansi": "^3.0.0", - "supports-color": "^5.1.0", - "webpack-dev-middleware": "3.2.0", - "webpack-log": "^2.0.0", - "yargs": "12.0.1" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true, - "requires": { - "http-parser-js": ">=0.4.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xregexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", - "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yargs": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.1.tgz", - "integrity": "sha512-B0vRAp1hRX4jgIOWFtjfNjd9OA9RWYZ6tqGA9/I/IrTMsxmKvtWy+ersM+jzpQqbC3YfLzeABPdeTgcJ9eu1qQ==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^2.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^10.1.0" - }, - "dependencies": { - "decamelize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", - "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", - "dev": true, - "requires": { - "xregexp": "4.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } - } - } - } - } -} From a48a35fe4110f014086f8a07d0364a64cff2b275 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Aug 2018 19:02:26 -0700 Subject: [PATCH 61/71] Fix `npm ci` on AppVeyor --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 089c417d..0ae212ad 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -19,7 +19,7 @@ build: false test_script: - rustup target add wasm32-unknown-unknown - - npm ci + - npm install - cargo test - cargo build --release -p wasm-bindgen-cli - where chromedriver From f7e6fa2a04043f9ac3df31ba1885557da950ffe3 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 28 Aug 2018 10:12:56 -0700 Subject: [PATCH 62/71] Bump dependency on parity-wasm to 0.32.0 Brings support for atomic instructions! --- crates/cli-support/Cargo.toml | 2 +- crates/cli/Cargo.toml | 2 +- crates/wasm-interpreter/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/cli-support/Cargo.toml b/crates/cli-support/Cargo.toml index 0d44ed2c..fe075b6c 100644 --- a/crates/cli-support/Cargo.toml +++ b/crates/cli-support/Cargo.toml @@ -13,7 +13,7 @@ Shared support for the wasm-bindgen-cli package, an internal dependency [dependencies] base64 = "0.9" failure = "0.1.2" -parity-wasm = "0.31" +parity-wasm = "0.32" serde = "1.0" serde_json = "1.0" tempfile = "3.0" diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 8926ea97..84352a3b 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -18,7 +18,7 @@ docopt = "1.0" env_logger = "0.5" failure = "0.1.2" log = "0.4" -parity-wasm = "0.31" +parity-wasm = "0.32" rouille = { version = "2.1.0", default-features = false } serde = "1.0" serde_derive = "1.0" diff --git a/crates/wasm-interpreter/Cargo.toml b/crates/wasm-interpreter/Cargo.toml index bce5cbde..7857b47a 100644 --- a/crates/wasm-interpreter/Cargo.toml +++ b/crates/wasm-interpreter/Cargo.toml @@ -11,7 +11,7 @@ Micro-interpreter optimized for wasm-bindgen's use case """ [dependencies] -parity-wasm = "0.31" +parity-wasm = "0.32" [dev-dependencies] tempfile = "3" From 5ed7b806d13476f0fb00cdb6f440c47874b7580e Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 19 Aug 2018 21:33:42 -0700 Subject: [PATCH 63/71] Fix `getStringFromWasm` for shared memory We currently pass a raw view into wasm's memory for `getStringFromWasm`, but if the memory is actually shared then `TextDecoder` rejects `SharedArrayBuffer` and won't actually decode anything. Work around this for now with an extra copy into a local buffer, and then pass that buffer to `getStringFromWasm` whenever memory is shared. --- crates/cli-support/src/js/mod.rs | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index c6ea9920..9c5045f6 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -1179,13 +1179,30 @@ impl<'a> Context<'a> { } self.expose_text_decoder(); self.expose_uint8_memory(); - self.global( - " - function getStringFromWasm(ptr, len) { - return cachedDecoder.decode(getUint8Memory().subarray(ptr, ptr + len)); - } - ", - ); + + // Typically we try to give a raw view of memory out to `TextDecoder` to + // avoid copying too much data. If, however, a `SharedArrayBuffer` is + // being used it looks like that is rejected by `TextDecoder` or + // otherwise doesn't work with it. When we detect a shared situation we + // use `slice` which creates a new array instead of `subarray` which + // creates just a view. That way in shared mode we copy more data but in + // non-shared mode there's no need to copy the data except for the + // string itself. + self.memory(); // set self.memory_init + let is_shared = self.module + .memory_section() + .map(|s| s.entries()[0].limits().shared()) + .unwrap_or(match &self.memory_init { + Some(limits) => limits.shared(), + None => false, + }); + let method = if is_shared { "slice" } else { "subarray" }; + + self.global(&format!(" + function getStringFromWasm(ptr, len) {{ + return cachedDecoder.decode(getUint8Memory().{}(ptr, ptr + len)); + }} + ", method)); } fn expose_get_array_js_value_from_wasm(&mut self) { From 36b854b69cf73e77ae450f777f2a1ff154da9e5a Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 28 Aug 2018 15:19:31 -0700 Subject: [PATCH 64/71] web-sys: Add support for `Global`-scope methods This commit adds further support for the `Global` attribute to not only emit structural accessors but also emit functions that don't take `&self`. All methods on a `[Global]` interface will not require `&self` and will call functions and/or access properties on the global scope. This should enable things like: Window::location() // returns `Location` Window::fetch(...) // invokes the `fetch` function Closes #659 --- crates/backend/src/ast.rs | 58 +++--- crates/backend/src/codegen.rs | 3 + crates/backend/src/defined.rs | 1 + crates/cli-support/src/js/mod.rs | 277 ++++++++++++++++------------- crates/macro-support/src/parser.rs | 1 + crates/shared/src/lib.rs | 2 +- crates/webidl-tests/global.js | 4 + crates/webidl-tests/global.rs | 12 ++ crates/webidl-tests/global.webidl | 6 + crates/webidl-tests/main.rs | 1 + crates/webidl-tests/simple.js | 6 +- crates/webidl-tests/simple.rs | 3 +- crates/webidl/src/lib.rs | 22 ++- crates/webidl/src/util.rs | 89 +++++---- examples/canvas/src/lib.rs | 6 +- examples/fetch/src/lib.rs | 7 +- 16 files changed, 296 insertions(+), 202 deletions(-) create mode 100644 crates/webidl-tests/global.js create mode 100644 crates/webidl-tests/global.rs create mode 100644 crates/webidl-tests/global.webidl diff --git a/crates/backend/src/ast.rs b/crates/backend/src/ast.rs index d8989e35..947ee455 100644 --- a/crates/backend/src/ast.rs +++ b/crates/backend/src/ast.rs @@ -99,6 +99,10 @@ pub enum ImportFunctionKind { ty: syn::Type, kind: MethodKind, }, + ScopedMethod { + ty: syn::Type, + operation: Operation, + }, Normal, } @@ -407,6 +411,29 @@ impl ImportFunction { } fn shared(&self) -> shared::ImportFunction { + let shared_operation = |operation: &Operation| { + let is_static = operation.is_static; + let kind = match &operation.kind { + OperationKind::Regular => shared::OperationKind::Regular, + OperationKind::Getter(g) => { + let g = g.as_ref().map(|g| g.to_string()); + shared::OperationKind::Getter( + g.unwrap_or_else(|| self.infer_getter_property()), + ) + } + OperationKind::Setter(s) => { + let s = s.as_ref().map(|s| s.to_string()); + shared::OperationKind::Setter( + s.unwrap_or_else(|| self.infer_setter_property()), + ) + } + OperationKind::IndexingGetter => shared::OperationKind::IndexingGetter, + OperationKind::IndexingSetter => shared::OperationKind::IndexingSetter, + OperationKind::IndexingDeleter => shared::OperationKind::IndexingDeleter, + }; + shared::Operation { is_static, kind } + }; + let method = match self.kind { ImportFunctionKind::Method { ref class, @@ -415,34 +442,21 @@ impl ImportFunction { } => { let kind = match kind { MethodKind::Constructor => shared::MethodKind::Constructor, - MethodKind::Operation(Operation { is_static, kind }) => { - let is_static = *is_static; - let kind = match kind { - OperationKind::Regular => shared::OperationKind::Regular, - OperationKind::Getter(g) => { - let g = g.as_ref().map(|g| g.to_string()); - shared::OperationKind::Getter( - g.unwrap_or_else(|| self.infer_getter_property()), - ) - } - OperationKind::Setter(s) => { - let s = s.as_ref().map(|s| s.to_string()); - shared::OperationKind::Setter( - s.unwrap_or_else(|| self.infer_setter_property()), - ) - } - OperationKind::IndexingGetter => shared::OperationKind::IndexingGetter, - OperationKind::IndexingSetter => shared::OperationKind::IndexingSetter, - OperationKind::IndexingDeleter => shared::OperationKind::IndexingDeleter, - }; - shared::MethodKind::Operation(shared::Operation { is_static, kind }) + MethodKind::Operation(op) => { + shared::MethodKind::Operation(shared_operation(op)) } }; Some(shared::MethodData { - class: class.clone(), + class: Some(class.clone()), kind, }) } + ImportFunctionKind::ScopedMethod { ref operation, .. } => { + Some(shared::MethodData { + class: None, + kind: shared::MethodKind::Operation(shared_operation(operation)), + }) + } ImportFunctionKind::Normal => None, }; diff --git a/crates/backend/src/codegen.rs b/crates/backend/src/codegen.rs index 8bdd391c..df04405f 100644 --- a/crates/backend/src/codegen.rs +++ b/crates/backend/src/codegen.rs @@ -784,6 +784,9 @@ impl TryToTokens for ast::ImportFunction { } class_ty = Some(ty); } + ast::ImportFunctionKind::ScopedMethod { ref ty, .. } => { + class_ty = Some(ty); + } ast::ImportFunctionKind::Normal => {} } let vis = &self.function.rust_vis; diff --git a/crates/backend/src/defined.rs b/crates/backend/src/defined.rs index a7f6359e..f697b502 100644 --- a/crates/backend/src/defined.rs +++ b/crates/backend/src/defined.rs @@ -246,6 +246,7 @@ impl ImportedTypes for ast::ImportFunctionKind { { match self { ast::ImportFunctionKind::Method { ty, .. } => ty.imported_types(f), + ast::ImportFunctionKind::ScopedMethod { ty, .. } => ty.imported_types(f), ast::ImportFunctionKind::Normal => {} } } diff --git a/crates/cli-support/src/js/mod.rs b/crates/cli-support/src/js/mod.rs index 9c5045f6..25ff39f3 100644 --- a/crates/cli-support/src/js/mod.rs +++ b/crates/cli-support/src/js/mod.rs @@ -1959,127 +1959,27 @@ impl<'a, 'b> SubContext<'a, 'b> { Some(d) => d, }; - let target = match &import.method { - Some(shared::MethodData { class, kind }) => { - let class = self.import_name(info, class)?; - match kind { - shared::MethodKind::Constructor => format!("new {}", class), - shared::MethodKind::Operation(shared::Operation { is_static, kind }) => { - let target = if import.structural { - let location = if *is_static { &class } else { "this" }; + let target = self.generated_import_target(info, import, &descriptor)?; - match kind { - shared::OperationKind::Regular => { - let nargs = descriptor.unwrap_function().arguments.len(); - let mut s = format!("function("); - for i in 0..nargs - 1 { - if i > 0 { - drop(write!(s, ", ")); - } - drop(write!(s, "x{}", i)); - } - s.push_str(") { \nreturn this."); - s.push_str(&import.function.name); - s.push_str("("); - for i in 0..nargs - 1 { - if i > 0 { - drop(write!(s, ", ")); - } - drop(write!(s, "x{}", i)); - } - s.push_str(");\n}"); - s - } - shared::OperationKind::Getter(g) => format!( - "function() {{ - return {}.{}; - }}", - location, g - ), - shared::OperationKind::Setter(s) => format!( - "function(y) {{ - {}.{} = y; - }}", - location, s - ), - shared::OperationKind::IndexingGetter => format!( - "function(y) {{ - return {}[y]; - }}", - location - ), - shared::OperationKind::IndexingSetter => format!( - "function(y, z) {{ - {}[y] = z; - }}", - location - ), - shared::OperationKind::IndexingDeleter => format!( - "function(y) {{ - delete {}[y]; - }}", - location - ), - } - } else { - let (location, binding) = if *is_static { - ("", format!(".bind({})", class)) - } else { - (".prototype", "".into()) - }; + let js = Rust2Js::new(self.cx) + .catch(import.catch) + .process(descriptor.unwrap_function())? + .finish(&target); + self.cx.export(&import.shim, &js, None); + Ok(()) + } - match kind { - shared::OperationKind::Regular => { - format!("{}{}.{}{}", class, location, import.function.name, binding) - } - shared::OperationKind::Getter(g) => { - self.cx.expose_get_inherited_descriptor(); - format!( - "GetOwnOrInheritedPropertyDescriptor({}{}, '{}').get{}", - class, location, g, binding, - ) - } - shared::OperationKind::Setter(s) => { - self.cx.expose_get_inherited_descriptor(); - format!( - "GetOwnOrInheritedPropertyDescriptor({}{}, '{}').set{}", - class, location, s, binding, - ) - } - shared::OperationKind::IndexingGetter => panic!("indexing getter should be structural"), - shared::OperationKind::IndexingSetter => panic!("indexing setter should be structural"), - shared::OperationKind::IndexingDeleter => panic!("indexing deleter should be structural"), - } - }; - - let fallback = if import.structural { - "".to_string() - } else { - format!( - " || function() {{ - throw new Error(`wasm-bindgen: {} does not exist`); - }}", - target - ) - }; - - self.cx.global(&format!( - " - const {}_target = {} {} ; - ", - import.shim, target, fallback - )); - format!( - "{}_target{}", - import.shim, - if *is_static { "" } else { ".call" } - ) - } - } - } + fn generated_import_target( + &mut self, + info: &shared::Import, + import: &shared::ImportFunction, + descriptor: &Descriptor, + ) -> Result { + let method_data = match &import.method { + Some(data) => data, None => { let name = self.import_name(info, &import.function.name)?; - if name.contains(".") { + return Ok(if name.contains(".") { self.cx.global(&format!( " const {}_target = {}; @@ -2089,16 +1989,145 @@ impl<'a, 'b> SubContext<'a, 'b> { format!("{}_target", import.shim) } else { name - } + }) } }; - let js = Rust2Js::new(self.cx) - .catch(import.catch) - .process(descriptor.unwrap_function())? - .finish(&target); - self.cx.export(&import.shim, &js, None); - Ok(()) + let class = match &method_data.class { + Some(class) => self.import_name(info, class)?, + None => { + let op = match &method_data.kind { + shared::MethodKind::Operation(op) => op, + shared::MethodKind::Constructor => { + bail!("\"no class\" methods cannot be constructors") + } + }; + match &op.kind { + shared::OperationKind::Regular => { + return Ok(import.function.name.to_string()) + } + shared::OperationKind::Getter(g) => { + return Ok(format!("(() => {})", g)); + } + shared::OperationKind::Setter(g) => { + return Ok(format!("(v => {} = v)", g)); + } + _ => bail!("\"no class\" methods must be regular/getter/setter"), + } + + } + }; + let op = match &method_data.kind { + shared::MethodKind::Constructor => return Ok(format!("new {}", class)), + shared::MethodKind::Operation(op) => op, + }; + let target = if import.structural { + let location = if op.is_static { &class } else { "this" }; + + match &op.kind { + shared::OperationKind::Regular => { + let nargs = descriptor.unwrap_function().arguments.len(); + let mut s = format!("function("); + for i in 0..nargs - 1 { + if i > 0 { + drop(write!(s, ", ")); + } + drop(write!(s, "x{}", i)); + } + s.push_str(") { \nreturn this."); + s.push_str(&import.function.name); + s.push_str("("); + for i in 0..nargs - 1 { + if i > 0 { + drop(write!(s, ", ")); + } + drop(write!(s, "x{}", i)); + } + s.push_str(");\n}"); + s + } + shared::OperationKind::Getter(g) => format!( + "function() {{ + return {}.{}; + }}", + location, g + ), + shared::OperationKind::Setter(s) => format!( + "function(y) {{ + {}.{} = y; + }}", + location, s + ), + shared::OperationKind::IndexingGetter => format!( + "function(y) {{ + return {}[y]; + }}", + location + ), + shared::OperationKind::IndexingSetter => format!( + "function(y, z) {{ + {}[y] = z; + }}", + location + ), + shared::OperationKind::IndexingDeleter => format!( + "function(y) {{ + delete {}[y]; + }}", + location + ), + } + } else { + let (location, binding) = if op.is_static { + ("", format!(".bind({})", class)) + } else { + (".prototype", "".into()) + }; + + match &op.kind { + shared::OperationKind::Regular => { + format!("{}{}.{}{}", class, location, import.function.name, binding) + } + shared::OperationKind::Getter(g) => { + self.cx.expose_get_inherited_descriptor(); + format!( + "GetOwnOrInheritedPropertyDescriptor({}{}, '{}').get{}", + class, location, g, binding, + ) + } + shared::OperationKind::Setter(s) => { + self.cx.expose_get_inherited_descriptor(); + format!( + "GetOwnOrInheritedPropertyDescriptor({}{}, '{}').set{}", + class, location, s, binding, + ) + } + shared::OperationKind::IndexingGetter => panic!("indexing getter should be structural"), + shared::OperationKind::IndexingSetter => panic!("indexing setter should be structural"), + shared::OperationKind::IndexingDeleter => panic!("indexing deleter should be structural"), + } + }; + + let fallback = if import.structural { + "".to_string() + } else { + format!( + " || function() {{ + throw new Error(`wasm-bindgen: {} does not exist`); + }}", + target + ) + }; + + self.cx.global(&format!( + "const {}_target = {}{};", + import.shim, target, fallback + )); + Ok(format!( + "{}_target{}", + import.shim, + if op.is_static { "" } else { ".call" } + )) } fn generate_import_type( diff --git a/crates/macro-support/src/parser.rs b/crates/macro-support/src/parser.rs index 47fe0fb2..33ce3eb2 100644 --- a/crates/macro-support/src/parser.rs +++ b/crates/macro-support/src/parser.rs @@ -514,6 +514,7 @@ impl<'a> ConvertToAst<(BindgenAttrs, &'a Option)> for syn::ForeignItemFn let shim = { let ns = match kind { + ast::ImportFunctionKind::ScopedMethod { .. } | ast::ImportFunctionKind::Normal => (0, "n"), ast::ImportFunctionKind::Method { ref class, .. } => (1, &class[..]), }; diff --git a/crates/shared/src/lib.rs b/crates/shared/src/lib.rs index 20d78db7..16ffd964 100644 --- a/crates/shared/src/lib.rs +++ b/crates/shared/src/lib.rs @@ -48,7 +48,7 @@ pub struct ImportFunction { #[derive(Deserialize, Serialize)] pub struct MethodData { - pub class: String, + pub class: Option, pub kind: MethodKind, } diff --git a/crates/webidl-tests/global.js b/crates/webidl-tests/global.js new file mode 100644 index 00000000..305de81b --- /dev/null +++ b/crates/webidl-tests/global.js @@ -0,0 +1,4 @@ +global.global_no_args = () => 3; +global.global_with_args = (a, b) => a + b; +global.global_attribute = 'x'; + diff --git a/crates/webidl-tests/global.rs b/crates/webidl-tests/global.rs new file mode 100644 index 00000000..12a7512e --- /dev/null +++ b/crates/webidl-tests/global.rs @@ -0,0 +1,12 @@ +use wasm_bindgen_test::*; + +include!(concat!(env!("OUT_DIR"), "/global.rs")); + +#[wasm_bindgen_test] +fn works() { + assert_eq!(Global::global_no_args(), 3); + assert_eq!(Global::global_with_args("a", "b"), "ab"); + assert_eq!(Global::global_attribute(), "x"); + Global::set_global_attribute("y"); + assert_eq!(Global::global_attribute(), "y"); +} diff --git a/crates/webidl-tests/global.webidl b/crates/webidl-tests/global.webidl new file mode 100644 index 00000000..01cb1d97 --- /dev/null +++ b/crates/webidl-tests/global.webidl @@ -0,0 +1,6 @@ +[Global=x] +interface Global { + unsigned long global_no_args(); + DOMString global_with_args(DOMString a, DOMString b); + attribute DOMString global_attribute; +}; diff --git a/crates/webidl-tests/main.rs b/crates/webidl-tests/main.rs index 9e743218..66266567 100644 --- a/crates/webidl-tests/main.rs +++ b/crates/webidl-tests/main.rs @@ -10,3 +10,4 @@ pub mod namespace; pub mod simple; pub mod throws; pub mod dictionary; +pub mod global; diff --git a/crates/webidl-tests/simple.js b/crates/webidl-tests/simple.js index 0c63082b..bb1ace6b 100644 --- a/crates/webidl-tests/simple.js +++ b/crates/webidl-tests/simple.js @@ -87,11 +87,7 @@ global.Unforgeable = class Unforgeable { } }; -global.GlobalMethod = class GlobalMethod { - constructor() { - this.m = () => 123; - } -}; +global.m = () => 123; global.Indexing = function () { return new Proxy({}, { diff --git a/crates/webidl-tests/simple.rs b/crates/webidl-tests/simple.rs index edec1965..b59a9ad9 100644 --- a/crates/webidl-tests/simple.rs +++ b/crates/webidl-tests/simple.rs @@ -64,8 +64,7 @@ fn nullable_method() { #[wasm_bindgen_test] fn global_method() { - let f = GlobalMethod::new().unwrap(); - assert_eq!(f.m(), 123); + assert_eq!(GlobalMethod::m(), 123); } #[wasm_bindgen_test] diff --git a/crates/webidl/src/lib.rs b/crates/webidl/src/lib.rs index 7937cc20..af09eaa9 100644 --- a/crates/webidl/src/lib.rs +++ b/crates/webidl/src/lib.rs @@ -591,6 +591,11 @@ fn member_attribute<'src>( let is_structural = util::is_structural(attrs); let throws = util::throws(attrs); + let global = first_pass + .interfaces + .get(self_name) + .map(|interface_data| interface_data.global) + .unwrap_or(false); for import_function in first_pass.create_getter( identifier, @@ -599,6 +604,7 @@ fn member_attribute<'src>( is_static, is_structural, throws, + global, ) { program.imports.push(wrap_import_function(import_function)); } @@ -611,6 +617,7 @@ fn member_attribute<'src>( is_static, is_structural, throws, + global, ) { program.imports.push(wrap_import_function(import_function)); } @@ -712,6 +719,12 @@ fn member_operation<'src>( operation_ids.push(id); } + let global = first_pass + .interfaces + .get(self_name) + .map(|interface_data| interface_data.global) + .unwrap_or(false); + for id in operation_ids { let methods = first_pass .create_basic_method( @@ -724,15 +737,10 @@ fn member_operation<'src>( OperationId::IndexingGetter | OperationId::IndexingSetter | OperationId::IndexingDeleter => true, - _ => { - first_pass - .interfaces - .get(self_name) - .map(|interface_data| interface_data.global) - .unwrap_or(false) - } + _ => false, }, util::throws(attrs), + global, ); for method in methods { diff --git a/crates/webidl/src/util.rs b/crates/webidl/src/util.rs index 2276064d..06e89dfc 100644 --- a/crates/webidl/src/util.rs +++ b/crates/webidl/src/util.rs @@ -297,6 +297,7 @@ impl<'src> FirstPassRecord<'src> { let rust_name = rust_ident(&rust_name); let shim = { let ns = match kind { + backend::ast::ImportFunctionKind::ScopedMethod { .. } | backend::ast::ImportFunctionKind::Normal => "", backend::ast::ImportFunctionKind::Method { ref class, .. } => class, }; @@ -389,6 +390,7 @@ impl<'src> FirstPassRecord<'src> { is_static: bool, structural: bool, catch: bool, + global: bool, ) -> Vec { let (overloaded, same_argument_names) = self.get_operation_overloading( arguments, @@ -410,20 +412,26 @@ impl<'src> FirstPassRecord<'src> { first_pass::OperationId::IndexingSetter => "set", first_pass::OperationId::IndexingDeleter => "delete", }; - - let kind = backend::ast::ImportFunctionKind::Method { - class: self_name.to_string(), - ty: ident_ty(rust_ident(camel_case_ident(&self_name).as_str())), - kind: backend::ast::MethodKind::Operation(backend::ast::Operation { - is_static, - kind: match &operation_id { - first_pass::OperationId::Constructor => panic!("constructors are unsupported"), - first_pass::OperationId::Operation(_) => backend::ast::OperationKind::Regular, - first_pass::OperationId::IndexingGetter => backend::ast::OperationKind::IndexingGetter, - first_pass::OperationId::IndexingSetter => backend::ast::OperationKind::IndexingSetter, - first_pass::OperationId::IndexingDeleter => backend::ast::OperationKind::IndexingDeleter, - }, - }), + let operation_kind = match &operation_id { + first_pass::OperationId::Constructor => panic!("constructors are unsupported"), + first_pass::OperationId::Operation(_) => backend::ast::OperationKind::Regular, + first_pass::OperationId::IndexingGetter => backend::ast::OperationKind::IndexingGetter, + first_pass::OperationId::IndexingSetter => backend::ast::OperationKind::IndexingSetter, + first_pass::OperationId::IndexingDeleter => backend::ast::OperationKind::IndexingDeleter, + }; + let operation = backend::ast::Operation { is_static, kind: operation_kind }; + let ty = ident_ty(rust_ident(camel_case_ident(&self_name).as_str())); + let kind = if global { + backend::ast::ImportFunctionKind::ScopedMethod { + ty, + operation, + } + } else { + backend::ast::ImportFunctionKind::Method { + class: self_name.to_string(), + ty, + kind: backend::ast::MethodKind::Operation(operation), + } }; let ret = match return_type.to_idl_type(self) { @@ -591,19 +599,29 @@ impl<'src> FirstPassRecord<'src> { is_static: bool, is_structural: bool, catch: bool, + global: bool, ) -> Vec { let ret = match ty.to_idl_type(self) { None => return Vec::new(), Some(idl_type) => idl_type, }; + let operation = backend::ast::Operation { + is_static, + kind: backend::ast::OperationKind::Getter(Some(raw_ident(name))), + }; + let ty = ident_ty(rust_ident(camel_case_ident(&self_name).as_str())); - let kind = backend::ast::ImportFunctionKind::Method { - class: self_name.to_string(), - ty: ident_ty(rust_ident(camel_case_ident(&self_name).as_str())), - kind: backend::ast::MethodKind::Operation(backend::ast::Operation { - is_static, - kind: backend::ast::OperationKind::Getter(Some(raw_ident(name))), - }), + let kind = if global { + backend::ast::ImportFunctionKind::ScopedMethod { + ty, + operation, + } + } else { + backend::ast::ImportFunctionKind::Method { + class: self_name.to_string(), + ty, + kind: backend::ast::MethodKind::Operation(operation), + } }; let doc_comment = Some(format!("The `{}` getter\n\n{}", name, mdn_doc(self_name, Some(name)))); @@ -614,19 +632,30 @@ impl<'src> FirstPassRecord<'src> { pub fn create_setter( &self, name: &str, - ty: weedle::types::Type, + field_ty: weedle::types::Type, self_name: &str, is_static: bool, is_structural: bool, catch: bool, + global: bool, ) -> Vec { - let kind = backend::ast::ImportFunctionKind::Method { - class: self_name.to_string(), - ty: ident_ty(rust_ident(camel_case_ident(&self_name).as_str())), - kind: backend::ast::MethodKind::Operation(backend::ast::Operation { - is_static, - kind: backend::ast::OperationKind::Setter(Some(raw_ident(name))), - }), + let operation = backend::ast::Operation { + is_static, + kind: backend::ast::OperationKind::Setter(Some(raw_ident(name))), + }; + let ty = ident_ty(rust_ident(camel_case_ident(&self_name).as_str())); + + let kind = if global { + backend::ast::ImportFunctionKind::ScopedMethod { + ty, + operation, + } + } else { + backend::ast::ImportFunctionKind::Method { + class: self_name.to_string(), + ty, + kind: backend::ast::MethodKind::Operation(operation), + } }; let doc_comment = Some(format!("The `{}` setter\n\n{}", name, mdn_doc(self_name, Some(name)))); @@ -636,7 +665,7 @@ impl<'src> FirstPassRecord<'src> { false, &[( name, - match ty.to_idl_type(self) { + match field_ty.to_idl_type(self) { None => return Vec::new(), Some(idl_type) => idl_type, }, diff --git a/examples/canvas/src/lib.rs b/examples/canvas/src/lib.rs index 722a10a9..420016e2 100755 --- a/examples/canvas/src/lib.rs +++ b/examples/canvas/src/lib.rs @@ -6,13 +6,9 @@ use std::f64; use wasm_bindgen::prelude::*; use wasm_bindgen::JsCast; -#[wasm_bindgen] -extern "C" { - static document: web_sys::Document; -} - #[wasm_bindgen] pub fn draw() { + let document = web_sys::Window::document().unwrap(); let canvas = document.get_element_by_id("canvas").unwrap(); let canvas: web_sys::HtmlCanvasElement = canvas .dyn_into::() diff --git a/examples/fetch/src/lib.rs b/examples/fetch/src/lib.rs index 1b4854cb..53853f9b 100644 --- a/examples/fetch/src/lib.rs +++ b/examples/fetch/src/lib.rs @@ -40,11 +40,6 @@ pub struct Signature { pub email: String, } -#[wasm_bindgen] -extern "C" { - static window: Window; -} - #[wasm_bindgen] pub fn run() -> Promise { let mut request_options = RequestInit::new(); @@ -56,7 +51,7 @@ pub fn run() -> Promise { // the RequestInit struct will eventually support setting headers, but that's missing right now req.headers().set("Accept", "application/vnd.github.v3+json").unwrap(); - let req_promise = window.fetch_with_request(&req); + let req_promise = Window::fetch_with_request(&req); let to_return = JsFuture::from(req_promise).and_then(|resp_value| { // resp_value is a Response object From 0fb31b2bc48ad9d08e20dbc26e4b9748cb0ef472 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 28 Aug 2018 17:24:43 -0700 Subject: [PATCH 65/71] Don't enable `nightly` feature of `proc-macro2` This is no longer needed as of rustc 1.30.0 and the `proc-macro2` crate will now automatically detect whether it can use spans or not! --- crates/backend/Cargo.toml | 2 +- crates/macro-support/Cargo.toml | 2 +- crates/test-macro/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/backend/Cargo.toml b/crates/backend/Cargo.toml index dace168a..4fa91960 100644 --- a/crates/backend/Cargo.toml +++ b/crates/backend/Cargo.toml @@ -11,7 +11,7 @@ Backend code generation of the wasm-bindgen tool """ [features] -spans = ["proc-macro2/nightly"] +spans = [] extra-traits = ["syn/extra-traits"] [dependencies] diff --git a/crates/macro-support/Cargo.toml b/crates/macro-support/Cargo.toml index 295239f3..bf0e116d 100644 --- a/crates/macro-support/Cargo.toml +++ b/crates/macro-support/Cargo.toml @@ -11,7 +11,7 @@ The part of the implementation of the `#[wasm_bindgen]` attribute that is not in """ [features] -spans = ["proc-macro2/nightly", "wasm-bindgen-backend/spans"] +spans = ["wasm-bindgen-backend/spans"] extra-traits = ["syn/extra-traits"] [dependencies] diff --git a/crates/test-macro/Cargo.toml b/crates/test-macro/Cargo.toml index deba77af..da68c9ba 100644 --- a/crates/test-macro/Cargo.toml +++ b/crates/test-macro/Cargo.toml @@ -7,7 +7,7 @@ license = "MIT/Apache-2.0" repository = "https://github.com/rustwasm/wasm-bindgen" [dependencies] -proc-macro2 = { version = "0.4", features = ['nightly'] } +proc-macro2 = "0.4" quote = "0.6" [lib] From 96573574c19cf3e09f4586ea0130a59645918c23 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Wed, 29 Aug 2018 14:23:20 -0700 Subject: [PATCH 66/71] README: add features section describing goals/foundations/features of wasm-bindgen --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index 85861127..7ba48467 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,27 @@ import { greet } from "./hello_world"; greet("World!"); ``` +## Features + +* **Lightweight.** Only pay for what you use. `wasm-bindgen` only generates + bindings and glue for the JavaScript imports you actually use and Rust + functionality that you export. For example, importing and using the + `document.querySelector` method doesn't cause `Node.prototype.appendChild` or + `window.alert` to be included in the bindings as well. + +* **ECMAScript modules.** Just import WebAssembly modules the same way you would + import JavaScript modules. Future compatible with [WebAssembly modules and + ECMAScript modules integration][wasm-es-modules]. + +* **Designed with the ["host bindings" proposal][host-bindings] in mind.** + Eventually, there won't be any JavaScript shims between Rust-generated wasm + functions and native DOM methods. Because the wasm functions are statically + type checked, some of those native methods' dynamic type checks should become + unnecessary, promising to unlock even-faster-than-JavaScript DOM access. + +[wasm-es-modules]: https://github.com/WebAssembly/esm-integration +[host-bindings]: https://github.com/WebAssembly/host-bindings/blob/master/proposals/host-bindings/Overview.md + ## Guide [📚 Read the `wasm-bindgen` guide here! 📚](https://rustwasm.github.io/wasm-bindgen) From df19b63c60309010fdb4006fab65e0a0789f9f13 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 30 Aug 2018 10:33:34 -0700 Subject: [PATCH 67/71] Hack around a broken nightly --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 78e26d2c..6d48ccc9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ sudo: false INSTALL_NODE_VIA_NVM: &INSTALL_NODE_VIA_NVM | rustup target add wasm32-unknown-unknown + rustup component add llvm-tools-preview curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash source ~/.nvm/nvm.sh nvm install v10.5 From e25feccc11b733d2401aff236c2a9867bb1edc94 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 29 Aug 2018 18:50:17 -0700 Subject: [PATCH 68/71] webidl: Remove support for Uint8ClampedArray Our bindings currently translate this to `&[u8]` which is actually `Uint8Array`. We'll need to fix #421 before supporting this. --- crates/webidl-tests/array.rs | 1 - crates/webidl/src/idl_type.rs | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/webidl-tests/array.rs b/crates/webidl-tests/array.rs index 7de3ea1b..f44622f0 100644 --- a/crates/webidl-tests/array.rs +++ b/crates/webidl-tests/array.rs @@ -14,7 +14,6 @@ fn take_and_return_a_bunch_of_slices() { assert_eq!(f.i16(&[1, 2]), [3, 4, 5]); assert_eq!(f.i32(&[1, 2]), [3, 4, 5]); assert_eq!(f.u8(&[1, 2]), [3, 4, 5]); - assert_eq!(f.u8_clamped(&[1, 2]), [3, 4, 5]); assert_eq!(f.u16(&[1, 2]), [3, 4, 5]); assert_eq!(f.u32(&[1, 2]), [3, 4, 5]); } diff --git a/crates/webidl/src/idl_type.rs b/crates/webidl/src/idl_type.rs index c5504fdf..1f88d008 100644 --- a/crates/webidl/src/idl_type.rs +++ b/crates/webidl/src/idl_type.rs @@ -459,7 +459,7 @@ impl<'a> IdlType<'a> { IdlType::DataView => None, IdlType::Int8Array => Some(array("i8", pos)), IdlType::Uint8Array => Some(array("u8", pos)), - IdlType::Uint8ClampedArray => Some(array("u8", pos)), + IdlType::Uint8ClampedArray => None, // FIXME(#421) IdlType::Int16Array => Some(array("i16", pos)), IdlType::Uint16Array => Some(array("u16", pos)), IdlType::Int32Array => Some(array("i32", pos)), From e290c75c3274005cc19c21d63c5581cc391c9875 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Thu, 30 Aug 2018 12:59:34 -0700 Subject: [PATCH 69/71] Add @afdw to the team! \o/ --- guide/src/team.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/guide/src/team.md b/guide/src/team.md index 0edd2e60..6125ae3b 100644 --- a/guide/src/team.md +++ b/guide/src/team.md @@ -23,8 +23,8 @@ img { | [![](https://github.com/alexcrichton.png?size=117)][alexcrichton] | [![](https://github.com/fitzgen.png?size=117)][fitzgen] | [![](https://github.com/spastorino.png?size=117)][spastorino] | [![](https://github.com/ohanar.png?size=117)][ohanar] | [![](https://github.com/jonathan-s.png?size=117)][jonathan-s] | |:---:|:---:|:---:|:---:| | [`alexcrichton`][alexcrichton] | [`fitzgen`][fitzgen] | [`spastorino`][spastorino] | [`ohanar`][ohanar] | [`jonathan-s`][jonathan-s] | -| [![](https://github.com/sendilkumarn.png?size=117)][sendilkumarn] | [![](https://github.com/belfz.png?size=117)][belfz] | | | | -| [`sendilkumarn`][sendilkumarn] | [`belfz`][belfz] | | | | +| [![](https://github.com/sendilkumarn.png?size=117)][sendilkumarn] | [![](https://github.com/belfz.png?size=117)][belfz] | [![](https://github.com/afdw.png?size=117)][afdw] | | | +| [`sendilkumarn`][sendilkumarn] | [`belfz`][belfz] | [`afdw`][afdw] | | | [alexcrichton]: https://github.com/alexcrichton [fitzgen]: https://github.com/fitzgen @@ -33,3 +33,4 @@ img { [jonathan-s]: https://github.com/jonathan-s [sendilkumarn]: https://github.com/sendilkumarn [belfz]: https://github.com/belfz +[afdw]: https://github.com/afdw From 81c9bbd1bd25846799c3306e745611bfc2dff11e Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Thu, 30 Aug 2018 11:22:48 -0700 Subject: [PATCH 70/71] Add `links` section to `Cargo.toml` Because only a single `wasm_bindgen` version can be used in a dependency graph, pretend we link a native library so that `cargo` will provide better error messages than the esoteric linker errors we would otherwise trigger. --- Cargo.toml | 4 ++++ build.rs | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 build.rs diff --git a/Cargo.toml b/Cargo.toml index af1e021b..ea4b3f43 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,10 @@ name = "wasm-bindgen" version = "0.2.19" authors = ["The wasm-bindgen Developers"] license = "MIT/Apache-2.0" +# Because only a single `wasm_bindgen` version can be used in a dependency +# graph, pretend we link a native library so that `cargo` will provide better +# error messages than the esoteric linker errors we would otherwise trigger. +links = "wasm_bindgen" readme = "README.md" categories = ["wasm"] repository = "https://github.com/rustwasm/wasm-bindgen" diff --git a/build.rs b/build.rs new file mode 100644 index 00000000..0d19b826 --- /dev/null +++ b/build.rs @@ -0,0 +1,2 @@ +// Empty `build.rs` so that `[package] links = ...` works in `Cargo.toml`. +fn main() {} From de6aa6c97ebcac8249795c475cb99ad9b97b96a7 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 30 Aug 2018 13:26:07 -0700 Subject: [PATCH 71/71] Automatically change the schema version on all publishes Closes #773 --- crates/shared/src/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crates/shared/src/lib.rs b/crates/shared/src/lib.rs index 16ffd964..86591e9d 100644 --- a/crates/shared/src/lib.rs +++ b/crates/shared/src/lib.rs @@ -3,7 +3,9 @@ #[macro_use] extern crate serde_derive; -pub const SCHEMA_VERSION: &str = "8"; +// The schema is so unstable right now we just force it to change whenever this +// package's version changes, which happens on all publishes. +pub const SCHEMA_VERSION: &str = env!("CARGO_PKG_VERSION"); #[derive(Deserialize)] pub struct ProgramOnlySchema {