Dropped node support in umd -> amd

This commit is contained in:
Sharad Chand 2018-04-07 13:06:36 +05:45
parent 2b9af53030
commit 0bd8713bd5
3 changed files with 74 additions and 97 deletions

View File

@ -47,7 +47,7 @@ impl<'a> Context<'a> {
let contents = contents.trim();
let global = if self.config.nodejs {
format!("module.exports.{} = {};\n", name, contents)
} else if self.config.umd {
} else if self.config.amd {
format!("__exports.{} = {}\n", name, contents)
} else {
if contents.starts_with("function") {
@ -66,7 +66,7 @@ impl<'a> Context<'a> {
{
let mut bind = |name: &str, f: &Fn(&mut Self) -> String| {
if !self.wasm_import_needed(name) {
return
return;
}
let contents = f(self);
let contents = contents.trim();
@ -229,61 +229,39 @@ impl<'a> Context<'a> {
self.footer.push_str(&format!("wasm = require('./{}_bg');",
module_name));
format!("var wasm;")
} else if self.config.umd {
} else if self.config.amd {
format!("
if(typeof window === 'undefined' && typeof process === 'object') {{
const fs = require('fs');
const path = require('path');
const wasm_path = path.join(__dirname, '{module}_bg.wasm');
const buffer = fs.readFileSync(wasm_path);
const mod = new WebAssembly.Module(buffer);
return __initialize(mod, false);
}} else {{
return fetch('{module}_bg.wasm')
.then(response => response.arrayBuffer())
.then(bytes => WebAssembly.compile(bytes))
.then(mod => __initialize(mod, true));
}}", module = module_name)
return fetch('{module}_bg.wasm')
.then(response => response.arrayBuffer())
.then(buffer => WebAssembly.instantiate(buffer, __js_exports))
.then(({{instance}}) => {{
wasm = instance.exports;
return wasm;
}})
.catch(error => {{
console.log('Error loading wasm module `{module}`:', error);
throw error;
}});
", module = module_name)
} else {
format!("import * as wasm from './{}_bg';", module_name)
};
let js = if self.config.umd {
let js = if self.config.amd {
format!("
(function (root, factory) {{
if (typeof define === 'function' && define.amd) {{
define([], factory);
}} else if (typeof module === 'object' && module.exports) {{
module.exports = factory();
}} else {{
root.{module} = factory();
}}
}}(typeof self !== 'undefined' ? self : this, function() {{
let wasm;
const __js_exports = {{}};
const __exports = {{}};
{globals}
__js_exports['./{module}'] = __exports;
{import_wasm}
function __initialize(__mod, __load_async) {{
const __js_exports = {{}};
const __exports = {{}};
{globals}
__js_exports['./{module}'] = __exports;
if (__load_async) {{
return WebAssembly.instantiate(__mod, __js_exports)
.then(instance => {{
wasm = instance.exports;
return instance.exports;
}})
.catch(error => {{
console.log('Error loading wasm module `{module}`:', error);
throw error;
}});
}} else {{
const instance = new WebAssembly.Instance(__mod, __js_exports);
wasm = instance.exports;
return instance.exports;
}}
}}
}}))
",
module = module_name,
@ -380,7 +358,7 @@ impl<'a> Context<'a> {
}
fn _rewrite_imports(&mut self, module_name: &str)
-> Vec<(String, String)>
-> Vec<(String, String)>
{
let mut math_imports = Vec::new();
let imports = self.module.sections_mut()
@ -398,11 +376,11 @@ impl<'a> Context<'a> {
import.module_mut().truncate(0);
import.module_mut().push_str("./");
import.module_mut().push_str(module_name);
continue
continue;
}
if import.module() != "env" {
continue
continue;
}
let renamed_import = format!("__wbindgen_{}", import.field());
@ -477,7 +455,7 @@ impl<'a> Context<'a> {
fn expose_drop_ref(&mut self) {
if !self.exposed_globals.insert("drop_ref") {
return
return;
}
self.expose_global_slab();
self.expose_global_slab_next();
@ -520,7 +498,7 @@ impl<'a> Context<'a> {
fn expose_global_stack(&mut self) {
if !self.exposed_globals.insert("stack") {
return
return;
}
self.globals.push_str(&format!("
let stack = [];
@ -529,14 +507,14 @@ impl<'a> Context<'a> {
fn expose_global_slab(&mut self) {
if !self.exposed_globals.insert("slab") {
return
return;
}
self.globals.push_str(&format!("let slab = [];"));
}
fn expose_global_slab_next(&mut self) {
if !self.exposed_globals.insert("slab_next") {
return
return;
}
self.globals.push_str(&format!("
let slab_next = 0;
@ -545,7 +523,7 @@ impl<'a> Context<'a> {
fn expose_get_object(&mut self) {
if !self.exposed_globals.insert("get_object") {
return
return;
}
self.expose_global_stack();
self.expose_global_slab();
@ -575,7 +553,7 @@ impl<'a> Context<'a> {
fn expose_check_token(&mut self) {
if !self.exposed_globals.insert("check_token") {
return
return;
}
self.globals.push_str(&format!("
const token = Symbol('foo');
@ -588,7 +566,7 @@ impl<'a> Context<'a> {
fn expose_assert_num(&mut self) {
if !self.exposed_globals.insert("assert_num") {
return
return;
}
self.globals.push_str(&format!("
function _assertNum(n) {{
@ -600,7 +578,7 @@ impl<'a> Context<'a> {
fn expose_assert_bool(&mut self) {
if !self.exposed_globals.insert("assert_bool") {
return
return;
}
self.globals.push_str(&format!("
function _assertBoolean(n) {{
@ -612,7 +590,7 @@ impl<'a> Context<'a> {
fn expose_pass_string_to_wasm(&mut self) {
if !self.exposed_globals.insert("pass_string_to_wasm") {
return
return;
}
self.required_internal_exports.insert("__wbindgen_malloc");
self.expose_text_encoder();
@ -638,7 +616,7 @@ impl<'a> Context<'a> {
fn expose_pass_array8_to_wasm(&mut self) {
if !self.exposed_globals.insert("pass_array8_to_wasm") {
return
return;
}
self.required_internal_exports.insert("__wbindgen_malloc");
self.expose_uint8_memory();
@ -653,7 +631,7 @@ impl<'a> Context<'a> {
fn expose_pass_array16_to_wasm(&mut self) {
if !self.exposed_globals.insert("pass_array16_to_wasm") {
return
return;
}
self.required_internal_exports.insert("__wbindgen_malloc");
self.expose_uint16_memory();
@ -668,7 +646,7 @@ impl<'a> Context<'a> {
fn expose_pass_array32_to_wasm(&mut self) {
if !self.exposed_globals.insert("pass_array32_to_wasm") {
return
return;
}
self.required_internal_exports.insert("__wbindgen_malloc");
self.expose_uint32_memory();
@ -683,7 +661,7 @@ impl<'a> Context<'a> {
fn expose_pass_array_f32_to_wasm(&mut self) {
if !self.exposed_globals.insert("pass_array_f32_to_wasm") {
return
return;
}
self.required_internal_exports.insert("__wbindgen_malloc");
self.globals.push_str(&format!("
@ -697,7 +675,7 @@ impl<'a> Context<'a> {
fn expose_pass_array_f64_to_wasm(&mut self) {
if !self.exposed_globals.insert("pass_array_f64_to_wasm") {
return
return;
}
self.required_internal_exports.insert("__wbindgen_malloc");
self.globals.push_str(&format!("
@ -711,7 +689,7 @@ impl<'a> Context<'a> {
fn expose_text_encoder(&mut self) {
if !self.exposed_globals.insert("text_encoder") {
return
return;
}
if self.config.nodejs {
self.globals.push_str(&format!("
@ -731,7 +709,7 @@ impl<'a> Context<'a> {
fn expose_text_decoder(&mut self) {
if !self.exposed_globals.insert("text_decoder") {
return
return;
}
if self.config.nodejs {
self.globals.push_str(&format!("
@ -751,7 +729,7 @@ impl<'a> Context<'a> {
fn expose_get_string_from_wasm(&mut self) {
if !self.exposed_globals.insert("get_string_from_wasm") {
return
return;
}
self.expose_text_decoder();
self.expose_uint8_memory();
@ -764,7 +742,7 @@ impl<'a> Context<'a> {
fn expose_get_array_js_value_from_wasm(&mut self) {
if !self.exposed_globals.insert("get_array_js_value_from_wasm") {
return
return;
}
self.expose_get_array_u32_from_wasm();
self.expose_get_object();
@ -784,7 +762,7 @@ impl<'a> Context<'a> {
fn expose_get_array_i8_from_wasm(&mut self) {
self.expose_uint8_memory();
if !self.exposed_globals.insert("get_array_i8_from_wasm") {
return
return;
}
self.globals.push_str(&format!("
function getArrayI8FromWasm(ptr, len) {{
@ -798,7 +776,7 @@ impl<'a> Context<'a> {
fn expose_get_array_u8_from_wasm(&mut self) {
self.expose_uint8_memory();
if !self.exposed_globals.insert("get_array_u8_from_wasm") {
return
return;
}
self.globals.push_str(&format!("
function getArrayU8FromWasm(ptr, len) {{
@ -812,7 +790,7 @@ impl<'a> Context<'a> {
fn expose_get_array_i16_from_wasm(&mut self) {
self.expose_uint16_memory();
if !self.exposed_globals.insert("get_array_i16_from_wasm") {
return
return;
}
self.globals.push_str(&format!("
function getArrayI16FromWasm(ptr, len) {{
@ -826,7 +804,7 @@ impl<'a> Context<'a> {
fn expose_get_array_u16_from_wasm(&mut self) {
self.expose_uint16_memory();
if !self.exposed_globals.insert("get_array_u16_from_wasm") {
return
return;
}
self.globals.push_str(&format!("
function getArrayU16FromWasm(ptr, len) {{
@ -840,7 +818,7 @@ impl<'a> Context<'a> {
fn expose_get_array_i32_from_wasm(&mut self) {
self.expose_uint32_memory();
if !self.exposed_globals.insert("get_array_i32_from_wasm") {
return
return;
}
self.globals.push_str(&format!("
function getArrayI32FromWasm(ptr, len) {{
@ -854,7 +832,7 @@ impl<'a> Context<'a> {
fn expose_get_array_u32_from_wasm(&mut self) {
self.expose_uint32_memory();
if !self.exposed_globals.insert("get_array_u32_from_wasm") {
return
return;
}
self.globals.push_str(&format!("
function getArrayU32FromWasm(ptr, len) {{
@ -867,7 +845,7 @@ impl<'a> Context<'a> {
fn expose_get_array_f32_from_wasm(&mut self) {
if !self.exposed_globals.insert("get_array_f32_from_wasm") {
return
return;
}
self.globals.push_str(&format!("
function getArrayF32FromWasm(ptr, len) {{
@ -880,7 +858,7 @@ impl<'a> Context<'a> {
fn expose_get_array_f64_from_wasm(&mut self) {
if !self.exposed_globals.insert("get_array_f64_from_wasm") {
return
return;
}
self.globals.push_str(&format!("
function getArrayF64FromWasm(ptr, len) {{
@ -893,7 +871,7 @@ impl<'a> Context<'a> {
fn expose_uint8_memory(&mut self) {
if !self.exposed_globals.insert("uint8_memory") {
return
return;
}
self.globals.push_str(&format!("
let cachedUint8Memory = null;
@ -908,7 +886,7 @@ impl<'a> Context<'a> {
fn expose_uint16_memory(&mut self) {
if !self.exposed_globals.insert("uint16_memory") {
return
return;
}
self.globals.push_str(&format!("
let cachedUint16Memory = null;
@ -923,7 +901,7 @@ impl<'a> Context<'a> {
fn expose_uint32_memory(&mut self) {
if !self.exposed_globals.insert("uint32_memory") {
return
return;
}
self.globals.push_str(&format!("
let cachedUint32Memory = null;
@ -938,7 +916,7 @@ impl<'a> Context<'a> {
fn expose_assert_class(&mut self) {
if !self.exposed_globals.insert("assert_class") {
return
return;
}
self.globals.push_str(&format!("
function _assertClass(instance, klass) {{
@ -951,7 +929,7 @@ impl<'a> Context<'a> {
fn expose_borrowed_objects(&mut self) {
if !self.exposed_globals.insert("borrowed_objects") {
return
return;
}
self.expose_global_stack();
self.globals.push_str(&format!("
@ -964,7 +942,7 @@ impl<'a> Context<'a> {
fn expose_take_object(&mut self) {
if !self.exposed_globals.insert("take_object") {
return
return;
}
self.expose_get_object();
self.expose_drop_ref();
@ -979,7 +957,7 @@ impl<'a> Context<'a> {
fn expose_add_heap_object(&mut self) {
if !self.exposed_globals.insert("add_heap_object") {
return
return;
}
self.expose_global_slab();
self.expose_global_slab_next();
@ -1100,7 +1078,7 @@ impl<'a> Context<'a> {
fn expose_set_global_argument(&mut self) {
if !self.exposed_globals.insert("set_global_argument") {
return
return;
}
self.expose_uint32_memory();
self.expose_global_argument_ptr();
@ -1114,7 +1092,7 @@ impl<'a> Context<'a> {
fn expose_get_global_argument(&mut self) {
if !self.exposed_globals.insert("get_global_argument") {
return
return;
}
self.expose_uint32_memory();
self.expose_global_argument_ptr();
@ -1128,7 +1106,7 @@ impl<'a> Context<'a> {
fn expose_global_argument_ptr(&mut self) {
if !self.exposed_globals.insert("global_argument_ptr") {
return
return;
}
self.required_internal_exports.insert("__wbindgen_global_argument_ptr");
self.globals.push_str("
@ -1157,7 +1135,7 @@ impl<'a, 'b> SubContext<'a, 'b> {
pub fn generate_export(&mut self, export: &shared::Export) {
if let Some(ref class) = export.class {
return self.generate_export_for_class(class, export)
return self.generate_export_for_class(class, export);
}
let (js, ts) = self.generate_function("function",
&export.function.name,
@ -1237,8 +1215,7 @@ impl<'a, 'b> SubContext<'a, 'b> {
arg_conversions.push_str(&format!("\
_assertBoolean({name});
", name = name));
} else {
}
} else {}
pass(&format!("arg{i} ? 1 : 0", i = i))
}
shared::TYPE_JS_OWNED => {
@ -1381,9 +1358,9 @@ impl<'a, 'b> SubContext<'a, 'b> {
const ret = wasm.{}({passed});
{convert_ret}
",
f = wasm_name,
passed = passed_args,
convert_ret = convert_ret,
f = wasm_name,
passed = passed_args,
convert_ret = convert_ret,
));
} else {
dst.push_str(&format!("\
@ -1394,10 +1371,10 @@ impl<'a, 'b> SubContext<'a, 'b> {
{destructors}
}}
",
f = wasm_name,
passed = passed_args,
destructors = destructors,
convert_ret = convert_ret,
f = wasm_name,
passed = passed_args,
destructors = destructors,
convert_ret = convert_ret,
));
}
dst.push_str("}");

View File

@ -17,7 +17,7 @@ pub struct Bindgen {
path: Option<PathBuf>,
nodejs: bool,
browser: bool,
umd: bool,
amd: bool,
debug: bool,
typescript: bool,
}
@ -37,7 +37,7 @@ impl Bindgen {
path: None,
nodejs: false,
browser: false,
umd: false,
amd: false,
debug: false,
typescript: false,
}
@ -58,8 +58,8 @@ impl Bindgen {
self
}
pub fn umd(&mut self, umd: bool) -> &mut Bindgen {
self.umd = umd;
pub fn amd(&mut self, amd: bool) -> &mut Bindgen {
self.amd = amd;
self
}

View File

@ -32,7 +32,7 @@ Options:
struct Args {
flag_nodejs: bool,
flag_browser: bool,
flag_umd: bool,
flag_amd: bool,
flag_typescript: bool,
flag_out_dir: Option<PathBuf>,
flag_debug: bool,
@ -59,7 +59,7 @@ fn main() {
b.input_path(&input)
.nodejs(args.flag_nodejs)
.browser(args.flag_browser)
.umd(args.flag_umd)
.amd(args.flag_amd)
.debug(args.flag_debug)
.typescript(args.flag_typescript);