aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-15 14:28:34 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-15 14:28:34 -0500
commited3a55508532fbaf6359abcc6e6a29192139cc9c (patch)
treea64f46a7b093281cc309c084d48818dd8a7d9854
parent17f98c7d0a864502e5722e756e33c6d2fef8a2c0 (diff)
downloadteleterm-ed3a55508532fbaf6359abcc6e6a29192139cc9c.tar.gz
teleterm-ed3a55508532fbaf6359abcc6e6a29192139cc9c.zip
move paths around a bit
this seems more likely to work when building the published crate
-rw-r--r--Makefile7
-rw-r--r--teleterm/src/web.rs6
-rw-r--r--teleterm/static/index.html (renamed from static/index.html)0
-rw-r--r--teleterm/static/teleterm_web.js343
-rw-r--r--teleterm/static/teleterm_web_bg.wasmbin0 -> 38686 bytes
5 files changed, 351 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index 24d0a1e..032adfe 100644
--- a/Makefile
+++ b/Makefile
@@ -95,8 +95,11 @@ install-arch: pkg/$(ARCH_PACKAGE)
@sudo pacman -U pkg/$(ARCH_PACKAGE)
.PHONY: install-arch
-wasm: target/wasm/teleterm_web_bg.wasm
+wasm: teleterm/static/teleterm_web.js teleterm/static/teleterm_web_bg.wasm
.PHONY: wasm
-target/wasm/teleterm_web_bg.wasm: teleterm-web/Cargo.toml teleterm-web/src/lib.rs
+teleterm/static/%: target/wasm/%
+ @cp -f $< $@
+
+target/wasm/teleterm_web.js target/wasm/teleterm_web_bg.wasm: teleterm-web/Cargo.toml teleterm-web/src/lib.rs
@wasm-pack build --no-typescript --target web --out-dir ../target/wasm teleterm-web
diff --git a/teleterm/src/web.rs b/teleterm/src/web.rs
index 5159233..1cf3a31 100644
--- a/teleterm/src/web.rs
+++ b/teleterm/src/web.rs
@@ -8,15 +8,15 @@ use lazy_static_include::*;
lazy_static_include::lazy_static_include_bytes!(
INDEX_HTML,
- "../static/index.html"
+ "static/index.html"
);
lazy_static_include::lazy_static_include_bytes!(
TELETERM_WEB_JS,
- "../target/wasm/teleterm_web.js"
+ "static/teleterm_web.js"
);
lazy_static_include::lazy_static_include_bytes!(
TELETERM_WEB_WASM,
- "../target/wasm/teleterm_web_bg.wasm"
+ "static/teleterm_web_bg.wasm"
);
pub fn router() -> impl gotham::handler::NewHandler {
diff --git a/static/index.html b/teleterm/static/index.html
index 58a7c36..58a7c36 100644
--- a/static/index.html
+++ b/teleterm/static/index.html
diff --git a/teleterm/static/teleterm_web.js b/teleterm/static/teleterm_web.js
new file mode 100644
index 0000000..eccf740
--- /dev/null
+++ b/teleterm/static/teleterm_web.js
@@ -0,0 +1,343 @@
+
+let wasm;
+
+const heap = new Array(32);
+
+heap.fill(undefined);
+
+heap.push(undefined, null, true, false);
+
+let heap_next = heap.length;
+
+function addHeapObject(obj) {
+ if (heap_next === heap.length) heap.push(heap.length + 1);
+ const idx = heap_next;
+ heap_next = heap[idx];
+
+ heap[idx] = obj;
+ return idx;
+}
+function __wbg_elem_binding0(arg0, arg1, arg2) {
+ wasm.__wbg_function_table.get(2)(arg0, arg1, addHeapObject(arg2));
+}
+function __wbg_elem_binding1(arg0, arg1, arg2) {
+ wasm.__wbg_function_table.get(2)(arg0, arg1, addHeapObject(arg2));
+}
+function __wbg_elem_binding2(arg0, arg1, arg2) {
+ wasm.__wbg_function_table.get(2)(arg0, arg1, addHeapObject(arg2));
+}
+/**
+*/
+export function main() {
+ wasm.main();
+}
+
+function getObject(idx) { return heap[idx]; }
+
+function dropObject(idx) {
+ if (idx < 36) return;
+ heap[idx] = heap_next;
+ heap_next = idx;
+}
+
+function takeObject(idx) {
+ const ret = getObject(idx);
+ dropObject(idx);
+ return ret;
+}
+
+let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
+
+cachedTextDecoder.decode();
+
+let cachegetUint8Memory = null;
+function getUint8Memory() {
+ if (cachegetUint8Memory === null || cachegetUint8Memory.buffer !== wasm.memory.buffer) {
+ cachegetUint8Memory = new Uint8Array(wasm.memory.buffer);
+ }
+ return cachegetUint8Memory;
+}
+
+function getStringFromWasm(ptr, len) {
+ return cachedTextDecoder.decode(getUint8Memory().subarray(ptr, ptr + len));
+}
+
+function handleError(e) {
+ wasm.__wbindgen_exn_store(addHeapObject(e));
+}
+
+let WASM_VECTOR_LEN = 0;
+
+let cachedTextEncoder = new TextEncoder('utf-8');
+
+const encodeString = (typeof cachedTextEncoder.encodeInto === 'function'
+ ? function (arg, view) {
+ return cachedTextEncoder.encodeInto(arg, view);
+}
+ : function (arg, view) {
+ const buf = cachedTextEncoder.encode(arg);
+ view.set(buf);
+ return {
+ read: arg.length,
+ written: buf.length
+ };
+});
+
+function passStringToWasm(arg) {
+
+ let len = arg.length;
+ let ptr = wasm.__wbindgen_malloc(len);
+
+ const mem = getUint8Memory();
+
+ let offset = 0;
+
+ for (; offset < len; offset++) {
+ const code = arg.charCodeAt(offset);
+ if (code > 0x7F) break;
+ mem[ptr + offset] = code;
+ }
+
+ if (offset !== len) {
+ if (offset !== 0) {
+ arg = arg.slice(offset);
+ }
+ ptr = wasm.__wbindgen_realloc(ptr, len, len = offset + arg.length * 3);
+ const view = getUint8Memory().subarray(ptr + offset, ptr + len);
+ const ret = encodeString(arg, view);
+
+ offset += ret.written;
+ }
+
+ WASM_VECTOR_LEN = offset;
+ return ptr;
+}
+
+let cachegetInt32Memory = null;
+function getInt32Memory() {
+ if (cachegetInt32Memory === null || cachegetInt32Memory.buffer !== wasm.memory.buffer) {
+ cachegetInt32Memory = new Int32Array(wasm.memory.buffer);
+ }
+ return cachegetInt32Memory;
+}
+
+function debugString(val) {
+ // primitive types
+ const type = typeof val;
+ if (type == 'number' || type == 'boolean' || val == null) {
+ return `${val}`;
+ }
+ if (type == 'string') {
+ return `"${val}"`;
+ }
+ if (type == 'symbol') {
+ const description = val.description;
+ if (description == null) {
+ return 'Symbol';
+ } else {
+ return `Symbol(${description})`;
+ }
+ }
+ if (type == 'function') {
+ const name = val.name;
+ if (typeof name == 'string' && name.length > 0) {
+ return `Function(${name})`;
+ } else {
+ return 'Function';
+ }
+ }
+ // objects
+ if (Array.isArray(val)) {
+ const length = val.length;
+ let debug = '[';
+ if (length > 0) {
+ debug += debugString(val[0]);
+ }
+ for(let i = 1; i < length; i++) {
+ debug += ', ' + debugString(val[i]);
+ }
+ debug += ']';
+ return debug;
+ }
+ // Test for built-in
+ const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val));
+ let className;
+ if (builtInMatches.length > 1) {
+ className = builtInMatches[1];
+ } else {
+ // Failed to match the standard '[object ClassName]'
+ return toString.call(val);
+ }
+ if (className == 'Object') {
+ // we're a user defined class or Object
+ // JSON.stringify avoids problems with cycles, and is generally much
+ // easier than looping through ownProperties of `val`.
+ try {
+ return 'Object(' + JSON.stringify(val) + ')';
+ } catch (_) {
+ return 'Object';
+ }
+ }
+ // errors
+ if (val instanceof Error) {
+ return `${val.name}: ${val.message}\n${val.stack}`;
+ }
+ // TODO we could test for more things here, like `Set`s and `Map`s.
+ return className;
+}
+
+function init(module) {
+ if (typeof module === 'undefined') {
+ module = import.meta.url.replace(/\.js$/, '_bg.wasm');
+ }
+ let result;
+ const imports = {};
+ imports.wbg = {};
+ imports.wbg.__wbindgen_cb_forget = function(arg0) {
+ takeObject(arg0);
+ };
+ imports.wbg.__wbg_log_93d35dab6e237612 = function(arg0, arg1) {
+ console.log(getStringFromWasm(arg0, arg1));
+ };
+ imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
+ takeObject(arg0);
+ };
+ imports.wbg.__wbindgen_object_clone_ref = function(arg0) {
+ const ret = getObject(arg0);
+ return addHeapObject(ret);
+ };
+ imports.wbg.__widl_f_new_WebSocket = function(arg0, arg1) {
+ try {
+ const ret = new WebSocket(getStringFromWasm(arg0, arg1));
+ return addHeapObject(ret);
+ } catch (e) {
+ handleError(e)
+ }
+ };
+ imports.wbg.__widl_f_send_with_str_WebSocket = function(arg0, arg1, arg2) {
+ try {
+ getObject(arg0).send(getStringFromWasm(arg1, arg2));
+ } catch (e) {
+ handleError(e)
+ }
+ };
+ imports.wbg.__widl_f_set_onopen_WebSocket = function(arg0, arg1) {
+ getObject(arg0).onopen = getObject(arg1);
+ };
+ imports.wbg.__widl_f_set_onerror_WebSocket = function(arg0, arg1) {
+ getObject(arg0).onerror = getObject(arg1);
+ };
+ imports.wbg.__widl_f_set_onmessage_WebSocket = function(arg0, arg1) {
+ getObject(arg0).onmessage = getObject(arg1);
+ };
+ imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {
+ const ret = debugString(getObject(arg1));
+ const ret0 = passStringToWasm(ret);
+ const ret1 = WASM_VECTOR_LEN;
+ getInt32Memory()[arg0 / 4 + 0] = ret0;
+ getInt32Memory()[arg0 / 4 + 1] = ret1;
+ };
+ imports.wbg.__wbindgen_throw = function(arg0, arg1) {
+ throw new Error(getStringFromWasm(arg0, arg1));
+ };
+ imports.wbg.__wbindgen_rethrow = function(arg0) {
+ throw takeObject(arg0);
+ };
+ imports.wbg.__wbindgen_closure_wrapper19 = function(arg0, arg1, arg2) {
+ const state = { a: arg0, b: arg1, cnt: 1 };
+ const real = (arg0) => {
+ state.cnt++;
+ const a = state.a;
+ state.a = 0;
+ try {
+ return __wbg_elem_binding2(a, state.b, arg0);
+ } finally {
+ if (--state.cnt === 0) wasm.__wbg_function_table.get(3)(a, state.b);
+ else state.a = a;
+ }
+ }
+ ;
+ real.original = state;
+ const ret = real;
+ return addHeapObject(ret);
+ };
+ imports.wbg.__wbindgen_closure_wrapper17 = function(arg0, arg1, arg2) {
+ const state = { a: arg0, b: arg1, cnt: 1 };
+ const real = (arg0) => {
+ state.cnt++;
+ const a = state.a;
+ state.a = 0;
+ try {
+ return __wbg_elem_binding0(a, state.b, arg0);
+ } finally {
+ if (--state.cnt === 0) wasm.__wbg_function_table.get(3)(a, state.b);
+ else state.a = a;
+ }
+ }
+ ;
+ real.original = state;
+ const ret = real;
+ return addHeapObject(ret);
+ };
+ imports.wbg.__wbindgen_closure_wrapper21 = function(arg0, arg1, arg2) {
+ const state = { a: arg0, b: arg1, cnt: 1 };
+ const real = (arg0) => {
+ state.cnt++;
+ const a = state.a;
+ state.a = 0;
+ try {
+ return __wbg_elem_binding1(a, state.b, arg0);
+ } finally {
+ if (--state.cnt === 0) wasm.__wbg_function_table.get(3)(a, state.b);
+ else state.a = a;
+ }
+ }
+ ;
+ real.original = state;
+ const ret = real;
+ return addHeapObject(ret);
+ };
+
+ if ((typeof URL === 'function' && module instanceof URL) || typeof module === 'string' || (typeof Request === 'function' && module instanceof Request)) {
+
+ const response = fetch(module);
+ if (typeof WebAssembly.instantiateStreaming === 'function') {
+ result = WebAssembly.instantiateStreaming(response, imports)
+ .catch(e => {
+ return response
+ .then(r => {
+ if (r.headers.get('Content-Type') != 'application/wasm') {
+ console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
+ return r.arrayBuffer();
+ } else {
+ throw e;
+ }
+ })
+ .then(bytes => WebAssembly.instantiate(bytes, imports));
+ });
+ } else {
+ result = response
+ .then(r => r.arrayBuffer())
+ .then(bytes => WebAssembly.instantiate(bytes, imports));
+ }
+ } else {
+
+ result = WebAssembly.instantiate(module, imports)
+ .then(result => {
+ if (result instanceof WebAssembly.Instance) {
+ return { instance: result, module };
+ } else {
+ return result;
+ }
+ });
+ }
+ return result.then(({instance, module}) => {
+ wasm = instance.exports;
+ init.__wbindgen_wasm_module = module;
+ wasm.__wbindgen_start();
+ return wasm;
+ });
+}
+
+export default init;
+
diff --git a/teleterm/static/teleterm_web_bg.wasm b/teleterm/static/teleterm_web_bg.wasm
new file mode 100644
index 0000000..38eeef1
--- /dev/null
+++ b/teleterm/static/teleterm_web_bg.wasm
Binary files differ