-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
zack
committed
Jun 4, 2022
1 parent
1c07014
commit 0902e76
Showing
8 changed files
with
865 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,4 +2,3 @@ | |
/node_modules | ||
Cargo.lock | ||
package-lock.json | ||
/dist |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,346 @@ | ||
|
||
let wasm; | ||
|
||
const heap = new Array(32).fill(undefined); | ||
|
||
heap.push(undefined, null, true, false); | ||
|
||
function getObject(idx) { return heap[idx]; } | ||
|
||
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 dropObject(idx) { | ||
if (idx < 36) return; | ||
heap[idx] = heap_next; | ||
heap_next = idx; | ||
} | ||
|
||
function takeObject(idx) { | ||
const ret = getObject(idx); | ||
dropObject(idx); | ||
return ret; | ||
} | ||
|
||
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; | ||
} | ||
|
||
let WASM_VECTOR_LEN = 0; | ||
|
||
let cachegetUint8Memory0 = null; | ||
function getUint8Memory0() { | ||
if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { | ||
cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); | ||
} | ||
return cachegetUint8Memory0; | ||
} | ||
|
||
const 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 passStringToWasm0(arg, malloc, realloc) { | ||
|
||
if (realloc === undefined) { | ||
const buf = cachedTextEncoder.encode(arg); | ||
const ptr = malloc(buf.length); | ||
getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); | ||
WASM_VECTOR_LEN = buf.length; | ||
return ptr; | ||
} | ||
|
||
let len = arg.length; | ||
let ptr = malloc(len); | ||
|
||
const mem = getUint8Memory0(); | ||
|
||
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 = realloc(ptr, len, len = offset + arg.length * 3); | ||
const view = getUint8Memory0().subarray(ptr + offset, ptr + len); | ||
const ret = encodeString(arg, view); | ||
|
||
offset += ret.written; | ||
} | ||
|
||
WASM_VECTOR_LEN = offset; | ||
return ptr; | ||
} | ||
|
||
let cachegetInt32Memory0 = null; | ||
function getInt32Memory0() { | ||
if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { | ||
cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); | ||
} | ||
return cachegetInt32Memory0; | ||
} | ||
|
||
const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); | ||
|
||
cachedTextDecoder.decode(); | ||
|
||
function getStringFromWasm0(ptr, len) { | ||
return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); | ||
} | ||
/** | ||
*/ | ||
export function draw() { | ||
wasm.draw(); | ||
} | ||
|
||
function isLikeNone(x) { | ||
return x === undefined || x === null; | ||
} | ||
|
||
function handleError(f, args) { | ||
try { | ||
return f.apply(this, args); | ||
} catch (e) { | ||
wasm.__wbindgen_exn_store(addHeapObject(e)); | ||
} | ||
} | ||
|
||
let cachegetUint8ClampedMemory0 = null; | ||
function getUint8ClampedMemory0() { | ||
if (cachegetUint8ClampedMemory0 === null || cachegetUint8ClampedMemory0.buffer !== wasm.memory.buffer) { | ||
cachegetUint8ClampedMemory0 = new Uint8ClampedArray(wasm.memory.buffer); | ||
} | ||
return cachegetUint8ClampedMemory0; | ||
} | ||
|
||
function getClampedArrayU8FromWasm0(ptr, len) { | ||
return getUint8ClampedMemory0().subarray(ptr / 1, ptr / 1 + len); | ||
} | ||
|
||
async function load(module, imports) { | ||
if (typeof Response === 'function' && module instanceof Response) { | ||
if (typeof WebAssembly.instantiateStreaming === 'function') { | ||
try { | ||
return await WebAssembly.instantiateStreaming(module, imports); | ||
|
||
} catch (e) { | ||
if (module.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); | ||
|
||
} else { | ||
throw e; | ||
} | ||
} | ||
} | ||
|
||
const bytes = await module.arrayBuffer(); | ||
return await WebAssembly.instantiate(bytes, imports); | ||
|
||
} else { | ||
const instance = await WebAssembly.instantiate(module, imports); | ||
|
||
if (instance instanceof WebAssembly.Instance) { | ||
return { instance, module }; | ||
|
||
} else { | ||
return instance; | ||
} | ||
} | ||
} | ||
|
||
async function init(input) { | ||
if (typeof input === 'undefined') { | ||
input = new URL('canvas-10f3aeb782757d62_bg.wasm', import.meta.url); | ||
} | ||
const imports = {}; | ||
imports.wbg = {}; | ||
imports.wbg.__wbg_log_cde88b406133f4bb = function(arg0, arg1) { | ||
console.log(getStringFromWasm0(arg0, arg1)); | ||
}; | ||
imports.wbg.__wbg_instanceof_Window_0e6c0f1096d66c3c = function(arg0) { | ||
const ret = getObject(arg0) instanceof Window; | ||
return ret; | ||
}; | ||
imports.wbg.__wbg_document_99eddbbc11ec831e = function(arg0) { | ||
const ret = getObject(arg0).document; | ||
return isLikeNone(ret) ? 0 : addHeapObject(ret); | ||
}; | ||
imports.wbg.__wbg_getElementById_f83c5de20dc455d6 = function(arg0, arg1, arg2) { | ||
const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2)); | ||
return isLikeNone(ret) ? 0 : addHeapObject(ret); | ||
}; | ||
imports.wbg.__wbg_instanceof_CanvasRenderingContext2d_405495bb0ea92c4f = function(arg0) { | ||
const ret = getObject(arg0) instanceof CanvasRenderingContext2D; | ||
return ret; | ||
}; | ||
imports.wbg.__wbg_putImageData_fad983ad6d58ee62 = function() { return handleError(function (arg0, arg1, arg2, arg3) { | ||
getObject(arg0).putImageData(getObject(arg1), arg2, arg3); | ||
}, arguments) }; | ||
imports.wbg.__wbg_instanceof_HtmlCanvasElement_b94545433bb4d2ef = function(arg0) { | ||
const ret = getObject(arg0) instanceof HTMLCanvasElement; | ||
return ret; | ||
}; | ||
imports.wbg.__wbg_width_20b7a9ebdd5f4232 = function(arg0) { | ||
const ret = getObject(arg0).width; | ||
return ret; | ||
}; | ||
imports.wbg.__wbg_height_57f43816c2227a89 = function(arg0) { | ||
const ret = getObject(arg0).height; | ||
return ret; | ||
}; | ||
imports.wbg.__wbg_getContext_0c19ba5c037e057f = function() { return handleError(function (arg0, arg1, arg2) { | ||
const ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2)); | ||
return isLikeNone(ret) ? 0 : addHeapObject(ret); | ||
}, arguments) }; | ||
imports.wbg.__wbg_newwithu8clampedarrayandsh_87d2f0a48030f922 = function() { return handleError(function (arg0, arg1, arg2, arg3) { | ||
const ret = new ImageData(getClampedArrayU8FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0); | ||
return addHeapObject(ret); | ||
}, arguments) }; | ||
imports.wbg.__wbg_newnoargs_e23b458e372830de = function(arg0, arg1) { | ||
const ret = new Function(getStringFromWasm0(arg0, arg1)); | ||
return addHeapObject(ret); | ||
}; | ||
imports.wbg.__wbg_call_ae78342adc33730a = function() { return handleError(function (arg0, arg1) { | ||
const ret = getObject(arg0).call(getObject(arg1)); | ||
return addHeapObject(ret); | ||
}, arguments) }; | ||
imports.wbg.__wbg_globalThis_8e275ef40caea3a3 = function() { return handleError(function () { | ||
const ret = globalThis.globalThis; | ||
return addHeapObject(ret); | ||
}, arguments) }; | ||
imports.wbg.__wbg_self_99737b4dcdf6f0d8 = function() { return handleError(function () { | ||
const ret = self.self; | ||
return addHeapObject(ret); | ||
}, arguments) }; | ||
imports.wbg.__wbg_window_9b61fbbf3564c4fb = function() { return handleError(function () { | ||
const ret = window.window; | ||
return addHeapObject(ret); | ||
}, arguments) }; | ||
imports.wbg.__wbg_global_5de1e0f82bddcd27 = function() { return handleError(function () { | ||
const ret = global.global; | ||
return addHeapObject(ret); | ||
}, arguments) }; | ||
imports.wbg.__wbindgen_is_undefined = function(arg0) { | ||
const ret = getObject(arg0) === undefined; | ||
return ret; | ||
}; | ||
imports.wbg.__wbindgen_object_clone_ref = function(arg0) { | ||
const ret = getObject(arg0); | ||
return addHeapObject(ret); | ||
}; | ||
imports.wbg.__wbindgen_object_drop_ref = function(arg0) { | ||
takeObject(arg0); | ||
}; | ||
imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { | ||
const ret = debugString(getObject(arg1)); | ||
const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); | ||
const len0 = WASM_VECTOR_LEN; | ||
getInt32Memory0()[arg0 / 4 + 1] = len0; | ||
getInt32Memory0()[arg0 / 4 + 0] = ptr0; | ||
}; | ||
imports.wbg.__wbindgen_throw = function(arg0, arg1) { | ||
throw new Error(getStringFromWasm0(arg0, arg1)); | ||
}; | ||
|
||
if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { | ||
input = fetch(input); | ||
} | ||
|
||
|
||
|
||
const { instance, module } = await load(await input, imports); | ||
|
||
wasm = instance.exports; | ||
init.__wbindgen_wasm_module = module; | ||
|
||
return wasm; | ||
} | ||
|
||
export default init; | ||
|
Binary file not shown.
Binary file not shown.
Oops, something went wrong.