hakuban 0.8.0 → 0.8.2
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.
- package/hakuban-with-wasm.js +82 -73
- package/hakuban-with-wasm.js.map +1 -1
- package/hakuban-with-wasm.min.js +1 -1
- package/hakuban-with-wasm.min.js.map +1 -1
- package/hakuban.js +82 -73
- package/hakuban.js.map +1 -1
- package/hakuban.min.js +1 -1
- package/hakuban.min.js.map +1 -1
- package/hakuban_bg.wasm +0 -0
- package/package.json +8 -6
- package/hakuban.wasm +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hakuban-with-wasm.min.js","sources":["pkg/hakuban.js","coffee/logger.coffee","coffee/ffi.coffee","coffee/ffi-object.coffee","coffee/object-state.coffee","coffee/descriptor.coffee","coffee/exchange.coffee","coffee/stream.coffee","coffee/object-state-stream.coffee","coffee/object-state-sink.coffee","coffee/contract.coffee","coffee/upstream-connection.coffee","coffee/websocket-connector.coffee","coffee/hakuban-with-wasm.coffee"],"sourcesContent":["let wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\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, 1) >>> 0;\n getUint8ArrayMemory0().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, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\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, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n/**\n * @param {string} default_log_level\n * @returns {WasmResult}\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 WasmResult.__wrap(ret);\n}\n\n/**\n * @param {number} exchange\n * @param {number} descriptor\n * @param {number} capacity\n * @returns {number}\n */\nexport function hakuban_object_expose_contract_new(exchange, descriptor, capacity) {\n const ret = wasm.hakuban_object_expose_contract_new(exchange, descriptor, capacity);\n return ret >>> 0;\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 * @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 >>> 0;\n}\n\n/**\n * @param {number} exchange\n * @param {number} descriptor\n * @returns {number}\n */\nexport function hakuban_object_observe_contract_new(exchange, descriptor) {\n const ret = wasm.hakuban_object_observe_contract_new(exchange, descriptor);\n return ret >>> 0;\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 * @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 >>> 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 >>> 0;\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 >>> 0;\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 >>> 0;\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_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 >>> 0;\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 >>> 0;\n}\n\n/**\n * @param {number} exchange\n * @param {number} descriptor\n * @returns {number}\n */\nexport function hakuban_tag_observe_contract_new(exchange, descriptor) {\n const ret = wasm.hakuban_tag_observe_contract_new(exchange, descriptor);\n return ret >>> 0;\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 * @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 >>> 0;\n}\n\n/**\n * @param {number} exchange_pointer\n * @param {string} local_name\n * @param {string} local_address\n * @returns {number}\n */\nexport function hakuban_upstream_connection_new(exchange_pointer, local_name, local_address) {\n const ptr0 = passStringToWasm0(local_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(local_address, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.hakuban_upstream_connection_new(exchange_pointer, ptr0, len0, ptr1, len1);\n return ret >>> 0;\n}\n\n/**\n * @param {number} wasm_upstream_connection\n */\nexport function hakuban_upstream_connection_drop(wasm_upstream_connection) {\n wasm.hakuban_upstream_connection_drop(wasm_upstream_connection);\n}\n\n/**\n * @param {number} wasm_upstream_connection\n * @returns {number}\n */\nexport function hakuban_upstream_connection_next_message_to_network(wasm_upstream_connection) {\n const ret = wasm.hakuban_upstream_connection_next_message_to_network(wasm_upstream_connection);\n return ret >>> 0;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n * @param {number} message_pointer\n * @returns {Uint8Array}\n */\nexport function hakuban_message_serialize(message_pointer) {\n const ret = wasm.hakuban_message_serialize(message_pointer);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n * @param {number} wasm_upstream_connection\n * @param {Uint8Array} message_data\n * @returns {number}\n */\nexport function hakuban_upstream_connection_send_message_from_network(wasm_upstream_connection, message_data) {\n const ptr0 = passArray8ToWasm0(message_data, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.hakuban_upstream_connection_send_message_from_network(wasm_upstream_connection, ptr0, len0);\n return ret >>> 0;\n}\n\nlet cachedBigUint64ArrayMemory0 = null;\n\nfunction getBigUint64ArrayMemory0() {\n if (cachedBigUint64ArrayMemory0 === null || cachedBigUint64ArrayMemory0.byteLength === 0) {\n cachedBigUint64ArrayMemory0 = new BigUint64Array(wasm.memory.buffer);\n }\n return cachedBigUint64ArrayMemory0;\n}\n\nfunction passArray64ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 8, 8) >>> 0;\n getBigUint64ArrayMemory0().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, 4) >>> 0;\n for (let i = 0; i < array.length; i++) {\n const add = addToExternrefTable0(array[i]);\n getDataViewMemory0().setUint32(ptr + 4 * i, add, true);\n }\n WASM_VECTOR_LEN = array.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 {WasmResult}\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 WasmResult.__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 cachedBigInt64ArrayMemory0 = null;\n\nfunction getBigInt64ArrayMemory0() {\n if (cachedBigInt64ArrayMemory0 === null || cachedBigInt64ArrayMemory0.byteLength === 0) {\n cachedBigInt64ArrayMemory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64ArrayMemory0;\n}\n\nfunction getArrayI64FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getBigInt64ArrayMemory0().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 const ret = wasm.hakuban_object_state_version(object_state_pointer);\n var v1 = getArrayI64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\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 ptr = ptr >>> 0;\n const mem = getDataViewMemory0();\n const result = [];\n for (let i = ptr; i < ptr + 4 * len; i += 4) {\n result.push(wasm.__wbindgen_export_2.get(mem.getUint32(i, true)));\n }\n wasm.__externref_drop_slice(ptr, len);\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 const ret = wasm.hakuban_object_state_format(object_state_pointer);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n}\n\n/**\n * @param {number} object_state_pointer\n * @returns {Uint8Array}\n */\nexport function hakuban_object_state_data(object_state_pointer) {\n const ret = wasm.hakuban_object_state_data(object_state_pointer);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n}\n\n/**\n * @param {string} json_string\n * @returns {WasmResult}\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 WasmResult.__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 let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.hakuban_tag_descriptor_json(descriptor_pointer);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n}\n\nlet cachedUint32ArrayMemory0 = null;\n\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().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 {WasmResult}\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 WasmResult.__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 let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.hakuban_object_descriptor_json(descriptor_pointer);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n/**\n * @param {number} descriptor_pointer\n * @returns {Uint32Array}\n */\nexport function hakuban_object_descriptor_tags(descriptor_pointer) {\n const ret = wasm.hakuban_object_descriptor_tags(descriptor_pointer);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n}\n\n/**\n * @param {number} exchange\n * @param {number} descriptor\n * @param {number} capacity\n * @returns {number}\n */\nexport function hakuban_tag_expose_contract_new(exchange, descriptor, capacity) {\n const ret = wasm.hakuban_tag_expose_contract_new(exchange, descriptor, capacity);\n return ret >>> 0;\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 * @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 >>> 0;\n}\n\n/**\n * @returns {WasmResult}\n */\nexport function hakuban_exchange_new() {\n const ret = wasm.hakuban_exchange_new();\n return WasmResult.__wrap(ret);\n}\n\n/**\n * @param {number} exchange\n */\nexport function hakuban_exchange_drop(exchange) {\n wasm.hakuban_exchange_drop(exchange);\n}\n\nfunction getArrayU64FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getBigUint64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);\n}\n/**\n * @param {number} exchange\n * @returns {BigUint64Array}\n */\nexport function hakuban_exchange_notified(exchange) {\n const ret = wasm.hakuban_exchange_notified(exchange);\n var v1 = getArrayU64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n}\n\n/**\n * @param {number} exchange_pointer\n * @param {number} future_pointer\n * @param {bigint} waker_id\n * @returns {WasmResult}\n */\nexport function hakuban_future_poll(exchange_pointer, future_pointer, waker_id) {\n const ret = wasm.hakuban_future_poll(exchange_pointer, future_pointer, waker_id);\n return WasmResult.__wrap(ret);\n}\n\n/**\n * @param {number} future\n */\nexport function hakuban_future_drop(future) {\n wasm.hakuban_future_drop(future);\n}\n\n/**\n * @enum {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}\n */\nexport const WasmResultStatus = Object.freeze({\n Ok: 0, \"0\": \"Ok\",\n Pointer: 1, \"1\": \"Pointer\",\n Pending: 2, \"2\": \"Pending\",\n EndOfStream: 3, \"3\": \"EndOfStream\",\n InvalidString: 4, \"4\": \"InvalidString\",\n InvalidJSON: 5, \"5\": \"InvalidJSON\",\n InvalidURL: 6, \"6\": \"InvalidURL\",\n InvalidLogLevel: 7, \"7\": \"InvalidLogLevel\",\n LoggerInitializationError: 8, \"8\": \"LoggerInitializationError\",\n ConnectionTerminated: 9, \"9\": \"ConnectionTerminated\",\n});\n\nconst WasmResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmresult_free(ptr >>> 0, 1));\n\nexport class WasmResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(WasmResult.prototype);\n obj.__wbg_ptr = ptr;\n WasmResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmresult_free(ptr, 0);\n }\n /**\n * @returns {WasmResultStatus}\n */\n get status() {\n const ret = wasm.__wbg_get_wasmresult_status(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {WasmResultStatus} arg0\n */\n set status(arg0) {\n wasm.__wbg_set_wasmresult_status(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number | undefined}\n */\n get pointer() {\n const ret = wasm.__wbg_get_wasmresult_pointer(this.__wbg_ptr);\n return ret === 0x100000001 ? undefined : ret;\n }\n /**\n * @param {number | null} [arg0]\n */\n set pointer(arg0) {\n wasm.__wbg_set_wasmresult_pointer(this.__wbg_ptr, isLikeNone(arg0) ? 0x100000001 : (arg0) >>> 0);\n }\n /**\n * @returns {string | undefined}\n */\n get error_message() {\n const ret = wasm.__wbg_get_wasmresult_error_message(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @param {string | null} [arg0]\n */\n set error_message(arg0) {\n var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.__wbg_set_wasmresult_error_message(this.__wbg_ptr, ptr0, len0);\n }\n}\n\nasync function __wbg_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 __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_call_672a4d21634d4a24 = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_debug_3cb59063b29f58c1 = function(arg0) {\n console.debug(arg0);\n };\n imports.wbg.__wbg_error_524f506f44df1645 = function(arg0) {\n console.error(arg0);\n };\n imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_info_3daf2e093e091b66 = function(arg0) {\n console.info(arg0);\n };\n imports.wbg.__wbg_log_c222819a41e063d3 = function(arg0) {\n console.log(arg0);\n };\n imports.wbg.__wbg_new_8a6f238a6ece86ea = function() {\n const ret = new Error();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_105ed471475aaf50 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_now_2c95c9de01293173 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_performance_7a3ffd0b17f663ad = function(arg0) {\n const ret = arg0.performance;\n return ret;\n };\n imports.wbg.__wbg_stack_0ed75d68575b0f3c = function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_88a902d13a557d07 = function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0 = function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_SELF_37c5d418e4bf5819 = function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_WINDOW_5de37043a91a9c40 = function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_warn_4ca3906c248c47c4 = function(arg0) {\n console.warn(arg0);\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64ArrayMemory0 = null;\n cachedBigUint64ArrayMemory0 = null;\n cachedDataViewMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(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 __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('hakuban_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import * as FFI from \"./ffi.coffee\"\n\nlogger_initialized = false\nlogger_log_level = undefined\n\nexport logger_initialize = (log_level, skip_if_already_initialized=false) ->\n\tif !logger_initialized || !skip_if_already_initialized \n\t\tresult = FFI.hakuban_logger_initialize(log_level)\n\t\tif result.status == 0\n\t\t\tlogger_initialized = true\n\t\t\tlogger_log_level = log_level\n\t\telse\n\t\t\tconsole.error \"Failed to initialize logger, error \" + result.error_message\n\nexport log_level = () -> logger_log_level\n\n","import { log_level } from \"./logger.coffee\"\n\nexport * from \"../pkg/hakuban.js\"\n\nexport unwrap_pointer = (result)->\n\tif result.status == 1\n\t\tresult.pointer\n\telse\n\t\tthrow \"hakuban wasm call failed: \"+result.status\n\n\t\t\n\nexport class Future\n\n\tconstructor: (@exchange, @future_owner, @poll_function, @drop_function, @_pointer, @debug_description)->\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 = @exchange.notified()\n\t\t\t\tconsole.debug(\"polling \" + @debug_description, notified.id) if @debug_description and log_level() == \"trace\"\n\t\t\t\tresult = @exchange.with_pointer (exchange_pointer)=> @poll_function(exchange_pointer, @_pointer, notified.id)\n\t\t\t\tconsole.debug(\"polled \" + @debug_description, notified.id, result.status) if @debug_description and log_level() == \"trace\"\n\t\t\t\t@exchange.notify()\n\t\t\t\tswitch result.status\n\t\t\t\t\twhen 0 # ok\n\t\t\t\t\t\treturn true\n\t\t\t\t\twhen 1 # pointer\n\t\t\t\t\t\treturn result.pointer\n\t\t\t\t\twhen 2 # 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 3 # end of stream\n\t\t\t\t\t\treturn null\n\t\t\t\t\telse\n\t\t\t\t\t\tconsole.error(result.error_message)\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@exchange.return_notified(notified) if notified?\n\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\ndo_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: (@_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@_exchange.notify() if @_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","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\n\t@from_pointer: (_exchange, pointer)->\n\t\tnew ObjectState(null, null, null, null, pointer)\n\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 } from \"./ffi-object.coffee\"\nimport { ObjectObserveContract, ObjectExposeContract, TagObserveContract, TagExposeContract } from \"./contract.coffee\"\n\n\nexport class Exchange 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_exchange_new(@name)),FFI.hakuban_exchange_drop)\n\n\tobject_observe_contract: (descriptor_or_tags, json_or_nothing) ->\n\t\tnew ObjectObserveContractBuilder(@, [descriptor_or_tags, json_or_nothing])\n\n\tobject_expose_contract: (descriptor_or_tags, json_or_nothing) ->\n\t\tnew ObjectExposeContractBuilder(@, [descriptor_or_tags, json_or_nothing])\n\n\ttag_observe_contract: (descriptor) ->\n\t\tnew TagObserveContractBuilder(@, descriptor)\n\n\ttag_expose_contract: (descriptor) ->\n\t\tnew TagExposeContractBuilder(@, 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_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 ObjectObserveContractBuilder\n\tconstructor: (@exchange, @descriptor) -> null\n\tbuild: (block) -> new ObjectObserveContract(@exchange, @descriptor).do_and_drop_or_return(block)\n\nclass ObjectExposeContractBuilder\n\tconstructor: (@exchange, @descriptor) -> @capacity = 1\n\twith_capacity: (capacity) -> @capacity = capacity\n\tbuild: (block) -> new ObjectExposeContract(@exchange, @descriptor, @capacity).do_and_drop_or_return(block)\n\n\nclass TagObserveContractBuilder\n\tconstructor: (@exchange, @descriptor) -> null\n\tbuild: (block) -> new TagObserveContract(@exchange, @descriptor).do_and_drop_or_return(block)\n\nclass TagExposeContractBuilder\n\tconstructor: (@exchange, @descriptor) -> @capacity = 1\n\twith_capacity: (capacity) -> @capacity = capacity\n\tbuild: (block) -> new TagExposeContract(@exchange, @descriptor, @capacity).do_and_drop_or_return(block)\n","import * as FFI from \"./ffi.coffee\"\nimport { PointerAlreadyDropped } from \"./ffi-object.coffee\"\n\nexport class Stream\n\n\t@mixin: (new_object, _ffi_next, _item_constructor, debug_description)->\n\n\t\t# Rust StreamExt-like methods\n\n\t\tnew_object.next = (block)->\n\t\t\ttry\n\t\t\t\tfuture_pointer = @with_pointer (pointer)=>_ffi_next(pointer)\n\t\t\t\tpointer = await new FFI.Future(@exchange, @, FFI.hakuban_future_poll, FFI.hakuban_future_drop, future_pointer, debug_description+\".next\").await_and_drop()\n\t\t\t\tif pointer?\n\t\t\t\t\tif _item_constructor?\n\t\t\t\t\t\tawait new _item_constructor(@exchange, pointer).do_and_drop_or_return(block)\n\t\t\t\t\telse \n\t\t\t\t\t\tpointer\n\t\t\t\telse\n\t\t\t\t\tnull\n\t\t\tcatch error\n\t\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\t\tthrow error\n\n\n\t\tnew_object.for_each_concurrent = (block)->\n\n\t\t\t#TODO: simplify when we get rid of coffee\n\t\t\ttask = (tasks, id, item)->\n\t\t\t\tnew Promise (_resolve)=>\n\t\t\t\t\ttry\n\t\t\t\t\t\tawait block(item)\n\t\t\t\t\tfinally\n\t\t\t\t\t\tawait item.drop()\n\t\t\t\t\t\tdelete tasks[id]\n\n\t\t\ttasks = {}\n\t\t\tsequence = 0\n\t\t\tfor await item from @\n\t\t\t\tid = ++sequence\n\t\t\t\ttasks[id] = task(tasks, id, item)\n\t\t\t\t\n\t\t\tawait Promise.all(Object.values(tasks))\n\n\n\t\tnew_object.for_each = (block)->\n\t\t\tfor await item from @\n\t\t\t\ttry\n\t\t\t\t\tawait block(item)\n\t\t\t\tfinally\n\t\t\t\t\tawait item.drop()\n\n\n\t\t# JS AsyncIterator methods\n\n\t\tclass StreamAsyncIterator\n\t\n\t\t\tconstructor: (stream)->\n\n\t\t\t\t@next = ()->\n\t\t\t\t\titem = await stream.next()\n\t\t\t\t\tif item?\n\t\t\t\t\t\t{ done: false, value: item }\n\t\t\t\t\telse\n\t\t\t\t\t\t{ done: true }\n\n\t\t\t\t@return = (value)->\n\t\t\t\t\tstream.drop()\n\t\t\t\t\t{ done: true, value: value }\n\n\t\tnew_object[Symbol.asyncIterator]=()-> new StreamAsyncIterator(@)\n\n\n\n\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject } from \"./ffi-object.coffee\"\nimport { ObjectDescriptor } from \"./descriptor.coffee\"\nimport { ObjectState } from \"./object-state.coffee\"\nimport { Stream } from \"./stream.coffee\"\n\n\nexport class ObjectStateStream extends FFIObject\n\n\tconstructor: (exchange, pointer)->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_object_state_stream_next, ((_exchange, pointer)->new ObjectState(null, null, null, null, pointer)), \"ObjectStateStream\")\n\t\t@exchange = exchange\n\t\t@initialize_pointer(@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","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject, PointerAlreadyDropped } from \"./ffi-object.coffee\"\nimport { ObjectDescriptor } from \"./descriptor.coffee\"\nimport { Stream } from \"./stream.coffee\"\n\n\nexport class ObjectStateSinkParams extends FFIObject\n\n\tconstructor: (_exchange,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: (exchange, pointer)->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_object_state_sink_next, ObjectStateSinkParams)\n\t\t@exchange = exchange\n\t\t@initialize_pointer(@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(@exchange, @, FFI.hakuban_future_poll, FFI.hakuban_future_drop, future_pointer).await_and_drop()\n\t\t\ttrue\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject } 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 { Stream } from \"./stream.coffee\"\n\n\t\nexport class ObjectObserveContract extends FFIObject\n\n\tconstructor: (exchange, descriptor) ->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_object_observe_contract_next, ObjectStateStream)\n\t\t@exchange = 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@exchange.with_pointer (exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\t\n\t\t\t\t@initialize_pointer(@exchange, FFI.hakuban_object_observe_contract_new(exchange_pointer, descriptor_pointer), FFI.hakuban_object_observe_contract_drop)\n\t\t@exchange.notify()\n\t\t\n\n\nexport class ObjectExposeContract extends FFIObject\n\n\tconstructor: (exchange, descriptor, capacity)->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_object_expose_contract_next, ObjectStateSink)\n\t\t@exchange = 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@exchange.with_pointer (exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\n\t\t\t\t@initialize_pointer(@exchange, FFI.hakuban_object_expose_contract_new(exchange_pointer, descriptor_pointer, capacity), FFI.hakuban_object_expose_contract_drop)\n\t\t@exchange.notify()\n\n\n\nexport class TagObserveContract extends FFIObject\n\n\tconstructor: (exchange, descriptor) ->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_tag_observe_contract_next, ObjectStateStream)\n\t\t@exchange = exchange\n\t\t@descriptor = descriptor\n\t\t@descriptor = new TagDescriptor(@descriptor) if not (@descriptor instanceof TagDescriptor)\n\t\t@exchange.with_pointer (exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\n\t\t\t\t@initialize_pointer(@exchange, FFI.hakuban_tag_observe_contract_new(exchange_pointer, descriptor_pointer), FFI.hakuban_tag_observe_contract_drop)\n\t\t@exchange.notify()\n\n\n\nexport class TagExposeContract extends FFIObject\n\n\tconstructor: (exchange, descriptor, capacity) ->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_tag_expose_contract_next, ObjectStateSink)\n\t\t@exchange = exchange\n\t\t@descriptor = descriptor\n\t\t@descriptor = new TagDescriptor(@descriptor) if not (@descriptor instanceof TagDescriptor)\n\t\t@exchange.with_pointer (exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\n\t\t\t\t@initialize_pointer(@exchange, FFI.hakuban_tag_expose_contract_new(exchange_pointer, descriptor_pointer, capacity), FFI.hakuban_tag_expose_contract_drop)\n\t\t@exchange.notify()\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject, PointerAlreadyDropped } from \"./ffi-object.coffee\"\nimport { Stream } from \"./stream.coffee\"\n\n\nexport class UpstreamConnection extends FFIObject\n\n\tconstructor: (exchange, local_name, local_address)->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_upstream_connection_next_message_to_network, undefined, \"UpstreamConnection\")\n\t\t@exchange = exchange\n\t\t@exchange.with_pointer (exchange_pointer)=>\n\t\t\t@initialize_pointer(@exchange, FFI.hakuban_upstream_connection_new(exchange_pointer, local_name, local_address), FFI.hakuban_upstream_connection_drop)\n\n\tsend: (data)->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (pointer)=>FFI.hakuban_upstream_connection_send_message_from_network(pointer, new Uint8Array(data))\n\t\t\tawait new FFI.Future(@exchange, @, FFI.hakuban_future_poll, FFI.hakuban_future_drop, future_pointer, \"UpstreamConnection.send\").await_and_drop()\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n","import * as FFI from \"./ffi.coffee\"\nimport { UpstreamConnection } from \"./upstream-connection.coffee\"\n\n\n#TODO: hide private methods\n#TODO: implement timeout\n#TODO: make timeout and keep-alive interval configurable\n\nexport class WebsocketConnector\n\n\tconstructor: (@exchange, @uri)->\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\t#TOOD: make this iterable\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 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 = (event)=>\n\t\t\tconsole.debug('Connected to remote exchange')\n\t\t\t@upstream_connection = new UpstreamConnection(@exchange, \"js-client\", \"unknown\")\n\t\t\t@forwarding_to_network_stopped = new Promise (resolve)=>\n\t\t\t\ttry \n\t\t\t\t\tfor await message_pointer from @upstream_connection\n\t\t\t\t\t\t@send(FFI.hakuban_message_serialize(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 remote exchange')\n\t\t\tconsole.debug('Failed to connect to 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 @upstream_connection?\n\t\t\t\tawait @upstream_connection.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@upstream_connection = 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 (event.data.byteLength == 0) or (event.data.length == 0) or (typeof event.data == 'string') or (event.data instanceof String)\n\t\t\treturn if not @upstream_connection?\n\t\t\ttry\n\t\t\t\tawait @upstream_connection.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(\".\") if @socket?\n\n\tsend: (bytes_to_send)=>\n\t\t@socket.send(bytes_to_send)\n\t\tclearInterval(@keep_alive_interval) if @keep_alive_interval\n\t\t@keep_alive_interval = setInterval(@ping, 10000)\n","import * as hakuban_js from \"../pkg/hakuban.js\"\nimport hakuban_wasm_gzip_base64 from \"../hakuban.wasm.gz\"\nimport { logger_initialize } from \"./logger.coffee\"\n\nexport initialize = (log_level)->\n\twasm_array = new Blob(await Array.fromAsync((await fetch('data:;base64,'+hakuban_wasm_gzip_base64)).body.pipeThrough(new DecompressionStream(\"gzip\")))).arrayBuffer()\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 { Exchange } from \"./exchange.coffee\"\nexport { ObjectState } from \"./object-state.coffee\"\nexport { WebsocketConnector } from \"./websocket-connector.coffee\"\n\n\n"],"names":["wasm","addToExternrefTable0","obj","idx","__externref_table_alloc","__wbindgen_export_2","set","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","Error","cachedUint8ArrayMemory0","getUint8ArrayMemory0","byteLength","Uint8Array","memory","buffer","getStringFromWasm0","ptr","len","subarray","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","length","written","passStringToWasm0","malloc","realloc","undefined","mem","offset","code","charCodeAt","slice","cachedDataViewMemory0","getDataViewMemory0","detached","DataView","isLikeNone","x","hakuban_object_expose_contract_drop","object_ptr","hakuban_object_expose_contract_next","object_expose_pointer","hakuban_object_observe_contract_drop","hakuban_object_observe_contract_next","object_observe_pointer","hakuban_object_state_sink_drop","object_state_sink_pointer","hakuban_object_state_sink_next","hakuban_object_state_sink_params_drop","object_state_sink_params_pointer","hakuban_object_state_stream_drop","object_state_stream_pointer","hakuban_object_state_stream_next","hakuban_tag_observe_contract_drop","tag_pointer","hakuban_tag_observe_contract_next","tag_observe_pointer","hakuban_upstream_connection_drop","wasm_upstream_connection","hakuban_upstream_connection_next_message_to_network","getArrayU8FromWasm0","hakuban_message_serialize","message_pointer","ret","v1","__wbindgen_free","passArray8ToWasm0","cachedBigUint64ArrayMemory0","getBigUint64ArrayMemory0","BigUint64Array","hakuban_object_state_new","version","format_jsvalues","data","synchronized_us_ago","ptr0","passArray64ToWasm0","__wbindgen_malloc","len0","ptr1","array","i","add","setUint32","passArrayJsValueToWasm0","len1","ptr2","len2","WasmResult","__wrap","hakuban_object_state_drop","object_state_pointer","cachedBigInt64ArrayMemory0","getArrayI64FromWasm0","BigInt64Array","hakuban_object_state_format","result","push","get","getUint32","__externref_drop_slice","getArrayJsValueFromWasm0","hakuban_tag_descriptor_drop","descriptor_pointer","cachedUint32ArrayMemory0","getUint32ArrayMemory0","Uint32Array","hakuban_object_descriptor_new","json_string","tag_pointers","__wbindgen_realloc","passArray32ToWasm0","hakuban_object_descriptor_drop","hakuban_object_descriptor_tags","hakuban_tag_expose_contract_drop","tag_expose_contract_pointer","hakuban_tag_expose_contract_next","tag_expose_pointer","hakuban_exchange_drop","exchange","hakuban_exchange_notified","hakuban_future_poll","exchange_pointer","future_pointer","waker_id","hakuban_future_drop","future","Object","freeze","Ok","Pointer","Pending","EndOfStream","InvalidString","InvalidJSON","InvalidURL","InvalidLogLevel","LoggerInitializationError","ConnectionTerminated","WasmResultFinalization","FinalizationRegistry","register","unregister","__wbg_wasmresult_free","create","prototype","__wbg_ptr","__destroy_into_raw","this","free","status","__wbg_get_wasmresult_status","arg0","__wbg_set_wasmresult_status","pointer","__wbg_get_wasmresult_pointer","__wbg_set_wasmresult_pointer","error_message","__wbg_get_wasmresult_error_message","__wbg_set_wasmresult_error_message","__wbg_get_imports","imports","wbg","__wbg_call_672a4d21634d4a24","f","args","apply","e","__wbindgen_exn_store","handleError","arg1","call","arguments","__wbg_debug_3cb59063b29f58c1","console","debug","__wbg_error_524f506f44df1645","error","__wbg_error_7534b8e9a36f1ab4","deferred0_0","deferred0_1","__wbg_info_3daf2e093e091b66","info","__wbg_log_c222819a41e063d3","log","__wbg_new_8a6f238a6ece86ea","__wbg_newnoargs_105ed471475aaf50","Function","__wbg_now_2c95c9de01293173","now","__wbg_performance_7a3ffd0b17f663ad","performance","__wbg_stack_0ed75d68575b0f3c","stack","setInt32","__wbg_static_accessor_GLOBAL_88a902d13a557d07","global","__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0","globalThis","__wbg_static_accessor_SELF_37c5d418e4bf5819","self","__wbg_static_accessor_WINDOW_5de37043a91a9c40","window","__wbg_warn_4ca3906c248c47c4","warn","__wbindgen_init_externref_table","table","grow","__wbindgen_is_undefined","__wbindgen_string_get","__wbindgen_string_new","__wbindgen_throw","async","__wbg_init","module_or_path","getPrototypeOf","URL","url","Request","fetch","instance","module","Response","WebAssembly","instantiateStreaming","headers","bytes","arrayBuffer","instantiate","Instance","__wbg_load","exports","__wbindgen_wasm_module","__wbindgen_start","__wbg_finalize_init","logger_initialized","logger_log_level","unwrap_pointer","Future","constructor","future_owner","poll_function","drop_function","_pointer","debug_description","await_and_drop","aborted","about_to_drop_notification_received","notified","to_listen","Promise","about_to_drop_notification","lock_id","drop_lock","log_level","id","with_pointer","notify","race","drop_release","return_notified","do_and_drop","do_and_drop_or_return","finalization_registry","logger_initialize","skip_if_already_initialized","default_log_level","hakuban_logger_initialize","FFI.hakuban_logger_initialize","function_and_arg","object_or_objects","block","block_returned_promise","ref","then","finally","object","results","flat","drop","ObjectState_last_generated_version","PointerAlreadyDropped","message","FFIObject","initialize_pointer","_exchange","_drop_function","_was_dropped","_drop_locks_sequence","_drop_locks","dropped","resolve","all_locks_dropped","keys","_all_locks_dropped_set","values","raise","ObjectDescriptor","tags","json","tag","JSON","parse","deferred1_0","deferred1_1","hakuban_object_descriptor_json","FFI.hakuban_object_descriptor_json","FFI.hakuban_object_descriptor_tags","TagDescriptor","FFI.unwrap_pointer","FFI.hakuban_object_descriptor_new","stringify","FFI.hakuban_object_descriptor_drop","hakuban_tag_descriptor_new","FFI.hakuban_tag_descriptor_new","FFI.hakuban_tag_descriptor_drop","ObjectExposeContractBuilder","ObjectObserveContractBuilder","TagExposeContractBuilder","TagObserveContractBuilder","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","from_pointer","FFI.hakuban_object_state_new","with_data","with_version","with_format","with_synchronized_us_ago","json_deserialize","json_serialize","concat","Stream","mixin","new_object","_ffi_next","_item_constructor","StreamAsyncIterator","next","FFI.Future","FFI.hakuban_future_poll","FFI.hakuban_future_drop","error1","for_each_concurrent","item","sequence","task","tasks","_resolve","all","for_each","stream","done","value","return","Symbol","asyncIterator","ObjectStateStream","FFI.hakuban_object_state_stream_next","FFI.hakuban_object_state_stream_drop","descriptor","hakuban_object_state_stream_descriptor","ObjectStateSinkParams","FFI.hakuban_object_state_sink_params_drop","ObjectStateSink","FFI.hakuban_object_state_sink_next","FFI.hakuban_object_state_sink_drop","hakuban_object_state_sink_descriptor","send","object_state","sink_pointer","hakuban_object_state_sink_push","FFI.hakuban_object_state_sink_push","ObjectObserveContract","FFI.hakuban_object_observe_contract_next","hakuban_object_observe_contract_new","FFI.hakuban_object_observe_contract_new","FFI.hakuban_object_observe_contract_drop","ObjectExposeContract","capacity","FFI.hakuban_object_expose_contract_next","hakuban_object_expose_contract_new","FFI.hakuban_object_expose_contract_new","FFI.hakuban_object_expose_contract_drop","TagObserveContract","FFI.hakuban_tag_observe_contract_next","hakuban_tag_observe_contract_new","FFI.hakuban_tag_observe_contract_new","FFI.hakuban_tag_observe_contract_drop","TagExposeContract","FFI.hakuban_tag_expose_contract_next","hakuban_tag_expose_contract_new","FFI.hakuban_tag_expose_contract_new","FFI.hakuban_tag_expose_contract_drop","Exchange","name","_notification_sequence","_notification_resolve","hakuban_exchange_new","FFI.hakuban_exchange_new","FFI.hakuban_exchange_drop","object_observe_contract","descriptor_or_tags","json_or_nothing","object_expose_contract","tag_observe_contract","tag_expose_contract","promise","notification_promise","descriptor1","build","with_capacity","UpstreamConnection","local_name","local_address","FFI.hakuban_upstream_connection_next_message_to_network","hakuban_upstream_connection_new","FFI.hakuban_upstream_connection_new","FFI.hakuban_upstream_connection_drop","message_data","hakuban_upstream_connection_send_message_from_network","FFI.hakuban_upstream_connection_send_message_from_network","WebsocketConnector","connect","bind","ping","uri","_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","event","upstream_connection","forwarding_to_network_stopped","FFI.hakuban_message_serialize","onclose","disconnect_reason","reason","clean_disconnect","wasClean","keep_alive_interval","clearInterval","setTimeout","onmessage","String","bytes_to_send","setInterval","initialize","wasm_array","Blob","Array","fromAsync","body","pipeThrough","DecompressionStream","hakuban_js.default"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hakuban-with-wasm.min.js","sources":["pkg/hakuban.js","coffee/logger.coffee","coffee/ffi.coffee","coffee/ffi-object.coffee","coffee/object-state.coffee","coffee/descriptor.coffee","coffee/exchange.coffee","coffee/stream.coffee","coffee/object-state-stream.coffee","coffee/object-state-sink.coffee","coffee/contract.coffee","coffee/upstream-connection.coffee","coffee/websocket-connector.coffee","coffee/hakuban-with-wasm.coffee"],"sourcesContent":["let wasm;\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_export_2.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\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, 1) >>> 0;\n getUint8ArrayMemory0().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, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\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, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n/**\n * @returns {WasmResult}\n */\nexport function hakuban_exchange_new() {\n const ret = wasm.hakuban_exchange_new();\n return WasmResult.__wrap(ret);\n}\n\n/**\n * @param {number} exchange\n */\nexport function hakuban_exchange_drop(exchange) {\n wasm.hakuban_exchange_drop(exchange);\n}\n\nlet cachedBigUint64ArrayMemory0 = null;\n\nfunction getBigUint64ArrayMemory0() {\n if (cachedBigUint64ArrayMemory0 === null || cachedBigUint64ArrayMemory0.byteLength === 0) {\n cachedBigUint64ArrayMemory0 = new BigUint64Array(wasm.memory.buffer);\n }\n return cachedBigUint64ArrayMemory0;\n}\n\nfunction getArrayU64FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getBigUint64ArrayMemory0().subarray(ptr / 8, ptr / 8 + len);\n}\n/**\n * @param {number} exchange\n * @returns {BigUint64Array}\n */\nexport function hakuban_exchange_notified(exchange) {\n const ret = wasm.hakuban_exchange_notified(exchange);\n var v1 = getArrayU64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\n}\n\n/**\n * @param {number} exchange\n * @param {number} descriptor\n * @param {number} capacity\n * @returns {number}\n */\nexport function hakuban_object_expose_contract_new(exchange, descriptor, capacity) {\n const ret = wasm.hakuban_object_expose_contract_new(exchange, descriptor, capacity);\n return ret >>> 0;\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 * @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 >>> 0;\n}\n\n/**\n * @param {number} exchange\n * @param {number} descriptor\n * @returns {number}\n */\nexport function hakuban_object_observe_contract_new(exchange, descriptor) {\n const ret = wasm.hakuban_object_observe_contract_new(exchange, descriptor);\n return ret >>> 0;\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 * @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 >>> 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 >>> 0;\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 >>> 0;\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 >>> 0;\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_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 >>> 0;\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 >>> 0;\n}\n\n/**\n * @param {number} exchange\n * @param {number} descriptor\n * @returns {number}\n */\nexport function hakuban_tag_observe_contract_new(exchange, descriptor) {\n const ret = wasm.hakuban_tag_observe_contract_new(exchange, descriptor);\n return ret >>> 0;\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 * @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 >>> 0;\n}\n\n/**\n * @param {number} exchange_pointer\n * @param {string} local_name\n * @param {string} local_address\n * @returns {number}\n */\nexport function hakuban_upstream_connection_new(exchange_pointer, local_name, local_address) {\n const ptr0 = passStringToWasm0(local_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(local_address, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.hakuban_upstream_connection_new(exchange_pointer, ptr0, len0, ptr1, len1);\n return ret >>> 0;\n}\n\n/**\n * @param {number} wasm_upstream_connection\n */\nexport function hakuban_upstream_connection_drop(wasm_upstream_connection) {\n wasm.hakuban_upstream_connection_drop(wasm_upstream_connection);\n}\n\n/**\n * @param {number} wasm_upstream_connection\n * @returns {number}\n */\nexport function hakuban_upstream_connection_next_message_to_network(wasm_upstream_connection) {\n const ret = wasm.hakuban_upstream_connection_next_message_to_network(wasm_upstream_connection);\n return ret >>> 0;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n * @param {number} message_pointer\n * @returns {Uint8Array}\n */\nexport function hakuban_message_serialize(message_pointer) {\n const ret = wasm.hakuban_message_serialize(message_pointer);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n/**\n * @param {number} wasm_upstream_connection\n * @param {Uint8Array} message_data\n * @returns {number}\n */\nexport function hakuban_upstream_connection_send_message_from_network(wasm_upstream_connection, message_data) {\n const ptr0 = passArray8ToWasm0(message_data, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.hakuban_upstream_connection_send_message_from_network(wasm_upstream_connection, ptr0, len0);\n return ret >>> 0;\n}\n\n/**\n * @param {number} exchange_pointer\n * @param {number} future_pointer\n * @param {bigint} waker_id\n * @returns {WasmResult}\n */\nexport function hakuban_future_poll(exchange_pointer, future_pointer, waker_id) {\n const ret = wasm.hakuban_future_poll(exchange_pointer, future_pointer, waker_id);\n return WasmResult.__wrap(ret);\n}\n\n/**\n * @param {number} future\n */\nexport function hakuban_future_drop(future) {\n wasm.hakuban_future_drop(future);\n}\n\nfunction passArray64ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 8, 8) >>> 0;\n getBigUint64ArrayMemory0().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, 4) >>> 0;\n for (let i = 0; i < array.length; i++) {\n const add = addToExternrefTable0(array[i]);\n getDataViewMemory0().setUint32(ptr + 4 * i, add, true);\n }\n WASM_VECTOR_LEN = array.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 {WasmResult}\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 WasmResult.__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 cachedBigInt64ArrayMemory0 = null;\n\nfunction getBigInt64ArrayMemory0() {\n if (cachedBigInt64ArrayMemory0 === null || cachedBigInt64ArrayMemory0.byteLength === 0) {\n cachedBigInt64ArrayMemory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64ArrayMemory0;\n}\n\nfunction getArrayI64FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getBigInt64ArrayMemory0().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 const ret = wasm.hakuban_object_state_version(object_state_pointer);\n var v1 = getArrayI64FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 8, 8);\n return v1;\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 ptr = ptr >>> 0;\n const mem = getDataViewMemory0();\n const result = [];\n for (let i = ptr; i < ptr + 4 * len; i += 4) {\n result.push(wasm.__wbindgen_export_2.get(mem.getUint32(i, true)));\n }\n wasm.__externref_drop_slice(ptr, len);\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 const ret = wasm.hakuban_object_state_format(object_state_pointer);\n var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n}\n\n/**\n * @param {number} object_state_pointer\n * @returns {Uint8Array}\n */\nexport function hakuban_object_state_data(object_state_pointer) {\n const ret = wasm.hakuban_object_state_data(object_state_pointer);\n var v1 = getArrayU8FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n return v1;\n}\n\n/**\n * @param {string} default_log_level\n * @returns {WasmResult}\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 WasmResult.__wrap(ret);\n}\n\n/**\n * @param {string} json_string\n * @returns {WasmResult}\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 WasmResult.__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 let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.hakuban_tag_descriptor_json(descriptor_pointer);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n}\n\nlet cachedUint32ArrayMemory0 = null;\n\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\n\nfunction passArray32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getUint32ArrayMemory0().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 {WasmResult}\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 WasmResult.__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 let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.hakuban_object_descriptor_json(descriptor_pointer);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);\n }\n}\n\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\n/**\n * @param {number} descriptor_pointer\n * @returns {Uint32Array}\n */\nexport function hakuban_object_descriptor_tags(descriptor_pointer) {\n const ret = wasm.hakuban_object_descriptor_tags(descriptor_pointer);\n var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);\n return v1;\n}\n\n/**\n * @param {number} exchange\n * @param {number} descriptor\n * @param {number} capacity\n * @returns {number}\n */\nexport function hakuban_tag_expose_contract_new(exchange, descriptor, capacity) {\n const ret = wasm.hakuban_tag_expose_contract_new(exchange, descriptor, capacity);\n return ret >>> 0;\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 * @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 >>> 0;\n}\n\n/**\n * @enum {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}\n */\nexport const WasmResultStatus = Object.freeze({\n Ok: 0, \"0\": \"Ok\",\n Pointer: 1, \"1\": \"Pointer\",\n Pending: 2, \"2\": \"Pending\",\n EndOfStream: 3, \"3\": \"EndOfStream\",\n InvalidString: 4, \"4\": \"InvalidString\",\n InvalidJSON: 5, \"5\": \"InvalidJSON\",\n InvalidURL: 6, \"6\": \"InvalidURL\",\n InvalidLogLevel: 7, \"7\": \"InvalidLogLevel\",\n LoggerInitializationError: 8, \"8\": \"LoggerInitializationError\",\n ConnectionTerminated: 9, \"9\": \"ConnectionTerminated\",\n});\n\nconst WasmResultFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmresult_free(ptr >>> 0, 1));\n\nexport class WasmResult {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(WasmResult.prototype);\n obj.__wbg_ptr = ptr;\n WasmResultFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmResultFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmresult_free(ptr, 0);\n }\n /**\n * @returns {WasmResultStatus}\n */\n get status() {\n const ret = wasm.__wbg_get_wasmresult_status(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {WasmResultStatus} arg0\n */\n set status(arg0) {\n wasm.__wbg_set_wasmresult_status(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number | undefined}\n */\n get pointer() {\n const ret = wasm.__wbg_get_wasmresult_pointer(this.__wbg_ptr);\n return ret === 0x100000001 ? undefined : ret;\n }\n /**\n * @param {number | null} [arg0]\n */\n set pointer(arg0) {\n wasm.__wbg_set_wasmresult_pointer(this.__wbg_ptr, isLikeNone(arg0) ? 0x100000001 : (arg0) >>> 0);\n }\n /**\n * @returns {string | undefined}\n */\n get error_message() {\n const ret = wasm.__wbg_get_wasmresult_error_message(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @param {string | null} [arg0]\n */\n set error_message(arg0) {\n var ptr0 = isLikeNone(arg0) ? 0 : passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.__wbg_set_wasmresult_error_message(this.__wbg_ptr, ptr0, len0);\n }\n}\n\nasync function __wbg_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 __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_call_672a4d21634d4a24 = function() { return handleError(function (arg0, arg1) {\n const ret = arg0.call(arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_debug_3cb59063b29f58c1 = function(arg0) {\n console.debug(arg0);\n };\n imports.wbg.__wbg_error_524f506f44df1645 = function(arg0) {\n console.error(arg0);\n };\n imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_info_3daf2e093e091b66 = function(arg0) {\n console.info(arg0);\n };\n imports.wbg.__wbg_log_c222819a41e063d3 = function(arg0) {\n console.log(arg0);\n };\n imports.wbg.__wbg_new_8a6f238a6ece86ea = function() {\n const ret = new Error();\n return ret;\n };\n imports.wbg.__wbg_newnoargs_105ed471475aaf50 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_now_2c95c9de01293173 = function(arg0) {\n const ret = arg0.now();\n return ret;\n };\n imports.wbg.__wbg_performance_7a3ffd0b17f663ad = function(arg0) {\n const ret = arg0.performance;\n return ret;\n };\n imports.wbg.__wbg_stack_0ed75d68575b0f3c = function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_88a902d13a557d07 = function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0 = function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_SELF_37c5d418e4bf5819 = function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_static_accessor_WINDOW_5de37043a91a9c40 = function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addToExternrefTable0(ret);\n };\n imports.wbg.__wbg_warn_4ca3906c248c47c4 = function(arg0) {\n console.warn(arg0);\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_2;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = arg0 === undefined;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64ArrayMemory0 = null;\n cachedBigUint64ArrayMemory0 = null;\n cachedDataViewMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(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 __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('hakuban_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import * as FFI from \"./ffi.coffee\"\n\nlogger_initialized = false\nlogger_log_level = undefined\n\nexport logger_initialize = (log_level, skip_if_already_initialized=false) ->\n\tif !logger_initialized || !skip_if_already_initialized \n\t\tresult = FFI.hakuban_logger_initialize(log_level)\n\t\tif result.status == 0\n\t\t\tlogger_initialized = true\n\t\t\tlogger_log_level = log_level\n\t\telse\n\t\t\tconsole.error \"Failed to initialize logger, error \" + result.error_message\n\nexport log_level = () -> logger_log_level\n\n","import { log_level } from \"./logger.coffee\"\n\nexport * from \"../pkg/hakuban.js\"\n\nexport unwrap_pointer = (result)->\n\tif result.status == 1\n\t\tresult.pointer\n\telse\n\t\tthrow \"hakuban wasm call failed: \"+result.status\n\n\t\t\n\nexport class Future\n\n\tconstructor: (@exchange, @future_owner, @poll_function, @drop_function, @_pointer, @debug_description)->\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 = @exchange.notified()\n\t\t\t\tconsole.debug(\"polling \" + @debug_description, notified.id) if @debug_description and log_level() == \"trace\"\n\t\t\t\tresult = @exchange.with_pointer (exchange_pointer)=> @poll_function(exchange_pointer, @_pointer, notified.id)\n\t\t\t\tconsole.debug(\"polled \" + @debug_description, notified.id, result.status) if @debug_description and log_level() == \"trace\"\n\t\t\t\t@exchange.notify()\n\t\t\t\tswitch result.status\n\t\t\t\t\twhen 0 # ok\n\t\t\t\t\t\treturn true\n\t\t\t\t\twhen 1 # pointer\n\t\t\t\t\t\treturn result.pointer\n\t\t\t\t\twhen 2 # 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 3 # end of stream\n\t\t\t\t\t\treturn null\n\t\t\t\t\telse\n\t\t\t\t\t\tconsole.error(result.error_message)\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@exchange.return_notified(notified) if notified?\n\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\ndo_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: (@_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@_exchange.notify() if @_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","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\n\t@from_pointer: (_exchange, pointer)->\n\t\tnew ObjectState(null, null, null, null, pointer)\n\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 } from \"./ffi-object.coffee\"\nimport { ObjectObserveContract, ObjectExposeContract, TagObserveContract, TagExposeContract } from \"./contract.coffee\"\n\n\nexport class Exchange 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_exchange_new(@name)),FFI.hakuban_exchange_drop)\n\n\tobject_observe_contract: (descriptor_or_tags, json_or_nothing) ->\n\t\tnew ObjectObserveContractBuilder(@, [descriptor_or_tags, json_or_nothing])\n\n\tobject_expose_contract: (descriptor_or_tags, json_or_nothing) ->\n\t\tnew ObjectExposeContractBuilder(@, [descriptor_or_tags, json_or_nothing])\n\n\ttag_observe_contract: (descriptor) ->\n\t\tnew TagObserveContractBuilder(@, descriptor)\n\n\ttag_expose_contract: (descriptor) ->\n\t\tnew TagExposeContractBuilder(@, 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_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 ObjectObserveContractBuilder\n\tconstructor: (@exchange, @descriptor) -> null\n\tbuild: (block) -> new ObjectObserveContract(@exchange, @descriptor).do_and_drop_or_return(block)\n\nclass ObjectExposeContractBuilder\n\tconstructor: (@exchange, @descriptor) -> @capacity = 1\n\twith_capacity: (capacity) -> @capacity = capacity\n\tbuild: (block) -> new ObjectExposeContract(@exchange, @descriptor, @capacity).do_and_drop_or_return(block)\n\n\nclass TagObserveContractBuilder\n\tconstructor: (@exchange, @descriptor) -> null\n\tbuild: (block) -> new TagObserveContract(@exchange, @descriptor).do_and_drop_or_return(block)\n\nclass TagExposeContractBuilder\n\tconstructor: (@exchange, @descriptor) -> @capacity = 1\n\twith_capacity: (capacity) -> @capacity = capacity\n\tbuild: (block) -> new TagExposeContract(@exchange, @descriptor, @capacity).do_and_drop_or_return(block)\n","import * as FFI from \"./ffi.coffee\"\nimport { PointerAlreadyDropped } from \"./ffi-object.coffee\"\n\nexport class Stream\n\n\t@mixin: (new_object, _ffi_next, _item_constructor, debug_description)->\n\n\t\t# Rust StreamExt-like methods\n\n\t\tnew_object.next = (block)->\n\t\t\ttry\n\t\t\t\tfuture_pointer = @with_pointer (pointer)=>_ffi_next(pointer)\n\t\t\t\tpointer = await new FFI.Future(@exchange, @, FFI.hakuban_future_poll, FFI.hakuban_future_drop, future_pointer, debug_description+\".next\").await_and_drop()\n\t\t\t\tif pointer?\n\t\t\t\t\tif _item_constructor?\n\t\t\t\t\t\tawait new _item_constructor(@exchange, pointer).do_and_drop_or_return(block)\n\t\t\t\t\telse \n\t\t\t\t\t\tpointer\n\t\t\t\telse\n\t\t\t\t\tnull\n\t\t\tcatch error\n\t\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\t\tthrow error\n\n\n\t\tnew_object.for_each_concurrent = (block)->\n\n\t\t\t#TODO: simplify when we get rid of coffee\n\t\t\ttask = (tasks, id, item)->\n\t\t\t\tnew Promise (_resolve)=>\n\t\t\t\t\ttry\n\t\t\t\t\t\tawait block(item)\n\t\t\t\t\tfinally\n\t\t\t\t\t\tawait item.drop()\n\t\t\t\t\t\tdelete tasks[id]\n\n\t\t\ttasks = {}\n\t\t\tsequence = 0\n\t\t\tfor await item from @\n\t\t\t\tid = ++sequence\n\t\t\t\ttasks[id] = task(tasks, id, item)\n\t\t\t\t\n\t\t\tawait Promise.all(Object.values(tasks))\n\n\n\t\tnew_object.for_each = (block)->\n\t\t\tfor await item from @\n\t\t\t\ttry\n\t\t\t\t\tawait block(item)\n\t\t\t\tfinally\n\t\t\t\t\tawait item.drop()\n\n\n\t\t# JS AsyncIterator methods\n\n\t\tclass StreamAsyncIterator\n\t\n\t\t\tconstructor: (stream)->\n\n\t\t\t\t@next = ()->\n\t\t\t\t\titem = await stream.next()\n\t\t\t\t\tif item?\n\t\t\t\t\t\t{ done: false, value: item }\n\t\t\t\t\telse\n\t\t\t\t\t\t{ done: true }\n\n\t\t\t\t@return = (value)->\n\t\t\t\t\tstream.drop()\n\t\t\t\t\t{ done: true, value: value }\n\n\t\tnew_object[Symbol.asyncIterator]=()-> new StreamAsyncIterator(@)\n\n\n\n\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject } from \"./ffi-object.coffee\"\nimport { ObjectDescriptor } from \"./descriptor.coffee\"\nimport { ObjectState } from \"./object-state.coffee\"\nimport { Stream } from \"./stream.coffee\"\n\n\nexport class ObjectStateStream extends FFIObject\n\n\tconstructor: (exchange, pointer)->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_object_state_stream_next, ((_exchange, pointer)->new ObjectState(null, null, null, null, pointer)), \"ObjectStateStream\")\n\t\t@exchange = exchange\n\t\t@initialize_pointer(@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","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject, PointerAlreadyDropped } from \"./ffi-object.coffee\"\nimport { ObjectDescriptor } from \"./descriptor.coffee\"\nimport { Stream } from \"./stream.coffee\"\n\n\nexport class ObjectStateSinkParams extends FFIObject\n\n\tconstructor: (_exchange,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: (exchange, pointer)->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_object_state_sink_next, ObjectStateSinkParams)\n\t\t@exchange = exchange\n\t\t@initialize_pointer(@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(@exchange, @, FFI.hakuban_future_poll, FFI.hakuban_future_drop, future_pointer).await_and_drop()\n\t\t\ttrue\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject } 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 { Stream } from \"./stream.coffee\"\n\n\t\nexport class ObjectObserveContract extends FFIObject\n\n\tconstructor: (exchange, descriptor) ->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_object_observe_contract_next, ObjectStateStream)\n\t\t@exchange = 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@exchange.with_pointer (exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\t\n\t\t\t\t@initialize_pointer(@exchange, FFI.hakuban_object_observe_contract_new(exchange_pointer, descriptor_pointer), FFI.hakuban_object_observe_contract_drop)\n\t\t@exchange.notify()\n\t\t\n\n\nexport class ObjectExposeContract extends FFIObject\n\n\tconstructor: (exchange, descriptor, capacity)->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_object_expose_contract_next, ObjectStateSink)\n\t\t@exchange = 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@exchange.with_pointer (exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\n\t\t\t\t@initialize_pointer(@exchange, FFI.hakuban_object_expose_contract_new(exchange_pointer, descriptor_pointer, capacity), FFI.hakuban_object_expose_contract_drop)\n\t\t@exchange.notify()\n\n\n\nexport class TagObserveContract extends FFIObject\n\n\tconstructor: (exchange, descriptor) ->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_tag_observe_contract_next, ObjectStateStream)\n\t\t@exchange = exchange\n\t\t@descriptor = descriptor\n\t\t@descriptor = new TagDescriptor(@descriptor) if not (@descriptor instanceof TagDescriptor)\n\t\t@exchange.with_pointer (exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\n\t\t\t\t@initialize_pointer(@exchange, FFI.hakuban_tag_observe_contract_new(exchange_pointer, descriptor_pointer), FFI.hakuban_tag_observe_contract_drop)\n\t\t@exchange.notify()\n\n\n\nexport class TagExposeContract extends FFIObject\n\n\tconstructor: (exchange, descriptor, capacity) ->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_tag_expose_contract_next, ObjectStateSink)\n\t\t@exchange = exchange\n\t\t@descriptor = descriptor\n\t\t@descriptor = new TagDescriptor(@descriptor) if not (@descriptor instanceof TagDescriptor)\n\t\t@exchange.with_pointer (exchange_pointer)=>\n\t\t\t@descriptor.with_pointer (descriptor_pointer)=>\n\t\t\t\t@initialize_pointer(@exchange, FFI.hakuban_tag_expose_contract_new(exchange_pointer, descriptor_pointer, capacity), FFI.hakuban_tag_expose_contract_drop)\n\t\t@exchange.notify()\n","import * as FFI from \"./ffi.coffee\"\nimport { FFIObject, PointerAlreadyDropped } from \"./ffi-object.coffee\"\nimport { Stream } from \"./stream.coffee\"\n\n\nexport class UpstreamConnection extends FFIObject\n\n\tconstructor: (exchange, local_name, local_address)->\n\t\tsuper()\n\t\tStream.mixin(@, FFI.hakuban_upstream_connection_next_message_to_network, undefined, \"UpstreamConnection\")\n\t\t@exchange = exchange\n\t\t@exchange.with_pointer (exchange_pointer)=>\n\t\t\t@initialize_pointer(@exchange, FFI.hakuban_upstream_connection_new(exchange_pointer, local_name, local_address), FFI.hakuban_upstream_connection_drop)\n\n\tsend: (data)->\n\t\ttry\n\t\t\tfuture_pointer = @with_pointer (pointer)=>FFI.hakuban_upstream_connection_send_message_from_network(pointer, new Uint8Array(data))\n\t\t\tawait new FFI.Future(@exchange, @, FFI.hakuban_future_poll, FFI.hakuban_future_drop, future_pointer, \"UpstreamConnection.send\").await_and_drop()\n\t\tcatch error\n\t\t\treturn null if error instanceof PointerAlreadyDropped\n\t\t\tthrow error\n\n","import * as FFI from \"./ffi.coffee\"\nimport { UpstreamConnection } from \"./upstream-connection.coffee\"\n\n\n#TODO: hide private methods\n#TODO: implement timeout\n#TODO: make timeout and keep-alive interval configurable\n\nexport class WebsocketConnector\n\n\tconstructor: (@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@heartbeat_interval = (options.heartbeat_interval or 60000)\n\t\t@connect()\n\n\t#TOOD: make this iterable\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\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 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 = (event)=>\n\t\t\tconsole.debug('Connected to remote exchange')\n\t\t\t@upstream_connection = new UpstreamConnection(@exchange, \"js-client\", \"unknown\")\n\t\t\t@forwarding_to_network_stopped = new Promise (resolve)=>\n\t\t\t\ttry\n\t\t\t\t\tfor await message_pointer from @upstream_connection\n\t\t\t\t\t\t@send(FFI.hakuban_message_serialize(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\tif @upstream_connection?\n\t\t\t\tconsole.debug('Disconnected from remote exchange')\n\t\t\telse\n\t\t\t\tconsole.debug('Failed to connect to remote exchange')\n\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 @heartbeat_timeout?\n\t\t\t\tclearTimeout(@heartbeat_timeout)\n\t\t\t\t@heartbeat_timeout = 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 @upstream_connection?\n\t\t\t\tawait @upstream_connection.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@upstream_connection = 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 (event.data.byteLength == 0) or (event.data.length == 0) or (typeof event.data == 'string') or (event.data instanceof String)\n\t\t\treturn if not @upstream_connection?\n\t\t\ttry\n\t\t\t\tawait @upstream_connection.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\theartbeat: ()=>\n\t\tif @socket?\n\t\t\t@socket.send(\".\")\n\t\t\t@heartbeat_timeout = setTimeout(@heartbeat, @heartbeat_interval)\n\t\telse\n\t\t\t@heartbeat_timeout = null\n\n\tsend: (bytes_to_send)=>\n\t\t@socket.send(bytes_to_send)\n\t\tclearTimeout(@heartbeat_timeout) if @heartbeat_timeout?\n\t\t@heartbeat_timeout = setTimeout(@heartbeat, @heartbeat_interval)\n","import * as hakuban_js from \"../pkg/hakuban.js\"\nimport hakuban_wasm_gzip_base64 from \"../pkg/hakuban_bg.wasm.gz\"\nimport { logger_initialize } from \"./logger.coffee\"\n\nexport initialize = (log_level)->\n\twasm_array = new Blob(await Array.fromAsync((await fetch('data:;base64,'+hakuban_wasm_gzip_base64)).body.pipeThrough(new DecompressionStream(\"gzip\")))).arrayBuffer()\n\tresult = await hakuban_js.default({module_or_path: 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 { Exchange } from \"./exchange.coffee\"\nexport { ObjectState } from \"./object-state.coffee\"\nexport { WebsocketConnector } from \"./websocket-connector.coffee\"\n\n\n"],"names":["wasm","addToExternrefTable0","obj","idx","__externref_table_alloc","__wbindgen_export_2","set","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","Error","cachedUint8ArrayMemory0","getUint8ArrayMemory0","byteLength","Uint8Array","memory","buffer","getStringFromWasm0","ptr","len","subarray","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","length","written","passStringToWasm0","malloc","realloc","undefined","mem","offset","code","charCodeAt","slice","cachedDataViewMemory0","getDataViewMemory0","detached","DataView","isLikeNone","x","hakuban_exchange_drop","exchange","cachedBigUint64ArrayMemory0","getBigUint64ArrayMemory0","BigUint64Array","hakuban_exchange_notified","ret","v1","__wbindgen_free","hakuban_object_expose_contract_drop","object_ptr","hakuban_object_expose_contract_next","object_expose_pointer","hakuban_object_observe_contract_drop","hakuban_object_observe_contract_next","object_observe_pointer","hakuban_object_state_sink_drop","object_state_sink_pointer","hakuban_object_state_sink_next","hakuban_object_state_sink_params_drop","object_state_sink_params_pointer","hakuban_object_state_stream_drop","object_state_stream_pointer","hakuban_object_state_stream_next","hakuban_tag_observe_contract_drop","tag_pointer","hakuban_tag_observe_contract_next","tag_observe_pointer","hakuban_upstream_connection_drop","wasm_upstream_connection","hakuban_upstream_connection_next_message_to_network","getArrayU8FromWasm0","hakuban_message_serialize","message_pointer","passArray8ToWasm0","hakuban_future_poll","exchange_pointer","future_pointer","waker_id","WasmResult","__wrap","hakuban_future_drop","future","hakuban_object_state_new","version","format_jsvalues","data","synchronized_us_ago","ptr0","passArray64ToWasm0","__wbindgen_malloc","len0","ptr1","array","i","add","setUint32","passArrayJsValueToWasm0","len1","ptr2","len2","hakuban_object_state_drop","object_state_pointer","cachedBigInt64ArrayMemory0","getArrayI64FromWasm0","BigInt64Array","hakuban_object_state_format","result","push","get","getUint32","__externref_drop_slice","getArrayJsValueFromWasm0","hakuban_tag_descriptor_drop","descriptor_pointer","cachedUint32ArrayMemory0","getUint32ArrayMemory0","Uint32Array","hakuban_object_descriptor_new","json_string","tag_pointers","__wbindgen_realloc","passArray32ToWasm0","hakuban_object_descriptor_drop","hakuban_object_descriptor_tags","hakuban_tag_expose_contract_drop","tag_expose_contract_pointer","hakuban_tag_expose_contract_next","tag_expose_pointer","Object","freeze","Ok","Pointer","Pending","EndOfStream","InvalidString","InvalidJSON","InvalidURL","InvalidLogLevel","LoggerInitializationError","ConnectionTerminated","WasmResultFinalization","FinalizationRegistry","register","unregister","__wbg_wasmresult_free","create","prototype","__wbg_ptr","__destroy_into_raw","this","free","status","__wbg_get_wasmresult_status","arg0","__wbg_set_wasmresult_status","pointer","__wbg_get_wasmresult_pointer","__wbg_set_wasmresult_pointer","error_message","__wbg_get_wasmresult_error_message","__wbg_set_wasmresult_error_message","__wbg_get_imports","imports","wbg","__wbg_call_672a4d21634d4a24","f","args","apply","e","__wbindgen_exn_store","handleError","arg1","call","arguments","__wbg_debug_3cb59063b29f58c1","console","debug","__wbg_error_524f506f44df1645","error","__wbg_error_7534b8e9a36f1ab4","deferred0_0","deferred0_1","__wbg_info_3daf2e093e091b66","info","__wbg_log_c222819a41e063d3","log","__wbg_new_8a6f238a6ece86ea","__wbg_newnoargs_105ed471475aaf50","Function","__wbg_now_2c95c9de01293173","now","__wbg_performance_7a3ffd0b17f663ad","performance","__wbg_stack_0ed75d68575b0f3c","stack","setInt32","__wbg_static_accessor_GLOBAL_88a902d13a557d07","global","__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0","globalThis","__wbg_static_accessor_SELF_37c5d418e4bf5819","self","__wbg_static_accessor_WINDOW_5de37043a91a9c40","window","__wbg_warn_4ca3906c248c47c4","warn","__wbindgen_init_externref_table","table","grow","__wbindgen_is_undefined","__wbindgen_string_get","__wbindgen_string_new","__wbindgen_throw","async","__wbg_init","module_or_path","getPrototypeOf","URL","url","Request","fetch","instance","module","Response","WebAssembly","instantiateStreaming","headers","bytes","arrayBuffer","instantiate","Instance","__wbg_load","exports","__wbindgen_wasm_module","__wbindgen_start","__wbg_finalize_init","logger_initialized","logger_log_level","unwrap_pointer","Future","constructor","future_owner","poll_function","drop_function","_pointer","debug_description","await_and_drop","aborted","about_to_drop_notification_received","notified","to_listen","Promise","about_to_drop_notification","lock_id","drop_lock","log_level","id","with_pointer","notify","race","drop_release","return_notified","do_and_drop","do_and_drop_or_return","finalization_registry","logger_initialize","skip_if_already_initialized","default_log_level","hakuban_logger_initialize","FFI.hakuban_logger_initialize","function_and_arg","object_or_objects","block","block_returned_promise","ref","then","finally","object","results","flat","drop","ObjectState_last_generated_version","PointerAlreadyDropped","message","FFIObject","initialize_pointer","_exchange","_drop_function","_was_dropped","_drop_locks_sequence","_drop_locks","dropped","resolve","all_locks_dropped","keys","_all_locks_dropped_set","values","raise","ObjectDescriptor","tags","json","tag","JSON","parse","deferred1_0","deferred1_1","hakuban_object_descriptor_json","FFI.hakuban_object_descriptor_json","FFI.hakuban_object_descriptor_tags","TagDescriptor","FFI.unwrap_pointer","FFI.hakuban_object_descriptor_new","stringify","FFI.hakuban_object_descriptor_drop","hakuban_tag_descriptor_new","FFI.hakuban_tag_descriptor_new","FFI.hakuban_tag_descriptor_drop","ObjectExposeContractBuilder","ObjectObserveContractBuilder","TagExposeContractBuilder","TagObserveContractBuilder","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","from_pointer","FFI.hakuban_object_state_new","with_data","with_version","with_format","with_synchronized_us_ago","json_deserialize","json_serialize","concat","Stream","mixin","new_object","_ffi_next","_item_constructor","StreamAsyncIterator","next","FFI.Future","FFI.hakuban_future_poll","FFI.hakuban_future_drop","error1","for_each_concurrent","item","sequence","task","tasks","_resolve","all","for_each","stream","done","value","return","Symbol","asyncIterator","ObjectStateStream","FFI.hakuban_object_state_stream_next","FFI.hakuban_object_state_stream_drop","descriptor","hakuban_object_state_stream_descriptor","ObjectStateSinkParams","FFI.hakuban_object_state_sink_params_drop","ObjectStateSink","FFI.hakuban_object_state_sink_next","FFI.hakuban_object_state_sink_drop","hakuban_object_state_sink_descriptor","send","object_state","sink_pointer","hakuban_object_state_sink_push","FFI.hakuban_object_state_sink_push","ObjectObserveContract","FFI.hakuban_object_observe_contract_next","hakuban_object_observe_contract_new","FFI.hakuban_object_observe_contract_new","FFI.hakuban_object_observe_contract_drop","ObjectExposeContract","capacity","FFI.hakuban_object_expose_contract_next","hakuban_object_expose_contract_new","FFI.hakuban_object_expose_contract_new","FFI.hakuban_object_expose_contract_drop","TagObserveContract","FFI.hakuban_tag_observe_contract_next","hakuban_tag_observe_contract_new","FFI.hakuban_tag_observe_contract_new","FFI.hakuban_tag_observe_contract_drop","TagExposeContract","FFI.hakuban_tag_expose_contract_next","hakuban_tag_expose_contract_new","FFI.hakuban_tag_expose_contract_new","FFI.hakuban_tag_expose_contract_drop","Exchange","name","_notification_sequence","_notification_resolve","hakuban_exchange_new","FFI.hakuban_exchange_new","FFI.hakuban_exchange_drop","object_observe_contract","descriptor_or_tags","json_or_nothing","object_expose_contract","tag_observe_contract","tag_expose_contract","promise","notification_promise","descriptor1","build","with_capacity","UpstreamConnection","local_name","local_address","FFI.hakuban_upstream_connection_next_message_to_network","hakuban_upstream_connection_new","FFI.hakuban_upstream_connection_new","FFI.hakuban_upstream_connection_drop","message_data","hakuban_upstream_connection_send_message_from_network","FFI.hakuban_upstream_connection_send_message_from_network","WebsocketConnector","uri","options","connect","bind","heartbeat","_status_change","connected","socket","reconnection_timer","reconnect_on_close","heartbeat_interval","next_status_promise","new_status","old_next_status_promise_resolve","next_status_promise_resolve","disconnect","close","clearTimeout","WebSocket","binaryType","onopen","event","upstream_connection","forwarding_to_network_stopped","FFI.hakuban_message_serialize","onclose","disconnect_reason","reason","clean_disconnect","wasClean","heartbeat_timeout","setTimeout","onmessage","String","bytes_to_send","initialize","wasm_array","Blob","Array","fromAsync","body","pipeThrough","DecompressionStream","hakuban_js.default"],"mappings":"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"}
|