webgme-engine
Version:
WebGME server and Client API without a GUI
59 lines (48 loc) • 1.74 kB
JavaScript
let wasm;
const { TextDecoder } = require(String.raw`util`);
let WASM_VECTOR_LEN = 0;
let cachegetNodeBufferMemory = null;
function getNodeBufferMemory() {
if (cachegetNodeBufferMemory === null || cachegetNodeBufferMemory.buffer !== wasm.memory.buffer) {
cachegetNodeBufferMemory = Buffer.from(wasm.memory.buffer);
}
return cachegetNodeBufferMemory;
}
function passStringToWasm(arg) {
const size = Buffer.byteLength(arg);
const ptr = wasm.__wbindgen_malloc(size);
getNodeBufferMemory().write(arg, ptr, size);
WASM_VECTOR_LEN = size;
return ptr;
}
let cachegetInt32Memory = null;
function getInt32Memory() {
if (cachegetInt32Memory === null || cachegetInt32Memory.buffer !== wasm.memory.buffer) {
cachegetInt32Memory = new Int32Array(wasm.memory.buffer);
}
return cachegetInt32Memory;
}
let cachedTextDecoder = new TextDecoder('utf-8');
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));
}
/**
* @param {string} data
* @returns {string}
*/
module.exports.hash = function(data) {
const retptr = 8;
const ret = wasm.hash(retptr, passStringToWasm(data), WASM_VECTOR_LEN);
const memi32 = getInt32Memory();
const v0 = getStringFromWasm(memi32[retptr / 4 + 0], memi32[retptr / 4 + 1]).slice();
wasm.__wbindgen_free(memi32[retptr / 4 + 0], memi32[retptr / 4 + 1] * 1);
return v0;
};
wasm = require('./wasm-sha1-node_bg');