hakuban 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"hakuban-with-wasm.min.js","sources":["pkg/hakuban.js","coffee/manager.coffee","coffee/common.coffee","coffee/hakuban-with-wasm.coffee"],"sourcesContent":["\nlet wasm;\n\nconst heap = new Array(32).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachedTextEncoder = new TextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length);\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len);\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_16(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2cb5c9e37b253332(arg0, arg1, addHeapObject(arg2));\n}\n\nconst u32CvtShim = new Uint32Array(2);\n\nconst uint64CvtShim = new BigUint64Array(u32CvtShim.buffer);\n/**\n* @param {string} json_string\n* @returns {WasmHashResult}\n*/\nexport function hakuban_json_hash(json_string) {\n var ptr0 = passStringToWasm0(json_string, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_json_hash(ptr0, len0);\n return WasmHashResult.__wrap(ret);\n}\n\n/**\n* @param {string} default_log_level\n* @returns {number}\n*/\nexport function hakuban_logger_initialize(default_log_level) {\n var ptr0 = passStringToWasm0(default_log_level, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_logger_initialize(ptr0, len0);\n return ret;\n}\n\n/**\n* @param {string} name_str\n* @returns {WasmLocalNodeNewResult}\n*/\nexport function hakuban_local_node_new(name_str) {\n var ptr0 = passStringToWasm0(name_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_local_node_new(ptr0, len0);\n return WasmLocalNodeNewResult.__wrap(ret);\n}\n\n/**\n* @param {number} local_node\n*/\nexport function hakuban_local_node_drop(local_node) {\n wasm.hakuban_local_node_drop(local_node);\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmObjectObserveResult}\n*/\nexport function hakuban_object_observe_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_object_observe_new(local_node, ptr0, len0);\n return WasmObjectObserveResult.__wrap(ret);\n}\n\n/**\n* @param {number} object_ptr\n*/\nexport function hakuban_object_observe_drop(object_ptr) {\n wasm.hakuban_object_observe_drop(object_ptr);\n}\n\n/**\n* @param {number} object_observe_pointer\n* @returns {number}\n*/\nexport function hakuban_object_observe_state_borrow(object_observe_pointer) {\n var ret = wasm.hakuban_object_observe_state_borrow(object_observe_pointer);\n return ret;\n}\n\n/**\n* @param {number} state_ptr\n*/\nexport function hakuban_object_observe_state_return(state_ptr) {\n wasm.hakuban_object_observe_state_return(state_ptr);\n}\n\n/**\n* @param {number} state_ptr\n* @returns {BigInt}\n*/\nexport function hakuban_object_observe_state_synchronized(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_synchronized(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} state_ptr\n* @returns {string}\n*/\nexport function hakuban_object_observe_state_data_version(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_data_version(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {number} state_ptr\n* @returns {string}\n*/\nexport function hakuban_object_observe_state_data_type(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_data_type(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {number} state_ptr\n* @returns {Uint8Array}\n*/\nexport function hakuban_object_observe_state_data(state_ptr) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_observe_state_data(retptr, state_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} object_observe_ptr\n* @returns {number}\n*/\nexport function hakuban_object_observe_events_get(object_observe_ptr) {\n var ret = wasm.hakuban_object_observe_events_get(object_observe_ptr);\n return ret;\n}\n\n/**\n* @param {number} events_pointer\n*/\nexport function hakuban_object_descriptor_events_drop(events_pointer) {\n wasm.hakuban_object_descriptor_events_drop(events_pointer);\n}\n\n/**\n* @param {number} events_pointer\n* @param {Promise<any>} cancel\n* @returns {Promise<any>}\n*/\nexport function hakuban_object_descriptor_events_next(events_pointer, cancel) {\n var ret = wasm.hakuban_object_descriptor_events_next(events_pointer, addHeapObject(cancel));\n return takeObject(ret);\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmTagObserveResult}\n*/\nexport function hakuban_tag_observe_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_observe_new(local_node, ptr0, len0);\n return WasmTagObserveResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_observe_pointer\n*/\nexport function hakuban_tag_observe_drop(tag_observe_pointer) {\n wasm.hakuban_tag_observe_drop(tag_observe_pointer);\n}\n\n/**\n* @param {number} tag_observe_pointer\n* @param {string} object_descriptor\n* @returns {WasmTagObserveObjectStateBorrowResult}\n*/\nexport function hakuban_tag_observe_object_state_borrow(tag_observe_pointer, object_descriptor) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_observe_object_state_borrow(tag_observe_pointer, ptr0, len0);\n return WasmTagObserveObjectStateBorrowResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_observe_pointer\n* @returns {string}\n*/\nexport function hakuban_tag_observe_object_descriptors(tag_observe_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_tag_observe_object_descriptors(retptr, tag_observe_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {number} tag_observe_ptr\n* @returns {number}\n*/\nexport function hakuban_tag_observe_events_get(tag_observe_ptr) {\n var ret = wasm.hakuban_tag_observe_events_get(tag_observe_ptr);\n return ret;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n/**\n* @param {number} local_node_pointer\n* @param {boolean} upstream\n* @param {boolean | undefined} diff_produce\n* @param {boolean | undefined} diff_request\n* @returns {WasmRemoteNodeNewResult}\n*/\nexport function hakuban_remote_node_new(local_node_pointer, upstream, diff_produce, diff_request) {\n var ret = wasm.hakuban_remote_node_new(local_node_pointer, upstream, isLikeNone(diff_produce) ? 0xFFFFFF : diff_produce ? 1 : 0, isLikeNone(diff_request) ? 0xFFFFFF : diff_request ? 1 : 0);\n return WasmRemoteNodeNewResult.__wrap(ret);\n}\n\n/**\n* @param {number} remote_node_pointer\n*/\nexport function hakuban_remote_node_drop(remote_node_pointer) {\n wasm.hakuban_remote_node_drop(remote_node_pointer);\n}\n\n/**\n* @param {number} remote_node_pointer\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_connected(remote_node_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_remote_node_connected(retptr, remote_node_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} remote_node_pointer\n*/\nexport function hakuban_remote_node_disconnected(remote_node_pointer) {\n wasm.hakuban_remote_node_disconnected(remote_node_pointer);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n* @param {number} remote_node_pointer\n* @param {Uint8Array} data\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_received_message(remote_node_pointer, data) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.hakuban_remote_node_received_message(retptr, remote_node_pointer, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} remote_node_pointer\n* @param {Promise<any>} cancel\n* @returns {Promise<any>}\n*/\nexport function hakuban_remote_node_next_local_node_event(remote_node_pointer, cancel) {\n var ret = wasm.hakuban_remote_node_next_local_node_event(remote_node_pointer, addHeapObject(cancel));\n return takeObject(ret);\n}\n\n/**\n* @param {number} remote_node_pointer\n* @param {string} event\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_received_local_node_event(remote_node_pointer, event) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = passStringToWasm0(event, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.hakuban_remote_node_received_local_node_event(retptr, remote_node_pointer, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n var r3 = getInt32Memory0()[retptr / 4 + 3];\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} remote_node_pointer\n* @returns {Uint8Array}\n*/\nexport function hakuban_remote_node_ack(remote_node_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_remote_node_ack(retptr, remote_node_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmTagExposeResult}\n*/\nexport function hakuban_tag_expose_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_expose_new(local_node, ptr0, len0);\n return WasmTagExposeResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_expose_pointer\n*/\nexport function hakuban_tag_expose_drop(tag_expose_pointer) {\n wasm.hakuban_tag_expose_drop(tag_expose_pointer);\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @returns {string}\n*/\nexport function hakuban_tag_expose_object_descriptors(tag_expose_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_tag_expose_object_descriptors(retptr, tag_expose_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @param {string} object_descriptor\n* @param {string} data_version\n* @param {string} data_type\n* @param {Uint8Array} data\n* @param {BigInt} assignment_id\n* @returns {WasmTagExposeSetObjectStateResult}\n*/\nexport function hakuban_tag_expose_set_object_state(tag_expose_pointer, object_descriptor, data_version, data_type, data, assignment_id) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = passStringToWasm0(data_version, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = passStringToWasm0(data_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len2 = WASM_VECTOR_LEN;\n var ptr3 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n var len3 = WASM_VECTOR_LEN;\n uint64CvtShim[0] = assignment_id;\n const low4 = u32CvtShim[0];\n const high4 = u32CvtShim[1];\n var ret = wasm.hakuban_tag_expose_set_object_state(tag_expose_pointer, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, low4, high4);\n return WasmTagExposeSetObjectStateResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @param {string} object_descriptor\n* @returns {WasmTagExposeAssignmentResult}\n*/\nexport function hakuban_tag_expose_assignment(tag_expose_pointer, object_descriptor) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_tag_expose_assignment(tag_expose_pointer, ptr0, len0);\n return WasmTagExposeAssignmentResult.__wrap(ret);\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @param {string} object_descriptor\n* @param {BigInt} assignment_id\n* @returns {number}\n*/\nexport function hakuban_tag_expose_desynchronize(tag_expose_pointer, object_descriptor, assignment_id) {\n var ptr0 = passStringToWasm0(object_descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n uint64CvtShim[0] = assignment_id;\n const low1 = u32CvtShim[0];\n const high1 = u32CvtShim[1];\n var ret = wasm.hakuban_tag_expose_desynchronize(tag_expose_pointer, ptr0, len0, low1, high1);\n return ret >>> 0;\n}\n\n/**\n* @param {number} tag_expose_ptr\n* @returns {number}\n*/\nexport function hakuban_tag_expose_events_get(tag_expose_ptr) {\n var ret = wasm.hakuban_tag_expose_events_get(tag_expose_ptr);\n return ret;\n}\n\n/**\n* @param {number} local_node\n* @param {string} descriptor\n* @returns {WasmObjectExposeResult}\n*/\nexport function hakuban_object_expose_new(local_node, descriptor) {\n var ptr0 = passStringToWasm0(descriptor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.hakuban_object_expose_new(local_node, ptr0, len0);\n return WasmObjectExposeResult.__wrap(ret);\n}\n\n/**\n* @param {number} object_expose_pointer\n*/\nexport function hakuban_object_expose_drop(object_expose_pointer) {\n wasm.hakuban_object_expose_drop(object_expose_pointer);\n}\n\n/**\n* @param {number} object_expose_pointer\n* @param {string} data_version\n* @param {string} data_type\n* @param {Uint8Array} data\n* @param {BigInt} assignment_id\n* @returns {WasmObjectExposeStateResult}\n*/\nexport function hakuban_object_expose_set_state(object_expose_pointer, data_version, data_type, data, assignment_id) {\n var ptr0 = passStringToWasm0(data_version, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = passStringToWasm0(data_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n var ptr2 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n var len2 = WASM_VECTOR_LEN;\n uint64CvtShim[0] = assignment_id;\n const low3 = u32CvtShim[0];\n const high3 = u32CvtShim[1];\n var ret = wasm.hakuban_object_expose_set_state(object_expose_pointer, ptr0, len0, ptr1, len1, ptr2, len2, low3, high3);\n return WasmObjectExposeStateResult.__wrap(ret);\n}\n\n/**\n* @param {number} object_expose_pointer\n* @returns {BigInt}\n*/\nexport function hakuban_object_expose_assignment(object_expose_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_expose_assignment(retptr, object_expose_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} object_expose_pointer\n* @param {BigInt} assignment_id\n*/\nexport function hakuban_object_expose_desynchronize(object_expose_pointer, assignment_id) {\n uint64CvtShim[0] = assignment_id;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.hakuban_object_expose_desynchronize(object_expose_pointer, low0, high0);\n}\n\n/**\n* @param {number} object_expose_ptr\n* @returns {number}\n*/\nexport function hakuban_object_expose_events_get(object_expose_ptr) {\n var ret = wasm.hakuban_object_expose_events_get(object_expose_ptr);\n return ret;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\nfunction __wbg_adapter_120(arg0, arg1, arg2, arg3) {\n wasm.wasm_bindgen__convert__closures__invoke2_mut__h3fbc4a767cc461bf(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n*/\nexport const WasmError = Object.freeze({ None:0,\"0\":\"None\",InvalidString:1,\"1\":\"InvalidString\",InvalidJSON:2,\"2\":\"InvalidJSON\",InvalidURL:3,\"3\":\"InvalidURL\",ObjectNotFound:4,\"4\":\"ObjectNotFound\", });\n/**\n*/\nexport class WasmHashResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmHashResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmhashresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmhashresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmhashresult_error(this.ptr, arg0);\n }\n /**\n */\n get hash() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.__wbg_get_wasmhashresult_hash(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {BigInt} arg0\n */\n set hash(arg0) {\n uint64CvtShim[0] = arg0;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.__wbg_set_wasmhashresult_hash(this.ptr, low0, high0);\n }\n}\n/**\n*/\nexport class WasmLocalNodeNewResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmLocalNodeNewResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmlocalnodenewresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmlocalnodenewresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmlocalnodenewresult_error(this.ptr, arg0);\n }\n /**\n */\n get local_node_pointer() {\n var ret = wasm.__wbg_get_wasmlocalnodenewresult_local_node_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set local_node_pointer(arg0) {\n wasm.__wbg_set_wasmlocalnodenewresult_local_node_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmObjectExposeResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmObjectExposeResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmobjectexposeresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmobjectexposeresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmobjectexposeresult_error(this.ptr, arg0);\n }\n /**\n */\n get object_expose_pointer() {\n var ret = wasm.__wbg_get_wasmobjectexposeresult_object_expose_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set object_expose_pointer(arg0) {\n wasm.__wbg_set_wasmobjectexposeresult_object_expose_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmObjectExposeStateResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmObjectExposeStateResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmobjectexposestateresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmobjectexposestateresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmobjectexposestateresult_error(this.ptr, arg0);\n }\n /**\n */\n get changed() {\n var ret = wasm.__wbg_get_wasmobjectexposestateresult_changed(this.ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set changed(arg0) {\n wasm.__wbg_set_wasmobjectexposestateresult_changed(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmObjectObserveResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmObjectObserveResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmobjectobserveresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmobjectobserveresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmobjectobserveresult_error(this.ptr, arg0);\n }\n /**\n */\n get object_observe_pointer() {\n var ret = wasm.__wbg_get_wasmobjectobserveresult_object_observe_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set object_observe_pointer(arg0) {\n wasm.__wbg_set_wasmobjectobserveresult_object_observe_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmRemoteNode {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmremotenode_free(ptr);\n }\n}\n/**\n*/\nexport class WasmRemoteNodeNewResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmRemoteNodeNewResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmremotenodenewresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmremotenodenewresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmremotenodenewresult_error(this.ptr, arg0);\n }\n /**\n */\n get remote_node_pointer() {\n var ret = wasm.__wbg_get_wasmremotenodenewresult_remote_node_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set remote_node_pointer(arg0) {\n wasm.__wbg_set_wasmremotenodenewresult_remote_node_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagExposeAssignmentResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagExposeAssignmentResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagexposeassignmentresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagexposeassignmentresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagexposeassignmentresult_error(this.ptr, arg0);\n }\n /**\n */\n get assignment() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.__wbg_get_wasmtagexposeassignmentresult_assignment(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n u32CvtShim[0] = r0;\n u32CvtShim[1] = r1;\n const n0 = uint64CvtShim[0];\n return n0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {BigInt} arg0\n */\n set assignment(arg0) {\n uint64CvtShim[0] = arg0;\n const low0 = u32CvtShim[0];\n const high0 = u32CvtShim[1];\n wasm.__wbg_set_wasmtagexposeassignmentresult_assignment(this.ptr, low0, high0);\n }\n}\n/**\n*/\nexport class WasmTagExposeResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagExposeResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagexposeresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagexposeresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagexposeresult_error(this.ptr, arg0);\n }\n /**\n */\n get tag_expose_pointer() {\n var ret = wasm.__wbg_get_wasmtagexposeresult_tag_expose_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set tag_expose_pointer(arg0) {\n wasm.__wbg_set_wasmtagexposeresult_tag_expose_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagExposeSetObjectStateResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagExposeSetObjectStateResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagexposesetobjectstateresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagexposesetobjectstateresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagexposesetobjectstateresult_error(this.ptr, arg0);\n }\n /**\n */\n get changed() {\n var ret = wasm.__wbg_get_wasmtagexposesetobjectstateresult_changed(this.ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set changed(arg0) {\n wasm.__wbg_set_wasmtagexposesetobjectstateresult_changed(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagObserveObjectStateBorrowResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagObserveObjectStateBorrowResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagobserveobjectstateborrowresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagobserveobjectstateborrowresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagobserveobjectstateborrowresult_error(this.ptr, arg0);\n }\n /**\n */\n get state_pointer() {\n var ret = wasm.__wbg_get_wasmtagobserveobjectstateborrowresult_state_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set state_pointer(arg0) {\n wasm.__wbg_set_wasmtagobserveobjectstateborrowresult_state_pointer(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmTagObserveResult {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmTagObserveResult.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmtagobserveresult_free(ptr);\n }\n /**\n */\n get error() {\n var ret = wasm.__wbg_get_wasmtagobserveresult_error(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set error(arg0) {\n wasm.__wbg_set_wasmtagobserveresult_error(this.ptr, arg0);\n }\n /**\n */\n get tag_observe_pointer() {\n var ret = wasm.__wbg_get_wasmtagobserveresult_tag_observe_pointer(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set tag_observe_pointer(arg0) {\n wasm.__wbg_set_wasmtagobserveresult_tag_observe_pointer(this.ptr, arg0);\n }\n}\n\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n 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);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nasync function init(input) {\n if (typeof input === 'undefined') {\n input = new URL('hakuban_bg.wasm', import.meta.url);\n }\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n var ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_cb_drop = function(arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n var ret = false;\n return ret;\n };\n imports.wbg.__wbg_debug_6e114a5b27d7915d = function(arg0) {\n console.debug(getObject(arg0));\n };\n imports.wbg.__wbg_error_ca520cb687b085a1 = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_32ab782ec7072fac = function(arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_log_fbd13631356d44e4 = function(arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_warn_97f10a6b0dbb8c5c = function(arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_now_5fa0ca001e042f8a = function(arg0) {\n var ret = getObject(arg0).now();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_f579424187aa1717 = function(arg0, arg1) {\n var ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_8bbb82393651dd9c = function() { return handleError(function (arg0, arg1) {\n var ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_89558c3e96703ca1 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_94697a95cb7e239c = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_new_4beacc9c71572250 = function(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_120(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n var ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbg_resolve_4f8f547f26b30b27 = function(arg0) {\n var ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_then_a6860c82b90816ca = function(arg0, arg1) {\n var ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_then_58a04e42527f52c6 = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_e23d74ae45fb17d1 = function() { return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_window_b4be7f48b24ac56e = function() { return handleError(function () {\n var ret = window.window;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_globalThis_d61b1f48a57191ae = function() { return handleError(function () {\n var ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_global_e7669da72fd7f239 = function() { return handleError(function () {\n var ret = global.global;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n var ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n var ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_693216e109162396 = function() {\n var ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function(arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_error_09919627ac0992f5 = function(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n var ret = debugString(getObject(arg1));\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_closure_wrapper2024 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 490, __wbg_adapter_16);\n return addHeapObject(ret);\n };\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n\n\n const { instance, module } = await load(await input, imports);\n\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport default init;\n\n","\nclass Queue\n\n\tconstructor: ->\n\t\t@queue = []\n\t\t@wake = null\n\t\n\tpush: (value)->\n\t\t@queue.push(value)\n\t\tif @wake?\n\t\t\t@wake()\n\t\t\t@wake = null\n\t\n\tshift: ->\n\t\tloop\n\t\t\tvalue = @queue.shift()\n\t\t\tif value?\n\t\t\t\treturn value\n\t\t\telse\n\t\t\t\tthrow \"2 concurrent shifts on a single queue\" if @wake?\n\t\t\t\tawait new Promise (@wake)=> null\n\t\n\tclear: ->\n\t\t@queue = []\n\n\nexport class ObjectManagerBuilder\n\n\tconstructor: (@contract, @managed_object_class)->\n\t\t@_on_exception_policy = \"retry\"\n\t\t@_retry_backoff = [0.01, 0.1, 1.0, 10.0]\n\t\t@_terminate_on_deactivation = false\n\t\t\n\ton_exception: (policy)->\n\t\t@_on_exception_policy = policy\n\t\t@\n\n\t#terminate_on_deactivation: ()->\n\t#\t@terminate_on_deactivation = true\n\t#\t@\n\n\tretry_backoff: (times)->\n\t\t@_retry_backoff = times\n\t\t@\n\n\twith_async: (block)->\n\t\tnew ObjectManager(@contract, @managed_object_class, block, @_retry_backoff, @_terminate_on_deactivation, @_on_exception_policy)\n\n\nexport class ObjectManager\n\tconstructor: (@contract, object_class, block, retry_backoff, terminate_on_deactivation, on_exception_policy)->\n\t\t@_existing_objects = {}\n\t\t@_active_objects = {}\n\t\t@event_queue = new Queue()\n\n\t\t#TODO: make one loop out of following two\n\n\t\tevent_loop_stop_requested = new Promise (@event_loop_stop)=> null\n\t\t@event_loop_stopped = new Promise (resolve, reject)=>\n\t\t\tevents = @contract.events()\n\t\t\twhile event = await Promise.race([events.next(), event_loop_stop_requested])\n\t\t\t\tbreak if not event?\n\t\t\t\t@event_queue.push(event)\n\t\t\tevents.drop()\n\t\t\tresolve()\n\n\t\t@async_loop_stopped = new Promise (resolve, reject)=>\n\t\t\twhile (event = await @event_queue.shift())?\n\t\t\t\tswitch event.action\n\t\t\t\t\twhen \"Insert\", \"Change\", \"Remove\", \"Stopped\", \"Timer\"\n\t\t\t\t\t\tobject = @_existing_objects[event.descriptor.hash()] ||= new object_class(@contract, event.descriptor)\n\t\t\t\t\t\tif !object.running and object.block_result?\n\t\t\t\t\t\t\terror = await object.block_result\n\t\t\t\t\t\t\tobject.block_result = null\n\t\t\t\t\t\t\tif object.last_exception_at?\n\t\t\t\t\t\t\t\tinterval_since_last_exception = Date.now() - object.last_exception_at\n\t\t\t\t\t\t\t\theal_multiplier = 10\n\t\t\t\t\t\t\t\tobject.current_delay_index -= Math.floor(interval_since_last_exception / (retry_backoff[retry_backoff.length-1]*1000.0*heal_multiplier))\n\t\t\t\t\t\t\t\tobject.current_delay_index = 0 if object.current_delay_index < 0\n\t\t\t\t\t\t\tif error?\n\t\t\t\t\t\t\t\tswitch on_exception_policy\n\t\t\t\t\t\t\t\t\twhen \"throw\", \"raise\"\n\t\t\t\t\t\t\t\t\t\tthrow error.exception\n\t\t\t\t\t\t\t\t\twhen \"retry\"\n\t\t\t\t\t\t\t\t\t\tobject.last_exception_at = Date.now()\n\t\t\t\t\t\t\t\t\t\tobject.earliest_next_run = Date.now() + retry_backoff[object.current_delay_index]*1000.0\n\t\t\t\t\t\t\t\t\t\t#wrapped to avoid weird capture effects of coffee\n\t\t\t\t\t\t\t\t\t\t((lambda_sleep_time, lambda_descriptor, lambda_event_queue)-> \n\t\t\t\t\t\t\t\t\t\t\tsetTimeout((()=>lambda_event_queue.push({action: \"Timer\", descriptor: lambda_descriptor})),lambda_sleep_time)\n\t\t\t\t\t\t\t\t\t\t)(object.earliest_next_run - Date.now(), event.descriptor, @event_queue)\n\t\t\t\t\t\t\t\t\t\tobject.current_delay_index += 1 if object.current_delay_index < retry_backoff.length - 1\n\t\t\t\t\t\t\t\t\t#when \"ignore_failing_descriptor\"\n\t\t\t\t\t\t\t\t\t#when \"drop_contract\"\n\t\t\t\t\t\tif object.check_active()\n\t\t\t\t\t\t\tif block? and !object.running and (!object.earliest_next_run? or Date.now() >= object.earliest_next_run)\n\t\t\t\t\t\t\t\tdescriptor_for_lambda = event.descriptor\n\t\t\t\t\t\t\t\tobject.running = true\n\t\t\t\t\t\t\t\t#wrapped to avoid weird capture effects of coffee\n\t\t\t\t\t\t\t\tobject.block_result = ((descriptor, object, block, event_queue)-> new Promise((resolve,reject)=>\n\t\t\t\t\t\t\t\t\ttry\n\t\t\t\t\t\t\t\t\t\tawait object.run(block)\n\t\t\t\t\t\t\t\t\t\tresolve(undefined)\n\t\t\t\t\t\t\t\t\tcatch error\n\t\t\t\t\t\t\t\t\t\tconsole.error(\"Exception in hakuban manager lambda:\",error)\n\t\t\t\t\t\t\t\t\t\tresolve(error)\n\t\t\t\t\t\t\t\t\tfinally\n\t\t\t\t\t\t\t\t\t\tobject.running = false\n\t\t\t\t\t\t\t\t\t\tevent_queue.push({action: \"Stopped\", descriptor: descriptor_for_lambda})\n\t\t\t\t\t\t\t\t))(event.descriptor, object, block, @event_queue)\n\t\t\t\t\t\t\t@_active_objects[event.descriptor.hash()] ||= object\n\t\t\t\t\t\t\tobject.change()\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tdelete @_active_objects[event.descriptor.hash()]\n\t\t\t\t\t\t\tif object.running\n\t\t\t\t\t\t\t\tobject.stop()\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tdelete @_existing_objects[event.descriptor.hash()]\n\t\t\t\t\twhen \"Drop\"\n\t\t\t\t\t\t@event_loop_stop()\n\t\t\t\t\t\tawait @event_loop_stopped\n\t\t\t\t\t\tfor key, object of { @_existing_objects... }\n\t\t\t\t\t\t\tif object.running\n\t\t\t\t\t\t\t\tobject.stop()\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tdelete @_existing_objects[key]\n\t\t\t\t\t\twhile Object.keys(@_existing_objects).length > 0\n\t\t\t\t\t\t\tevent = await @event_queue.shift()\n\t\t\t\t\t\t\tif event.action == \"Stopped\"\n\t\t\t\t\t\t\t\tdelete @_existing_objects[event.descriptor.hash()]\n\t\t\t\t\t\t@event_queue.clear()\n\t\t\t\t\t\tdelete @_active_objects[key] for key in Object.keys(@_active_objects)\n\t\t\t\t\t\t@contract.drop()\n\t\t\t\t\t\t@contract = null\n\t\t\t\t\t\t@event_queue = null\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t\treturn \n\t\t\t\t\telse\n\t\t\t\t\t\tthrow \"Unknown action: \" + event.action\n\t\t\treject(\"Queue died unexpectedly\")\n\t\t\n\tobjects: ()=> Object.values(@_active_objects)\n\tobject: ()=> Object.values(@_active_objects)[0]\n\n\tdrop: ()=>\n\t\tif @contract\n\t\t\t@event_queue.push(action: 'Drop')\n\t\t\tawait @async_loop_stopped\n\n\n\n\nexport class ManagedObject\n\tconstructor: (@contract, @descriptor)->\n\t\t@_changes = new Queue()\n\t\t@current_delay_index = 0\n\n\trun: (handler)=>\n\t\tawait handler(@)\n\n\tnext_event: ()=> @next_change()\n\tnext_change: ()=>\n\t\tloop\n\t\t\tswitch await @_changes.shift()\n\t\t\t\twhen \"change\" then return true\n\t\t\t\twhen \"stop\" then return false\n\n\tchange: ()=>\n\t\t@_changes.push(\"change\")\n\n\tstop: ()=>\n\t\t@_changes.push(\"stop\")\n\n","import * as hakuban_js from \"../pkg/hakuban.js\"\nimport * as manager from \"./manager.coffee\"\n\nlogger_initialized = false\n\nexport initialize_wasm = (wasm)->\n\t\tawait hakuban_js.default(wasm)\n\nexport logger_initialize = (log_level, skip_if_already_initialized=false) ->\n\t\tif logger_initialized and skip_if_already_initialized\n\t\t\treturn true\n\n\t\tif 0 == (error = await hakuban_js.hakuban_logger_initialize(log_level))\n\t\t\tlogger_initialized = true\n\t\telse\n\t\t\tconsole.error \"Failed to initialize logger, error \" + error \n\t\t\tfalse\n\n\nraise_if_error = (error_code)->\n\tif error_code != 0\n\t\tthrow \"Hakuban error: \"+error_code\n\n\nexport JSON_serialize = (data_type, cooked)->\n\t{\n\t\tdata_type: [\"JSON\"].concat(data_type)\n\t\tdata: new TextEncoder().encode(JSON.stringify(cooked))\n\t}\n\nexport JSON_deserialize = (data_type, raw)-> \n\tthrow \"Expected JSON data_type, got: \"+data_type if data_type.length == 0 or data_type[0] != \"JSON\"\n\t{\n\t\tdata_type: data_type.slice(1)\n\t\tdata: JSON.parse(new TextDecoder().decode(raw))\n\t}\n\n\nexport class ObjectDescriptor\n\tconstructor: (tags, @json) -> @tags = ((if tag instanceof TagDescriptor then tag else new TagDescriptor(tag)) for tag in tags)\n\tas_json: ()->JSON.stringify(tags: @tags.map((tag)->tag.json), json: @json)\n\thash: ()-> \n\t\tif not @_hash?\n\t\t\t@_hash = @tags.map((tag)->tag.hash().toString()).sort().join(\",\") + \"|\"\n\t\t\tret = hakuban_js.hakuban_json_hash(JSON.stringify(@json))\n\t\t\traise_if_error(ret.error)\n\t\t\t@_hash += ret.hash.toString()\n\t\t@_hash\n\t\n\n\nexport class TagDescriptor\n\tconstructor: (@json) -> null\n\tas_json: ()->JSON.stringify(@json)\n\thash: ()-> \n\t\tif not @_hash?\n\t\t\tret = hakuban_js.hakuban_json_hash(JSON.stringify(@json))\n\t\t\traise_if_error(ret.error)\n\t\t\t@_hash = ret.hash\n\t\t@_hash\n\n\n\n\nLocalNode_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_local_node_drop(pointer)\n\nexport class LocalNode\n\tconstructor: (@name=\"wasm\") ->\n\t\tlogger_initialize(\"warn\", true)\n\t\tresult = hakuban_js.hakuban_local_node_new(@name)\n\t\traise_if_error(result.error)\n\t\t@pointer = result.local_node_pointer\n\t\tLocalNode_finalization_registry.register(@, @pointer, @)\n\t\t@with_default_serializer(JSON_serialize)\n\t\t@with_default_deserializer(JSON_deserialize)\n\n\tdestroy: () ->\n\t\thakuban_js.hakuban_local_node_drop(@pointer)\n\t\tLocalNode_finalization_registry.unregister(@)\n\n\tobject: (tags, json) ->\n\t\tnew ObjectBuilder(@, @default_serializer, @default_deserializer, tags, json)\n\n\ttag: (json) ->\n\t\tnew TagBuilder(@, @default_serializer, @default_deserializer, json)\n\n\twith_default_serializer: (@default_serializer) -> @\n\twith_default_deserializer: (@default_deserializer) -> @\n\n\nclass ObjectBuilder\n\tconstructor: (@local_node, @serializer, @deserializer, @tags, @json) -> null\n\tobserve: () -> new ObjectObserve(@local_node, new ObjectDescriptor(@tags, @json), @deserializer)\n\texpose: () -> new ObjectExpose(@local_node, new ObjectDescriptor(@tags, @json), @serializer)\n\twith_serializer: (@serializer) -> @\n\twith_deserializer: (@deserializer) -> @\n\nclass TagBuilder\n\tconstructor: (@local_node, @serializer, @deserializer, @json) -> null\n\tobserve: () -> new TagObserve(@local_node, new TagDescriptor(@json), @deserializer)\n\texpose: () -> new TagExpose(@local_node, new TagDescriptor(@json), @serializer)\n\twith_serializer: (@serializer) -> @\n\twith_deserializer: (@deserializer) -> @\n\n\n\nObjectDescriptorEvents_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_object_descriptor_events_drop(pointer)\n\nclass ObjectDescriptorEvents\n\n\tconstructor: (@pointer)->\n\t\tObjectDescriptorEvents_finalization_registry.register(@, @pointer, @)\n\n\twait: ()=>next()\n\tnext: ()=>\n\t\t@wait_released = new Promise (@wait_release)=>null\n\t\tcancel_waiting_promise = new Promise (resolve)=> @cancel_waiting_resolve = resolve\n\t\tnext_event_promise = hakuban_js.hakuban_object_descriptor_events_next(@pointer, cancel_waiting_promise)\n\t\tnext_event_promise.cancel = (value)=>\n\t\t\t@cancel_waiting_resolve.resolve(value)\n\t\t\tawait next_event_promise\n\t\tnext_event_promise.then (value)=>\n\t\t\t@wait_release()\n\t\t\t@wait_released = null\n\t\t\t@cancel_waiting_resolve = null\n\t\t\tparsed = JSON.parse(value)\n\t\t\t{ action: parsed.action, descriptor: new ObjectDescriptor(parsed.key.tags, parsed.key.json) }\n\n\tdrop: ()=>\n\t\tif @cancel_waiting_resolve?\n\t\t\t@cancel_waiting_resolve()\n\t\t\tawait @wait_released\n\t\tObjectDescriptorEvents_finalization_registry.unregister(@)\n\t\thakuban_js.hakuban_object_descriptor_events_drop(@pointer)\n\t\t@pointer = null\n\n\n\nObjectObserve_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_object_observe_drop(pointer)\n\nclass ObjectObserve\n\n\tconstructor: (@local_node, @descriptor, @deserializer) ->\n\t\tresult = hakuban_js.hakuban_object_observe_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.object_observe_pointer\n\t\tObjectObserve_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\t\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_object_observe_drop(@pointer)\n\t\tObjectObserve_finalization_registry.unregister(@)\n\t\t@pointer = null\n\n\tobject_state: ()=>\n\t\treturn null if not @pointer?\n\t\tstate_pointer = hakuban_js.hakuban_object_observe_state_borrow(@pointer)\n\t\treturn null if state_pointer == 0\n\t\tsynchronized = hakuban_js.hakuban_object_observe_state_synchronized(state_pointer)\n\t\tversion = JSON.parse(hakuban_js.hakuban_object_observe_state_data_version(state_pointer))\n\t\tdata_type = JSON.parse(hakuban_js.hakuban_object_observe_state_data_type(state_pointer))\n\t\traw = hakuban_js.hakuban_object_observe_state_data(state_pointer)\n\t\thakuban_js.hakuban_object_observe_state_return(state_pointer)\n\t\tdeserialized = @deserializer(data_type, raw)\n\t\t{\n\t\t\tversion: version\n\t\t\tdata: deserialized.data\n\t\t\tdata_type: deserialized.data_type\n\t\t\tsynchronized: synchronized\n\t\t}\n\n\tevents: ()=>\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_object_observe_events_get(@pointer))\n\n\tmanage: ()=>\t\n\t\tclass ManagedObject extends manager.ManagedObject\n\t\t\tstate: ()->\n\t\t\t\t@contract?.object_state()\n\t\t\tdata: ()->\n\t\t\t\t@contract?.object_state()?.data\n\t\t\tcheck_active: ()->\n\t\t\t\t!!@state()\n\n\t\tnew manager.ObjectManagerBuilder(@, ManagedObject)\n\n\nObjectExpose_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_object_expose_drop(pointer)\n\nclass ObjectExpose\n\tconstructor: (@local_node, @descriptor, @serializer)->\n\t\tresult = hakuban_js.hakuban_object_expose_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.object_expose_pointer\n\t\tObjectExpose_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_object_expose_drop(@pointer)\n\t\tObjectExpose_finalization_registry.unregister(@)\n\n\tset_object_state: (version, cooked_data, data_type=[], assignment=0)=>\n\t\tserialized = @serializer(data_type, cooked_data)\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\tresult = hakuban_js.hakuban_object_expose_set_state(@pointer, JSON.stringify(version), JSON.stringify(serialized.data_type), serialized.data, assignment)\n\t\traise_if_error(result.error)\n\t\tresult.changed\n\n\tassignment: ()=>\n\t\thakuban_js.hakuban_object_expose_assignment(@pointer)\n\n\tassigned: ()=>\n\t\t@assignment() > 0\n\n\tdesynchronize: (assignment)=>\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\thakuban_js.hakuban_object_expose_desynchronize(@pointer, assignment)\n\n\tevents: ()=>\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_object_expose_events_get(@pointer))\n\n\tmanage: ()=>\t\n\t\tclass ManagedObject extends manager.ManagedObject\n\t\t\tconstructor: (contract, descriptor)->\n\t\t\t\tsuper(contract, descriptor)\n\t\t\t\t@_assignment = contract.assignment()\n\t\t\trun: (handler)=>\n\t\t\t\tawait super(handler)\n\t\t\t\t@contract?.desynchronize(@_assignment)\n\t\t\tdo_change: (change)=>\n\t\t\t\t@_assignment = @contract?.assignment()\n\t\t\t\tsuper(change)\n\t\t\tassignment: ()=>\n\t\t\t\t@contract?.assignment()\n\t\t\tassigned: ()=>\n\t\t\t\t@contract?.assigned()\n\t\t\tset_state: (version, cooked_data, data_type=[])=>\n\t\t\t\t@contract?.set_object_state(version, cooked_data, data_type, @_assignment)\n\t\t\tset_data: (data)=>\n\t\t\t\ttimestamp = new Date().getTime()\n\t\t\t\t@set_state([1, Math.floor(timestamp/1000), timestamp - Math.floor(timestamp/1000)*1000, 0], data)\n\t\t\tcheck_active: ()->\n\t\t\t\t@assigned()\n\n\t\tnew manager.ObjectManagerBuilder(@, ManagedObject)\n\n\nTagObserve_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_tag_observe_drop(pointer)\n\nclass TagObserve\n\tconstructor: (@local_node, @descriptor, @deserializer) ->\n\t\tresult = hakuban_js.hakuban_tag_observe_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.tag_observe_pointer\n\t\tTagObserve_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\t\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_tag_observe_drop(@pointer)\n\t\tTagObserve_finalization_registry.unregister(@)\n\n\tobject_descriptors: ()=>\n\t\tresult = hakuban_js.hakuban_tag_observe_object_descriptors(@pointer)\n\t\tfor descriptor_as_json in JSON.parse(result)\n\t\t\tnew ObjectDescriptor(descriptor_as_json.tags, descriptor_as_json.json)\n\n\tobject_state: (object_descriptor)=>\n\t\tresult = hakuban_js.hakuban_tag_observe_object_state_borrow(@pointer, object_descriptor.as_json())\n\t\treturn null if result.error == 4\n\t\treturn null if result.state_pointer == 0\n\t\tsynchronized = hakuban_js.hakuban_object_observe_state_synchronized(result.state_pointer)\n\t\tversion = JSON.parse(hakuban_js.hakuban_object_observe_state_data_version(result.state_pointer))\n\t\tdata_type = JSON.parse(hakuban_js.hakuban_object_observe_state_data_type(result.state_pointer))\n\t\traw = hakuban_js.hakuban_object_observe_state_data(result.state_pointer)\n\t\thakuban_js.hakuban_object_observe_state_return(result.state_pointer)\n\t\tdeserialized = @deserializer(data_type, raw)\n\t\t{\n\t\t\tversion: version\n\t\t\tdata: deserialized.data\n\t\t\tdata_type: deserialized.data_type\n\t\t\tsynchronized: synchronized\n\t\t}\n\n\tevents: ()->\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_tag_observe_events_get(@pointer))\n\n\n\tmanage: ()->\n\t\tclass ManagedObject extends manager.ManagedObject\n\t\t\tstate: ()->\n\t\t\t\t@contract?.object_state(@descriptor)\n\t\t\tdata: ()->\n\t\t\t\t@contract?.object_state(@descriptor)?.data\n\t\t\tcheck_active: ()->\n\t\t\t\t!!@state()\n\n\t\tnew manager.ObjectManagerBuilder(@, ManagedObject)\n\n\nTagExpose_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_tag_expose_drop(pointer)\n\nclass TagExpose\n\tconstructor: (@local_node, @descriptor, @serializer)->\n\t\tresult = hakuban_js.hakuban_tag_expose_new(@local_node.pointer, @descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\t@pointer = result.tag_expose_pointer\n\t\tTagExpose_finalization_registry.register(@, @pointer, @)\n\t\t@dropped = false\n\t\n\tdrop: ()=>\n\t\t@dropped = true\n\t\thakuban_js.hakuban_tag_expose_drop(@pointer)\n\t\tTagExpose_finalization_registry.unregister(@)\n\n\tobject_descriptors: ()=>\n\t\tresult = hakuban_js.hakuban_tag_expose_object_descriptors(@pointer)\n\t\tfor descriptor_as_json in JSON.parse(result)\n\t\t\tnew ObjectDescriptor(descriptor_as_json.tags, descriptor_as_json.json)\n\n\tset_object_state: (object_descriptor, version, cooked_data, data_type=[], assignment=0)=>\n\t\tserialized = @serializer(data_type, cooked_data)\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\tresult = hakuban_js.hakuban_tag_expose_set_object_state(@pointer, object_descriptor.as_json(), JSON.stringify(version), JSON.stringify(serialized.data_type), serialized.data, assignment)\n\t\traise_if_error(result.error)\n\t\tresult.changed\n\n\tassignment: (object_descriptor)=>\n\t\tresult = hakuban_js.hakuban_tag_expose_assignment(@pointer, object_descriptor.as_json())\n\t\traise_if_error(result.error)\n\t\tresult.assignment\n\n\tassigned: (object_descriptor)=>\n\t\t@assignment(object_descriptor) > 0\n\n\tdesynchronize: (object_descriptor, assignment)=>\n\t\tassignment = BigInt(assignment) if not (typeof assignment == 'bigint')\n\t\terror = hakuban_js.hakuban_tag_expose_desynchronize(@pointer, object_descriptor.as_json(), assignment)\n\t\traise_if_error(error)\n\n\tevents: ()=>\n\t\tnew ObjectDescriptorEvents(hakuban_js.hakuban_tag_expose_events_get(@pointer))\n\n\tmanage: ()=>\t\n\t\tclass ManagedObject extends manager.ManagedObject\n\t\t\tconstructor: (contract, descriptor)->\n\t\t\t\tsuper(contract, descriptor)\n\t\t\t\t@_assignment = contract.assignment(@descriptor)\n\t\t\trun: (handler)=>\n\t\t\t\tawait super(handler)\n\t\t\t\t@contract?.desynchronize(@descriptor, @_assignment)\n\t\t\tdo_change: (change)=>\n\t\t\t\t@_assignment = @contract?.assignment(@descriptor)\n\t\t\t\tsuper(change)\n\t\t\tassignment: ()=>\n\t\t\t\t@contract?.assignment(@descriptor)\n\t\t\tassigned: ()=>\n\t\t\t\t@contract?.assigned(@descriptor)\n\t\t\tset_state: (version, cooked_data, data_type=[])=>\n\t\t\t\t@contract?.set_object_state(@descriptor, version, cooked_data, data_type, @_assignment)\n\t\t\tset_data: (data)=>\n\t\t\t\ttimestamp = new Date().getTime()\n\t\t\t\t@set_state([1, Math.floor(timestamp/1000), timestamp - Math.floor(timestamp/1000)*1000, 0], data)\n\t\t\tcheck_active: ()->\n\t\t\t\t@assigned()\n\n\t\tnew manager.ObjectManagerBuilder(@, ManagedObject)\n\n\nWebsocketConnector_finalization_registry = new FinalizationRegistry (pointer)=>\n\thakuban_js.hakuban_remote_node_drop(pointer)\n\n#TODO: hide private methods\n#TODO: handle errors somehow\nexport class WebsocketConnector\n\n\tconstructor: (@local_node, @uri, @options={})->\n\t\t@connected = false\n\t\t@socket = undefined\n\t\t@error = undefined\n\t\t@reconnection_timer = undefined\n\t\t@reconnect_on_close = true\n\t\t@ack_timer = undefined\n\t\tresult = hakuban_js.hakuban_remote_node_new(@local_node.pointer, true, true, true)\n\t\traise_if_error(result.error)\t\t\n\t\t@remote_node_pointer = result.remote_node_pointer\n\t\t@event_loop_stop = new Promise (resolve) => @event_loop_stop_resolve = resolve\n\t\t@event_loop_promise = @event_loop()\n\t\tWebsocketConnector_finalization_registry.register(@, @remote_node_pointer, @)\n\t\t@connect()\n\n\tdestroy: () ->\n\t\t@event_loop_stop_resolve([\"stop\"])\n\t\tawait @event_loop_promise\n\t\t@reconnect_on_close = false\n\t\tif @keep_alive_interval\n\t\t\tclearInterval(@keep_alive_interval) \n\t\tif @reconnection_timer?\n\t\t\tclearTimeout(@reconnection_timer)\n\t\t\t@reconnection_timer = null\n\t\tif @socket?\n\t\t\t@socket.onclose = null\n\t\t\t@socket.onerror = null\n\t\t\t@socket.onmessage = null\n\t\t\t@socket.close()\n\t\t\t@socket_onclose()\n\t\tif @ack_timer?\n\t\t\tclearTimeout(@ack_timer)\n\t\t\t@ack_timer = null\n\t\thakuban_js.hakuban_remote_node_drop(@remote_node_pointer)\n\t\tWebsocketConnector_finalization_registry.unregister(@)\n\n\t\t\n\tconnect: ()=>\n\t\t@reconnection_timer = undefined\n\n\t\ttry\n\t\t\t@socket = new WebSocket(@uri)\n\t\tcatch error\n\t\t\t@error = { while: \"connecting\", error: error }\n\t\t\t@onstatuschange_proc(@) if @onstatuschange_proc?\n\t\t\treturn false\n\n\t\t@socket.binaryType = \"arraybuffer\"\n\n\t\t@socket.onopen = ()=>\n\t\t\tconsole.debug('Connected to hakuban remote node') if @options.debug\n\t\t\t@connected = true\n\t\t\t@error = undefined\n\t\t\t@onstatuschange_proc(@) if @onstatuschange_proc?\n\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_connected(@remote_node_pointer)\n\t\t\t@send(bytes_to_send)\n\n\t\t@socket.onclose = @socket_onclose = ()=>\n\t\t\tconsole.debug('Disconnected from hakuban remote node') if @options.debug\n\t\t\tclearInterval(@keep_alive_interval) if @keep_alive_interval\n\t\t\t@connected = false\n\t\t\t@socket = undefined\n\t\t\thakuban_js.hakuban_remote_node_disconnected(@remote_node_pointer)\n\t\t\t@onstatuschange_proc(@) if @onstatuschange_proc?\n\t\t\tclearTimeout(@reconnection_timer) if @reconnection_timer?\n\t\t\t@reconnection_timer = null\n\t\t\t@reconnection_timer = setTimeout(@connect, 1000) if @reconnect_on_close\n\n\t\t@socket.onerror = (error)=>\n\t\t\tconsole.debug('Hakuban socket error', error) if @options.debug\n\t\t\t@error = { while: \"connected\", error: error }\n\n\t\t@socket.onmessage = (event) =>\n\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_received_message(@remote_node_pointer, new Uint8Array(event.data))\n\t\t\t@send(bytes_to_send)\n\t\t\tclearTimeout(@ack_timer) if @ack_timer?\n\t\t\t@ack_timer = setTimeout(@ack, 1000)\n\t\t\tnull\n\n\tping: ()=>\n\t\t@socket.send(new Uint8Array()) if @socket\n\n\tsend: (bytes_to_send)=>\n\t\tif bytes_to_send.length > 0\n\t\t\t@socket.send(bytes_to_send)\n\t\t\tclearInterval(@keep_alive_interval) if @keep_alive_interval\n\t\t\t@keep_alive_interval = setInterval(@ping, 10000)\n\n\tack: ()=>\n\t\tif @socket?\n\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_ack(@remote_node_pointer)\n\t\t\t@send(bytes_to_send) if bytes_to_send.length > 0\n\n\tevent_loop: ()->\n\t\tnext_local_node_event = false\n\t\tcancel_waiting_resolve = null\n\t\tcancel_waiting_promise = new Promise (resolve) -> cancel_waiting_resolve = resolve\n\t\twhile true\n\t\t\tnext_local_node_event = hakuban_js.hakuban_remote_node_next_local_node_event(@remote_node_pointer, cancel_waiting_promise).then((event)->[\"local_node_event\", event]) if not next_local_node_event\n\t\t\t[promise, event] = await Promise.any([@event_loop_stop, next_local_node_event])\n\t\t\tif promise == \"local_node_event\"\n\t\t\t\tnext_local_node_event = false\n\t\t\t\tsetTimeout(((event)=>\n\t\t\t\t\tif @connected\n\t\t\t\t\t\tbytes_to_send = hakuban_js.hakuban_remote_node_received_local_node_event(@remote_node_pointer, event)\n\t\t\t\t\t\t@send(bytes_to_send)\n\t\t\t\t), 0, event)\n\t\t\telse\n\t\t\t\tbreak\n\t\tif next_local_node_event\n\t\t\tcancel_waiting_resolve(true)\n\t\t\tawait next_local_node_event\n\n\tonstatuschange: (proc)->\n\t\t@onstatuschange_proc = proc\n\t\t@onstatuschange_proc() if @onstatuschange_proc?\n\t\t@\n","import { initialize_wasm } from \"./common.coffee\"\nimport hakuban_wasm_base64 from \"../pkg/hakuban_bg.wasm\"\n\nexport * from './common.coffee'\n\nexport initialize = ()->\n\t# wow, this is disgusting\n\twasm_string = atob(hakuban_wasm_base64)\n\twasm_array = new Uint8Array(wasm_string.length)\n\tfor i in [0..wasm_string.length]\n\t\twasm_array[i] = wasm_string.charCodeAt(i) \n\tawait initialize_wasm(wasm_array)\n\n\n"],"names":["wasm","heap","Array","fill","undefined","getObject","idx","push","heap_next","length","takeObject","ret","dropObject","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachegetUint8Memory0","getUint8Memory0","buffer","memory","Uint8Array","getStringFromWasm0","ptr","len","subarray","addHeapObject","obj","debugString","val","type","description","name","isArray","debug","i","builtInMatches","exec","toString","call","className","JSON","stringify","_","Error","message","stack","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","encodeInto","arg","view","buf","encode","set","read","written","passStringToWasm0","malloc","realloc","mem","offset","code","charCodeAt","slice","cachegetInt32Memory0","getInt32Memory0","Int32Array","__wbg_adapter_16","arg0","arg1","arg2","_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2cb5c9e37b253332","u32CvtShim","Uint32Array","uint64CvtShim","BigUint64Array","hakuban_json_hash","json_string","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","WasmHashResult","__wrap","hakuban_local_node_drop","local_node","hakuban_object_observe_drop","object_ptr","hakuban_object_observe_state_return","state_ptr","hakuban_object_observe_state_synchronized","retptr","__wbindgen_add_to_stack_pointer","r0","r1","hakuban_object_observe_state_data_version","__wbindgen_free","hakuban_object_observe_state_data_type","getArrayU8FromWasm0","hakuban_object_observe_state_data","v0","hakuban_object_descriptor_events_drop","events_pointer","hakuban_tag_observe_drop","tag_observe_pointer","isLikeNone","x","hakuban_remote_node_drop","remote_node_pointer","passArray8ToWasm0","hakuban_remote_node_received_local_node_event","event","r2","v1","hakuban_tag_expose_drop","tag_expose_pointer","hakuban_object_expose_drop","object_expose_pointer","handleError","f","args","apply","this","e","__wbindgen_exn_store","Object","freeze","None","InvalidString","InvalidJSON","InvalidURL","ObjectNotFound","static","create","prototype","__destroy_into_raw","free","__wbg_wasmhashresult_free","error","__wbg_get_wasmhashresult_error","__wbg_set_wasmhashresult_error","hash","__wbg_get_wasmhashresult_hash","low0","high0","__wbg_set_wasmhashresult_hash","WasmLocalNodeNewResult","__wbg_wasmlocalnodenewresult_free","__wbg_get_wasmlocalnodenewresult_error","__wbg_set_wasmlocalnodenewresult_error","local_node_pointer","__wbg_get_wasmlocalnodenewresult_local_node_pointer","__wbg_set_wasmlocalnodenewresult_local_node_pointer","WasmObjectExposeResult","__wbg_wasmobjectexposeresult_free","__wbg_get_wasmobjectexposeresult_error","__wbg_set_wasmobjectexposeresult_error","__wbg_get_wasmobjectexposeresult_object_expose_pointer","__wbg_set_wasmobjectexposeresult_object_expose_pointer","WasmObjectExposeStateResult","__wbg_wasmobjectexposestateresult_free","__wbg_get_wasmobjectexposestateresult_error","__wbg_set_wasmobjectexposestateresult_error","changed","__wbg_get_wasmobjectexposestateresult_changed","__wbg_set_wasmobjectexposestateresult_changed","WasmObjectObserveResult","__wbg_wasmobjectobserveresult_free","__wbg_get_wasmobjectobserveresult_error","__wbg_set_wasmobjectobserveresult_error","object_observe_pointer","__wbg_get_wasmobjectobserveresult_object_observe_pointer","__wbg_set_wasmobjectobserveresult_object_observe_pointer","WasmRemoteNodeNewResult","__wbg_wasmremotenodenewresult_free","__wbg_get_wasmremotenodenewresult_error","__wbg_set_wasmremotenodenewresult_error","__wbg_get_wasmremotenodenewresult_remote_node_pointer","__wbg_set_wasmremotenodenewresult_remote_node_pointer","WasmTagExposeAssignmentResult","__wbg_wasmtagexposeassignmentresult_free","__wbg_get_wasmtagexposeassignmentresult_error","__wbg_set_wasmtagexposeassignmentresult_error","assignment","__wbg_get_wasmtagexposeassignmentresult_assignment","__wbg_set_wasmtagexposeassignmentresult_assignment","WasmTagExposeResult","__wbg_wasmtagexposeresult_free","__wbg_get_wasmtagexposeresult_error","__wbg_set_wasmtagexposeresult_error","__wbg_get_wasmtagexposeresult_tag_expose_pointer","__wbg_set_wasmtagexposeresult_tag_expose_pointer","WasmTagExposeSetObjectStateResult","__wbg_wasmtagexposesetobjectstateresult_free","__wbg_get_wasmtagexposesetobjectstateresult_error","__wbg_set_wasmtagexposesetobjectstateresult_error","__wbg_get_wasmtagexposesetobjectstateresult_changed","__wbg_set_wasmtagexposesetobjectstateresult_changed","WasmTagObserveObjectStateBorrowResult","__wbg_wasmtagobserveobjectstateborrowresult_free","__wbg_get_wasmtagobserveobjectstateborrowresult_error","__wbg_set_wasmtagobserveobjectstateborrowresult_error","state_pointer","__wbg_get_wasmtagobserveobjectstateborrowresult_state_pointer","__wbg_set_wasmtagobserveobjectstateborrowresult_state_pointer","WasmTagObserveResult","__wbg_wasmtagobserveresult_free","__wbg_get_wasmtagobserveresult_error","__wbg_set_wasmtagobserveresult_error","__wbg_get_wasmtagobserveresult_tag_observe_pointer","__wbg_set_wasmtagobserveresult_tag_observe_pointer","async","init","input","URL","import","meta","url","imports","wbg","__wbindgen_object_drop_ref","__wbindgen_string_new","__wbindgen_cb_drop","original","cnt","a","__wbg_debug_6e114a5b27d7915d","console","__wbg_error_ca520cb687b085a1","__wbg_info_32ab782ec7072fac","info","__wbg_log_fbd13631356d44e4","log","__wbg_warn_97f10a6b0dbb8c5c","warn","__wbg_now_5fa0ca001e042f8a","now","__wbg_newnoargs_f579424187aa1717","Function","__wbg_get_8bbb82393651dd9c","Reflect","get","arguments","__wbg_call_89558c3e96703ca1","__wbg_call_94697a95cb7e239c","__wbg_new_4beacc9c71572250","state0","b","Promise","arg3","wasm_bindgen__convert__closures__invoke2_mut__h3fbc4a767cc461bf","__wbg_adapter_120","__wbg_resolve_4f8f547f26b30b27","resolve","__wbg_then_a6860c82b90816ca","then","__wbg_then_58a04e42527f52c6","__wbg_self_e23d74ae45fb17d1","self","__wbg_window_b4be7f48b24ac56e","window","__wbg_globalThis_d61b1f48a57191ae","globalThis","__wbg_global_e7669da72fd7f239","global","__wbindgen_is_undefined","__wbindgen_object_clone_ref","__wbg_new_693216e109162396","__wbg_stack_0ddaca5d1abfb52f","__wbg_error_09919627ac0992f5","__wbindgen_debug_string","__wbindgen_throw","__wbindgen_closure_wrapper2024","dtor","state","real","__wbindgen_export_2","makeMutClosure","Request","fetch","instance","module","Response","WebAssembly","instantiateStreaming","headers","bytes","arrayBuffer","instantiate","Instance","load","exports","__wbindgen_wasm_module","Queue","constructor","queue","wake","value","shift","clear","LocalNode_finalization_registry","ObjectBuilder","ObjectDescriptorEvents","ObjectDescriptorEvents_finalization_registry","ObjectExpose","ObjectExpose_finalization_registry","ObjectObserve","ObjectObserve_finalization_registry","TagBuilder","TagExpose","TagExpose_finalization_registry","TagObserve","TagObserve_finalization_registry","WebsocketConnector_finalization_registry","logger_initialized","raise_if_error","ObjectManagerBuilder","contract","managed_object_class","_on_exception_policy","_retry_backoff","_terminate_on_deactivation","on_exception","policy","retry_backoff","times","with_async","block","ObjectManager","object_class","terminate_on_deactivation","on_exception_policy","event_loop_stop_requested","objects","object","drop","_existing_objects","_active_objects","event_queue","event_loop_stop","event_loop_stopped","reject","events","race","next","async_loop_stopped","base","base1","descriptor_for_lambda","interval_since_last_exception","key","name1","ref","ref1","action","descriptor","running","block_result","Date","last_exception_at","current_delay_index","Math","floor","exception","earliest_next_run","lambda_sleep_time","lambda_descriptor","lambda_event_queue","setTimeout","check_active","run","change","stop","keys","values","ManagedObject","next_event","next_change","_changes","handler","boundMethodCheck","initialize_wasm","hakuban_js.default","logger_initialize","log_level","skip_if_already_initialized","default_log_level","hakuban_logger_initialize","error_code","JSON_serialize","data_type","cooked","concat","data","JSON_deserialize","raw","parse","ObjectDescriptor","tags","tag","json","TagDescriptor","as_json","map","_hash","sort","join","hakuban_js.hakuban_json_hash","FinalizationRegistry","pointer","hakuban_js.hakuban_local_node_drop","LocalNode","result","name_str","hakuban_local_node_new","register","with_default_serializer","with_default_deserializer","destroy","unregister","default_serializer","default_deserializer","serializer","deserializer","observe","expose","with_serializer","with_deserializer","hakuban_js.hakuban_object_descriptor_events_drop","wait","cancel_waiting_promise","next_event_promise","cancel","wait_released","wait_release","cancel_waiting_resolve","hakuban_object_descriptor_events_next","parsed","hakuban_js.hakuban_object_observe_drop","object_state","manage","hakuban_object_observe_new","hakuban_js.hakuban_object_observe_new","dropped","deserialized","synchronized","version","hakuban_object_observe_state_borrow","hakuban_js.hakuban_object_observe_state_synchronized","hakuban_js.hakuban_object_observe_state_data_version","hakuban_js.hakuban_object_observe_state_data_type","hakuban_js.hakuban_object_observe_state_data","hakuban_js.hakuban_object_observe_state_return","object_observe_ptr","hakuban_object_observe_events_get","manager.ObjectManagerBuilder","manager.ManagedObject","hakuban_js.hakuban_object_expose_drop","set_object_state","assigned","desynchronize","hakuban_object_expose_new","hakuban_js.hakuban_object_expose_new","cooked_data","serialized","BigInt","data_version","assignment_id","ptr1","len1","ptr2","len2","low3","high3","hakuban_object_expose_set_state","hakuban_js.hakuban_object_expose_set_state","hakuban_object_expose_assignment","hakuban_js.hakuban_object_expose_assignment","hakuban_object_expose_desynchronize","hakuban_js.hakuban_object_expose_desynchronize","object_expose_ptr","hakuban_object_expose_events_get","do_change","set_state","set_data","_assignment","timestamp","getTime","hakuban_js.hakuban_tag_observe_drop","object_descriptors","hakuban_tag_observe_new","hakuban_js.hakuban_tag_observe_new","descriptor_as_json","results","hakuban_tag_observe_object_descriptors","hakuban_js.hakuban_tag_observe_object_descriptors","object_descriptor","hakuban_tag_observe_object_state_borrow","hakuban_js.hakuban_tag_observe_object_state_borrow","tag_observe_ptr","hakuban_tag_observe_events_get","hakuban_js.hakuban_tag_expose_drop","hakuban_tag_expose_new","hakuban_js.hakuban_tag_expose_new","hakuban_tag_expose_object_descriptors","hakuban_js.hakuban_tag_expose_object_descriptors","ptr3","len3","low4","high4","hakuban_tag_expose_set_object_state","hakuban_js.hakuban_tag_expose_set_object_state","hakuban_tag_expose_assignment","hakuban_js.hakuban_tag_expose_assignment","low1","high1","hakuban_tag_expose_desynchronize","hakuban_js.hakuban_tag_expose_desynchronize","tag_expose_ptr","hakuban_tag_expose_events_get","hakuban_js.hakuban_remote_node_drop","WebsocketConnector","upstream","diff_produce","diff_request","connect","ping","send","ack","uri","options","connected","socket","reconnection_timer","reconnect_on_close","ack_timer","hakuban_remote_node_new","event_loop_stop_resolve","event_loop_promise","event_loop","keep_alive_interval","clearInterval","clearTimeout","onclose","onerror","onmessage","close","socket_onclose","WebSocket","while","onstatuschange_proc","binaryType","onopen","bytes_to_send","hakuban_remote_node_connected","hakuban_js.hakuban_remote_node_connected","hakuban_remote_node_disconnected","hakuban_remote_node_received_message","hakuban_js.hakuban_remote_node_received_message","setInterval","hakuban_remote_node_ack","hakuban_js.hakuban_remote_node_ack","next_local_node_event","promise","hakuban_remote_node_next_local_node_event","any","hakuban_js.hakuban_remote_node_received_local_node_event","onstatuschange","proc","initialize","j","wasm_array","wasm_string","atob"],"mappings":"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"}
1
+ {"version":3,"file":"hakuban-with-wasm.min.js","sources":["pkg/hakuban.js","coffee/ffi-object.coffee","coffee/ffi.coffee","coffee/logger.coffee","coffee/object-state.coffee","coffee/descriptor.coffee","coffee/contract.coffee","coffee/stream.coffee","coffee/object-state-stream.coffee","coffee/object-state-sink.coffee","coffee/exchange.coffee","coffee/remote-exchange.coffee","coffee/websocket-connector.coffee","coffee/hakuban-with-wasm.coffee"],"sourcesContent":["\nlet wasm;\n\nconst cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachedUint8Memory0 = new Uint8Array();\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nconst heap = new Array(32).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction getObject(idx) { return heap[idx]; }\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = new TextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length);\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len);\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedInt32Memory0 = new Int32Array();\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n/**\n* @param {number} local_exchange\n* @param {number} descriptor\n* @returns {number}\n*/\nexport function hakuban_object_observe_contract_new(local_exchange, descriptor) {\n const ret = wasm.hakuban_object_observe_contract_new(local_exchange, descriptor);\n return ret;\n}\n\n/**\n* @param {number} object_ptr\n*/\nexport function hakuban_object_observe_contract_drop(object_ptr) {\n wasm.hakuban_object_observe_contract_drop(object_ptr);\n}\n\n/**\n* @param {number} object_observe_pointer\n*/\nexport function hakuban_object_observe_contract_terminate(object_observe_pointer) {\n wasm.hakuban_object_observe_contract_terminate(object_observe_pointer);\n}\n\n/**\n* @param {number} object_observe_pointer\n* @returns {number}\n*/\nexport function hakuban_object_observe_contract_next(object_observe_pointer) {\n const ret = wasm.hakuban_object_observe_contract_next(object_observe_pointer);\n return ret;\n}\n\n/**\n* @param {number} object_observe_pointer\n* @returns {WasmResultWithPointer}\n*/\nexport function hakuban_object_observe_contract_ready(object_observe_pointer) {\n const ret = wasm.hakuban_object_observe_contract_ready(object_observe_pointer);\n return WasmResultWithPointer.__wrap(ret);\n}\n\n/**\n* @param {number} local_exchange\n* @param {number} descriptor\n* @returns {number}\n*/\nexport function hakuban_tag_observe_contract_new(local_exchange, descriptor) {\n const ret = wasm.hakuban_tag_observe_contract_new(local_exchange, descriptor);\n return ret;\n}\n\n/**\n* @param {number} tag_pointer\n*/\nexport function hakuban_tag_observe_contract_drop(tag_pointer) {\n wasm.hakuban_tag_observe_contract_drop(tag_pointer);\n}\n\n/**\n* @param {number} tag_observe_pointer\n*/\nexport function hakuban_tag_observe_contract_terminate(tag_observe_pointer) {\n wasm.hakuban_tag_observe_contract_terminate(tag_observe_pointer);\n}\n\n/**\n* @param {number} tag_observe_pointer\n* @returns {number}\n*/\nexport function hakuban_tag_observe_contract_next(tag_observe_pointer) {\n const ret = wasm.hakuban_tag_observe_contract_next(tag_observe_pointer);\n return ret;\n}\n\nlet cachedUint32Memory0 = new Uint32Array();\n\nfunction getUint32Memory0() {\n if (cachedUint32Memory0.byteLength === 0) {\n cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32Memory0;\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n return getUint32Memory0().subarray(ptr / 4, ptr / 4 + len);\n}\n/**\n* @param {number} tag_observe_pointer\n* @returns {Uint32Array}\n*/\nexport function hakuban_tag_observe_contract_ready(tag_observe_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_tag_observe_contract_ready(retptr, tag_observe_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU32FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {string} json_string\n* @returns {WasmResultWithPointer}\n*/\nexport function hakuban_tag_descriptor_new(json_string) {\n const ptr0 = passStringToWasm0(json_string, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.hakuban_tag_descriptor_new(ptr0, len0);\n return WasmResultWithPointer.__wrap(ret);\n}\n\n/**\n* @param {number} descriptor_pointer\n*/\nexport function hakuban_tag_descriptor_drop(descriptor_pointer) {\n wasm.hakuban_tag_descriptor_drop(descriptor_pointer);\n}\n\n/**\n* @param {number} descriptor_pointer\n* @returns {string}\n*/\nexport function hakuban_tag_descriptor_json(descriptor_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_tag_descriptor_json(retptr, descriptor_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4);\n getUint32Memory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n* @param {string} json_string\n* @param {Uint32Array} tag_pointers\n* @returns {WasmResultWithPointer}\n*/\nexport function hakuban_object_descriptor_new(json_string, tag_pointers) {\n const ptr0 = passStringToWasm0(json_string, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray32ToWasm0(tag_pointers, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.hakuban_object_descriptor_new(ptr0, len0, ptr1, len1);\n return WasmResultWithPointer.__wrap(ret);\n}\n\n/**\n* @param {number} descriptor_pointer\n*/\nexport function hakuban_object_descriptor_drop(descriptor_pointer) {\n wasm.hakuban_object_descriptor_drop(descriptor_pointer);\n}\n\n/**\n* @param {number} descriptor_pointer\n* @returns {string}\n*/\nexport function hakuban_object_descriptor_json(descriptor_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_descriptor_json(retptr, descriptor_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n}\n\n/**\n* @param {number} descriptor_pointer\n* @returns {Uint32Array}\n*/\nexport function hakuban_object_descriptor_tags(descriptor_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_descriptor_tags(retptr, descriptor_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU32FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} local_exchange\n* @param {number} descriptor\n* @returns {number}\n*/\nexport function hakuban_tag_expose_contract_new(local_exchange, descriptor) {\n const ret = wasm.hakuban_tag_expose_contract_new(local_exchange, descriptor);\n return ret;\n}\n\n/**\n* @param {number} tag_expose_contract_pointer\n*/\nexport function hakuban_tag_expose_contract_drop(tag_expose_contract_pointer) {\n wasm.hakuban_tag_expose_contract_drop(tag_expose_contract_pointer);\n}\n\n/**\n* @param {number} tag_expose_pointer\n*/\nexport function hakuban_tag_expose_contract_terminate(tag_expose_pointer) {\n wasm.hakuban_tag_expose_contract_terminate(tag_expose_pointer);\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @returns {number}\n*/\nexport function hakuban_tag_expose_contract_next(tag_expose_pointer) {\n const ret = wasm.hakuban_tag_expose_contract_next(tag_expose_pointer);\n return ret;\n}\n\n/**\n* @param {number} tag_expose_pointer\n* @returns {Uint32Array}\n*/\nexport function hakuban_tag_expose_contract_ready(tag_expose_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_tag_expose_contract_ready(retptr, tag_expose_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU32FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nlet cachedBigUint64Memory0 = new BigUint64Array();\n\nfunction getBigUint64Memory0() {\n if (cachedBigUint64Memory0.byteLength === 0) {\n cachedBigUint64Memory0 = new BigUint64Array(wasm.memory.buffer);\n }\n return cachedBigUint64Memory0;\n}\n\nfunction passArray64ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 8);\n getBigUint64Memory0().set(arg, ptr / 8);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4);\n const mem = getUint32Memory0();\n for (let i = 0; i < array.length; i++) {\n mem[ptr / 4 + i] = addHeapObject(array[i]);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n* @param {BigInt64Array} version\n* @param {any[]} format_jsvalues\n* @param {Uint8Array} data\n* @param {bigint} synchronized_us_ago\n* @returns {WasmResultWithPointer}\n*/\nexport function hakuban_object_state_new(version, format_jsvalues, data, synchronized_us_ago) {\n const ptr0 = passArray64ToWasm0(version, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArrayJsValueToWasm0(format_jsvalues, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray8ToWasm0(data, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.hakuban_object_state_new(ptr0, len0, ptr1, len1, ptr2, len2, synchronized_us_ago);\n return WasmResultWithPointer.__wrap(ret);\n}\n\n/**\n* @param {number} object_state_pointer\n*/\nexport function hakuban_object_state_drop(object_state_pointer) {\n wasm.hakuban_object_state_drop(object_state_pointer);\n}\n\nlet cachedBigInt64Memory0 = new BigInt64Array();\n\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\n\nfunction getArrayI64FromWasm0(ptr, len) {\n return getBigInt64Memory0().subarray(ptr / 8, ptr / 8 + len);\n}\n/**\n* @param {number} object_state_pointer\n* @returns {BigInt64Array}\n*/\nexport function hakuban_object_state_version(object_state_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_state_version(retptr, object_state_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayI64FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 8);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} object_state_pointer\n* @returns {bigint}\n*/\nexport function hakuban_object_state_synchronized_ago(object_state_pointer) {\n const ret = wasm.hakuban_object_state_synchronized_ago(object_state_pointer);\n return BigInt.asUintN(64, ret);\n}\n\nfunction getArrayJsValueFromWasm0(ptr, len) {\n const mem = getUint32Memory0();\n const slice = mem.subarray(ptr / 4, ptr / 4 + len);\n const result = [];\n for (let i = 0; i < slice.length; i++) {\n result.push(takeObject(slice[i]));\n }\n return result;\n}\n/**\n* @param {number} object_state_pointer\n* @returns {any[]}\n*/\nexport function hakuban_object_state_format(object_state_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_state_format(retptr, object_state_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayJsValueFromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 4);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {number} object_state_pointer\n* @returns {Uint8Array}\n*/\nexport function hakuban_object_state_data(object_state_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_object_state_data(retptr, object_state_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} object_state_stream_pointer\n*/\nexport function hakuban_object_state_stream_drop(object_state_stream_pointer) {\n wasm.hakuban_object_state_stream_drop(object_state_stream_pointer);\n}\n\n/**\n* @param {number} object_state_stream_pointer\n* @returns {number}\n*/\nexport function hakuban_object_state_stream_next(object_state_stream_pointer) {\n const ret = wasm.hakuban_object_state_stream_next(object_state_stream_pointer);\n return ret;\n}\n\n/**\n* @param {number} object_state_stream_pointer\n* @returns {WasmResultWithPointer}\n*/\nexport function hakuban_object_state_stream_current(object_state_stream_pointer) {\n const ret = wasm.hakuban_object_state_stream_current(object_state_stream_pointer);\n return WasmResultWithPointer.__wrap(ret);\n}\n\n/**\n* @param {number} object_state_stream_pointer\n* @returns {number}\n*/\nexport function hakuban_object_state_stream_descriptor(object_state_stream_pointer) {\n const ret = wasm.hakuban_object_state_stream_descriptor(object_state_stream_pointer);\n return ret;\n}\n\n/**\n* @param {number} local_exchange_pointer\n* @param {boolean} upstream\n* @param {boolean} diff_produce\n* @param {boolean} diff_request\n* @returns {number}\n*/\nexport function hakuban_remote_exchange_new(local_exchange_pointer, upstream, diff_produce, diff_request) {\n const ret = wasm.hakuban_remote_exchange_new(local_exchange_pointer, upstream, diff_produce, diff_request);\n return ret;\n}\n\n/**\n* @param {number} remote_exchange_pointer\n*/\nexport function hakuban_remote_exchange_drop(remote_exchange_pointer) {\n wasm.hakuban_remote_exchange_drop(remote_exchange_pointer);\n}\n\n/**\n* @param {number} remote_exchange_pointer\n* @returns {number}\n*/\nexport function hakuban_remote_exchange_next_message_to_network(remote_exchange_pointer) {\n const ret = wasm.hakuban_remote_exchange_next_message_to_network(remote_exchange_pointer);\n return ret;\n}\n\n/**\n* @param {number} message_pointer\n* @returns {Uint8Array}\n*/\nexport function hakuban_message_take(message_pointer) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_message_take(retptr, message_pointer);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} remote_exchange_pointer\n* @param {Uint8Array} message_data\n* @returns {number}\n*/\nexport function hakuban_remote_exchange_send_message_from_network(remote_exchange_pointer, message_data) {\n const ptr0 = passArray8ToWasm0(message_data, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.hakuban_remote_exchange_send_message_from_network(remote_exchange_pointer, ptr0, len0);\n return ret;\n}\n\n/**\n* @param {number} local_exchange_pointer\n* @param {number} future_pointer\n* @param {bigint} waker_id\n* @returns {WasmResultWithPointer}\n*/\nexport function hakuban_future_returning_pointer_poll(local_exchange_pointer, future_pointer, waker_id) {\n const ret = wasm.hakuban_future_returning_pointer_poll(local_exchange_pointer, future_pointer, waker_id);\n return WasmResultWithPointer.__wrap(ret);\n}\n\n/**\n* @param {number} future\n*/\nexport function hakuban_future_returning_pointer_drop(future) {\n wasm.hakuban_future_returning_nothing_drop(future);\n}\n\n/**\n* @param {number} local_exchange_pointer\n* @param {number} future_pointer\n* @param {bigint} waker_id\n* @returns {WasmResultWithNothing}\n*/\nexport function hakuban_future_returning_nothing_poll(local_exchange_pointer, future_pointer, waker_id) {\n const ret = wasm.hakuban_future_returning_nothing_poll(local_exchange_pointer, future_pointer, waker_id);\n return WasmResultWithNothing.__wrap(ret);\n}\n\n/**\n* @param {number} future\n*/\nexport function hakuban_future_returning_nothing_drop(future) {\n wasm.hakuban_future_returning_nothing_drop(future);\n}\n\n/**\n* @param {string} default_log_level\n* @returns {number}\n*/\nexport function hakuban_logger_initialize(default_log_level) {\n const ptr0 = passStringToWasm0(default_log_level, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.hakuban_logger_initialize(ptr0, len0);\n return ret >>> 0;\n}\n\n/**\n* @param {number} object_state_sink_pointer\n* @returns {number}\n*/\nexport function hakuban_object_state_sink_descriptor(object_state_sink_pointer) {\n const ret = wasm.hakuban_object_state_sink_descriptor(object_state_sink_pointer);\n return ret;\n}\n\n/**\n* @param {number} object_state_sink_pointer\n*/\nexport function hakuban_object_state_sink_drop(object_state_sink_pointer) {\n wasm.hakuban_object_state_sink_drop(object_state_sink_pointer);\n}\n\n/**\n* @param {number} object_state_sink_pointer\n* @returns {number}\n*/\nexport function hakuban_object_state_sink_next(object_state_sink_pointer) {\n const ret = wasm.hakuban_object_state_sink_next(object_state_sink_pointer);\n return ret;\n}\n\n/**\n* @param {number} object_state_sink_pointer\n* @returns {WasmResultWithPointer}\n*/\nexport function hakuban_object_state_sink_current(object_state_sink_pointer) {\n const ret = wasm.hakuban_object_state_sink_current(object_state_sink_pointer);\n return WasmResultWithPointer.__wrap(ret);\n}\n\n/**\n* @param {number} object_state_sink_pointer\n* @param {number} object_state_pointer\n* @returns {number}\n*/\nexport function hakuban_object_state_sink_push(object_state_sink_pointer, object_state_pointer) {\n const ret = wasm.hakuban_object_state_sink_push(object_state_sink_pointer, object_state_pointer);\n return ret;\n}\n\n/**\n* @param {number} object_state_sink_params_pointer\n*/\nexport function hakuban_object_state_sink_params_drop(object_state_sink_params_pointer) {\n wasm.hakuban_object_state_sink_params_drop(object_state_sink_params_pointer);\n}\n\n/**\n* @param {number} object_state_sink_pointer\n*/\nexport function hakuban_object_state_sink_desynchronize(object_state_sink_pointer) {\n wasm.hakuban_object_state_sink_desynchronize(object_state_sink_pointer);\n}\n\n/**\n* @param {string} name_str\n* @returns {WasmResultWithPointer}\n*/\nexport function hakuban_local_exchange_new(name_str) {\n const ptr0 = passStringToWasm0(name_str, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.hakuban_local_exchange_new(ptr0, len0);\n return WasmResultWithPointer.__wrap(ret);\n}\n\n/**\n* @param {number} local_exchange\n*/\nexport function hakuban_local_exchange_drop(local_exchange) {\n wasm.hakuban_local_exchange_drop(local_exchange);\n}\n\nfunction getArrayU64FromWasm0(ptr, len) {\n return getBigUint64Memory0().subarray(ptr / 8, ptr / 8 + len);\n}\n/**\n* @param {number} local_exchange\n* @returns {BigUint64Array}\n*/\nexport function hakuban_local_exchange_notified(local_exchange) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hakuban_local_exchange_notified(retptr, local_exchange);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU64FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 8);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @param {number} local_exchange\n* @param {number} descriptor\n* @returns {number}\n*/\nexport function hakuban_object_expose_contract_new(local_exchange, descriptor) {\n const ret = wasm.hakuban_object_expose_contract_new(local_exchange, descriptor);\n return ret;\n}\n\n/**\n* @param {number} object_ptr\n*/\nexport function hakuban_object_expose_contract_drop(object_ptr) {\n wasm.hakuban_object_expose_contract_drop(object_ptr);\n}\n\n/**\n* @param {number} object_expose_pointer\n*/\nexport function hakuban_object_expose_contract_terminate(object_expose_pointer) {\n wasm.hakuban_object_expose_contract_terminate(object_expose_pointer);\n}\n\n/**\n* @param {number} object_expose_pointer\n* @returns {number}\n*/\nexport function hakuban_object_expose_contract_next(object_expose_pointer) {\n const ret = wasm.hakuban_object_expose_contract_next(object_expose_pointer);\n return ret;\n}\n\n/**\n* @param {number} object_expose_pointer\n* @returns {WasmResultWithPointer}\n*/\nexport function hakuban_object_expose_contract_ready(object_expose_pointer) {\n const ret = wasm.hakuban_object_expose_contract_ready(object_expose_pointer);\n return WasmResultWithPointer.__wrap(ret);\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n/**\n*/\nexport const WasmResultStatus = Object.freeze({ Ok:0,\"0\":\"Ok\",Pending:1,\"1\":\"Pending\",NotAvailable:2,\"2\":\"NotAvailable\",InvalidString:3,\"3\":\"InvalidString\",InvalidJSON:4,\"4\":\"InvalidJSON\",InvalidURL:5,\"5\":\"InvalidURL\",InvalidLogLevel:6,\"6\":\"InvalidLogLevel\",UnknownError:7,\"7\":\"UnknownError\", });\n/**\n*/\nexport class WasmResultWithNothing {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmResultWithNothing.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmresultwithnothing_free(ptr);\n }\n /**\n * @returns {number}\n */\n get status() {\n const ret = wasm.__wbg_get_wasmresultwithnothing_status(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set status(arg0) {\n wasm.__wbg_set_wasmresultwithnothing_status(this.ptr, arg0);\n }\n}\n/**\n*/\nexport class WasmResultWithPointer {\n\n static __wrap(ptr) {\n const obj = Object.create(WasmResultWithPointer.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmresultwithpointer_free(ptr);\n }\n /**\n * @returns {number}\n */\n get status() {\n const ret = wasm.__wbg_get_wasmresultwithpointer_status(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set status(arg0) {\n wasm.__wbg_set_wasmresultwithpointer_status(this.ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get value() {\n const ret = wasm.__wbg_get_wasmresultwithpointer_value(this.ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set value(arg0) {\n wasm.__wbg_set_wasmresultwithpointer_value(this.ptr, arg0);\n }\n}\n\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n 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);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction getImports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_debug_f15cb542ea509609 = function(arg0) {\n console.debug(getObject(arg0));\n };\n imports.wbg.__wbg_error_ef9a0be47931175f = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_2874fdd5393f35ce = function(arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_log_4b5638ad60bdc54a = function(arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_warn_58110c4a199df084 = function(arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_now_8172cd917e5eda6b = function(arg0) {\n const ret = getObject(arg0).now();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_b5b063fc6c2f0376 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_765201544a2b6869 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_97ae9d8645dc388b = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_self_6d479506f72c6a71 = function() { return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_window_f2557cc78490aceb = function() { return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_globalThis_7f206bda628d5286 = function() { return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_global_ba75c50d1cf384f4 = function() { return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction initMemory(imports, maybe_memory) {\n\n}\n\nfunction finalizeInit(instance, module) {\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = new BigInt64Array();\n cachedBigUint64Memory0 = new BigUint64Array();\n cachedInt32Memory0 = new Int32Array();\n cachedUint32Memory0 = new Uint32Array();\n cachedUint8Memory0 = new Uint8Array();\n\n\n return wasm;\n}\n\nfunction initSync(module) {\n const imports = getImports();\n\n initMemory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return finalizeInit(instance, module);\n}\n\nasync function init(input) {\n if (typeof input === 'undefined') {\n input = new URL('hakuban_bg.wasm', import.meta.url);\n }\n const imports = getImports();\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n initMemory(imports);\n\n const { instance, module } = await load(await input, imports);\n\n return finalizeInit(instance, module);\n}\n\nexport { initSync }\nexport default init;\n","\nfinalization_registry = new FinalizationRegistry (function_and_arg)-> function_and_arg[0](function_and_arg[1])\n\n\ndo_and_drop = (object_or_objects, block)->\n\t\ttry\n\t\t\tblock_returned_promise = false\n\t\t\tret = block(object_or_objects)\n\t\t\tif ret? and typeof ret.then == 'function'\n\t\t\t\tblock_returned_promise = true\n\t\t\t\tret.finally ()=>\n\t\t\t\t\tfor object in [object_or_objects].flat()\n\t\t\t\t\t\tobject.drop()\n\t\t\telse\n\t\t\t\tret\n\t\tfinally\n\t\t\tif not block_returned_promise\n\t\t\t\tfor object in [object_or_objects].flat()\n\t\t\t\t\tobject.drop()\n\n\nexport do_and_drop_or_return = (object_or_objects, block)->\n\t\tif block?\n\t\t\tdo_and_drop(object_or_objects, block)\n\t\telse\n\t\t\tobject_or_objects\n\n\nexport class PointerAlreadyDropped\n\tconstructor: ()->@message=\"PointerAlreadyDropped\"\n\n\nexport class FFIObject\n\n\n\tinitialize_pointer: (@_local_exchange, @_pointer, @_drop_function)->\n\t\t@_was_dropped = null\n\t\t@_drop_locks_sequence = 0\n\t\t@_drop_locks = {}\n\t\tfinalization_registry.register(@, [@_drop_function, @_pointer], @)\n\t\n\tdropped: ()->\n\t\t@_was_dropped?\n\n\tdrop: ()-> \n\t\tif not @_was_dropped?\n\t\t\t@_was_dropped = new Promise (resolve)=>\n\t\t\t\tif @_pointer?\n\t\t\t\t\tif Object.keys(@_drop_locks).length > 0\n\t\t\t\t\t\tall_locks_dropped = new Promise (@_all_locks_dropped_set)=>\n\t\t\t\t\t\tfor about_to_drop_notification in Object.values(@_drop_locks)\n\t\t\t\t\t\t\tabout_to_drop_notification(\"DROP\")\n\t\t\t\t\t\tawait all_locks_dropped\n\t\t\t\t\tthrow \"Hakuban internal error: drop was attempted with existing drop locks\" if Object.keys(@_drop_locks).length > 0\n\t\t\t\t\tfinalization_registry.unregister(@)\n\t\t\t\t\t@_drop_function(@_pointer)\n\t\t\t\t\t@_local_exchange.notify() if @_local_exchange?\n\t\t\t\t@_pointer = false\n\t\t\t\tresolve()\n\t\t@_was_dropped\n\n\twith_pointer: (block)->\n\t\tthrow new PointerAlreadyDropped() if @dropped()\n\t\tblock(@_pointer)\n\n\tdo_and_drop_or_return: (block)->\n\t\tdo_and_drop_or_return(@, block)\n\n\tdrop_lock: (about_to_drop_notification)->\n\t\traise FFIObject::PointerAlreadyDropped if @_was_dropped?\n\t\tlock_id = @_drop_locks_sequence++\n\t\t@_drop_locks[lock_id] = about_to_drop_notification\n\t\tlock_id\n\t\n\tdrop_release: (lock_id)->\n\t\tdelete @_drop_locks[lock_id]\n\t\tif @_was_dropped? and Object.keys(@_drop_locks).length == 0\n\t\t\t@_all_locks_dropped_set()\n","export * from \"../pkg/hakuban.js\"\n\n\nexport unwrap_pointer = (result)->\n\tif result.status == 0\n\t\tresult.value\n\telse\n\t\tthrow \"hakuban wasm call failed: \"+result.status\n\nexport unwrap_pointer_or_null = (result)->\n\tif result.status == 0\n\t\tresult.value\n\telse if result.status == 2 #unavailable\n\t\tnull\n\telse\n\t\tthrow \"hakuban wasm call failed: \"+result.status\n\n\nexport class Future\n\n\tconstructor: (@local_exchange, @future_owner, @poll_function, @drop_function, @_pointer)->\n\n\tawait_and_drop: (aborted=null)->\n\t\ttry\n\t\t\tabout_to_drop_notification_received = new Promise (about_to_drop_notification)=>\n\t\t\t\t@lock_id = @future_owner.drop_lock(about_to_drop_notification)\n\t\t\twhile true\n\t\t\t\tnotified = @local_exchange.notified()\n\t\t\t\tresult = @local_exchange.with_pointer (local_exchange_pointer)=> @poll_function(local_exchange_pointer, @_pointer, notified.id)\n\t\t\t\tswitch result.status\n\t\t\t\t\twhen 0 #ok\n\t\t\t\t\t\treturn result.value\n\t\t\t\t\twhen 1 #pending\n\t\t\t\t\t\tto_listen = [notified, about_to_drop_notification_received]\n\t\t\t\t\t\tto_listen.push(aborted) if aborted?\n\t\t\t\t\t\tswitch await Promise.race(to_listen)\n\t\t\t\t\t\t\twhen \"ABORT\" then return false\n\t\t\t\t\t\t\twhen \"DROP\" then return null\n\t\t\t\t\twhen 2 #unavailable, channel closed\n\t\t\t\t\t\treturn null\n\t\t\t\t\telse\n\t\t\t\t\t\tthrow result.status #TODO: convert that to specific error\n\t\tfinally\n\t\t\t@drop_function(@_pointer)\n\t\t\t@future_owner.drop_release(@lock_id)\n\t\t\t@local_exchange.return_notified(notified) if notified?\n\n","import * as FFI from \"./ffi.coffee\"\n\n\nexport logger_initialize = (log_level, skip_if_already_initialized=false) ->\n\t\tif 0 == (error = FFI.hakuban_logger_initialize(log_level))\n\t\t\tlogger_initialized = true\n\t\telse\n\t\t\tconsole.error \"Failed to initialize logger, error \" + error \n\t\t\tfalse\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject } from \"./ffi-object.coffee\"\n\n\nObjectState_last_generated_version = [0,0,0]\n\n#TODO: make this immutable for the users somehow\nexport class ObjectState extends FFIObject\n\n\tconstructor: (data=null, version=null, format=null, synchronized_us_ago=0, pointer=null)->\n\t\tsuper()\n\t\tif pointer?\n\t\t\t@initialize_pointer(null, pointer, FFI.hakuban_object_state_drop)\n\t\t\t@version = (x for x in FFI.hakuban_object_state_version(pointer))\n\t\t\t@synchronized_us_ago = FFI.hakuban_object_state_synchronized_ago(pointer)\n\t\t\t@format = FFI.hakuban_object_state_format(pointer)\n\t\t\t@data = new TextDecoder().decode(FFI.hakuban_object_state_data(pointer))\n\t\telse\n\t\t\tif !version?\n\t\t\t\ttimestamp = new Date().getTime()\n\t\t\t\tversion = [0, Math.floor(timestamp/1000), (timestamp % 1000) * 1000]\n\t\t\t\tversion[2]++ while version[1] == ObjectState_last_generated_version[1] and version[2] <= ObjectState_last_generated_version[2]\n\t\t\t\tObjectState_last_generated_version = version\n\t\t\t@version = (BigInt(version_element) for version_element in version)\n\t\t\tif !format?\n\t\t\t\tformat = []\n\t\t\t@format = [format].flat(Infinity)\n\t\t\t@synchronized_us_ago = BigInt(synchronized_us_ago)\n\t\t\t@data = data\n\t\t\n\twith_pointer: (block)->\n\t\tthrow new PointerAlreadyDropped() if @dropped()\n\t\tif @_pointer?\n\t\t\tblock(@_pointer)\n\t\telse\n\t\t\tpointer = FFI.unwrap_pointer(FFI.hakuban_object_state_new(@version, @format, new TextEncoder().encode(@data), @synchronized_us_ago))\n\t\t\t@initialize_pointer(null, pointer, FFI.hakuban_object_state_drop)\n\t\t\tblock(@_pointer)\n\n\twith_data: (data)->\n\t\tnew ObjectState(data, @version, @format, @synchronized_us_ago)\n\n\twith_version: (version)->\n\t\tnew ObjectState(@data, version, @format, @synchronized_us_ago)\n\n\twith_format: (format)->\n\t\tnew ObjectState(@data, @version, format, @synchronized_us_ago)\n\n\twith_synchronized_us_ago: (synchronized_us_ago)->\n\t\tnew ObjectState(@data, @version, @format, synchronized_us_ago)\n\n\tjson_deserialize: ()->\n\t\tthrow \"Invalid data format\" if @format[@format.length - 1] != \"JSON\"\n\t\tnew ObjectState(JSON.parse(@data), @version, @format.slice(0, -1), @synchronized_us_ago)\n\n\tjson_serialize: ()->\n\t\tnew ObjectState(JSON.stringify(@data), @version, @format.concat(\"JSON\"), @synchronized_us_ago)\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject } from \"./ffi-object.coffee\"\n\n\nexport class ObjectDescriptor extends FFIObject\n\n\tconstructor: (tags, json, pointer=null) -> \n\t\tsuper()\n\t\tif pointer?\n\t\t\t@json = JSON.parse(FFI.hakuban_object_descriptor_json(pointer))\n\t\t\t@tags = (new TagDescriptor(null, null, tag_pointer) for tag_pointer in FFI.hakuban_object_descriptor_tags(pointer))\n\t\telse\n\t\t\t@json = json\n\t\t\t@tags = ((if tag instanceof TagDescriptor then tag else new TagDescriptor(tag)) for tag in tags)\n\t\t\tpointer = FFI.unwrap_pointer(FFI.hakuban_object_descriptor_new(JSON.stringify(@json), (tag._pointer for tag in @tags)))\n\t\t@initialize_pointer(null, pointer, FFI.hakuban_object_descriptor_drop)\n\n\nexport class TagDescriptor extends FFIObject\n\n\tconstructor: (json) -> \n\t\tsuper()\n\t\t@json = json\n\t\tpointer = FFI.unwrap_pointer(FFI.hakuban_tag_descriptor_new(JSON.stringify(@json)))\n\t\t@initialize_pointer(null, pointer, FFI.hakuban_tag_descriptor_drop)\n\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject, PointerAlreadyDropped, do_and_drop_or_return } from \"./ffi-object.coffee\"\nimport { ObjectDescriptor, TagDescriptor } from \"./descriptor.coffee\"\nimport { ObjectStateStream } from \"./object-state-stream.coffee\"\nimport { ObjectStateSink } from \"./object-state-sink.coffee\"\nimport { StreamEnumerator } from \"./stream.coffee\"\n\n\nclass Contract extends FFIObject\n\n\teach: (block)->\n\t\tnew StreamEnumerator(@).call_or_return(block)\n\n\nexport class ObjectObserveContract extends Contract\n\n\tconstructor: (local_exchange, descriptor) ->\n\t\tsuper()\n\t\t@local_exchange = local_exchange\n\t\t@descriptor = if descriptor[0] instanceof ObjectDescriptor\n\t\t\tdescriptor[0]\n\t\telse\n\t\t\tnew ObjectDescriptor(descriptor...) \n\t\t@local_exchange.with_pointer (local_exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\t\n\t\t\t\t@initialize_pointer(@local_exchange, FFI.hakuban_object_observe_contract_new(local_exchange_pointer, descriptor_pointer), FFI.hakuban_object_observe_contract_drop)\n\t\t@local_exchange.notify()\n\t\n\tterminate: ()->\n\t\ttry\n\t\t\t@with_pointer (pointer)=>FFI.hakuban_object_observe_contract_terminate(pointer)\n\t\t\t@local_exchange.notify()\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\t\n\tnext: (block)->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (pointer)=>FFI.hakuban_object_observe_contract_next(pointer)\n\t\t\tpointer = await new FFI.Future(@local_exchange, @, FFI.hakuban_future_returning_pointer_poll, FFI.hakuban_future_returning_pointer_drop, future_pointer).await_and_drop()\n\t\t\t@local_exchange.notify()\n\t\t\tif pointer? then await new ObjectStateStream(@local_exchange, pointer).do_and_drop_or_return(block) else null\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\tready: (block)->\n\t\ttry\n\t\t\tpointer = @with_pointer (pointer)=>FFI.unwrap_pointer_or_null(FFI.hakuban_object_observe_contract_ready(pointer))\n\t\t\t@local_exchange.notify()\n\t\t\tif pointer? then new ObjectStateStream(@local_exchange, pointer).do_and_drop_or_return(block) else null\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\nexport class ObjectExposeContract extends Contract\n\n\tconstructor: (local_exchange, descriptor)->\n\t\tsuper()\n\t\t@local_exchange = local_exchange\n\t\t@descriptor = if descriptor[0] instanceof ObjectDescriptor\n\t\t\tdescriptor[0]\n\t\telse\n\t\t\tnew ObjectDescriptor(descriptor...)\n\t\t@local_exchange.with_pointer (local_exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\n\t\t\t\t@initialize_pointer(@local_exchange, FFI.hakuban_object_expose_contract_new(local_exchange_pointer, descriptor_pointer), FFI.hakuban_object_expose_contract_drop)\n\t\t@local_exchange.notify()\n\n\tterminate: ()->\n\t\ttry\n\t\t\t@with_pointer (pointer)=>FFI.hakuban_object_expose_contract_terminate(pointer)\n\t\t\t@local_exchange.notify()\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\tnext: (block)->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (pointer)=>FFI.hakuban_object_expose_contract_next(pointer)\n\t\t\tpointer = await new FFI.Future(@local_exchange, @, FFI.hakuban_future_returning_pointer_poll, FFI.hakuban_future_returning_pointer_drop, future_pointer).await_and_drop()\n\t\t\t@local_exchange.notify()\n\t\t\tif pointer? then await new ObjectStateSink(@local_exchange, pointer).do_and_drop_or_return(block) else null\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\tready: (block)->\n\t\ttry\n\t\t\tpointer = @with_pointer (pointer)=>FFI.unwrap_pointer_or_null(FFI.hakuban_object_expose_contract_ready(pointer))\n\t\t\t@local_exchange.notify()\n\t\t\tif pointer? then new ObjectStateSink(@local_exchange, pointer).do_and_drop_or_return(block) else null\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\nexport class TagObserveContract extends Contract\n\n\tconstructor: (local_exchange, descriptor) ->\n\t\tsuper()\n\t\t@local_exchange = local_exchange\n\t\t@descriptor = descriptor\n\t\t@descriptor = new TagDescriptor(@descriptor) if not (@descriptor instanceof TagDescriptor)\n\t\t@local_exchange.with_pointer (local_exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\n\t\t\t\t@initialize_pointer(@local_exchange, FFI.hakuban_tag_observe_contract_new(local_exchange_pointer, descriptor_pointer), FFI.hakuban_tag_observe_contract_drop)\n\t\t@local_exchange.notify()\n\n\tterminate: ()->\n\t\ttry\n\t\t\t@with_pointer (pointer)=>FFI.hakuban_tag_observe_contract_terminate(pointer)\n\t\t\t@local_exchange.notify()\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\t\n\n\tnext: (block)->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (pointer)=>FFI.hakuban_tag_observe_contract_next(pointer)\n\t\t\tpointer = await new FFI.Future(@local_exchange, @, FFI.hakuban_future_returning_pointer_poll, FFI.hakuban_future_returning_pointer_drop, future_pointer).await_and_drop()\n\t\t\t@local_exchange.notify()\n\t\t\tif pointer? then new ObjectStateStream(@local_exchange, pointer).do_and_drop_or_return(block) else null\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\tready: (block)->\n\t\ttry\n\t\t\tpointers = @with_pointer (pointer)=>FFI.hakuban_tag_observe_contract_ready(pointer)\n\t\t\t@local_exchange.notify()\n\t\t\tdo_and_drop_or_return(new ObjectStateStream(@local_exchange, pointer) for pointer in pointers, block)\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\nexport class TagExposeContract extends Contract\n\n\tconstructor: (local_exchange, descriptor) ->\n\t\tsuper()\n\t\t@local_exchange = local_exchange\n\t\t@descriptor = descriptor\n\t\t@descriptor = new TagDescriptor(@descriptor) if not (@descriptor instanceof TagDescriptor)\n\t\t@local_exchange.with_pointer (local_exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\n\t\t\t\t@initialize_pointer(@local_exchange, FFI.hakuban_tag_expose_contract_new(local_exchange_pointer, descriptor_pointer), FFI.hakuban_tag_expose_contract_drop)\n\t\t@local_exchange.notify()\n\n\tterminate: ()->\n\t\ttry\n\t\t\t@with_pointer (pointer)=>FFI.hakuban_tag_expose_contract_terminate(pointer)\n\t\t\t@local_exchange.notify()\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\tnext: (block)->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (pointer)=>FFI.hakuban_tag_expose_contract_next(pointer)\n\t\t\tpointer = await new FFI.Future(@local_exchange, @, FFI.hakuban_future_returning_pointer_poll, FFI.hakuban_future_returning_pointer_drop, future_pointer).await_and_drop()\n\t\t\t@local_exchange.notify()\n\t\t\tif pointer? then new ObjectStateSink(@local_exchange, pointer).do_and_drop_or_return(block) else null\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\tready: (block)->\n\t\ttry\n\t\t\tpointers = @with_pointer (pointer)=>FFI.hakuban_tag_expose_contract_ready(pointer)\n\t\t\t@local_exchange.notify()\n\t\t\tdo_and_drop_or_return(new ObjectStateSink(@local_exchange, pointer) for pointer in pointers, block)\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n","export class StreamEnumerator\n\n\tconstructor: (@_stream, @_without_implicit_drop=false, @_async=false)->\n\n\tasync: (block)->\n\t\tnew StreamEnumerator(@_stream, @_without_implicit_drop, true).call_or_return(block)\n\n\twithout_implicit_drop: (block)->\n\t\tnew StreamEnumerator(@_stream, true, @_async).call_or_return(block)\n\n\tcall_or_return: (block)->\n\t\tif block?\n\t\t\t@call(block)\n\t\telse\n\t\t\t@\n\n\tcall: (block)->\n\t\twhile (new_item = await @_stream.next())?\n\t\t\tif @_async\n\t\t\t\t#TODO: will GC eat it before it fullfils?\n\t\t\t\t_promise = new Promise (_resolve)=>\n\t\t\t\t\titem = new_item # :(\n\t\t\t\t\tif @_without_implicit_drop\n\t\t\t\t\t\tawait block(item)\n\t\t\t\t\telse\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t\tawait block(item)\n\t\t\t\t\t\tfinally\n\t\t\t\t\t\t\tawait item.drop()\n\t\t\telse\n\t\t\t\tif @_without_implicit_drop\n\t\t\t\t\tawait block(new_item)\n\t\t\t\telse\n\t\t\t\t\ttry\n\t\t\t\t\t\tawait block(new_item)\n\t\t\t\t\tfinally\n\t\t\t\t\t\tawait new_item.drop()\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject, PointerAlreadyDropped } from \"./ffi-object.coffee\"\nimport { ObjectDescriptor } from \"./descriptor.coffee\"\nimport { ObjectState } from \"./object-state.coffee\"\nimport { StreamEnumerator } from \"./stream.coffee\"\n\n\nexport class ObjectStateStream extends FFIObject\n\n\tconstructor: (local_exchange, pointer)->\n\t\tsuper()\n\t\t@local_exchange = local_exchange\n\t\t@initialize_pointer(@local_exchange, pointer, FFI.hakuban_object_state_stream_drop)\n\n\tdescriptor: ()->\n\t\t@with_pointer (pointer)->new ObjectDescriptor(null, null, FFI.hakuban_object_state_stream_descriptor(pointer))\n\n\tnext: (block)->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (pointer)=>FFI.hakuban_object_state_stream_next(pointer)\n\t\t\tpointer = await new FFI.Future(@local_exchange, @, FFI.hakuban_future_returning_pointer_poll, FFI.hakuban_future_returning_pointer_drop, future_pointer).await_and_drop()\n\t\t\tif pointer? then new ObjectState(null, null, null, null, pointer).do_and_drop_or_return(block) else null\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\n\teach: (block)->\n\t\tnew StreamEnumerator(@).call_or_return(block)\n\n\tcurrent: (block)->\n\t\ttry\n\t\t\tpointer = @with_pointer (pointer)=> FFI.unwrap_pointer_or_null(FFI.hakuban_object_state_stream_current(pointer))\n\t\t\tif pointer? then new ObjectState(null, null, null, null, pointer).do_and_drop_or_return(block) else null\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject } from \"./ffi-object.coffee\"\nimport { ObjectDescriptor } from \"./descriptor.coffee\"\nimport { StreamEnumerator } from \"./stream.coffee\"\n\n\nexport class ObjectStateSinkParams extends FFIObject\n\n\tconstructor: (pointer)->\n\t\tsuper()\n\t\t@initialize_pointer(null, pointer, FFI.hakuban_object_state_sink_params_drop)\n\n\nexport class ObjectStateSink extends FFIObject\n\n\tconstructor: (local_exchange, pointer)->\n\t\tsuper()\n\t\t@local_exchange = local_exchange\n\t\t@initialize_pointer(@local_exchange, pointer, FFI.hakuban_object_state_sink_drop)\n\n\tdescriptor: ()->\n\t\t@with_pointer (pointer)->new ObjectDescriptor(null, null, FFI.hakuban_object_state_sink_descriptor(pointer))\n\n\tsend: (object_state)->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (sink_pointer)=>\n\t\t\t\tobject_state.with_pointer (object_state_pointer)=>\n\t\t\t\t\tFFI.hakuban_object_state_sink_push(sink_pointer, object_state_pointer)\n\t\t\tawait new FFI.Future(@local_exchange, @, FFI.hakuban_future_returning_nothing_poll, FFI.hakuban_future_returning_nothing_drop, future_pointer).await_and_drop()\n\t\t\t@local_exchange.notify()\n\t\t\ttrue\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\tnext: (block)->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (pointer)=>FFI.hakuban_object_state_sink_next(pointer)\n\t\t\tpointer = await new FFI.Future(@local_exchange, @, FFI.hakuban_future_returning_pointer_poll, FFI.hakuban_future_returning_pointer_drop, future_pointer).await_and_drop()\n\t\t\tif pointer? then new ObjectStateSinkParams(pointer).do_and_drop_or_return(block) else null\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\teach: (block)->\n\t\tnew StreamEnumerator(@).call_or_return(block)\n\n\tcurrent: (block)->\n\t\ttry\n\t\t\tpointer = @with_pointer (pointer)=>FFI.unwrap_pointer_or_null(FFI.hakuban_object_state_sink_current(pointer))\n\t\t\tif pointer? then new ObjectStateSinkParams(pointer).do_and_drop_or_return(block) else null\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\tdesynchronize: ()->\n\t\ttry\n\t\t\t@with_pointer (pointer)=>FFI.hakuban_object_state_sink_desynchronize(pointer)\n\t\t\t@local_exchange.notify()\n\t\t\ttrue\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject } from \"./ffi-object.coffee\"\nimport { ObjectObserveContract, ObjectExposeContract, TagObserveContract, TagExposeContract } from \"./contract.coffee\"\n\n\nexport class LocalExchange extends FFIObject\n\n\tconstructor: (name=\"wasm\") ->\n\t\tsuper()\n\t\t@name = name\n\t\t@_notification_sequence = BigInt(0)\n\t\t@_notification_resolve = {}\n\t\t@initialize_pointer(null, FFI.unwrap_pointer(FFI.hakuban_local_exchange_new(@name)),FFI.hakuban_local_exchange_drop)\n\n\tobject: (descriptor_or_tags, json_or_nothing) ->\n\t\tnew ObjectContractBuilder(@, [descriptor_or_tags, json_or_nothing])\n\n\ttag: (descriptor) ->\n\t\tnew TagContractBuilder(@, descriptor)\n\n\tnotified: ()->\n\t\tid = ++@_notification_sequence\n\t\tpromise = new Promise((resolve)=>@_notification_resolve[id]=resolve)\n\t\tpromise.id = id\n\t\tpromise\n\n\tnotify: ()->\n\t\tfor id in @with_pointer (pointer)->FFI.hakuban_local_exchange_notified(pointer)\n\t\t\t# if you want to put console.log here, you forgot to await\n\t\t\tif @_notification_resolve[id]?\n\t\t\t\t@_notification_resolve[id](true)\n\t\t\t\tdelete @_notification_resolve[id]\n\t\n\treturn_notified: (notification_promise)->\n\t\tdelete @_notification_resolve[notification_promise.id]\n\n\nclass ObjectContractBuilder\n\tconstructor: (@local_exchange, @descriptor) -> null\n\tobserve: (block) -> new ObjectObserveContract(@local_exchange, @descriptor).do_and_drop_or_return(block)\n\texpose: (block) -> new ObjectExposeContract(@local_exchange, @descriptor).do_and_drop_or_return(block)\n\n\nclass TagContractBuilder\n\tconstructor: (@local_exchange, @descriptor) -> null\n\tobserve: (block) -> new TagObserveContract(@local_exchange, @descriptor).do_and_drop_or_return(block)\n\texpose: (block) -> new TagExposeContract(@local_exchange, @descriptor).do_and_drop_or_return(block)\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject, PointerAlreadyDropped } from \"./ffi-object.coffee\"\n\n\nexport class RemoteExchange extends FFIObject\n\n\tconstructor: (local_exchange, upstream, diff_produce, diff_request)->\n\t\tsuper()\n\t\t@local_exchange = local_exchange\n\t\t@local_exchange.with_pointer (local_exchange_pointer)=>\n\t\t\t@initialize_pointer(@local_exchange, FFI.hakuban_remote_exchange_new(local_exchange_pointer, upstream, diff_produce, diff_request), FFI.hakuban_remote_exchange_drop)\n\t\t\n\tnext: ()->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (pointer)=>FFI.hakuban_remote_exchange_next_message_to_network(pointer)\n\t\t\tpointer = await new FFI.Future(@local_exchange, @, FFI.hakuban_future_returning_pointer_poll, FFI.hakuban_future_returning_pointer_drop, future_pointer).await_and_drop()\n\t\t\t@local_exchange.notify()\n\t\t\tpointer\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n\tsend: (data)->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (pointer)=>FFI.hakuban_remote_exchange_send_message_from_network(pointer, new Uint8Array(data))\n\t\t\tawait new FFI.Future(@local_exchange, @, FFI.hakuban_future_returning_nothing_poll, FFI.hakuban_future_returning_nothing_drop, future_pointer).await_and_drop()\n\t\t\t@local_exchange.notify()\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n","import * as FFI from \"./ffi.coffee\"\nimport { RemoteExchange } from \"./remote-exchange.coffee\"\n\n\n#TODO: hide private methods\nexport class WebsocketConnector\n\n\tconstructor: (@local_exchange, @uri, @options={})->\n\t\t@_status_change({ connected: false })\n\t\t@socket = undefined\n\t\t@reconnection_timer = undefined\n\t\t@reconnect_on_close = true\n\t\t@connect()\n\n\tstatus: ()->\n\t\tPromise.resolve([ @status, @next_status_promise ])\n\n\t_status_change: (new_status)->\n\t\t@status = new_status\n\t\told_next_status_promise_resolve = @next_status_promise_resolve\n\t\t@next_status_promise = new Promise (@next_status_promise_resolve)=>\n\t\told_next_status_promise_resolve([@status, @next_status_promise]) if old_next_status_promise_resolve?\n\n\tdisconnect: () ->\n\t\t@reconnect_on_close = false\n\t\t@socket.close() if @socket?\n\t\t\n\tconnect: ()=>\n\t\tclearTimeout(@reconnection_timer) if @reconnection_timer?\n\t\t@reconnection_timer = undefined\n\n\t\ttry\n\t\t\t@socket = new WebSocket(@uri)\n\t\tcatch error\n\t\t\tconsole.error('Error connecting to hakuban remote exchange:', error) \n\t\t\t@_status_change({ connected: false, error: error })\n\t\t\treturn false\n\n\t\t@socket.binaryType = \"arraybuffer\"\n\n\t\t@socket.onopen = ()=>\n\t\t\tconsole.debug('Connected to hakuban remote exchange') if @options.debug\n\t\t\t@remote_exchange = new RemoteExchange(@local_exchange, true, true, true)\n\t\t\t@forwarding_to_network_stopped = new Promise (resolve)=>\n\t\t\t\ttry \n\t\t\t\t\twhile @remote_exchange? and (message_pointer = await @remote_exchange.next())?\n\t\t\t\t\t\t@send(FFI.hakuban_message_take(message_pointer))\n\t\t\t\tcatch error\n\t\t\t\t\tconsole.error('Error processing hakuban connection:', error)\n\t\t\t\t\t@socket.close() if @socket?\n\t\t\t\tresolve()\n\t\t\t@_status_change({ connected: true })\n\n\t\t# this may fire even if onopen never did\n\t\t@socket.onclose = (event)=>\n\t\t\tconsole.debug('Disconnected from hakuban remote exchange') if @options.debug and @remote_exchange?\n\t\t\tconsole.debug('Failed to connect to hakuban remote exchange') if @options.debug and !@remote_exchange?\n\t\t\t@_status_change({ connected: false, disconnect_reason: event.reason, clean_disconnect: event.wasClean })\n\t\t\t@socket = undefined\n\t\t\tif @keep_alive_interval?\n\t\t\t\tclearInterval(@keep_alive_interval) \n\t\t\t\t@keep_alive_interval = null\n\t\t\tif @reconnection_timer?\n\t\t\t\tclearTimeout(@reconnection_timer) \n\t\t\t\t@reconnection_timer = null\n\t\t\tif @remote_exchange?\n\t\t\t\tawait @remote_exchange.drop()\n\t\t\t\tawait @forwarding_to_network_stopped\n\t\t\t\t@forwarding_to_network_stopped = null\n\t\t\t\t@remote_exchange = null\n\t\t\tif @reconnect_on_close\n\t\t\t\t@reconnection_timer = setTimeout(@connect, 1000)\n\n\t\t@socket.onmessage = (event) =>\n\t\t\treturn if not @remote_exchange?\n\t\t\ttry\n\t\t\t\tawait @remote_exchange.send(event.data)\n\t\t\tcatch error\n\t\t\t\tconsole.error('Error processing hakuban connection:', error)\n\t\t\t\t@socket.close() if @socket?\n\n\tping: ()=>\n\t\t@socket.send(new Uint8Array()) if @socket\n\n\tsend: (bytes_to_send)=>\n\t\tif bytes_to_send.length > 0\n\t\t\t@socket.send(bytes_to_send)\n\t\t\tclearInterval(@keep_alive_interval) if @keep_alive_interval\n\t\t\t@keep_alive_interval = setInterval(@ping, 10000)\n","import * as hakuban_js from \"../pkg/hakuban.js\"\nimport hakuban_wasm_base64 from \"../pkg/hakuban_bg.wasm\"\nimport { logger_initialize } from \"./logger.coffee\"\n\nexport initialize = (log_level)->\n\t# wow, this is disgusting\n\twasm_string = atob(hakuban_wasm_base64)\n\twasm_array = new Uint8Array(wasm_string.length)\n\tfor i in [0..wasm_string.length]\n\t\twasm_array[i] = wasm_string.charCodeAt(i) \n\tresult = await hakuban_js.default(wasm_array)\n\tlogger_initialize(log_level)\n\tresult\n\nexport { ObjectObserveContract, ObjectExposeContract, TagObserveContract, TagExposeContract } from \"./contract.coffee\"\nexport { ObjectDescriptor, TagDescriptor } from \"./descriptor.coffee\"\nexport { LocalExchange } from \"./exchange.coffee\"\nexport { ObjectState } from \"./object-state.coffee\"\nexport { WebsocketConnector } from \"./websocket-connector.coffee\"\n\n\n"],"names":["wasm","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachedUint8Memory0","Uint8Array","getUint8Memory0","byteLength","memory","buffer","getStringFromWasm0","ptr","len","subarray","heap","Array","fill","undefined","push","heap_next","length","addHeapObject","obj","idx","getObject","takeObject","ret","dropObject","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","encodeInto","arg","view","buf","encode","set","read","written","passStringToWasm0","malloc","realloc","mem","offset","code","charCodeAt","slice","cachedInt32Memory0","Int32Array","getInt32Memory0","debugString","val","type","description","name","isArray","debug","i","builtInMatches","exec","toString","call","className","JSON","stringify","_","Error","message","stack","hakuban_object_observe_contract_drop","object_ptr","hakuban_tag_observe_contract_drop","tag_pointer","cachedUint32Memory0","Uint32Array","getUint32Memory0","getArrayU32FromWasm0","hakuban_tag_descriptor_drop","descriptor_pointer","hakuban_object_descriptor_new","json_string","tag_pointers","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ptr1","passArray32ToWasm0","len1","WasmResultWithPointer","__wrap","hakuban_object_descriptor_drop","hakuban_tag_expose_contract_drop","tag_expose_contract_pointer","cachedBigUint64Memory0","BigUint64Array","getBigUint64Memory0","passArray8ToWasm0","hakuban_object_state_new","version","format_jsvalues","data","synchronized_us_ago","passArray64ToWasm0","array","passArrayJsValueToWasm0","ptr2","len2","hakuban_object_state_drop","object_state_pointer","cachedBigInt64Memory0","BigInt64Array","getArrayI64FromWasm0","hakuban_object_state_format","retptr","__wbindgen_add_to_stack_pointer","r0","r1","v0","result","getArrayJsValueFromWasm0","__wbindgen_free","getArrayU8FromWasm0","hakuban_object_state_stream_drop","object_state_stream_pointer","hakuban_remote_exchange_drop","remote_exchange_pointer","hakuban_message_take","message_pointer","hakuban_future_returning_pointer_poll","local_exchange_pointer","future_pointer","waker_id","hakuban_future_returning_pointer_drop","future","hakuban_future_returning_nothing_drop","hakuban_future_returning_nothing_poll","WasmResultWithNothing","hakuban_object_state_sink_drop","object_state_sink_pointer","hakuban_object_state_sink_params_drop","object_state_sink_params_pointer","hakuban_local_exchange_drop","local_exchange","hakuban_local_exchange_notified","hakuban_object_expose_contract_drop","handleError","f","args","apply","this","e","__wbindgen_exn_store","Object","freeze","Ok","Pending","NotAvailable","InvalidString","InvalidJSON","InvalidURL","InvalidLogLevel","UnknownError","static","create","prototype","__destroy_into_raw","free","__wbg_wasmresultwithnothing_free","status","__wbg_get_wasmresultwithnothing_status","arg0","__wbg_set_wasmresultwithnothing_status","__wbg_wasmresultwithpointer_free","__wbg_get_wasmresultwithpointer_status","__wbg_set_wasmresultwithpointer_status","value","__wbg_get_wasmresultwithpointer_value","__wbg_set_wasmresultwithpointer_value","getImports","imports","wbg","__wbindgen_string_new","arg1","__wbindgen_object_drop_ref","__wbindgen_string_get","x","__wbg_debug_f15cb542ea509609","console","__wbg_error_ef9a0be47931175f","error","__wbg_info_2874fdd5393f35ce","info","__wbg_log_4b5638ad60bdc54a","log","__wbg_warn_58110c4a199df084","warn","__wbg_now_8172cd917e5eda6b","now","__wbg_newnoargs_b5b063fc6c2f0376","Function","__wbg_get_765201544a2b6869","Reflect","get","arguments","__wbg_call_97ae9d8645dc388b","__wbg_self_6d479506f72c6a71","self","__wbg_window_f2557cc78490aceb","window","__wbg_globalThis_7f206bda628d5286","globalThis","__wbg_global_ba75c50d1cf384f4","global","__wbindgen_is_undefined","__wbindgen_object_clone_ref","__wbg_new_abda76e883ba8a5f","__wbg_stack_658279fe44541cf6","__wbg_error_f851667af71bcfc6","__wbindgen_debug_string","__wbindgen_throw","async","init","input","URL","import","meta","url","Request","fetch","instance","module","Response","WebAssembly","instantiateStreaming","headers","bytes","arrayBuffer","instantiate","Instance","load","exports","__wbindgen_wasm_module","finalizeInit","do_and_drop","finalization_registry","unwrap_pointer","unwrap_pointer_or_null","Future","constructor","future_owner","poll_function","drop_function","_pointer","aborted","about_to_drop_notification_received","notified","to_listen","Promise","about_to_drop_notification","lock_id","drop_lock","with_pointer","id","race","drop_release","return_notified","logger_initialize","log_level","skip_if_already_initialized","default_log_level","hakuban_logger_initialize","FFI.hakuban_logger_initialize","FinalizationRegistry","function_and_arg","object_or_objects","block","block_returned_promise","ref","then","finally","object","results","flat","drop","ObjectState_last_generated_version","do_and_drop_or_return","PointerAlreadyDropped","FFIObject","initialize_pointer","_local_exchange","_drop_function","_was_dropped","_drop_locks_sequence","_drop_locks","register","dropped","resolve","all_locks_dropped","keys","_all_locks_dropped_set","values","unregister","notify","raise","ObjectDescriptor","tags","json","pointer","tag","parse","hakuban_object_descriptor_json","FFI.hakuban_object_descriptor_json","hakuban_object_descriptor_tags","FFI.hakuban_object_descriptor_tags","TagDescriptor","FFI.unwrap_pointer","FFI.hakuban_object_descriptor_new","FFI.hakuban_object_descriptor_drop","hakuban_tag_descriptor_new","FFI.hakuban_tag_descriptor_new","FFI.hakuban_tag_descriptor_drop","Contract","ObjectState","format","timestamp","version_element","FFI.hakuban_object_state_drop","hakuban_object_state_version","FFI.hakuban_object_state_version","hakuban_object_state_synchronized_ago","BigInt","asUintN","FFI.hakuban_object_state_synchronized_ago","FFI.hakuban_object_state_format","hakuban_object_state_data","FFI.hakuban_object_state_data","Date","getTime","Math","floor","FFI.hakuban_object_state_new","with_data","with_version","with_format","with_synchronized_us_ago","json_deserialize","json_serialize","concat","StreamEnumerator","_stream","_without_implicit_drop","_async","call_or_return","without_implicit_drop","new_item","next","_resolve","item","ObjectStateStream","FFI.hakuban_object_state_stream_drop","descriptor","hakuban_object_state_stream_descriptor","hakuban_object_state_stream_next","FFI.Future","FFI.hakuban_future_returning_pointer_poll","FFI.hakuban_future_returning_pointer_drop","await_and_drop","error1","each","current","FFI.unwrap_pointer_or_null","hakuban_object_state_stream_current","FFI.hakuban_object_state_stream_current","ObjectStateSinkParams","FFI.hakuban_object_state_sink_params_drop","ObjectStateSink","FFI.hakuban_object_state_sink_drop","hakuban_object_state_sink_descriptor","object_state","sink_pointer","hakuban_object_state_sink_push","FFI.hakuban_object_state_sink_push","FFI.hakuban_future_returning_nothing_poll","FFI.hakuban_future_returning_nothing_drop","hakuban_object_state_sink_next","hakuban_object_state_sink_current","FFI.hakuban_object_state_sink_current","desynchronize","hakuban_object_state_sink_desynchronize","ObjectContractBuilder","TagContractBuilder","ObjectObserveContract","hakuban_object_observe_contract_new","FFI.hakuban_object_observe_contract_new","FFI.hakuban_object_observe_contract_drop","terminate","object_observe_pointer","hakuban_object_observe_contract_terminate","hakuban_object_observe_contract_next","ready","hakuban_object_observe_contract_ready","FFI.hakuban_object_observe_contract_ready","ObjectExposeContract","hakuban_object_expose_contract_new","FFI.hakuban_object_expose_contract_new","FFI.hakuban_object_expose_contract_drop","object_expose_pointer","hakuban_object_expose_contract_terminate","hakuban_object_expose_contract_next","hakuban_object_expose_contract_ready","FFI.hakuban_object_expose_contract_ready","TagObserveContract","hakuban_tag_observe_contract_new","FFI.hakuban_tag_observe_contract_new","FFI.hakuban_tag_observe_contract_drop","tag_observe_pointer","hakuban_tag_observe_contract_terminate","hakuban_tag_observe_contract_next","pointers","hakuban_tag_observe_contract_ready","FFI.hakuban_tag_observe_contract_ready","TagExposeContract","hakuban_tag_expose_contract_new","FFI.hakuban_tag_expose_contract_new","FFI.hakuban_tag_expose_contract_drop","tag_expose_pointer","hakuban_tag_expose_contract_terminate","hakuban_tag_expose_contract_next","hakuban_tag_expose_contract_ready","FFI.hakuban_tag_expose_contract_ready","LocalExchange","_notification_sequence","_notification_resolve","name_str","hakuban_local_exchange_new","FFI.hakuban_local_exchange_new","FFI.hakuban_local_exchange_drop","descriptor_or_tags","json_or_nothing","promise","notification_promise","descriptor1","observe","expose","RemoteExchange","upstream","diff_produce","diff_request","hakuban_remote_exchange_new","FFI.hakuban_remote_exchange_new","FFI.hakuban_remote_exchange_drop","hakuban_remote_exchange_next_message_to_network","message_data","hakuban_remote_exchange_send_message_from_network","FFI.hakuban_remote_exchange_send_message_from_network","WebsocketConnector","uri","options","connect","bind","ping","send","_status_change","connected","socket","reconnection_timer","reconnect_on_close","next_status_promise","new_status","old_next_status_promise_resolve","next_status_promise_resolve","disconnect","close","clearTimeout","WebSocket","binaryType","onopen","remote_exchange","forwarding_to_network_stopped","FFI.hakuban_message_take","onclose","event","disconnect_reason","reason","clean_disconnect","wasClean","keep_alive_interval","clearInterval","setTimeout","onmessage","bytes_to_send","setInterval","initialize","j","wasm_array","wasm_string","atob","hakuban_js.default"],"mappings":"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"}