mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-04-29 15:42:16 +00:00
Remove --nodejs-runtime-detect
Instead use it by default and add a --browser argument to explicity remove the shim. Closes #79
This commit is contained in:
parent
bde56d3a6e
commit
28c3fdddf5
@ -193,8 +193,6 @@ impl Project {
|
|||||||
|
|
||||||
cli::Bindgen::new()
|
cli::Bindgen::new()
|
||||||
.input_path(&as_a_module)
|
.input_path(&as_a_module)
|
||||||
.nodejs(true)
|
|
||||||
.nodejs_runtime_detect(self.detect_node)
|
|
||||||
.typescript(true)
|
.typescript(true)
|
||||||
.debug(self.debug)
|
.debug(self.debug)
|
||||||
.generate(&root)
|
.generate(&root)
|
||||||
|
@ -506,46 +506,19 @@ impl<'a> Context<'a> {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
self.required_internal_exports.insert("__wbindgen_malloc");
|
self.required_internal_exports.insert("__wbindgen_malloc");
|
||||||
if self.config.nodejs_runtime_detect || self.config.nodejs {
|
self.expose_text_encoder();
|
||||||
self.globals.push_str(&format!("
|
self.expose_uint8_memory();
|
||||||
function passStringToWasmNode(arg) {{
|
self.globals.push_str(&format!("
|
||||||
if (typeof(arg) !== 'string')
|
function passStringToWasm(arg) {{
|
||||||
throw new Error('expected a string argument');
|
if (typeof(arg) !== 'string')
|
||||||
const buf = Buffer.from(arg);
|
throw new Error('expected a string argument');
|
||||||
const len = buf.length;
|
const buf = textEncoder().encode(arg);
|
||||||
const ptr = wasm.__wbindgen_malloc(len);
|
const len = buf.length;
|
||||||
buf.copy(Buffer.from(wasm.memory.buffer), ptr);
|
const ptr = wasm.__wbindgen_malloc(len);
|
||||||
return [ptr, len];
|
getUint8Memory().set(buf, ptr);
|
||||||
}}
|
return [ptr, len];
|
||||||
"));
|
}}
|
||||||
}
|
"));
|
||||||
if self.config.nodejs_runtime_detect || !self.config.nodejs {
|
|
||||||
self.expose_text_encoder();
|
|
||||||
self.expose_uint8_memory();
|
|
||||||
self.globals.push_str(&format!("
|
|
||||||
function passStringToWasmBrowser(arg) {{
|
|
||||||
if (typeof(arg) !== 'string')
|
|
||||||
throw new Error('expected a string argument');
|
|
||||||
const buf = textEncoder().encode(arg);
|
|
||||||
const len = buf.length;
|
|
||||||
const ptr = wasm.__wbindgen_malloc(len);
|
|
||||||
getUint8Memory().set(buf, ptr);
|
|
||||||
return [ptr, len];
|
|
||||||
}}
|
|
||||||
"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if self.config.nodejs_runtime_detect {
|
|
||||||
self.globals.push_str("
|
|
||||||
let passStringToWasm = passStringToWasmBrowser;
|
|
||||||
if (typeof window === 'undefined')
|
|
||||||
passStringToWasm = passStringToWasmNode;
|
|
||||||
");
|
|
||||||
} else if self.config.nodejs {
|
|
||||||
self.globals.push_str("const passStringToWasm = passStringToWasmNode;\n");
|
|
||||||
} else {
|
|
||||||
self.globals.push_str("const passStringToWasm = passStringToWasmBrowser;\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn expose_pass_array8_to_wasm(&mut self) {
|
fn expose_pass_array8_to_wasm(&mut self) {
|
||||||
@ -625,6 +598,16 @@ impl<'a> Context<'a> {
|
|||||||
if !self.exposed_globals.insert("text_encoder") {
|
if !self.exposed_globals.insert("text_encoder") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if self.config.nodejs {
|
||||||
|
self.globals.push_str(&format!("
|
||||||
|
const TextEncoder = require('util');
|
||||||
|
"));
|
||||||
|
} else if !self.config.browser {
|
||||||
|
self.globals.push_str(&format!("
|
||||||
|
if (typeof window === 'undefined')
|
||||||
|
var TextEncoder = require('util').TextEncoder;
|
||||||
|
"));
|
||||||
|
}
|
||||||
self.globals.push_str(&format!("
|
self.globals.push_str(&format!("
|
||||||
let cachedEncoder = null;
|
let cachedEncoder = null;
|
||||||
function textEncoder() {{
|
function textEncoder() {{
|
||||||
@ -640,6 +623,16 @@ impl<'a> Context<'a> {
|
|||||||
if !self.exposed_globals.insert("text_decoder") {
|
if !self.exposed_globals.insert("text_decoder") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if self.config.nodejs {
|
||||||
|
self.globals.push_str(&format!("
|
||||||
|
const TextDecoder = require('util');
|
||||||
|
"));
|
||||||
|
} else if !self.config.browser {
|
||||||
|
self.globals.push_str(&format!("
|
||||||
|
if (typeof window === 'undefined')
|
||||||
|
var TextDecoder = require('util').TextDecoder;
|
||||||
|
"));
|
||||||
|
}
|
||||||
self.globals.push_str(&format!("
|
self.globals.push_str(&format!("
|
||||||
let cachedDecoder = null;
|
let cachedDecoder = null;
|
||||||
function textDecoder() {{
|
function textDecoder() {{
|
||||||
@ -655,39 +648,16 @@ impl<'a> Context<'a> {
|
|||||||
if !self.exposed_globals.insert("get_string_from_wasm") {
|
if !self.exposed_globals.insert("get_string_from_wasm") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if self.config.nodejs_runtime_detect || self.config.nodejs {
|
self.expose_text_decoder();
|
||||||
self.globals.push_str(&format!("
|
self.expose_uint8_memory();
|
||||||
function getStringFromWasmNode(ptr, len) {{
|
self.globals.push_str(&format!("
|
||||||
const buf = Buffer.from(wasm.memory.buffer).slice(ptr, ptr + len);
|
function getStringFromWasm(ptr, len) {{
|
||||||
const ret = buf.toString();
|
const mem = getUint8Memory();
|
||||||
return ret;
|
const slice = mem.slice(ptr, ptr + len);
|
||||||
}}
|
const ret = textDecoder().decode(slice);
|
||||||
"));
|
return ret;
|
||||||
}
|
}}
|
||||||
if self.config.nodejs_runtime_detect || !self.config.nodejs {
|
"));
|
||||||
self.expose_text_decoder();
|
|
||||||
self.expose_uint8_memory();
|
|
||||||
self.globals.push_str(&format!("
|
|
||||||
function getStringFromWasmBrowser(ptr, len) {{
|
|
||||||
const mem = getUint8Memory();
|
|
||||||
const slice = mem.slice(ptr, ptr + len);
|
|
||||||
const ret = textDecoder().decode(slice);
|
|
||||||
return ret;
|
|
||||||
}}
|
|
||||||
"));
|
|
||||||
}
|
|
||||||
|
|
||||||
if self.config.nodejs_runtime_detect {
|
|
||||||
self.globals.push_str("
|
|
||||||
let getStringFromWasm = getStringFromWasmBrowser;
|
|
||||||
if (typeof window === 'undefined')
|
|
||||||
getStringFromWasm = getStringFromWasmNode;
|
|
||||||
");
|
|
||||||
} else if self.config.nodejs {
|
|
||||||
self.globals.push_str("const getStringFromWasm = getStringFromWasmNode;\n");
|
|
||||||
} else {
|
|
||||||
self.globals.push_str("const getStringFromWasm = getStringFromWasmBrowser;\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn expose_get_array_js_value_from_wasm(&mut self) {
|
fn expose_get_array_js_value_from_wasm(&mut self) {
|
||||||
|
@ -17,7 +17,7 @@ pub mod wasm2es6js;
|
|||||||
pub struct Bindgen {
|
pub struct Bindgen {
|
||||||
path: Option<PathBuf>,
|
path: Option<PathBuf>,
|
||||||
nodejs: bool,
|
nodejs: bool,
|
||||||
nodejs_runtime_detect: bool,
|
browser: bool,
|
||||||
debug: bool,
|
debug: bool,
|
||||||
typescript: bool,
|
typescript: bool,
|
||||||
}
|
}
|
||||||
@ -36,7 +36,7 @@ impl Bindgen {
|
|||||||
Bindgen {
|
Bindgen {
|
||||||
path: None,
|
path: None,
|
||||||
nodejs: false,
|
nodejs: false,
|
||||||
nodejs_runtime_detect: false,
|
browser: false,
|
||||||
debug: false,
|
debug: false,
|
||||||
typescript: false,
|
typescript: false,
|
||||||
}
|
}
|
||||||
@ -52,8 +52,8 @@ impl Bindgen {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn nodejs_runtime_detect(&mut self, detect: bool) -> &mut Bindgen {
|
pub fn browser(&mut self, browser: bool) -> &mut Bindgen {
|
||||||
self.nodejs_runtime_detect = detect;
|
self.browser = browser;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,8 +20,8 @@ Usage:
|
|||||||
Options:
|
Options:
|
||||||
-h --help Show this screen.
|
-h --help Show this screen.
|
||||||
--out-dir DIR Output directory
|
--out-dir DIR Output directory
|
||||||
--nodejs Generate output for node.js, not the browser
|
--nodejs Generate output that only works in node.js
|
||||||
--nodejs-runtime-detect Detect at runtime whether we're in node or a browser
|
--browser Generate output that only works in a browser
|
||||||
--typescript Output a TypeScript definition file
|
--typescript Output a TypeScript definition file
|
||||||
--debug Include otherwise-extraneous debug checks in output
|
--debug Include otherwise-extraneous debug checks in output
|
||||||
-V --version Print the version number of wasm-bindgen
|
-V --version Print the version number of wasm-bindgen
|
||||||
@ -30,7 +30,7 @@ Options:
|
|||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
struct Args {
|
struct Args {
|
||||||
flag_nodejs: bool,
|
flag_nodejs: bool,
|
||||||
flag_nodejs_runtime_detect: bool,
|
flag_browser: bool,
|
||||||
flag_typescript: bool,
|
flag_typescript: bool,
|
||||||
flag_out_dir: Option<PathBuf>,
|
flag_out_dir: Option<PathBuf>,
|
||||||
flag_debug: bool,
|
flag_debug: bool,
|
||||||
@ -56,7 +56,7 @@ fn main() {
|
|||||||
let mut b = Bindgen::new();
|
let mut b = Bindgen::new();
|
||||||
b.input_path(&input)
|
b.input_path(&input)
|
||||||
.nodejs(args.flag_nodejs)
|
.nodejs(args.flag_nodejs)
|
||||||
.nodejs_runtime_detect(args.flag_nodejs_runtime_detect)
|
.browser(args.browser)
|
||||||
.debug(args.flag_debug)
|
.debug(args.flag_debug)
|
||||||
.typescript(args.flag_typescript);
|
.typescript(args.flag_typescript);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user