62 lines
6.5 KiB
JavaScript
62 lines
6.5 KiB
JavaScript
|
|
module.exports = loadWebAssembly
|
|
|
|
loadWebAssembly.supported = typeof WebAssembly !== 'undefined'
|
|
|
|
function loadWebAssembly (opts) {
|
|
if (!loadWebAssembly.supported) return null
|
|
|
|
var imp = opts && opts.imports
|
|
var wasm = toUint8Array('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')
|
|
var ready = null
|
|
|
|
var mod = {
|
|
buffer: wasm,
|
|
memory: null,
|
|
exports: null,
|
|
realloc: realloc,
|
|
onload: onload
|
|
}
|
|
|
|
onload(function () {})
|
|
|
|
return mod
|
|
|
|
function realloc (size) {
|
|
mod.exports.memory.grow(Math.max(0, Math.ceil(Math.abs(size - mod.memory.length) / 65536)))
|
|
mod.memory = new Uint8Array(mod.exports.memory.buffer)
|
|
}
|
|
|
|
function onload (cb) {
|
|
if (mod.exports) return cb()
|
|
|
|
if (ready) {
|
|
ready.then(cb.bind(null, null)).catch(cb)
|
|
return
|
|
}
|
|
|
|
try {
|
|
if (opts && opts.async) throw new Error('async')
|
|
setup({instance: new WebAssembly.Instance(new WebAssembly.Module(wasm), imp)})
|
|
} catch (err) {
|
|
ready = WebAssembly.instantiate(wasm, imp).then(setup)
|
|
}
|
|
|
|
onload(cb)
|
|
}
|
|
|
|
function setup (w) {
|
|
mod.exports = w.instance.exports
|
|
mod.memory = mod.exports.memory && mod.exports.memory.buffer && new Uint8Array(mod.exports.memory.buffer)
|
|
}
|
|
}
|
|
|
|
function toUint8Array (s) {
|
|
if (typeof atob === 'function') return new Uint8Array(atob(s).split('').map(charCodeAt))
|
|
return (require('buf' + 'fer').Buffer).from(s, 'base64')
|
|
}
|
|
|
|
function charCodeAt (c) {
|
|
return c.charCodeAt(0)
|
|
}
|