UNPKG

wretris

Version:

w(asm) + r(ust) + (t)etris: Rust implementation of tetris using the Cursive library with wasm backend

669 lines (552 loc) 18.2 kB
import { paint } from './snippets/cursive-afcc332366308cfc/src/backends/canvas.js'; let wasm; export function __wbg_set_wasm(val) { wasm = val; } const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder; let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true }); cachedTextDecoder.decode(); let cachedUint8Memory0 = null; function getUint8Memory0() { if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); } return cachedUint8Memory0; } function getStringFromWasm0(ptr, len) { ptr = ptr >>> 0; return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); } const heap = new Array(128).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 getObject(idx) { return heap[idx]; } function dropObject(idx) { if (idx < 132) 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; const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder; let cachedTextEncoder = new lTextEncoder('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, 1) >>> 0; getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); WASM_VECTOR_LEN = buf.length; return ptr; } let len = arg.length; let ptr = malloc(len, 1) >>> 0; 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, 1) >>> 0; const view = getUint8Memory0().subarray(ptr + offset, ptr + len); const ret = encodeString(arg, view); offset += ret.written; } WASM_VECTOR_LEN = offset; return ptr; } let cachedInt32Memory0 = null; function getInt32Memory0() { if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); } return cachedInt32Memory0; } function makeMutClosure(arg0, arg1, dtor, f) { const state = { a: arg0, b: arg1, cnt: 1, dtor }; const real = (...args) => { // First up with a closure we increment the internal reference // count. This ensures that the Rust closure environment won't // be deallocated while we're invoking it. state.cnt++; const a = state.a; state.a = 0; try { return f(a, state.b, ...args); } finally { if (--state.cnt === 0) { wasm.__wbindgen_export_2.get(state.dtor)(a, state.b); } else { state.a = a; } } }; real.original = state; return real; } function __wbg_adapter_24(arg0, arg1, arg2) { wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h7eb7cd4fc913a418(arg0, arg1, addHeapObject(arg2)); } function __wbg_adapter_27(arg0, arg1) { wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h78c75465033fba7b(arg0, arg1); } function __wbg_adapter_30(arg0, arg1, arg2) { wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h69e0bbfb2c9c6fac(arg0, arg1, addHeapObject(arg2)); } function getArrayU8FromWasm0(ptr, len) { ptr = ptr >>> 0; return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); } 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)); } } function __wbg_adapter_90(arg0, arg1, arg2, arg3) { wasm.wasm_bindgen__convert__closures__invoke2_mut__h09023be162c84afb(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); } /** */ export const Shape = Object.freeze({ I:0,"0":"I",O:1,"1":"O",T:2,"2":"T",S:3,"3":"S",Z:4,"4":"Z",J:5,"5":"J",L:6,"6":"L", }); /** */ export const BColor = Object.freeze({ I:0,"0":"I",O:1,"1":"O",T:2,"2":"T",S:3,"3":"S",Z:4,"4":"Z",J:5,"5":"J",L:6,"6":"L",GRID1:7,"7":"GRID1",GRID2:8,"8":"GRID2",HINT:9,"9":"HINT",WARNING:10,"10":"WARNING", }); /** */ export const Rotation = Object.freeze({ R0:0,"0":"R0",R90:1,"1":"R90",R180:2,"2":"R180",R270:3,"3":"R270", }); /** */ export class Board { __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_board_free(ptr); } } /** * Type of hex color which is r,g,b */ export class Color { __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_color_free(ptr); } } /** */ export class Cursive { static __wrap(ptr) { ptr = ptr >>> 0; const obj = Object.create(Cursive.prototype); obj.__wbg_ptr = ptr; return obj; } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_cursive_free(ptr); } /** * @returns {Promise<Cursive>} */ static retris() { const ret = wasm.cursive_retris(); return takeObject(ret); } } /** */ export class Tetris { __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_tetris_free(ptr); } } /** */ export class TextColorPair { __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_textcolorpair_free(ptr); } } export function __wbindgen_string_new(arg0, arg1) { const ret = getStringFromWasm0(arg0, arg1); return addHeapObject(ret); }; export function __wbindgen_object_drop_ref(arg0) { takeObject(arg0); }; export function __wbg_alert_d2fd11c1a1976e06(arg0, arg1) { alert(getStringFromWasm0(arg0, arg1)); }; export function __wbg_cursive_new(arg0) { const ret = Cursive.__wrap(arg0); return addHeapObject(ret); }; export function __wbg_new_abda76e883ba8a5f() { const ret = new Error(); return addHeapObject(ret); }; export function __wbg_stack_658279fe44541cf6(arg0, arg1) { const ret = getObject(arg1).stack; const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len1; getInt32Memory0()[arg0 / 4 + 0] = ptr1; }; export function __wbg_error_f851667af71bcfc6(arg0, arg1) { let deferred0_0; let deferred0_1; try { deferred0_0 = arg0; deferred0_1 = arg1; console.error(getStringFromWasm0(arg0, arg1)); } finally { wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); } }; export function __wbg_paint_a0878618a129a2b1(arg0, arg1) { paint(getArrayU8FromWasm0(arg0, arg1)); }; export function __wbindgen_cb_drop(arg0) { const obj = takeObject(arg0).original; if (obj.cnt-- == 1) { obj.a = 0; return true; } const ret = false; return ret; }; export function __wbg_instanceof_Window_9029196b662bc42a(arg0) { let result; try { result = getObject(arg0) instanceof Window; } catch { result = false; } const ret = result; return ret; }; export function __wbg_document_f7ace2b956f30a4f(arg0) { const ret = getObject(arg0).document; return isLikeNone(ret) ? 0 : addHeapObject(ret); }; export function __wbg_setTimeout_eb1a0d116c26d9f6() { return handleError(function (arg0, arg1, arg2) { const ret = getObject(arg0).setTimeout(getObject(arg1), arg2); return ret; }, arguments) }; export function __wbg_getElementById_cc0e0d931b0d9a28(arg0, arg1, arg2) { const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2)); return isLikeNone(ret) ? 0 : addHeapObject(ret); }; export function __wbg_instanceof_HtmlCanvasElement_da5f9efa0688cf6d(arg0) { let result; try { result = getObject(arg0) instanceof HTMLCanvasElement; } catch { result = false; } const ret = result; return ret; }; export function __wbg_setwidth_a667a942dba6656e(arg0, arg1) { getObject(arg0).width = arg1 >>> 0; }; export function __wbg_setheight_a747d440760fe5aa(arg0, arg1) { getObject(arg0).height = arg1 >>> 0; }; export function __wbg_addEventListener_5651108fc3ffeb6e() { return handleError(function (arg0, arg1, arg2, arg3) { getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3)); }, arguments) }; export function __wbg_log_1d3ae0273d8f4f8a(arg0) { console.log(getObject(arg0)); }; export function __wbg_settitle_8e7b5cc7fffc5477(arg0, arg1, arg2) { getObject(arg0).title = getStringFromWasm0(arg1, arg2); }; export function __wbg_keyCode_dfa86be31f5ef90c(arg0) { const ret = getObject(arg0).keyCode; return ret; }; export function __wbg_crypto_c48a774b022d20ac(arg0) { const ret = getObject(arg0).crypto; return addHeapObject(ret); }; export function __wbindgen_is_object(arg0) { const val = getObject(arg0); const ret = typeof(val) === 'object' && val !== null; return ret; }; export function __wbg_process_298734cf255a885d(arg0) { const ret = getObject(arg0).process; return addHeapObject(ret); }; export function __wbg_versions_e2e78e134e3e5d01(arg0) { const ret = getObject(arg0).versions; return addHeapObject(ret); }; export function __wbg_node_1cd7a5d853dbea79(arg0) { const ret = getObject(arg0).node; return addHeapObject(ret); }; export function __wbindgen_is_string(arg0) { const ret = typeof(getObject(arg0)) === 'string'; return ret; }; export function __wbg_require_8f08ceecec0f4fee() { return handleError(function () { const ret = module.require; return addHeapObject(ret); }, arguments) }; export function __wbg_msCrypto_bcb970640f50a1e8(arg0) { const ret = getObject(arg0).msCrypto; return addHeapObject(ret); }; export function __wbg_getRandomValues_37fa2ca9e4e07fab() { return handleError(function (arg0, arg1) { getObject(arg0).getRandomValues(getObject(arg1)); }, arguments) }; export function __wbg_randomFillSync_dc1e9a60c158336d() { return handleError(function (arg0, arg1) { getObject(arg0).randomFillSync(takeObject(arg1)); }, arguments) }; export function __wbindgen_is_function(arg0) { const ret = typeof(getObject(arg0)) === 'function'; return ret; }; export function __wbg_newnoargs_581967eacc0e2604(arg0, arg1) { const ret = new Function(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }; export function __wbg_call_cb65541d95d71282() { return handleError(function (arg0, arg1) { const ret = getObject(arg0).call(getObject(arg1)); return addHeapObject(ret); }, arguments) }; export function __wbg_self_1ff1d729e9aae938() { return handleError(function () { const ret = self.self; return addHeapObject(ret); }, arguments) }; export function __wbg_window_5f4faef6c12b79ec() { return handleError(function () { const ret = window.window; return addHeapObject(ret); }, arguments) }; export function __wbg_globalThis_1d39714405582d3c() { return handleError(function () { const ret = globalThis.globalThis; return addHeapObject(ret); }, arguments) }; export function __wbg_global_651f05c6a0944d1c() { return handleError(function () { const ret = global.global; return addHeapObject(ret); }, arguments) }; export function __wbindgen_is_undefined(arg0) { const ret = getObject(arg0) === undefined; return ret; }; export function __wbg_call_01734de55d61e11d() { return handleError(function (arg0, arg1, arg2) { const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); return addHeapObject(ret); }, arguments) }; export function __wbg_now_9c5990bda04c7e53() { const ret = Date.now(); return ret; }; export function __wbg_new_43f1b47c28813cbd(arg0, arg1) { try { var state0 = {a: arg0, b: arg1}; var cb0 = (arg0, arg1) => { const a = state0.a; state0.a = 0; try { return __wbg_adapter_90(a, state0.b, arg0, arg1); } finally { state0.a = a; } }; const ret = new Promise(cb0); return addHeapObject(ret); } finally { state0.a = state0.b = 0; } }; export function __wbg_resolve_53698b95aaf7fcf8(arg0) { const ret = Promise.resolve(getObject(arg0)); return addHeapObject(ret); }; export function __wbg_then_f7e06ee3c11698eb(arg0, arg1) { const ret = getObject(arg0).then(getObject(arg1)); return addHeapObject(ret); }; export function __wbg_then_b2267541e2a73865(arg0, arg1, arg2) { const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); return addHeapObject(ret); }; export function __wbg_buffer_085ec1f694018c4f(arg0) { const ret = getObject(arg0).buffer; return addHeapObject(ret); }; export function __wbg_newwithbyteoffsetandlength_6da8e527659b86aa(arg0, arg1, arg2) { const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; export function __wbg_new_8125e318e6245eed(arg0) { const ret = new Uint8Array(getObject(arg0)); return addHeapObject(ret); }; export function __wbg_set_5cf90238115182c3(arg0, arg1, arg2) { getObject(arg0).set(getObject(arg1), arg2 >>> 0); }; export function __wbg_newwithlength_e5d69174d6984cd7(arg0) { const ret = new Uint8Array(arg0 >>> 0); return addHeapObject(ret); }; export function __wbg_subarray_13db269f57aa838d(arg0, arg1, arg2) { const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; export function __wbindgen_object_clone_ref(arg0) { const ret = getObject(arg0); return addHeapObject(ret); }; export function __wbindgen_debug_string(arg0, arg1) { const ret = debugString(getObject(arg1)); const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len1; getInt32Memory0()[arg0 / 4 + 0] = ptr1; }; export function __wbindgen_throw(arg0, arg1) { throw new Error(getStringFromWasm0(arg0, arg1)); }; export function __wbindgen_memory() { const ret = wasm.memory; return addHeapObject(ret); }; export function __wbindgen_closure_wrapper356(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 103, __wbg_adapter_24); return addHeapObject(ret); }; export function __wbindgen_closure_wrapper825(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 180, __wbg_adapter_27); return addHeapObject(ret); }; export function __wbindgen_closure_wrapper867(arg0, arg1, arg2) { const ret = makeMutClosure(arg0, arg1, 238, __wbg_adapter_30); return addHeapObject(ret); };