@perspective-dev/client 4.2.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/ts/virtual_server.ts", "../wasm/perspective-js.js", "../../src/ts/websocket.ts", "../../src/ts/wasm/browser.ts", "../../../../node_modules/.pnpm/pro_self_extracting_wasm@0.0.9/node_modules/pro_self_extracting_wasm/extract.mjs", "../../src/ts/wasm/decompress.ts", "worker:../../src/ts/perspective-server.js", "worker-stub:../../src/ts/perspective-server.worker.js", "../../src/ts/perspective.browser.ts", "../../src/ts/perspective.cdn.ts"],
4
- "sourcesContent": ["// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\nimport { ColumnType } from \"./ts-rs/ColumnType.ts\";\nimport { ViewConfig } from \"./ts-rs/ViewConfig.ts\";\nimport { ViewWindow } from \"./ts-rs/ViewWindow.ts\";\n\nimport type * as perspective from \"../../dist/wasm/perspective-js.js\";\n\n/**\n * VirtualServer API for implementing custom data sources in JavaScript/WASM.\n *\n * The VirtualServer pattern allows you to create custom data sources that\n * integrate with Perspective's protocol. This is useful for:\n * - Connecting to external databases (DuckDB, PostgreSQL, etc.)\n * - Streaming data from APIs or message queues\n * - Implementing custom aggregation or transformation logic\n * - Creating data adapters without copying data into Perspective tables\n *\n * @module virtual_server\n */\n\nexport interface ServerFeatures {\n expressions?: boolean;\n}\n\n/**\n * Handler interface that you implement to provide custom data sources.\n *\n * All methods will be called by the VirtualServer when handling protocol\n * messages from Perspective clients. Methods can return values directly or\n * return Promises for asynchronous operations (e.g., database queries).\n */\nexport interface VirtualServerHandler {\n getHostedTables(): string[] | Promise<string[]>;\n tableSchema(\n tableId: string,\n ): Record<string, ColumnType> | Promise<Record<string, ColumnType>>;\n tableSize(tableId: string): number | Promise<number>;\n tableMakeView(\n tableId: string,\n viewId: string,\n config: ViewConfig,\n ): void | Promise<void>;\n viewDelete(viewId: string): void | Promise<void>;\n viewGetData(\n viewId: string,\n config: ViewConfig,\n schema: Record<string, ColumnType>,\n viewport: ViewWindow,\n dataSlice: perspective.VirtualDataSlice,\n ): void | Promise<void>;\n viewSchema?(\n viewId: string,\n config?: ViewConfig,\n ): Record<string, ColumnType> | Promise<Record<string, ColumnType>>;\n viewSize?(viewId: string): number | Promise<number>;\n tableValidateExpression?(\n tableId: string,\n expression: string,\n ): ColumnType | Promise<ColumnType>;\n getFeatures?(): ServerFeatures | Promise<ServerFeatures>;\n makeTable?(\n tableId: string,\n data: string | Uint8Array,\n ): void | Promise<void>;\n}\n\nexport function createMessageHandler(\n mod: typeof perspective,\n handler: VirtualServerHandler,\n) {\n let virtualServer: perspective.VirtualServer;\n async function postMessage(port: MessagePort, msg: MessageEvent) {\n if (msg.data.cmd === \"init\") {\n try {\n virtualServer = new mod.VirtualServer(handler);\n if (msg.data.id !== undefined) {\n port.postMessage({ id: msg.data.id });\n } else {\n port.postMessage(null);\n }\n } catch (error) {\n console.error(\"Error initializing worker:\", error);\n throw error;\n }\n } else {\n try {\n const requestBytes = new Uint8Array(msg.data);\n const responseBytes =\n await virtualServer.handleRequest(requestBytes);\n const buffer = responseBytes.slice().buffer;\n port.postMessage(buffer, { transfer: [buffer] });\n } catch (error) {\n console.error(\"Error handling request in worker:\", error);\n throw error;\n }\n }\n }\n\n const channel = new MessageChannel();\n channel.port1.onmessage = (message) => {\n postMessage(channel.port1, message);\n };\n\n return channel.port2;\n}\n", "/* @ts-self-types=\"./perspective-js.wasm.d.ts\" */\n\n/**\n * An instance of a [`Client`] is a connection to a single\n * `perspective_server::Server`, whether locally in-memory or remote over some\n * transport like a WebSocket.\n *\n * The browser and node.js libraries both support the `websocket(url)`\n * constructor, which connects to a remote `perspective_server::Server`\n * instance over a WebSocket transport.\n *\n * In the browser, the `worker()` constructor creates a new Web Worker\n * `perspective_server::Server` and returns a [`Client`] connected to it.\n *\n * In node.js, a pre-instantied [`Client`] connected synhronously to a global\n * singleton `perspective_server::Server` is the default module export.\n *\n * # JavaScript Examples\n *\n * Create a Web Worker `perspective_server::Server` in the browser and return a\n * [`Client`] instance connected for it:\n *\n * ```javascript\n * import perspective from \"@perspective-dev/client\";\n * const client = await perspective.worker();\n * ```\n *\n * Create a WebSocket connection to a remote `perspective_server::Server`:\n *\n * ```javascript\n * import perspective from \"@perspective-dev/client\";\n * const client = await perspective.websocket(\"ws://locahost:8080/ws\");\n * ```\n *\n * Access the synchronous client in node.js:\n *\n * ```javascript\n * import { default as client } from \"@perspective-dev/client\";\n * ```\n */\nexport class Client {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Client.prototype);\n obj.__wbg_ptr = ptr;\n ClientFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ClientFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_client_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n __getClassname() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.client___getClassname(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var v1 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Retrieves the names of all tables that this client has access to.\n *\n * `name` is a string identifier unique to the [`Table`] (per [`Client`]),\n * which can be used in conjunction with [`Client::open_table`] to get\n * a [`Table`] instance without the use of [`Client::table`]\n * constructor directly (e.g., one created by another [`Client`]).\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const tables = await client.get_hosted_table_names();\n * ```\n * @returns {Promise<string[]>}\n */\n get_hosted_table_names() {\n const ret = wasm.client_get_hosted_table_names(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * @param {string} error\n * @param {Function | null} [reconnect]\n * @returns {Promise<void>}\n */\n handle_error(error, reconnect) {\n const ptr0 = passStringToWasm0(error, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.client_handle_error(this.__wbg_ptr, ptr0, len0, isLikeNone(reconnect) ? 0 : addHeapObject(reconnect));\n return takeObject(ret);\n }\n /**\n * @param {any} value\n * @returns {Promise<void>}\n */\n handle_response(value) {\n const ret = wasm.client_handle_response(this.__wbg_ptr, addHeapObject(value));\n return takeObject(ret);\n }\n /**\n * @param {Function} send_request\n * @param {Function | null} [close]\n */\n constructor(send_request, close) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.client_new(retptr, addHeapObject(send_request), isLikeNone(close) ? 0 : addHeapObject(close));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n ClientFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Function} on_response\n * @returns {ProxySession}\n */\n new_proxy_session(on_response) {\n try {\n const ret = wasm.client_new_proxy_session(this.__wbg_ptr, addBorrowedObject(on_response));\n return ProxySession.__wrap(ret);\n } finally {\n heap[stack_pointer++] = undefined;\n }\n }\n /**\n * @param {Function} callback\n * @returns {Promise<number>}\n */\n on_error(callback) {\n const ret = wasm.client_on_error(this.__wbg_ptr, addHeapObject(callback));\n return takeObject(ret);\n }\n /**\n * Register a callback which is invoked whenever [`Client::table`] (on this\n * [`Client`]) or [`Table::delete`] (on a [`Table`] belinging to this\n * [`Client`]) are called.\n * @param {Function} on_update_js\n * @returns {Promise<number>}\n */\n on_hosted_tables_update(on_update_js) {\n const ret = wasm.client_on_hosted_tables_update(this.__wbg_ptr, addHeapObject(on_update_js));\n return takeObject(ret);\n }\n /**\n * Opens a [`Table`] that is hosted on the `perspective_server::Server`\n * that is connected to this [`Client`].\n *\n * The `name` property of [`TableInitOptions`] is used to identify each\n * [`Table`]. [`Table`] `name`s can be looked up for each [`Client`]\n * via [`Client::get_hosted_table_names`].\n *\n * # JavaScript Examples\n *\n * Get a virtual [`Table`] named \"table_one\" from this [`Client`]\n *\n * ```javascript\n * const tables = await client.open_table(\"table_one\");\n * ```\n * @param {string} entity_id\n * @returns {Promise<Table>}\n */\n open_table(entity_id) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.client_open_table(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * Remove a callback previously registered via\n * `Client::on_hosted_tables_update`.\n * @param {number} update_id\n * @returns {Promise<void>}\n */\n remove_hosted_tables_update(update_id) {\n const ret = wasm.client_remove_hosted_tables_update(this.__wbg_ptr, update_id);\n return takeObject(ret);\n }\n /**\n * Provides the [`SystemInfo`] struct, implementation-specific metadata\n * about the [`perspective_server::Server`] runtime such as Memory and\n * CPU usage.\n *\n * For WebAssembly servers, this method includes the WebAssembly heap size.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const info = await client.system_info();\n * ```\n * @returns {Promise<SystemInfo>}\n */\n system_info() {\n const ret = wasm.client_system_info(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Creates a new [`Table`] from either a _schema_ or _data_.\n *\n * The [`Client::table`] factory function can be initialized with either a\n * _schema_ (see [`Table::schema`]), or data in one of these formats:\n *\n * - Apache Arrow\n * - CSV\n * - JSON row-oriented\n * - JSON column-oriented\n * - NDJSON\n *\n * When instantiated with _data_, the schema is inferred from this data.\n * While this is convenient, inferrence is sometimes imperfect e.g.\n * when the input is empty, null or ambiguous. For these cases,\n * [`Client::table`] can first be instantiated with a explicit schema.\n *\n * When instantiated with a _schema_, the resulting [`Table`] is empty but\n * with known column names and column types. When subsqeuently\n * populated with [`Table::update`], these columns will be _coerced_ to\n * the schema's type. This behavior can be useful when\n * [`Client::table`]'s column type inferences doesn't work.\n *\n * The resulting [`Table`] is _virtual_, and invoking its methods\n * dispatches events to the `perspective_server::Server` this\n * [`Client`] connects to, where the data is stored and all calculation\n * occurs.\n *\n * # Arguments\n *\n * - `arg` - Either _schema_ or initialization _data_.\n * - `options` - Optional configuration which provides one of:\n * - `limit` - The max number of rows the resulting [`Table`] can\n * store.\n * - `index` - The column name to use as an _index_ column. If this\n * `Table` is being instantiated by _data_, this column name must be\n * present in the data.\n * - `name` - The name of the table. This will be generated if it is\n * not provided.\n * - `format` - The explicit format of the input data, can be one of\n * `\"json\"`, `\"columns\"`, `\"csv\"` or `\"arrow\"`. This overrides\n * language-specific type dispatch behavior, which allows stringified\n * and byte array alternative inputs.\n *\n * # JavaScript Examples\n *\n * Load a CSV from a `string`:\n *\n * ```javascript\n * const table = await client.table(\"x,y\\n1,2\\n3,4\");\n * ```\n *\n * Load an Arrow from an `ArrayBuffer`:\n *\n * ```javascript\n * import * as fs from \"node:fs/promises\";\n * const table2 = await client.table(await fs.readFile(\"superstore.arrow\"));\n * ```\n *\n * Load a CSV from a `UInt8Array` (the default for this type is Arrow)\n * using a format override:\n *\n * ```javascript\n * const enc = new TextEncoder();\n * const table = await client.table(enc.encode(\"x,y\\n1,2\\n3,4\"), {\n * format: \"csv\",\n * });\n * ```\n *\n * Create a table with an `index`:\n *\n * ```javascript\n * const table = await client.table(data, { index: \"Row ID\" });\n * ```\n * @param {string | ArrayBuffer | Record<string, unknown[]> | Record<string, unknown>[] | Record<string, ColumnType>} value\n * @param {TableInitOptions | null} [options]\n * @returns {Promise<Table>}\n */\n table(value, options) {\n const ret = wasm.client_table(this.__wbg_ptr, addHeapObject(value), isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Terminates this [`Client`], cleaning up any [`crate::View`] handles the\n * [`Client`] has open as well as its callbacks.\n * @returns {any}\n */\n terminate() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.client_terminate(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\nif (Symbol.dispose) Client.prototype[Symbol.dispose] = Client.prototype.free;\n\n/**\n * JavaScript-facing DuckDB SQL query builder.\n *\n * This struct wraps the Rust `DuckDBSqlBuilder` and exposes it to JavaScript\n * via wasm_bindgen.\n */\nexport class GenericSQLVirtualServerModel {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GenericSQLVirtualServerModelFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_genericsqlvirtualservermodel_free(ptr, 0);\n }\n /**\n * Returns the SQL query to list all hosted tables.\n * @returns {string}\n */\n getHostedTables() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.genericsqlvirtualservermodel_getHostedTables(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Creates a new `JsDuckDBSqlBuilder` instance.\n * @param {any | null} [args]\n */\n constructor(args) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.genericsqlvirtualservermodel_new(retptr, isLikeNone(args) ? 0 : addHeapObject(args));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n GenericSQLVirtualServerModelFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to create a view from a table with the given\n * configuration.\n * @param {string} table_id\n * @param {string} view_id\n * @param {any} config\n * @returns {string}\n */\n tableMakeView(table_id, view_id, config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(table_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_tableMakeView(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, addHeapObject(config));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v3 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v3;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to describe a table's schema.\n * @param {string} table_id\n * @returns {string}\n */\n tableSchema(table_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(table_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_tableSchema(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to get the row count of a table.\n * @param {string} table_id\n * @returns {string}\n */\n tableSize(table_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(table_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_tableSize(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to validate an expression against a table.\n * @param {string} table_id\n * @param {string} expression\n * @returns {string}\n */\n tableValidateExpression(table_id, expression) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(table_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(expression, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_tableValidateExpression(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v3 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v3;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to get the column count of a view.\n * @param {string} view_id\n * @returns {string}\n */\n viewColumnSize(view_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_viewColumnSize(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to delete a view.\n * @param {string} view_id\n * @returns {string}\n */\n viewDelete(view_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_viewDelete(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to fetch data from a view with the given viewport.\n * @param {string} view_id\n * @param {any} config\n * @param {any} viewport\n * @param {any} schema\n * @returns {string}\n */\n viewGetData(view_id, config, viewport, schema) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_viewGetData(retptr, this.__wbg_ptr, ptr0, len0, addHeapObject(config), addHeapObject(viewport), addHeapObject(schema));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to describe a view's schema.\n * @param {string} view_id\n * @returns {string}\n */\n viewSchema(view_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_viewSchema(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to get the row count of a view.\n * @param {string} view_id\n * @returns {string}\n */\n viewSize(view_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_viewSize(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\nif (Symbol.dispose) GenericSQLVirtualServerModel.prototype[Symbol.dispose] = GenericSQLVirtualServerModel.prototype.free;\n\nexport class ProxySession {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ProxySession.prototype);\n obj.__wbg_ptr = ptr;\n ProxySessionFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ProxySessionFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_proxysession_free(ptr, 0);\n }\n /**\n * @returns {Promise<void>}\n */\n close() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.proxysession_close(ptr);\n return takeObject(ret);\n }\n /**\n * @param {any} value\n * @returns {Promise<void>}\n */\n handle_request(value) {\n const ret = wasm.proxysession_handle_request(this.__wbg_ptr, addHeapObject(value));\n return takeObject(ret);\n }\n /**\n * @param {Client} client\n * @param {Function} on_response\n */\n constructor(client, on_response) {\n try {\n _assertClass(client, Client);\n const ret = wasm.proxysession_new(client.__wbg_ptr, addBorrowedObject(on_response));\n this.__wbg_ptr = ret >>> 0;\n ProxySessionFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n heap[stack_pointer++] = undefined;\n }\n }\n}\nif (Symbol.dispose) ProxySession.prototype[Symbol.dispose] = ProxySession.prototype.free;\n\nexport class Table {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Table.prototype);\n obj.__wbg_ptr = ptr;\n TableFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n TableFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_table_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n __getClassname() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.table___getClassname(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var v1 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Removes all the rows in the [`Table`], but preserves everything else\n * including the schema, index, and any callbacks or registered\n * [`View`] instances.\n *\n * Calling [`Table::clear`], like [`Table::update`] and [`Table::remove`],\n * will trigger an update event to any registered listeners via\n * [`View::on_update`].\n * @returns {Promise<void>}\n */\n clear() {\n const ret = wasm.table_clear(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Returns the column names of this [`Table`] in \"natural\" order (the\n * ordering implied by the input format).\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const columns = await table.columns();\n * ```\n * @returns {Promise<any>}\n */\n columns() {\n const ret = wasm.table_columns(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Delete this [`Table`] and cleans up associated resources.\n *\n * [`Table`]s do not stop consuming resources or processing updates when\n * they are garbage collected in their host language - you must call\n * this method to reclaim these.\n *\n * # Arguments\n *\n * - `options` An options dictionary.\n * - `lazy` Whether to delete this [`Table`] _lazily_. When false (the\n * default), the delete will occur immediately, assuming it has no\n * [`View`] instances registered to it (which must be deleted first,\n * otherwise this method will throw an error). When true, the\n * [`Table`] will only be marked for deltion once its [`View`]\n * dependency count reaches 0.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const table = await client.table(\"x,y\\n1,2\\n3,4\");\n *\n * // ...\n *\n * await table.delete({ lazy: true });\n * ```\n * @param {DeleteOptions | null} [options]\n * @returns {Promise<void>}\n */\n delete(options) {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.table_delete(ptr, isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Get a copy of the [`Client`] this [`Table`] came from.\n * @returns {Promise<Client>}\n */\n get_client() {\n const ret = wasm.table_get_client(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Returns the name of the index column for the table.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const table = await client.table(\"x,y\\n1,2\\n3,4\", { index: \"x\" });\n * const index = table.get_index(); // \"x\"\n * ```\n * @returns {Promise<string>}\n */\n get_index() {\n const ret = wasm.table_get_index(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Returns the user-specified row limit for this table.\n * @returns {Promise<number | undefined>}\n */\n get_limit() {\n const ret = wasm.table_get_limit(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Returns the user-specified name for this table, or the auto-generated\n * name if a name was not specified when the table was created.\n * @returns {Promise<string>}\n */\n get_name() {\n const ret = wasm.table_get_name(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Create a unique channel ID on this [`Table`], which allows\n * `View::on_update` callback calls to be associated with the\n * `Table::update` which caused them.\n * @returns {Promise<number>}\n */\n make_port() {\n const ret = wasm.table_make_port(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Register a callback which is called exactly once, when this [`Table`] is\n * deleted with the [`Table::delete`] method.\n *\n * [`Table::on_delete`] resolves when the subscription message is sent, not\n * when the _delete_ event occurs.\n * @param {Function} on_delete\n * @returns {Promise<any>}\n */\n on_delete(on_delete) {\n const ret = wasm.table_on_delete(this.__wbg_ptr, addHeapObject(on_delete));\n return takeObject(ret);\n }\n /**\n * Removes rows from this [`Table`] with the `index` column values\n * supplied.\n *\n * # Arguments\n *\n * - `indices` - A list of `index` column values for rows that should be\n * removed.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * await table.remove([1, 2, 3]);\n * ```\n * @param {any} value\n * @param {UpdateOptions | null} [options]\n * @returns {Promise<void>}\n */\n remove(value, options) {\n const ret = wasm.table_remove(this.__wbg_ptr, addHeapObject(value), isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Removes a listener with a given ID, as returned by a previous call to\n * [`Table::on_delete`].\n * @param {number} callback_id\n * @returns {Promise<any>}\n */\n remove_delete(callback_id) {\n const ret = wasm.table_remove_delete(this.__wbg_ptr, callback_id);\n return takeObject(ret);\n }\n /**\n * Replace all rows in this [`Table`] with the input data, coerced to this\n * [`Table`]'s existing [`perspective_client::Schema`], notifying any\n * derived [`View`] and [`View::on_update`] callbacks.\n *\n * Calling [`Table::replace`] is an easy way to replace _all_ the data in a\n * [`Table`] without losing any derived [`View`] instances or\n * [`View::on_update`] callbacks. [`Table::replace`] does _not_ infer\n * data types like [`Client::table`] does, rather it _coerces_ input\n * data to the `Schema` like [`Table::update`]. If you need a [`Table`]\n * with a different `Schema`, you must create a new one.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * await table.replace(\"x,y\\n1,2\");\n * ```\n * @param {any} input\n * @param {UpdateOptions | null} [options]\n * @returns {Promise<void>}\n */\n replace(input, options) {\n const ret = wasm.table_replace(this.__wbg_ptr, addHeapObject(input), isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Returns a table's [`Schema`], a mapping of column names to column types.\n *\n * The mapping of a [`Table`]'s column names to data types is referred to\n * as a [`Schema`]. Each column has a unique name and a data type, one\n * of:\n *\n * - `\"boolean\"` - A boolean type\n * - `\"date\"` - A timesonze-agnostic date type (month/day/year)\n * - `\"datetime\"` - A millisecond-precision datetime type in the UTC\n * timezone\n * - `\"float\"` - A 64 bit float\n * - `\"integer\"` - A signed 32 bit integer (the integer type supported by\n * JavaScript)\n * - `\"string\"` - A [`String`] data type (encoded internally as a\n * _dictionary_)\n *\n * Note that all [`Table`] columns are _nullable_, regardless of the data\n * type.\n * @returns {Record<string, ColumnType>}\n */\n schema() {\n const ret = wasm.table_schema(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Returns the number of rows in a [`Table`].\n * @returns {Promise<number>}\n */\n size() {\n const ret = wasm.table_size(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Updates the rows of this table and any derived [`View`] instances.\n *\n * Calling [`Table::update`] will trigger the [`View::on_update`] callbacks\n * register to derived [`View`], and the call itself will not resolve until\n * _all_ derived [`View`]'s are notified.\n *\n * When updating a [`Table`] with an `index`, [`Table::update`] supports\n * partial updates, by omitting columns from the update data.\n *\n * # Arguments\n *\n * - `input` - The input data for this [`Table`]. The schema of a [`Table`]\n * is immutable after creation, so this method cannot be called with a\n * schema.\n * - `options` - Options for this update step - see [`UpdateOptions`].\n *\n * # JavaScript Examples\n *\n * ```javascript\n * await table.update(\"x,y\\n1,2\");\n * ```\n * @param {string | ArrayBuffer | Record<string, unknown[]> | Record<string, unknown>[] | Record<string, ColumnType>} input\n * @param {UpdateOptions | null} [options]\n * @returns {Promise<any>}\n */\n update(input, options) {\n const ret = wasm.table_update(this.__wbg_ptr, addHeapObject(input), isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Validates the given expressions.\n * @param {any} exprs\n * @returns {Promise<any>}\n */\n validate_expressions(exprs) {\n const ret = wasm.table_validate_expressions(this.__wbg_ptr, addHeapObject(exprs));\n return takeObject(ret);\n }\n /**\n * Create a new [`View`] from this table with a specified\n * [`ViewConfigUpdate`].\n *\n * See [`View`] struct.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const view = await table.view({\n * columns: [\"Sales\"],\n * aggregates: { Sales: \"sum\" },\n * group_by: [\"Region\", \"Country\"],\n * filter: [[\"Category\", \"in\", [\"Furniture\", \"Technology\"]]],\n * });\n * ```\n * @param {ViewConfigUpdate | null} [config]\n * @returns {Promise<View>}\n */\n view(config) {\n const ret = wasm.table_view(this.__wbg_ptr, isLikeNone(config) ? 0 : addHeapObject(config));\n return takeObject(ret);\n }\n}\nif (Symbol.dispose) Table.prototype[Symbol.dispose] = Table.prototype.free;\n\n/**\n * The [`View`] struct is Perspective's query and serialization interface. It\n * represents a query on the `Table`'s dataset and is always created from an\n * existing `Table` instance via the [`Table::view`] method.\n *\n * [`View`]s are immutable with respect to the arguments provided to the\n * [`Table::view`] method; to change these parameters, you must create a new\n * [`View`] on the same [`Table`]. However, each [`View`] is _live_ with\n * respect to the [`Table`]'s data, and will (within a conflation window)\n * update with the latest state as its parent [`Table`] updates, including\n * incrementally recalculating all aggregates, pivots, filters, etc. [`View`]\n * query parameters are composable, in that each parameter works independently\n * _and_ in conjunction with each other, and there is no limit to the number of\n * pivots, filters, etc. which can be applied.\n */\nexport class View {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(View.prototype);\n obj.__wbg_ptr = ptr;\n ViewFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n static __unwrap(jsValue) {\n if (!(jsValue instanceof View)) {\n return 0;\n }\n return jsValue.__destroy_into_raw();\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ViewFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_view_free(ptr, 0);\n }\n /**\n * @returns {View}\n */\n __get_model() {\n const ret = wasm.view___get_model(this.__wbg_ptr);\n return View.__wrap(ret);\n }\n /**\n * Collapses the `group_by` row at `row_index`.\n * @param {number} row_index\n * @returns {Promise<number>}\n */\n collapse(row_index) {\n const ret = wasm.view_collapse(this.__wbg_ptr, row_index);\n return takeObject(ret);\n }\n /**\n * Returns an array of strings containing the column paths of the [`View`]\n * without any of the source columns.\n *\n * A column path shows the columns that a given cell belongs to after\n * pivots are applied.\n * @param {ColumnWindow | null} [window]\n * @returns {Promise<any>}\n */\n column_paths(window) {\n const ret = wasm.view_column_paths(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Delete this [`View`] and clean up all resources associated with it.\n * [`View`] objects do not stop consuming resources or processing\n * updates when they are garbage collected - you must call this method\n * to reclaim these.\n * @returns {Promise<void>}\n */\n delete() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.view_delete(ptr);\n return takeObject(ret);\n }\n /**\n * Returns this [`View`]'s _dimensions_, row and column count, as well as\n * those of the [`crate::Table`] from which it was derived.\n *\n * - `num_table_rows` - The number of rows in the underlying\n * [`crate::Table`].\n * - `num_table_columns` - The number of columns in the underlying\n * [`crate::Table`] (including the `index` column if this\n * [`crate::Table`] was constructed with one).\n * - `num_view_rows` - The number of rows in this [`View`]. If this\n * [`View`] has a `group_by` clause, `num_view_rows` will also include\n * aggregated rows.\n * - `num_view_columns` - The number of columns in this [`View`]. If this\n * [`View`] has a `split_by` clause, `num_view_columns` will include all\n * _column paths_, e.g. the number of `columns` clause times the number\n * of `split_by` groups.\n * @returns {Promise<any>}\n */\n dimensions() {\n const ret = wasm.view_dimensions(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Expand the `group_by` row at `row_index`.\n * @param {number} row_index\n * @returns {Promise<number>}\n */\n expand(row_index) {\n const ret = wasm.view_expand(this.__wbg_ptr, row_index);\n return takeObject(ret);\n }\n /**\n * The expression schema of this [`View`], which contains only the\n * expressions created on this [`View`]. See [`View::schema`] for\n * details.\n * @returns {Promise<any>}\n */\n expression_schema() {\n const ret = wasm.view_expression_schema(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * A copy of the config object passed to the [`Table::view`] method which\n * created this [`View`].\n * @returns {Promise<any>}\n */\n get_config() {\n const ret = wasm.view_get_config(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Calculates the [min, max] of the leaf nodes of a column `column_name`.\n *\n * # Returns\n *\n * A tuple of [min, max], whose types are column and aggregate dependent.\n * @param {string} name\n * @returns {Promise<Array<any>>}\n */\n get_min_max(name) {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.view_get_min_max(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * The number of aggregated columns in this [`View`]. This is affected by\n * the \"split_by\" configuration parameter supplied to this view's\n * contructor.\n *\n * # Returns\n *\n * The number of aggregated columns.\n * @returns {Promise<number>}\n */\n num_columns() {\n const ret = wasm.view_num_columns(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * The number of aggregated rows in this [`View`]. This is affected by the\n * \"group_by\" configuration parameter supplied to this view's contructor.\n *\n * # Returns\n *\n * The number of aggregated rows.\n * @returns {Promise<number>}\n */\n num_rows() {\n const ret = wasm.view_num_rows(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Register a callback with this [`View`]. Whenever the [`View`] is\n * deleted, this callback will be invoked.\n * @param {Function} on_delete\n * @returns {Promise<any>}\n */\n on_delete(on_delete) {\n const ret = wasm.view_on_delete(this.__wbg_ptr, addHeapObject(on_delete));\n return takeObject(ret);\n }\n /**\n * Register a callback with this [`View`]. Whenever the view's underlying\n * table emits an update, this callback will be invoked with an object\n * containing `port_id`, indicating which port the update fired on, and\n * optionally `delta`, which is the new data that was updated for each\n * cell or each row.\n *\n * # Arguments\n *\n * - `on_update` - A callback function invoked on update, which receives an\n * object with two keys: `port_id`, indicating which port the update was\n * triggered on, and `delta`, whose value is dependent on the mode\n * parameter.\n * - `options` - If this is provided as `OnUpdateOptions { mode:\n * Some(OnUpdateMode::Row) }`, then `delta` is an Arrow of the updated\n * rows. Otherwise `delta` will be [`Option::None`].\n *\n * # JavaScript Examples\n *\n * ```javascript\n * // Attach an `on_update` callback\n * view.on_update((updated) => console.log(updated.port_id));\n * ```\n *\n * ```javascript\n * // `on_update` with row deltas\n * view.on_update((updated) => console.log(updated.delta), { mode: \"row\" });\n * ```\n * @param {Function} on_update_js\n * @param {OnUpdateOptions | null} [options]\n * @returns {Promise<any>}\n */\n on_update(on_update_js, options) {\n const ret = wasm.view_on_update(this.__wbg_ptr, addHeapObject(on_update_js), isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Unregister a previously registered [`View::on_delete`] callback.\n * @param {number} callback_id\n * @returns {Promise<any>}\n */\n remove_delete(callback_id) {\n const ret = wasm.view_remove_delete(this.__wbg_ptr, callback_id);\n return takeObject(ret);\n }\n /**\n * Unregister a previously registered update callback with this [`View`].\n *\n * # Arguments\n *\n * - `id` - A callback `id` as returned by a recipricol call to\n * [`View::on_update`].\n * @param {number} callback_id\n * @returns {Promise<void>}\n */\n remove_update(callback_id) {\n const ret = wasm.view_remove_update(this.__wbg_ptr, callback_id);\n return takeObject(ret);\n }\n /**\n * The schema of this [`View`].\n *\n * The [`View`] schema differs from the `schema` returned by\n * [`Table::schema`]; it may have different column names due to\n * `expressions` or `columns` configs, or it maye have _different\n * column types_ due to the application og `group_by` and `aggregates`\n * config. You can think of [`Table::schema`] as the _input_ schema and\n * [`View::schema`] as the _output_ schema of a Perspective pipeline.\n * @returns {Promise<any>}\n */\n schema() {\n const ret = wasm.view_schema(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Set expansion `depth` of the `group_by` tree.\n * @param {number} depth\n * @returns {Promise<void>}\n */\n set_depth(depth) {\n const ret = wasm.view_set_depth(this.__wbg_ptr, depth);\n return takeObject(ret);\n }\n /**\n * Serializes a [`View`] to the Apache Arrow data format.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<ArrayBuffer>}\n */\n to_arrow(window) {\n const ret = wasm.view_to_arrow(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Serializes this [`View`] to JavaScript objects in a column-oriented\n * format.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<object>}\n */\n to_columns(window) {\n const ret = wasm.view_to_columns(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Serializes this [`View`] to a string of JSON data. Useful if you want to\n * save additional round trip serialize/deserialize cycles.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<string>}\n */\n to_columns_string(window) {\n const ret = wasm.view_to_columns_string(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Serializes this [`View`] to CSV data in a standard format.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<string>}\n */\n to_csv(window) {\n const ret = wasm.view_to_csv(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Serializes this [`View`] to JavaScript objects in a row-oriented\n * format.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<Array<any>>}\n */\n to_json(window) {\n const ret = wasm.view_to_json(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Render this `View` as a JSON string.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<string>}\n */\n to_json_string(window) {\n const ret = wasm.view_to_json_string(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Renders this [`View`] as an [NDJSON](https://github.com/ndjson/ndjson-spec)\n * formatted [`String`].\n * @param {ViewWindow | null} [window]\n * @returns {Promise<string>}\n */\n to_ndjson(window) {\n const ret = wasm.view_to_ndjson(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n}\nif (Symbol.dispose) View.prototype[Symbol.dispose] = View.prototype.free;\n\nexport class VirtualDataSlice {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(VirtualDataSlice.prototype);\n obj.__wbg_ptr = ptr;\n VirtualDataSliceFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n VirtualDataSliceFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_virtualdataslice_free(ptr, 0);\n }\n /**\n * @param {ViewConfigUpdate} config\n */\n constructor(config) {\n const ret = wasm.virtualdataslice_new(addHeapObject(config));\n this.__wbg_ptr = ret >>> 0;\n VirtualDataSliceFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setBooleanCol(name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setBooleanCol(retptr, this.__wbg_ptr, ptr0, len0, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} dtype\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setCol(dtype, name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(dtype, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setCol(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setDatetimeCol(name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setDatetimeCol(retptr, this.__wbg_ptr, ptr0, len0, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setFloatCol(name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setFloatCol(retptr, this.__wbg_ptr, ptr0, len0, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setIntegerCol(name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setIntegerCol(retptr, this.__wbg_ptr, ptr0, len0, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setStringCol(name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setStringCol(retptr, this.__wbg_ptr, ptr0, len0, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\nif (Symbol.dispose) VirtualDataSlice.prototype[Symbol.dispose] = VirtualDataSlice.prototype.free;\n\nexport class VirtualServer {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n VirtualServerFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_virtualserver_free(ptr, 0);\n }\n /**\n * @param {Uint8Array} bytes\n * @returns {Promise<any>}\n */\n handleRequest(bytes) {\n const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.virtualserver_handleRequest(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {object} handler\n */\n constructor(handler) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.virtualserver_new(retptr, addHeapObject(handler));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n VirtualServerFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\nif (Symbol.dispose) VirtualServer.prototype[Symbol.dispose] = VirtualServer.prototype.free;\n\nexport function init() {\n wasm.init();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_8c4e43fe74559d73: function(arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n const ret = Error(v0);\n return addHeapObject(ret);\n },\n __wbg_Number_04624de7d0e8332d: function(arg0) {\n const ret = Number(getObject(arg0));\n return ret;\n },\n __wbg_String_8f0eb39a4a4c2f66: function(arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_bigint_get_as_i64_8fcf4ce7f1ca72a2: function(arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof(v) === 'bigint' ? v : undefined;\n getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_boolean_get_bbbb1c18aa2f5e25: function(arg0) {\n const v = getObject(arg0);\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_0bc8482c6e3508ae: function(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_47fa6863be6f2f25: function(arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n },\n __wbg___wbindgen_is_bigint_31b12575b56f32fc: function(arg0) {\n const ret = typeof(getObject(arg0)) === 'bigint';\n return ret;\n },\n __wbg___wbindgen_is_function_0095a73b8b156f76: function(arg0) {\n const ret = typeof(getObject(arg0)) === 'function';\n return ret;\n },\n __wbg___wbindgen_is_null_ac34f5003991759a: function(arg0) {\n const ret = getObject(arg0) === null;\n return ret;\n },\n __wbg___wbindgen_is_object_5ae8e5880f2c1fbd: function(arg0) {\n const val = getObject(arg0);\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_string_cd444516edc5b180: function(arg0) {\n const ret = typeof(getObject(arg0)) === 'string';\n return ret;\n },\n __wbg___wbindgen_is_undefined_9e4d92534c42d778: function(arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_eq_11888390b0186270: function(arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_9dd77d8cd6671811: function(arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n },\n __wbg___wbindgen_number_get_8ff4255516ccad3e: function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_72fb696202c56729: function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_be289d5034ed271b: function(arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n throw new Error(v0);\n },\n __wbg__wbg_cb_unref_d9b87ff7982e3b21: function(arg0) {\n getObject(arg0)._wbg_cb_unref();\n },\n __wbg_apply_ada2ee1a60ac7b3c: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).apply(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_at_dfc235641cc0e40c: function(arg0, arg1) {\n const ret = getObject(arg0).at(arg1);\n return addHeapObject(ret);\n },\n __wbg_buffer_26d0910f3a5bc899: function(arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n },\n __wbg_call_389efe28435a9388: function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_call_4708e0c13bdc8e95: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_call_812d25f1510c13c8: function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_client_new: function(arg0) {\n const ret = Client.__wrap(arg0);\n return addHeapObject(ret);\n },\n __wbg_debug_46a93995fc6f8820: function(arg0, arg1, arg2, arg3) {\n console.debug(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n },\n __wbg_debug_a4099fa12db6cd61: function(arg0) {\n console.debug(getObject(arg0));\n },\n __wbg_done_57b39ecd9addfe81: function(arg0) {\n const ret = getObject(arg0).done;\n return ret;\n },\n __wbg_entries_58c7934c745daac7: function(arg0) {\n const ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_error_794d0ffc9d00d5c3: function(arg0, arg1, arg2, arg3) {\n console.error(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n },\n __wbg_error_9a7fe3f932034cde: function(arg0) {\n console.error(getObject(arg0));\n },\n __wbg_error_f852e41c69b0bd84: function(arg0, arg1) {\n console.error(getObject(arg0), getObject(arg1));\n },\n __wbg_from_bddd64e7d5ff6941: function(arg0) {\n const ret = Array.from(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_getEntriesByName_02488cff0bc7581c: function(arg0, arg1, arg2, arg3, arg4) {\n var v0 = getCachedStringFromWasm0(arg1, arg2);\n var v1 = getCachedStringFromWasm0(arg3, arg4);\n const ret = getObject(arg0).getEntriesByName(v0, v1);\n return addHeapObject(ret);\n },\n __wbg_getRandomValues_1c61fac11405ffdc: function() { return handleError(function (arg0, arg1) {\n globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));\n }, arguments); },\n __wbg_getTime_1e3cd1391c5c3995: function(arg0) {\n const ret = getObject(arg0).getTime();\n return ret;\n },\n __wbg_get_76e04509d1922a04: function(arg0, arg1, arg2) {\n var v0 = getCachedStringFromWasm0(arg1, arg2);\n const ret = getObject(arg0)[v0];\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_get_9b94d73e6221f75c: function(arg0, arg1) {\n const ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n },\n __wbg_get_b3ed3ad4be2bc8ac: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_get_with_ref_key_1dc361bd10053bfe: function(arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n },\n __wbg_has_d4e53238966c12b6: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.has(getObject(arg0), getObject(arg1));\n return ret;\n }, arguments); },\n __wbg_info_148d043840582012: function(arg0) {\n console.info(getObject(arg0));\n },\n __wbg_info_9e602cf10c5c690b: function(arg0, arg1, arg2, arg3) {\n console.info(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n },\n __wbg_instanceof_ArrayBuffer_c367199e2fa2aa04: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Array_d9eac779cd191cbc: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Date_1b9f15b87f10aa4c: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Date;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Error_8573fe0b0b480f46: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Error;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Map_53af74335dec57f4: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Map;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Object_1c6af87502b733ed: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Object;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Promise_0094681e3519d6ec: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Promise;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_9b9075935c74707c: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Window_ed49b2db8df90359: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_isArray_d314bb98fcf08331: function(arg0) {\n const ret = Array.isArray(getObject(arg0));\n return ret;\n },\n __wbg_isSafeInteger_bfbc7332a9768d2a: function(arg0) {\n const ret = Number.isSafeInteger(getObject(arg0));\n return ret;\n },\n __wbg_iterator_6ff6560ca1568e55: function() {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n },\n __wbg_keys_b50a709a76add04e: function(arg0) {\n const ret = Object.keys(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_length_32ed9a279acd054c: function(arg0) {\n const ret = getObject(arg0).length;\n return ret;\n },\n __wbg_length_35a7bace40f36eac: function(arg0) {\n const ret = getObject(arg0).length;\n return ret;\n },\n __wbg_mark_3b530a64b09ba08a: function() { return handleError(function (arg0, arg1, arg2) {\n var v0 = getCachedStringFromWasm0(arg1, arg2);\n getObject(arg0).mark(v0);\n }, arguments); },\n __wbg_measure_288b48c082eae0fe: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var v0 = getCachedStringFromWasm0(arg1, arg2);\n var v1 = getCachedStringFromWasm0(arg3, arg4);\n getObject(arg0).measure(v0, v1);\n }, arguments); },\n __wbg_message_9ddc4b9a62a7c379: function(arg0) {\n const ret = getObject(arg0).message;\n return addHeapObject(ret);\n },\n __wbg_new_361308b2356cecd0: function() {\n const ret = new Object();\n return addHeapObject(ret);\n },\n __wbg_new_3eb36ae241fe6f44: function() {\n const ret = new Array();\n return addHeapObject(ret);\n },\n __wbg_new_72b49615380db768: function(arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n const ret = new Error(v0);\n return addHeapObject(ret);\n },\n __wbg_new_b5d9e2fb389fef91: function(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wasm_bindgen_func_elem_5384(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n },\n __wbg_new_dca287b076112a51: function() {\n const ret = new Map();\n return addHeapObject(ret);\n },\n __wbg_new_dd2b680c8bf6ae29: function(arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_new_from_slice_a3d2629dc1826784: function(arg0, arg1) {\n const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));\n return addHeapObject(ret);\n },\n __wbg_new_no_args_1c7c842f08d00ebb: function(arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n const ret = new Function(v0);\n return addHeapObject(ret);\n },\n __wbg_next_3482f54c49e8af19: function() { return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments); },\n __wbg_next_418f80d8f5303233: function(arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n },\n __wbg_now_ebffdf7e580f210d: function(arg0) {\n const ret = getObject(arg0).now();\n return ret;\n },\n __wbg_parse_708461a1feddfb38: function() { return handleError(function (arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n const ret = JSON.parse(v0);\n return addHeapObject(ret);\n }, arguments); },\n __wbg_performance_06f12ba62483475d: function(arg0) {\n const ret = getObject(arg0).performance;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_prototypesetcall_bdcdcc5842e4d77d: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), getObject(arg2));\n },\n __wbg_push_8ffdcb2063340ba5: function(arg0, arg1) {\n const ret = getObject(arg0).push(getObject(arg1));\n return ret;\n },\n __wbg_queueMicrotask_0aa0a927f78f5d98: function(arg0) {\n const ret = getObject(arg0).queueMicrotask;\n return addHeapObject(ret);\n },\n __wbg_queueMicrotask_5bb536982f78a56f: function(arg0) {\n queueMicrotask(getObject(arg0));\n },\n __wbg_reject_a2176de7f1212be5: function(arg0) {\n const ret = Promise.reject(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_resolve_002c4b7d9d8f6b64: function(arg0) {\n const ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_set_1eb0999cf5d27fc8: function(arg0, arg1, arg2) {\n const ret = getObject(arg0).set(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n },\n __wbg_set_3f1d0b984ed272ed: function(arg0, arg1, arg2) {\n getObject(arg0)[takeObject(arg1)] = takeObject(arg2);\n },\n __wbg_set_f43e577aea94465b: function(arg0, arg1, arg2) {\n getObject(arg0)[arg1 >>> 0] = takeObject(arg2);\n },\n __wbg_startTime_248495bfbcb427d3: function(arg0) {\n const ret = getObject(arg0).startTime;\n return ret;\n },\n __wbg_static_accessor_GLOBAL_12837167ad935116: function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_static_accessor_GLOBAL_THIS_e628e89ab3b1c95f: function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_static_accessor_SELF_a621d3dfbb60d0ce: function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_static_accessor_WINDOW_f8727f0cf888e0bd: function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_stringify_8d1cc6ff383e8bae: function() { return handleError(function (arg0) {\n const ret = JSON.stringify(getObject(arg0));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_table_new: function(arg0) {\n const ret = Table.__wrap(arg0);\n return addHeapObject(ret);\n },\n __wbg_then_0d9fe2c7b1857d32: function(arg0, arg1, arg2) {\n const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n },\n __wbg_then_b9e7b3b5f1a9e1b5: function(arg0, arg1) {\n const ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n },\n __wbg_toString_964ff7fe6eca8362: function(arg0) {\n const ret = getObject(arg0).toString();\n return addHeapObject(ret);\n },\n __wbg_trace_9007714a6fbee374: function(arg0) {\n console.trace(getObject(arg0));\n },\n __wbg_trace_bd16b570941b54fb: function(arg0, arg1, arg2, arg3) {\n console.trace(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n },\n __wbg_value_0546255b415e96c1: function(arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n },\n __wbg_values_5da93bc719d272cf: function(arg0) {\n const ret = Object.values(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_view_new: function(arg0) {\n const ret = View.__wrap(arg0);\n return addHeapObject(ret);\n },\n __wbg_view_unwrap: function(arg0) {\n const ret = View.__unwrap(getObject(arg0));\n return ret;\n },\n __wbg_virtualdataslice_new: function(arg0) {\n const ret = VirtualDataSlice.__wrap(arg0);\n return addHeapObject(ret);\n },\n __wbg_warn_a40b971467b219c7: function(arg0, arg1, arg2, arg3) {\n console.warn(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n },\n __wbg_warn_f7ae1b2e66ccb930: function(arg0) {\n console.warn(getObject(arg0));\n },\n __wbindgen_cast_0000000000000001: function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { dtor_idx: 13, function: Function { arguments: [], shim_idx: 30, ret: NamedExternref(\"Promise<any>\"), inner_ret: Some(NamedExternref(\"Promise<any>\")) }, mutable: false }) -> Externref`.\n const ret = makeClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_1421, __wasm_bindgen_func_elem_1668);\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { dtor_idx: 551, function: Function { arguments: [Externref], shim_idx: 552, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_3793, __wasm_bindgen_func_elem_3795);\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000003: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000004: function(arg0) {\n // Cast intrinsic for `I64 -> Externref`.\n const ret = arg0;\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000005: function(arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n // Cast intrinsic for `Ref(CachedString) -> Externref`.\n const ret = v0;\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000006: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U8)) -> NamedExternref(\"Uint8Array\")`.\n const ret = getArrayU8FromWasm0(arg0, arg1);\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000007: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000008: function(arg0, arg1) {\n var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_export4(arg0, arg1 * 4, 4);\n // Cast intrinsic for `Vector(NamedExternref(\"string\")) -> Externref`.\n const ret = v0;\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000009: function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_export4(arg0, arg1 * 1, 1);\n // Cast intrinsic for `Vector(U8) -> Externref`.\n const ret = v0;\n return addHeapObject(ret);\n },\n __wbindgen_object_clone_ref: function(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n },\n __wbindgen_object_drop_ref: function(arg0) {\n takeObject(arg0);\n },\n };\n return {\n __proto__: null,\n \"./perspective-js.wasm_bg.js\": import0,\n };\n}\n\nfunction __wasm_bindgen_func_elem_1668(arg0, arg1) {\n const ret = wasm.__wasm_bindgen_func_elem_1668(arg0, arg1);\n return takeObject(ret);\n}\n\nfunction __wasm_bindgen_func_elem_3795(arg0, arg1, arg2) {\n wasm.__wasm_bindgen_func_elem_3795(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wasm_bindgen_func_elem_5384(arg0, arg1, arg2, arg3) {\n wasm.__wasm_bindgen_func_elem_5384(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\nconst ClientFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_client_free(ptr >>> 0, 1));\nconst GenericSQLVirtualServerModelFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_genericsqlvirtualservermodel_free(ptr >>> 0, 1));\nconst ProxySessionFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_proxysession_free(ptr >>> 0, 1));\nconst TableFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_table_free(ptr >>> 0, 1));\nconst ViewFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_view_free(ptr >>> 0, 1));\nconst VirtualDataSliceFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_virtualdataslice_free(ptr >>> 0, 1));\nconst VirtualServerFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_virtualserver_free(ptr >>> 0, 1));\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n}\n\nfunction addBorrowedObject(obj) {\n if (stack_pointer == 1) throw new Error('out of js stack');\n heap[--stack_pointer] = obj;\n return stack_pointer;\n}\n\nconst CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(state => state.dtor(state.a, state.b));\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\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(takeObject(mem.getUint32(i, true)));\n }\n return result;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction getCachedStringFromWasm0(ptr, len) {\n if (ptr === 0) {\n return getObject(len);\n } else {\n return getStringFromWasm0(ptr, len);\n }\n}\n\nlet cachedDataViewMemory0 = null;\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 getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getObject(idx) { return heap[idx]; }\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export3(addHeapObject(e));\n }\n}\n\nlet heap = new Array(128).fill(undefined);\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n real._wbg_cb_unref();\n }\n };\n real._wbg_cb_unref = () => {\n if (--state.cnt === 0) {\n state.dtor(state.a, state.b);\n state.a = 0;\n CLOSURE_DTORS.unregister(state);\n }\n };\n CLOSURE_DTORS.register(real, state, state);\n return real;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n state.a = a;\n real._wbg_cb_unref();\n }\n };\n real._wbg_cb_unref = () => {\n if (--state.cnt === 0) {\n state.dtor(state.a, state.b);\n state.a = 0;\n CLOSURE_DTORS.unregister(state);\n }\n };\n CLOSURE_DTORS.register(real, state, state);\n return real;\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\nfunction passStringToWasm0(arg, malloc, realloc) {\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 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 = cachedTextEncoder.encodeInto(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 stack_pointer = 128;\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n return wasm;\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 } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && 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 { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (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 if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\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 (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\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 const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n", "// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\nimport type * as perspective_client from \"../../dist/wasm/perspective-js.js\";\n\nfunction invert_promise<T>(): [(t: T) => void, Promise<T>, (t: any) => void] {\n let sender: ((t: T) => void) | undefined = undefined,\n reject: ((t: any) => void) | undefined = undefined;\n let receiver: Promise<T> = new Promise((x, u) => {\n sender = x;\n reject = u;\n });\n\n return [sender!, receiver, reject!];\n}\n\nexport async function websocket(\n WebSocket: typeof window.WebSocket,\n Client: typeof perspective_client.Client,\n url: string | URL,\n options?: { maxPayload: number },\n): Promise<perspective_client.Client> {\n let client: perspective_client.Client, ws: WebSocket;\n\n async function connect() {\n if (\n ws?.readyState === WebSocket.CONNECTING ||\n ws?.readyState === WebSocket.OPEN\n ) {\n console.warn(`Already connected ${ws.readyState}`);\n return;\n }\n\n let [sender, receiver, reject] = invert_promise();\n\n // @ts-ignore\n ws = new WebSocket(url, options);\n ws.onopen = sender;\n ws.binaryType = \"arraybuffer\";\n ws.onerror = (event) => {\n // @ts-expect-error\n const msg = event.message || \"Generic Websocket Error\";\n client.handle_error(msg, connect);\n reject(msg);\n };\n\n ws.onclose = (event) => {\n // https://www.rfc-editor.org/rfc/rfc6455#section-7.4.1\n const msg = `WebSocket closed ${event.code}`;\n client.handle_error(msg, connect);\n reject(msg);\n };\n\n ws.onmessage = (event) => {\n client.handle_response(event.data);\n };\n\n await receiver;\n }\n\n async function send_message(proto: Uint8Array) {\n if (\n ws.readyState === WebSocket.CLOSING ||\n ws.readyState === WebSocket.CLOSED\n ) {\n const msg = `WebSocket transport error (${ws.readyState})`;\n client.handle_error(msg, connect);\n throw new Error(msg);\n } else if (ws.readyState === WebSocket.CONNECTING) {\n const msg = `WebSocket message dropped (${ws.readyState})`;\n throw new Error(msg);\n } else {\n const buffer = proto.slice().buffer;\n ws.send(buffer);\n }\n }\n\n async function on_close() {\n console.debug(\"Closing WebSocket\");\n ws.close();\n }\n\n client = new Client(send_message, on_close);\n await connect();\n return client;\n}\n", "// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\nimport type * as psp from \"../../../dist/wasm/perspective-js.d.ts\";\n\nimport * as psp_websocket from \"../websocket.ts\";\n\nfunction invert_promise<T>(): [\n (t: T) => void,\n Promise<T>,\n (e: string) => void,\n] {\n let sender, reject;\n let receiver: Promise<T> = new Promise((x, y) => {\n sender = x;\n reject = y;\n });\n\n return [\n sender as unknown as (t: T) => void,\n receiver,\n reject as unknown as (e: string) => void,\n ];\n}\n\nasync function _init(\n ws: MessagePort | Worker,\n wasm: WebAssembly.Module | undefined,\n) {\n const [sender, receiver] = invert_promise();\n ws.addEventListener(\"message\", function listener(resp) {\n ws.removeEventListener(\"message\", listener);\n sender(null);\n });\n\n ws.onmessage = function listener(resp) {\n ws.onmessage = function () {};\n sender(null);\n };\n\n ws.onmessageerror = console.error;\n ws.postMessage(\n { cmd: \"init\", args: [wasm] },\n {\n transfer:\n wasm === undefined || wasm instanceof WebAssembly.Module\n ? []\n : [wasm],\n },\n );\n\n await receiver;\n}\n\n/**\n * Create a new client connected exclusively to a new Web Worker instance of\n * the Perspective engine.\n * @param module\n * @returns\n */\nexport async function worker(\n module: Promise<typeof psp>,\n server_wasm: Promise<WebAssembly.Module> | undefined,\n perspective_wasm_worker: Promise<\n SharedWorker | ServiceWorker | Worker | MessagePort\n >,\n) {\n let [wasm, webworker]: [\n WebAssembly.Module | undefined,\n SharedWorker | ServiceWorker | Worker | MessagePort,\n ] = await Promise.all([server_wasm, perspective_wasm_worker]);\n\n const { Client } = await module;\n let port: MessagePort;\n if (\n typeof SharedWorker !== \"undefined\" &&\n webworker instanceof SharedWorker\n ) {\n port = webworker.port;\n } else {\n // Assume `MessagePort`\n port = webworker as MessagePort;\n }\n\n const client = new Client(\n async (proto: Uint8Array) => {\n const f = proto.slice().buffer;\n port.postMessage(f, { transfer: [f] });\n },\n async () => {\n console.debug(\"Closing WebWorker\");\n port.close();\n if (webworker instanceof Worker) {\n webworker.terminate();\n }\n },\n );\n\n await _init(port, wasm);\n port.addEventListener(\"message\", (json: MessageEvent<Uint8Array>) => {\n client.handle_response(json.data);\n });\n\n return client;\n}\n\n/**\n * Create a new client connected via WebSocket to a server implemnting the\n * Perspective Protocol.\n * @param module\n * @param url\n * @returns\n */\nexport async function websocket(\n module: Promise<typeof psp>,\n url: string | URL,\n) {\n const { Client } = await module;\n return await psp_websocket.websocket(WebSocket, Client, url);\n}\n\nexport default { websocket, worker };\n", "// \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n// \u2502 \u2502\n// \u2502 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 Copyright (C) 2025, The Prospective Company \u2502\n// \u2502 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557 \u2502\n// \u2502 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 This file is part of the Procss library, \u2502\n// \u2502 \u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551 distributed under the terms of the \u2502\n// \u2502 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D Apache License 2.0. The full license can \u2502\n// \u2502 \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D be found in the LICENSE file. \u2502\n// \u2502 \u2502\n// \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\nexport async function extract(input) {\n let bin;\n if (typeof input?.then === \"function\") {\n input = await input;\n }\n\n if (input instanceof Response) {\n bin = await WebAssembly.instantiateStreaming(input);\n } else if (typeof input === \"string\") {\n bin = await WebAssembly.instantiateStreaming(fetch(input));\n } else if (input instanceof ArrayBuffer) {\n bin = await WebAssembly.instantiate(input);\n } else if (input instanceof Uint8Array) {\n bin = await WebAssembly.instantiate(input.buffer);\n } else {\n bin = input;\n }\n\n const inst = bin.instance.exports;\n const [payload] = WebAssembly.Module.customSections(bin.module, \"psp-runtime\");\n const [raw_length_view] = WebAssembly.Module.customSections(bin.module, \"psp-len\");\n const raw_length = new DataView(raw_length_view).getUint32(0, true);\n const ptr = inst.resize(payload.byteLength);\n new Uint8Array(inst.memory.buffer).set(new Uint8Array(payload), ptr);\n const offset = inst.compile(payload.byteLength, raw_length);\n return new Uint8Array(inst.memory.buffer).slice(offset, raw_length + offset);\n}", "// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\n// @ts-ignore\nimport { extract } from \"pro_self_extracting_wasm\";\n\nif (typeof WebAssembly === \"undefined\") {\n throw new Error(\"WebAssembly not supported.\");\n}\n\ninterface Module extends WebAssembly.Exports {\n size(): number;\n offset(): number;\n memory: WebAssembly.Memory;\n}\n\n// Perform a silly dance to deal with the different ways webpack and esbuild\n// load binary, as this may either be an `ArrayBuffer` or `URL` depending\n// on whether `inline` option was specified to `perspective-esbuild-plugin`.\nasync function compile(\n buffer: ArrayBuffer | Response | WebAssembly.Module | WebAssembly.Exports,\n): Promise<Module> {\n if (buffer instanceof Response) {\n return (await WebAssembly.instantiateStreaming(buffer)).instance\n .exports as Module;\n } else if (buffer instanceof WebAssembly.Module) {\n return (await WebAssembly.instantiate(buffer)).exports as Module;\n } else if (buffer instanceof WebAssembly.Instance) {\n return buffer.exports as Module;\n } else if (buffer instanceof ArrayBuffer) {\n return (await WebAssembly.instantiate(buffer as BufferSource)).instance\n .exports as Module;\n } else {\n return buffer as Module;\n }\n}\n\nexport async function load_wasm_stage_0(\n wasm:\n | ArrayBuffer\n | Response\n | WebAssembly.Module\n | (() => Promise<ArrayBuffer>),\n): Promise<Uint8Array> {\n if (wasm instanceof Function) {\n wasm = await wasm();\n }\n\n try {\n return await extract(wasm as ArrayBuffer);\n } catch (e) {\n console.warn(\"Stage 0 wasm loading failed, skipping\");\n return new Uint8Array(wasm as ArrayBuffer);\n }\n}\n", "\"use strict\";(()=>{var B=Object.defineProperty;var H=(s,e,r)=>e in s?B(s,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):s[e]=r;var m=(s,e,r)=>H(s,typeof e!=\"symbol\"?e+\"\":e,r);var v=class{constructor(e){m(this,\"poll_handle\");m(this,\"server\");this.server=e}set_poll_handle(){return this.poll_handle=new Promise((e,r)=>setTimeout(()=>this.server.poll().then(e).catch(r).finally(()=>{this.poll_handle=void 0}))),this.poll_handle}async on_poll_request(){this.poll_handle?await this.poll_handle.then(()=>{if(!this.poll_handle)return this.set_poll_handle()}):await this.set_poll_handle()}},h=class{constructor(e,r){m(this,\"clients\");m(this,\"server\");m(this,\"module\");m(this,\"on_poll_request\");this.clients=new Map,this.module=e,this.on_poll_request=r?.on_poll_request,this.server=e._psp_new_server(r?.on_poll_request?1:0)}make_session(e){let r=this.module._psp_new_session(this.server);return this.clients.set(r,e),new P(this.module,this.server,r,this.clients,this.on_poll_request&&(()=>this.on_poll_request(this)))}async poll(){let e=this.module._psp_poll(this.server);await A(this.module,e,async r=>{await this.clients.get(r.client_id)(r.data)})}delete(){this.module._psp_delete_server(this.server)}},P=class{constructor(e,r,i,o,_){this.mod=e;this.server=r;this.client_id=i;this.client_map=o;this.on_poll_request=_}async handle_request(e){let r=await N(this.mod,e,async i=>this.mod._psp_handle_request(this.server,this.client_id,i,this.mod._psp_is_memory64()?BigInt(e.byteLength):e.byteLength));await A(this.mod,r,async i=>{await this.client_map.get(i.client_id)(i.data)}),this.on_poll_request?await this.on_poll_request():await this.poll()}async poll(){let e=this.mod._psp_poll(this.server);await A(this.mod,e,async r=>{r.client_id===0?await this.client_map.get(this.client_id)(r.data):await this.client_map.get(r.client_id)(r.data)})}close(){this.mod._psp_close_session(this.server,this.client_id)}};async function N(s,e,r){let i=s._psp_alloc(s._psp_is_memory64()?BigInt(e.byteLength):e.byteLength);s.HEAPU8.set(e,Number(i));let o=await r(i);return s._psp_free(i),o}async function A(s,e,r){let i=s._psp_is_memory64(),o=new DataView(s.HEAPU8.buffer,Number(e),i?12:8),_=o.getUint32(0,!0),d=i?o.getBigInt64(4,!0):o.getUint32(4,!0),t=new DataView(s.HEAPU8.buffer,Number(d),_*(i?16:12));try{for(let n=0;n<_;n++){let[a,l,f]=i?[t.getBigInt64(n*16,!0),t.getInt32(n*16+8,!0),t.getInt32(n*16+12,!0)]:[t.getInt32(n*12,!0),t.getInt32(n*12+4,!0),t.getInt32(n*12+8,!0)],c=new Uint8Array(s.HEAPU8.buffer,Number(a),l);await r({client_id:f,data:c})}}finally{for(let n=0;n<_;n++){let a=i?t.getBigInt64(n*16,!0):t.getInt32(n*12,!0);s._psp_free(a)}s._psp_free(i?BigInt(t.byteOffset):t.byteOffset),s._psp_free(i?BigInt(o.byteOffset):o.byteOffset)}}var q=console.log.bind(console),L=console.error.bind(console),O=new TextDecoder(\"utf8\"),R=[null,[],[]];function W(s,e=0,r=NaN){for(var i=e+r,o=e;s[o]&&!(o>=i);)++o;return O.decode(s instanceof Uint8Array?s.subarray(e,o):new Uint8Array(s.slice(e,o)))}function M(s,e){var r=R[s];e===0||e===10?((s===1?q:L)(W(r,0)),r.length=0):r.push(e)}async function U(s){let e,r=!1,i,o={HaveOffsetConverter(){console.error(\"HaveOffsetConverter\")},__syscall_ftruncate64(...t){console.error(\"__syscall_frtuncate64\",t)},__syscall_getdents64(...t){console.error(\"__syscall_frtuncate64\",t)},__syscall_unlinkat(...t){console.error(\"__syscall_frtuncate64\",t)},__throw_exception_with_stack_trace(t){let n=new WebAssembly.Exception(e.__cpp_exception,[t],{traceStack:!0});throw n.message=\"Unexpected internal error\",n},clock_time_get(t,n,a){if(r){if(a=a,a=Number(a),!(t==0||t==1||t==2||t==3))return 28;var l;t===0?l=Date.now():l=performance.now();let c=Math.round(l*1e3*1e3),p=new BigInt64Array(i.buffer);return p[a/8]=BigInt(c),0}else{if(a=a,a>>>=0,!(t==0||t==1||t==2||t==3))return 28;var l;t===0?l=Date.now():l=performance.now();var f=Math.round(l*1e6);let p=new BigInt64Array(i.buffer);return p[a>>>3]=BigInt(f),0}},emscripten_asm_const_int(...t){return 0},emscripten_notify_memory_growth(t){r?t=Number(t):(t=t,t>>>=0),t!=0&&console.error(\"abort\")},environ_get(...t){return 0},environ_sizes_get(...t){return 0},fd_close(...t){return console.error(\"fd_close\",t),0},fd_read(...t){return console.error(\"fd_read\",t),0},fd_seek(...t){return console.error(\"fs_seek\",t),0},fd_write(t,n,a,l){let f=new Uint8Array(i.buffer);if(r){n=Number(n),a=Number(a),l=Number(l);let c=0,p=new BigUint64Array(i.buffer);for(let y=0;y<a;y++){let w=Number(p[n/8]),b=Number(p[(n+8)/8]);n+=16;for(let u=0;u<b;u++)M(t,f[w+u]);c+=b}return p[l/8]=BigInt(c),0}else{n=n,a=a,l=l,n>>>=0,a>>>=0,l>>>=0;let c=0,p=new Uint32Array(i.buffer);for(let y=0;y<a;y++){let w=p[n>>>2>>>0],b=p[n+4>>>2>>>0];n+=8;for(let u=0;u<b;u++)M(t,f[w+u>>>0]);c+=b}return p[l>>>2>>>0]=c,0}},proc_exit(t){return console.error(\"proc_exit\",t),0}},_=await s.instantiateWasm({env:o,wasi_snapshot_preview1:o},t=>{e=t.exports,r=!!e.psp_is_memory64(),i=t.exports.memory,e._initialize()}),d={};for(let[t,n]of Object.entries(_))d[`_${t}`]=n;return{..._,...d,get HEAPU8(){return new Uint8Array(i.buffer)}}}async function S(s){let e=await U({locateFile(r){return r},instantiateWasm:async(r,i)=>{r.env={...r.env,psp_stack_trace(){let _=Error().stack||\"\",t=new TextEncoder().encode(_),n=e._psp_alloc(e._psp_is_memory64()?BigInt(t.byteLength+1):t.byteLength+1);return e.HEAPU8.set(t,Number(n)),e.HEAPU8[Number(n)+t.byteLength]=0,n},psp_heap_size(){return e._psp_is_memory64()?BigInt(e.HEAPU8.buffer.byteLength):e.HEAPU8.buffer.byteLength}};let o=await WebAssembly.instantiate(s,r);return i(o.instance),o.instance.exports}});return e}var g,x,E;async function I(s){if(s.data.cmd===\"init\"){let e=s.data.id;if(!g){let r=await S(s.data.args[0]);g=new h(r,{on_poll_request:()=>x.on_poll_request()}),x=new v(g)}E=g.make_session(async r=>{let i=r.slice().buffer;this.postMessage(i,{transfer:[i]})}),this.postMessage({id:e})}else if(E)await E?.handle_request(new Uint8Array(s.data));else throw new Error(\"No session\")}function T(s){let e=s.ports[0];e.addEventListener(\"message\",I.bind(e)),e.start()}self.addEventListener(\"connect\",T);self.addEventListener(\"message\",I.bind(self));})();\n", "\n import worker from \"../../src/ts/perspective-server.worker.js\";\n function make_host(a, b) {\n function addEventListener(type, callback) {\n if (type === \"message\") {\n a.push(callback);\n }\n }\n\n function removeEventListener(callback) {\n const idx = a.indexOf(callback);\n if (idx > -1) {\n a.splice(idx, 1);\n }\n }\n\n function postMessage(msg, ports) {\n for (const listener of b) {\n listener({data: msg, ports: ports});\n }\n }\n\n return {\n addEventListener,\n removeEventListener,\n postMessage,\n location: {href: \"\"}\n }\n }\n\n function run_single_threaded(code) {\n console.error(\"Running perspective in single-threaded mode\");\n let f = Function(\"const self = arguments[0];\" + code);\n const workers = [];\n const mains = [];\n f(make_host(workers, mains));\n return make_host(mains, workers);\n }\n\n export const initialize = async function () {\n try {\n if (window.location.protocol.startsWith(\"file\")) {\n console.warn(\"file:// protocol does not support Web Workers\");\n return run_single_threaded(worker);\n } else {\n const blob = new Blob([worker], {type: 'application/javascript'});\n const url = URL.createObjectURL(blob);\n return new Worker(url, {type: \"module\"});\n }\n } catch (e) {\n console.error(\"Error instantiating engine\", e);\n }\n };\n\n export default initialize;\n ", "// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\nexport type * from \"../../dist/wasm/perspective-js.d.ts\";\nimport type * as psp from \"../../dist/wasm/perspective-js.d.ts\";\nexport type * from \"./virtual_server.ts\";\nimport * as psp_virtual from \"./virtual_server.ts\";\nimport * as wasm_module from \"../../dist/wasm/perspective-js.js\";\nimport * as api from \"./wasm/browser.ts\";\nimport { load_wasm_stage_0 } from \"./wasm/decompress.ts\";\n\nexport {\n GenericSQLVirtualServerModel,\n VirtualDataSlice,\n VirtualServer,\n} from \"../../dist/wasm/perspective-js.js\";\n\nimport {\n GenericSQLVirtualServerModel,\n VirtualDataSlice,\n VirtualServer,\n} from \"../../dist/wasm/perspective-js.js\";\n\nlet GLOBAL_SERVER_WASM: Promise<ArrayBuffer | WebAssembly.Module>;\n\nexport async function createMessageHandler(\n handler: psp_virtual.VirtualServerHandler,\n) {\n return psp_virtual.createMessageHandler(await get_client(), handler);\n}\n\nexport function init_server(\n wasm:\n | Uint8Array\n | Promise<ArrayBuffer | Response | WebAssembly.Module>\n | ArrayBuffer\n | Response\n | WebAssembly.Module,\n disable_stage_0: boolean = false,\n) {\n if (wasm instanceof Uint8Array) {\n GLOBAL_SERVER_WASM = Promise.resolve(wasm.buffer);\n } else if (wasm instanceof Response) {\n GLOBAL_SERVER_WASM = Promise.resolve(wasm);\n } else if (wasm instanceof Promise) {\n GLOBAL_SERVER_WASM = wasm;\n } else {\n GLOBAL_SERVER_WASM = Promise.resolve(wasm);\n }\n\n if (!disable_stage_0) {\n GLOBAL_SERVER_WASM = GLOBAL_SERVER_WASM.then((x) =>\n load_wasm_stage_0(x).then((x) => x.buffer as ArrayBuffer),\n );\n }\n}\n\nlet GLOBAL_CLIENT_WASM: Promise<typeof psp>;\n\nasync function compilerize(\n wasm: PerspectiveWasm,\n disable_stage_0: boolean = false,\n) {\n const wasm_buff = disable_stage_0 ? wasm : await load_wasm_stage_0(wasm);\n await wasm_module.default({ module_or_path: wasm_buff });\n await wasm_module.init();\n return wasm_module;\n}\n\nexport type PerspectiveWasm =\n | ArrayBuffer\n | Response\n | typeof psp\n | Promise<ArrayBuffer | Response | Object>;\n\nexport function init_client(wasm: PerspectiveWasm, disable_stage_0 = false) {\n if (wasm instanceof Uint8Array) {\n GLOBAL_CLIENT_WASM = compilerize(\n wasm.buffer as ArrayBuffer,\n disable_stage_0,\n );\n } else if (wasm instanceof ArrayBuffer) {\n GLOBAL_CLIENT_WASM = compilerize(wasm, disable_stage_0);\n } else if (wasm instanceof Response) {\n GLOBAL_CLIENT_WASM = compilerize(wasm, disable_stage_0);\n } else if (wasm instanceof Promise) {\n GLOBAL_CLIENT_WASM = compilerize(wasm, disable_stage_0);\n } else if (wasm instanceof Object) {\n GLOBAL_CLIENT_WASM = Promise.resolve(wasm as typeof psp);\n }\n}\n\nfunction get_client() {\n const viewer_class: any = customElements.get(\"perspective-viewer\");\n if (viewer_class) {\n GLOBAL_CLIENT_WASM = Promise.resolve(viewer_class.__wasm_module__);\n } else if (GLOBAL_CLIENT_WASM === undefined) {\n throw new Error(\"Missing perspective-client.wasm\");\n }\n\n return GLOBAL_CLIENT_WASM;\n}\n\nfunction get_server() {\n if (GLOBAL_SERVER_WASM === undefined) {\n throw new Error(\"Missing perspective-server.wasm\");\n }\n\n return GLOBAL_SERVER_WASM.then((x) =>\n x instanceof WebAssembly.Module ? x : x.slice(0),\n );\n}\n\nlet GLOBAL_WORKER: undefined | (() => Promise<Worker>) = undefined;\n\n// Inline the worker for now. This code will eventually allow outlining this resource\n// @ts-ignore\nimport perspective_wasm_worker from \"../../src/ts/perspective-server.worker.js\";\n\nfunction get_worker(): Promise<Worker> {\n if (GLOBAL_WORKER === undefined) {\n return perspective_wasm_worker();\n }\n\n return GLOBAL_WORKER();\n}\n\nexport async function websocket(url: string | URL) {\n return await api.websocket(get_client(), url);\n}\n\nexport async function worker(\n worker?: Promise<SharedWorker | ServiceWorker | Worker | MessagePort>,\n) {\n if (typeof worker === \"undefined\") {\n worker = get_worker();\n }\n\n return await api.worker(get_client(), get_server(), worker);\n}\n\nexport default {\n websocket,\n worker,\n init_client,\n init_server,\n createMessageHandler,\n GenericSQLVirtualServerModel,\n VirtualDataSlice,\n VirtualServer,\n};\n", "// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\nimport perspective from \"./perspective.browser.ts\";\nexport * from \"./perspective.browser.ts\";\n\nconst url = new URL(\n \"../../../server/dist/wasm/perspective-server.wasm\",\n import.meta.url,\n);\n\nperspective.init_server(fetch(url));\nexport default perspective;\n"],
5
- "mappings": "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",
6
- "names": ["createMessageHandler", "mod", "handler", "virtualServer", "postMessage", "port", "msg", "error", "requestBytes", "buffer", "channel", "message", "perspective_js_exports", "__export", "Client", "GenericSQLVirtualServerModel", "ProxySession", "Table", "View", "VirtualDataSlice", "VirtualServer", "__wbg_init", "init", "initSync", "_Client", "ptr", "obj", "ClientFinalization", "wasm", "retptr", "r0", "getDataViewMemory0", "r1", "v1", "getCachedStringFromWasm0", "ret", "takeObject", "error", "reconnect", "ptr0", "passStringToWasm0", "len0", "WASM_VECTOR_LEN", "isLikeNone", "addHeapObject", "value", "send_request", "close", "r2", "on_response", "addBorrowedObject", "heap", "stack_pointer", "callback", "on_update_js", "entity_id", "update_id", "options", "GenericSQLVirtualServerModelFinalization", "r3", "args", "table_id", "view_id", "config", "ptr1", "len1", "v3", "v2", "expression", "viewport", "schema", "_ProxySession", "ProxySessionFinalization", "client", "_assertClass", "_Table", "TableFinalization", "on_delete", "callback_id", "input", "exprs", "_View", "ViewFinalization", "jsValue", "row_index", "window", "name", "depth", "_VirtualDataSlice", "VirtualDataSliceFinalization", "index", "val", "group_by_index", "dtype", "VirtualServerFinalization", "bytes", "passArray8ToWasm0", "handler", "__wbg_get_imports", "arg0", "arg1", "v0", "getObject", "v", "debugString", "handleError", "arg2", "arg3", "arg4", "getArrayU8FromWasm0", "result", "state0", "cb0", "a", "__wasm_bindgen_func_elem_5384", "makeClosure", "__wasm_bindgen_func_elem_1668", "makeMutClosure", "__wasm_bindgen_func_elem_3795", "getArrayJsValueFromWasm0", "heap_next", "idx", "instance", "klass", "CLOSURE_DTORS", "state", "type", "description", "length", "debug", "i", "builtInMatches", "className", "dropObject", "len", "mem", "getUint8ArrayMemory0", "getStringFromWasm0", "cachedDataViewMemory0", "decodeText", "cachedUint8ArrayMemory0", "f", "e", "x", "dtor", "real", "arg", "malloc", "realloc", "buf", "cachedTextEncoder", "offset", "code", "view", "cachedTextDecoder", "MAX_SAFARI_DECODE_BYTES", "numBytesDecoded", "wasmModule", "__wbg_finalize_init", "module", "__wbg_load", "imports", "expectedResponseType", "module_or_path", "invert_promise", "sender", "reject", "receiver", "x", "u", "websocket", "WebSocket", "Client", "url", "options", "client", "ws", "connect", "event", "msg", "send_message", "proto", "buffer", "on_close", "invert_promise", "sender", "reject", "receiver", "x", "y", "_init", "ws", "wasm", "listener", "resp", "worker", "module", "server_wasm", "perspective_wasm_worker", "webworker", "Client", "port", "client", "proto", "f", "json", "websocket", "url", "extract", "input", "bin", "inst", "payload", "raw_length_view", "raw_length", "ptr", "offset", "load_wasm_stage_0", "wasm", "extract", "perspective_server_default", "make_host", "a", "b", "addEventListener", "type", "callback", "removeEventListener", "idx", "postMessage", "msg", "ports", "listener", "run_single_threaded", "code", "f", "workers", "mains", "initialize", "perspective_server_default", "blob", "url", "e", "perspective_server_worker_default", "GLOBAL_SERVER_WASM", "createMessageHandler", "handler", "get_client", "init_server", "wasm", "disable_stage_0", "x", "load_wasm_stage_0", "GLOBAL_CLIENT_WASM", "compilerize", "wasm_buff", "__wbg_init", "init", "perspective_js_exports", "init_client", "viewer_class", "get_server", "GLOBAL_WORKER", "get_worker", "perspective_server_worker_default", "websocket", "url", "worker", "perspective_browser_default", "GenericSQLVirtualServerModel", "VirtualDataSlice", "VirtualServer", "url", "perspective_browser_default", "perspective_cdn_default"]
4
+ "sourcesContent": ["// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\nimport { ColumnType } from \"./ts-rs/ColumnType.ts\";\nimport { ViewConfig } from \"./ts-rs/ViewConfig.ts\";\nimport { ViewWindow } from \"./ts-rs/ViewWindow.ts\";\n\nimport type * as perspective from \"../../dist/wasm/perspective-js.js\";\n\n/**\n * VirtualServer API for implementing custom data sources in JavaScript/WASM.\n *\n * The VirtualServer pattern allows you to create custom data sources that\n * integrate with Perspective's protocol. This is useful for:\n * - Connecting to external databases (DuckDB, PostgreSQL, etc.)\n * - Streaming data from APIs or message queues\n * - Implementing custom aggregation or transformation logic\n * - Creating data adapters without copying data into Perspective tables\n *\n * @module virtual_server\n */\n\nexport interface ServerFeatures {\n expressions?: boolean;\n}\n\n/**\n * Handler interface that you implement to provide custom data sources.\n *\n * All methods will be called by the VirtualServer when handling protocol\n * messages from Perspective clients. Methods can return values directly or\n * return Promises for asynchronous operations (e.g., database queries).\n */\nexport interface VirtualServerHandler {\n getHostedTables(): string[] | Promise<string[]>;\n tableSchema(\n tableId: string,\n ): Record<string, ColumnType> | Promise<Record<string, ColumnType>>;\n tableSize(tableId: string): number | Promise<number>;\n tableMakeView(\n tableId: string,\n viewId: string,\n config: ViewConfig,\n ): void | Promise<void>;\n viewDelete(viewId: string): void | Promise<void>;\n viewGetData(\n viewId: string,\n config: ViewConfig,\n schema: Record<string, ColumnType>,\n viewport: ViewWindow,\n dataSlice: perspective.VirtualDataSlice,\n ): void | Promise<void>;\n viewSchema?(\n viewId: string,\n config?: ViewConfig,\n ): Record<string, ColumnType> | Promise<Record<string, ColumnType>>;\n viewSize?(viewId: string): number | Promise<number>;\n tableValidateExpression?(\n tableId: string,\n expression: string,\n ): ColumnType | Promise<ColumnType>;\n getFeatures?(): ServerFeatures | Promise<ServerFeatures>;\n makeTable?(\n tableId: string,\n data: string | Uint8Array,\n ): void | Promise<void>;\n}\n\nexport function createMessageHandler(\n mod: typeof perspective,\n handler: VirtualServerHandler,\n) {\n let virtualServer: perspective.VirtualServer;\n async function postMessage(port: MessagePort, msg: MessageEvent) {\n if (msg.data.cmd === \"init\") {\n try {\n virtualServer = new mod.VirtualServer(handler);\n if (msg.data.id !== undefined) {\n port.postMessage({ id: msg.data.id });\n } else {\n port.postMessage(null);\n }\n } catch (error) {\n console.error(\"Error initializing worker:\", error);\n throw error;\n }\n } else {\n try {\n const requestBytes = new Uint8Array(msg.data);\n const responseBytes =\n await virtualServer.handleRequest(requestBytes);\n const buffer = responseBytes.slice().buffer;\n port.postMessage(buffer, { transfer: [buffer] });\n } catch (error) {\n console.error(\"Error handling request in worker:\", error);\n throw error;\n }\n }\n }\n\n const channel = new MessageChannel();\n channel.port1.onmessage = (message) => {\n postMessage(channel.port1, message);\n };\n\n return channel.port2;\n}\n", "/* @ts-self-types=\"./perspective-js.wasm.d.ts\" */\n\n/**\n * An instance of a [`Client`] is a connection to a single\n * `perspective_server::Server`, whether locally in-memory or remote over some\n * transport like a WebSocket.\n *\n * The browser and node.js libraries both support the `websocket(url)`\n * constructor, which connects to a remote `perspective_server::Server`\n * instance over a WebSocket transport.\n *\n * In the browser, the `worker()` constructor creates a new Web Worker\n * `perspective_server::Server` and returns a [`Client`] connected to it.\n *\n * In node.js, a pre-instantied [`Client`] connected synhronously to a global\n * singleton `perspective_server::Server` is the default module export.\n *\n * # JavaScript Examples\n *\n * Create a Web Worker `perspective_server::Server` in the browser and return a\n * [`Client`] instance connected for it:\n *\n * ```javascript\n * import perspective from \"@perspective-dev/client\";\n * const client = await perspective.worker();\n * ```\n *\n * Create a WebSocket connection to a remote `perspective_server::Server`:\n *\n * ```javascript\n * import perspective from \"@perspective-dev/client\";\n * const client = await perspective.websocket(\"ws://locahost:8080/ws\");\n * ```\n *\n * Access the synchronous client in node.js:\n *\n * ```javascript\n * import { default as client } from \"@perspective-dev/client\";\n * ```\n */\nexport class Client {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Client.prototype);\n obj.__wbg_ptr = ptr;\n ClientFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ClientFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_client_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n __getClassname() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.client___getClassname(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var v1 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Retrieves the names of all tables that this client has access to.\n *\n * `name` is a string identifier unique to the [`Table`] (per [`Client`]),\n * which can be used in conjunction with [`Client::open_table`] to get\n * a [`Table`] instance without the use of [`Client::table`]\n * constructor directly (e.g., one created by another [`Client`]).\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const tables = await client.get_hosted_table_names();\n * ```\n * @returns {Promise<string[]>}\n */\n get_hosted_table_names() {\n const ret = wasm.client_get_hosted_table_names(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * @param {string} error\n * @param {Function | null} [reconnect]\n * @returns {Promise<void>}\n */\n handle_error(error, reconnect) {\n const ptr0 = passStringToWasm0(error, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.client_handle_error(this.__wbg_ptr, ptr0, len0, isLikeNone(reconnect) ? 0 : addHeapObject(reconnect));\n return takeObject(ret);\n }\n /**\n * @param {any} value\n * @returns {Promise<void>}\n */\n handle_response(value) {\n const ret = wasm.client_handle_response(this.__wbg_ptr, addHeapObject(value));\n return takeObject(ret);\n }\n /**\n * @param {Function} send_request\n * @param {Function | null} [close]\n */\n constructor(send_request, close) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.client_new(retptr, addHeapObject(send_request), isLikeNone(close) ? 0 : addHeapObject(close));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n ClientFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {Function} on_response\n * @returns {ProxySession}\n */\n new_proxy_session(on_response) {\n try {\n const ret = wasm.client_new_proxy_session(this.__wbg_ptr, addBorrowedObject(on_response));\n return ProxySession.__wrap(ret);\n } finally {\n heap[stack_pointer++] = undefined;\n }\n }\n /**\n * @param {Function} callback\n * @returns {Promise<number>}\n */\n on_error(callback) {\n const ret = wasm.client_on_error(this.__wbg_ptr, addHeapObject(callback));\n return takeObject(ret);\n }\n /**\n * Register a callback which is invoked whenever [`Client::table`] (on this\n * [`Client`]) or [`Table::delete`] (on a [`Table`] belinging to this\n * [`Client`]) are called.\n * @param {Function} on_update_js\n * @returns {Promise<number>}\n */\n on_hosted_tables_update(on_update_js) {\n const ret = wasm.client_on_hosted_tables_update(this.__wbg_ptr, addHeapObject(on_update_js));\n return takeObject(ret);\n }\n /**\n * Opens a [`Table`] that is hosted on the `perspective_server::Server`\n * that is connected to this [`Client`].\n *\n * The `name` property of [`TableInitOptions`] is used to identify each\n * [`Table`]. [`Table`] `name`s can be looked up for each [`Client`]\n * via [`Client::get_hosted_table_names`].\n *\n * # JavaScript Examples\n *\n * Get a virtual [`Table`] named \"table_one\" from this [`Client`]\n *\n * ```javascript\n * const tables = await client.open_table(\"table_one\");\n * ```\n * @param {string} entity_id\n * @returns {Promise<Table>}\n */\n open_table(entity_id) {\n const ptr0 = passStringToWasm0(entity_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.client_open_table(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * Remove a callback previously registered via\n * `Client::on_hosted_tables_update`.\n * @param {number} update_id\n * @returns {Promise<void>}\n */\n remove_hosted_tables_update(update_id) {\n const ret = wasm.client_remove_hosted_tables_update(this.__wbg_ptr, update_id);\n return takeObject(ret);\n }\n /**\n * Provides the [`SystemInfo`] struct, implementation-specific metadata\n * about the [`perspective_server::Server`] runtime such as Memory and\n * CPU usage.\n *\n * For WebAssembly servers, this method includes the WebAssembly heap size.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const info = await client.system_info();\n * ```\n * @returns {Promise<SystemInfo>}\n */\n system_info() {\n const ret = wasm.client_system_info(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Creates a new [`Table`] from either a _schema_ or _data_.\n *\n * The [`Client::table`] factory function can be initialized with either a\n * _schema_ (see [`Table::schema`]), or data in one of these formats:\n *\n * - Apache Arrow\n * - CSV\n * - JSON row-oriented\n * - JSON column-oriented\n * - NDJSON\n *\n * When instantiated with _data_, the schema is inferred from this data.\n * While this is convenient, inferrence is sometimes imperfect e.g.\n * when the input is empty, null or ambiguous. For these cases,\n * [`Client::table`] can first be instantiated with a explicit schema.\n *\n * When instantiated with a _schema_, the resulting [`Table`] is empty but\n * with known column names and column types. When subsqeuently\n * populated with [`Table::update`], these columns will be _coerced_ to\n * the schema's type. This behavior can be useful when\n * [`Client::table`]'s column type inferences doesn't work.\n *\n * The resulting [`Table`] is _virtual_, and invoking its methods\n * dispatches events to the `perspective_server::Server` this\n * [`Client`] connects to, where the data is stored and all calculation\n * occurs.\n *\n * # Arguments\n *\n * - `arg` - Either _schema_ or initialization _data_.\n * - `options` - Optional configuration which provides one of:\n * - `limit` - The max number of rows the resulting [`Table`] can\n * store.\n * - `index` - The column name to use as an _index_ column. If this\n * `Table` is being instantiated by _data_, this column name must be\n * present in the data.\n * - `name` - The name of the table. This will be generated if it is\n * not provided.\n * - `format` - The explicit format of the input data, can be one of\n * `\"json\"`, `\"columns\"`, `\"csv\"` or `\"arrow\"`. This overrides\n * language-specific type dispatch behavior, which allows stringified\n * and byte array alternative inputs.\n *\n * # JavaScript Examples\n *\n * Load a CSV from a `string`:\n *\n * ```javascript\n * const table = await client.table(\"x,y\\n1,2\\n3,4\");\n * ```\n *\n * Load an Arrow from an `ArrayBuffer`:\n *\n * ```javascript\n * import * as fs from \"node:fs/promises\";\n * const table2 = await client.table(await fs.readFile(\"superstore.arrow\"));\n * ```\n *\n * Load a CSV from a `UInt8Array` (the default for this type is Arrow)\n * using a format override:\n *\n * ```javascript\n * const enc = new TextEncoder();\n * const table = await client.table(enc.encode(\"x,y\\n1,2\\n3,4\"), {\n * format: \"csv\",\n * });\n * ```\n *\n * Create a table with an `index`:\n *\n * ```javascript\n * const table = await client.table(data, { index: \"Row ID\" });\n * ```\n * @param {string | ArrayBuffer | Record<string, unknown[]> | Record<string, unknown>[] | Record<string, ColumnType>} value\n * @param {TableInitOptions | null} [options]\n * @returns {Promise<Table>}\n */\n table(value, options) {\n const ret = wasm.client_table(this.__wbg_ptr, addHeapObject(value), isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Terminates this [`Client`], cleaning up any [`crate::View`] handles the\n * [`Client`] has open as well as its callbacks.\n * @returns {any}\n */\n terminate() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.client_terminate(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\nif (Symbol.dispose) Client.prototype[Symbol.dispose] = Client.prototype.free;\n\n/**\n * JavaScript-facing DuckDB SQL query builder.\n *\n * This struct wraps the Rust `DuckDBSqlBuilder` and exposes it to JavaScript\n * via wasm_bindgen.\n */\nexport class GenericSQLVirtualServerModel {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n GenericSQLVirtualServerModelFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_genericsqlvirtualservermodel_free(ptr, 0);\n }\n /**\n * Returns the SQL query to list all hosted tables.\n * @returns {string}\n */\n getHostedTables() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.genericsqlvirtualservermodel_getHostedTables(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v1 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Creates a new `JsDuckDBSqlBuilder` instance.\n * @param {any | null} [args]\n */\n constructor(args) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.genericsqlvirtualservermodel_new(retptr, isLikeNone(args) ? 0 : addHeapObject(args));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n GenericSQLVirtualServerModelFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to create a view from a table with the given\n * configuration.\n * @param {string} table_id\n * @param {string} view_id\n * @param {any} config\n * @returns {string}\n */\n tableMakeView(table_id, view_id, config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(table_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_tableMakeView(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, addHeapObject(config));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v3 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v3;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to describe a table's schema.\n * @param {string} table_id\n * @returns {string}\n */\n tableSchema(table_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(table_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_tableSchema(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to get the row count of a table.\n * @param {string} table_id\n * @returns {string}\n */\n tableSize(table_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(table_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_tableSize(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to validate an expression against a table.\n * @param {string} table_id\n * @param {string} expression\n * @returns {string}\n */\n tableValidateExpression(table_id, expression) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(table_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(expression, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_tableValidateExpression(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v3 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v3;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to get the column count of a view.\n * @param {string} view_id\n * @returns {string}\n */\n viewColumnSize(view_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_viewColumnSize(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to delete a view.\n * @param {string} view_id\n * @returns {string}\n */\n viewDelete(view_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_viewDelete(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to fetch data from a view with the given viewport.\n * @param {string} view_id\n * @param {any} config\n * @param {any} viewport\n * @param {any} schema\n * @returns {string}\n */\n viewGetData(view_id, config, viewport, schema) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_viewGetData(retptr, this.__wbg_ptr, ptr0, len0, addHeapObject(config), addHeapObject(viewport), addHeapObject(schema));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to describe a view's schema.\n * @param {string} view_id\n * @returns {string}\n */\n viewSchema(view_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_viewSchema(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Returns the SQL query to get the row count of a view.\n * @param {string} view_id\n * @returns {string}\n */\n viewSize(view_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(view_id, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.genericsqlvirtualservermodel_viewSize(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v2 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\nif (Symbol.dispose) GenericSQLVirtualServerModel.prototype[Symbol.dispose] = GenericSQLVirtualServerModel.prototype.free;\n\nexport class ProxySession {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(ProxySession.prototype);\n obj.__wbg_ptr = ptr;\n ProxySessionFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ProxySessionFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_proxysession_free(ptr, 0);\n }\n /**\n * @returns {Promise<void>}\n */\n close() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.proxysession_close(ptr);\n return takeObject(ret);\n }\n /**\n * @param {any} value\n * @returns {Promise<void>}\n */\n handle_request(value) {\n const ret = wasm.proxysession_handle_request(this.__wbg_ptr, addHeapObject(value));\n return takeObject(ret);\n }\n /**\n * @param {Client} client\n * @param {Function} on_response\n */\n constructor(client, on_response) {\n try {\n _assertClass(client, Client);\n const ret = wasm.proxysession_new(client.__wbg_ptr, addBorrowedObject(on_response));\n this.__wbg_ptr = ret >>> 0;\n ProxySessionFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n heap[stack_pointer++] = undefined;\n }\n }\n}\nif (Symbol.dispose) ProxySession.prototype[Symbol.dispose] = ProxySession.prototype.free;\n\nexport class Table {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Table.prototype);\n obj.__wbg_ptr = ptr;\n TableFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n TableFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_table_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n __getClassname() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.table___getClassname(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var v1 = getCachedStringFromWasm0(r0, r1);\n if (r0 !== 0) { wasm.__wbindgen_export4(r0, r1, 1); }\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Removes all the rows in the [`Table`], but preserves everything else\n * including the schema, index, and any callbacks or registered\n * [`View`] instances.\n *\n * Calling [`Table::clear`], like [`Table::update`] and [`Table::remove`],\n * will trigger an update event to any registered listeners via\n * [`View::on_update`].\n * @returns {Promise<void>}\n */\n clear() {\n const ret = wasm.table_clear(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Returns the column names of this [`Table`] in \"natural\" order (the\n * ordering implied by the input format).\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const columns = await table.columns();\n * ```\n * @returns {Promise<any>}\n */\n columns() {\n const ret = wasm.table_columns(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Delete this [`Table`] and cleans up associated resources.\n *\n * [`Table`]s do not stop consuming resources or processing updates when\n * they are garbage collected in their host language - you must call\n * this method to reclaim these.\n *\n * # Arguments\n *\n * - `options` An options dictionary.\n * - `lazy` Whether to delete this [`Table`] _lazily_. When false (the\n * default), the delete will occur immediately, assuming it has no\n * [`View`] instances registered to it (which must be deleted first,\n * otherwise this method will throw an error). When true, the\n * [`Table`] will only be marked for deltion once its [`View`]\n * dependency count reaches 0.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const table = await client.table(\"x,y\\n1,2\\n3,4\");\n *\n * // ...\n *\n * await table.delete({ lazy: true });\n * ```\n * @param {DeleteOptions | null} [options]\n * @returns {Promise<void>}\n */\n delete(options) {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.table_delete(ptr, isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Get a copy of the [`Client`] this [`Table`] came from.\n * @returns {Promise<Client>}\n */\n get_client() {\n const ret = wasm.table_get_client(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Returns the name of the index column for the table.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const table = await client.table(\"x,y\\n1,2\\n3,4\", { index: \"x\" });\n * const index = table.get_index(); // \"x\"\n * ```\n * @returns {Promise<string>}\n */\n get_index() {\n const ret = wasm.table_get_index(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Returns the user-specified row limit for this table.\n * @returns {Promise<number | undefined>}\n */\n get_limit() {\n const ret = wasm.table_get_limit(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Returns the user-specified name for this table, or the auto-generated\n * name if a name was not specified when the table was created.\n * @returns {Promise<string>}\n */\n get_name() {\n const ret = wasm.table_get_name(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Create a unique channel ID on this [`Table`], which allows\n * `View::on_update` callback calls to be associated with the\n * `Table::update` which caused them.\n * @returns {Promise<number>}\n */\n make_port() {\n const ret = wasm.table_make_port(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Register a callback which is called exactly once, when this [`Table`] is\n * deleted with the [`Table::delete`] method.\n *\n * [`Table::on_delete`] resolves when the subscription message is sent, not\n * when the _delete_ event occurs.\n * @param {Function} on_delete\n * @returns {Promise<any>}\n */\n on_delete(on_delete) {\n const ret = wasm.table_on_delete(this.__wbg_ptr, addHeapObject(on_delete));\n return takeObject(ret);\n }\n /**\n * Removes rows from this [`Table`] with the `index` column values\n * supplied.\n *\n * # Arguments\n *\n * - `indices` - A list of `index` column values for rows that should be\n * removed.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * await table.remove([1, 2, 3]);\n * ```\n * @param {any} value\n * @param {UpdateOptions | null} [options]\n * @returns {Promise<void>}\n */\n remove(value, options) {\n const ret = wasm.table_remove(this.__wbg_ptr, addHeapObject(value), isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Removes a listener with a given ID, as returned by a previous call to\n * [`Table::on_delete`].\n * @param {number} callback_id\n * @returns {Promise<any>}\n */\n remove_delete(callback_id) {\n const ret = wasm.table_remove_delete(this.__wbg_ptr, callback_id);\n return takeObject(ret);\n }\n /**\n * Replace all rows in this [`Table`] with the input data, coerced to this\n * [`Table`]'s existing [`perspective_client::Schema`], notifying any\n * derived [`View`] and [`View::on_update`] callbacks.\n *\n * Calling [`Table::replace`] is an easy way to replace _all_ the data in a\n * [`Table`] without losing any derived [`View`] instances or\n * [`View::on_update`] callbacks. [`Table::replace`] does _not_ infer\n * data types like [`Client::table`] does, rather it _coerces_ input\n * data to the `Schema` like [`Table::update`]. If you need a [`Table`]\n * with a different `Schema`, you must create a new one.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * await table.replace(\"x,y\\n1,2\");\n * ```\n * @param {any} input\n * @param {UpdateOptions | null} [options]\n * @returns {Promise<void>}\n */\n replace(input, options) {\n const ret = wasm.table_replace(this.__wbg_ptr, addHeapObject(input), isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Returns a table's [`Schema`], a mapping of column names to column types.\n *\n * The mapping of a [`Table`]'s column names to data types is referred to\n * as a [`Schema`]. Each column has a unique name and a data type, one\n * of:\n *\n * - `\"boolean\"` - A boolean type\n * - `\"date\"` - A timesonze-agnostic date type (month/day/year)\n * - `\"datetime\"` - A millisecond-precision datetime type in the UTC\n * timezone\n * - `\"float\"` - A 64 bit float\n * - `\"integer\"` - A signed 32 bit integer (the integer type supported by\n * JavaScript)\n * - `\"string\"` - A [`String`] data type (encoded internally as a\n * _dictionary_)\n *\n * Note that all [`Table`] columns are _nullable_, regardless of the data\n * type.\n * @returns {Record<string, ColumnType>}\n */\n schema() {\n const ret = wasm.table_schema(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Returns the number of rows in a [`Table`].\n * @returns {Promise<number>}\n */\n size() {\n const ret = wasm.table_size(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Updates the rows of this table and any derived [`View`] instances.\n *\n * Calling [`Table::update`] will trigger the [`View::on_update`] callbacks\n * register to derived [`View`], and the call itself will not resolve until\n * _all_ derived [`View`]'s are notified.\n *\n * When updating a [`Table`] with an `index`, [`Table::update`] supports\n * partial updates, by omitting columns from the update data.\n *\n * # Arguments\n *\n * - `input` - The input data for this [`Table`]. The schema of a [`Table`]\n * is immutable after creation, so this method cannot be called with a\n * schema.\n * - `options` - Options for this update step - see [`UpdateOptions`].\n *\n * # JavaScript Examples\n *\n * ```javascript\n * await table.update(\"x,y\\n1,2\");\n * ```\n * @param {string | ArrayBuffer | Record<string, unknown[]> | Record<string, unknown>[] | Record<string, ColumnType>} input\n * @param {UpdateOptions | null} [options]\n * @returns {Promise<any>}\n */\n update(input, options) {\n const ret = wasm.table_update(this.__wbg_ptr, addHeapObject(input), isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Validates the given expressions.\n * @param {any} exprs\n * @returns {Promise<any>}\n */\n validate_expressions(exprs) {\n const ret = wasm.table_validate_expressions(this.__wbg_ptr, addHeapObject(exprs));\n return takeObject(ret);\n }\n /**\n * Create a new [`View`] from this table with a specified\n * [`ViewConfigUpdate`].\n *\n * See [`View`] struct.\n *\n * # JavaScript Examples\n *\n * ```javascript\n * const view = await table.view({\n * columns: [\"Sales\"],\n * aggregates: { Sales: \"sum\" },\n * group_by: [\"Region\", \"Country\"],\n * filter: [[\"Category\", \"in\", [\"Furniture\", \"Technology\"]]],\n * });\n * ```\n * @param {ViewConfigUpdate | null} [config]\n * @returns {Promise<View>}\n */\n view(config) {\n const ret = wasm.table_view(this.__wbg_ptr, isLikeNone(config) ? 0 : addHeapObject(config));\n return takeObject(ret);\n }\n}\nif (Symbol.dispose) Table.prototype[Symbol.dispose] = Table.prototype.free;\n\n/**\n * The [`View`] struct is Perspective's query and serialization interface. It\n * represents a query on the `Table`'s dataset and is always created from an\n * existing `Table` instance via the [`Table::view`] method.\n *\n * [`View`]s are immutable with respect to the arguments provided to the\n * [`Table::view`] method; to change these parameters, you must create a new\n * [`View`] on the same [`Table`]. However, each [`View`] is _live_ with\n * respect to the [`Table`]'s data, and will (within a conflation window)\n * update with the latest state as its parent [`Table`] updates, including\n * incrementally recalculating all aggregates, pivots, filters, etc. [`View`]\n * query parameters are composable, in that each parameter works independently\n * _and_ in conjunction with each other, and there is no limit to the number of\n * pivots, filters, etc. which can be applied.\n */\nexport class View {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(View.prototype);\n obj.__wbg_ptr = ptr;\n ViewFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n static __unwrap(jsValue) {\n if (!(jsValue instanceof View)) {\n return 0;\n }\n return jsValue.__destroy_into_raw();\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ViewFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_view_free(ptr, 0);\n }\n /**\n * @returns {View}\n */\n __get_model() {\n const ret = wasm.view___get_model(this.__wbg_ptr);\n return View.__wrap(ret);\n }\n /**\n * Collapses the `group_by` row at `row_index`.\n * @param {number} row_index\n * @returns {Promise<number>}\n */\n collapse(row_index) {\n const ret = wasm.view_collapse(this.__wbg_ptr, row_index);\n return takeObject(ret);\n }\n /**\n * Returns an array of strings containing the column paths of the [`View`]\n * without any of the source columns.\n *\n * A column path shows the columns that a given cell belongs to after\n * pivots are applied.\n * @param {ColumnWindow | null} [window]\n * @returns {Promise<any>}\n */\n column_paths(window) {\n const ret = wasm.view_column_paths(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Delete this [`View`] and clean up all resources associated with it.\n * [`View`] objects do not stop consuming resources or processing\n * updates when they are garbage collected - you must call this method\n * to reclaim these.\n * @returns {Promise<void>}\n */\n delete() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.view_delete(ptr);\n return takeObject(ret);\n }\n /**\n * Returns this [`View`]'s _dimensions_, row and column count, as well as\n * those of the [`crate::Table`] from which it was derived.\n *\n * - `num_table_rows` - The number of rows in the underlying\n * [`crate::Table`].\n * - `num_table_columns` - The number of columns in the underlying\n * [`crate::Table`] (including the `index` column if this\n * [`crate::Table`] was constructed with one).\n * - `num_view_rows` - The number of rows in this [`View`]. If this\n * [`View`] has a `group_by` clause, `num_view_rows` will also include\n * aggregated rows.\n * - `num_view_columns` - The number of columns in this [`View`]. If this\n * [`View`] has a `split_by` clause, `num_view_columns` will include all\n * _column paths_, e.g. the number of `columns` clause times the number\n * of `split_by` groups.\n * @returns {Promise<any>}\n */\n dimensions() {\n const ret = wasm.view_dimensions(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Expand the `group_by` row at `row_index`.\n * @param {number} row_index\n * @returns {Promise<number>}\n */\n expand(row_index) {\n const ret = wasm.view_expand(this.__wbg_ptr, row_index);\n return takeObject(ret);\n }\n /**\n * The expression schema of this [`View`], which contains only the\n * expressions created on this [`View`]. See [`View::schema`] for\n * details.\n * @returns {Promise<any>}\n */\n expression_schema() {\n const ret = wasm.view_expression_schema(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * A copy of the config object passed to the [`Table::view`] method which\n * created this [`View`].\n * @returns {Promise<any>}\n */\n get_config() {\n const ret = wasm.view_get_config(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Calculates the [min, max] of the leaf nodes of a column `column_name`.\n *\n * # Returns\n *\n * A tuple of [min, max], whose types are column and aggregate dependent.\n * @param {string} name\n * @returns {Promise<Array<any>>}\n */\n get_min_max(name) {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.view_get_min_max(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * The number of aggregated columns in this [`View`]. This is affected by\n * the \"split_by\" configuration parameter supplied to this view's\n * contructor.\n *\n * # Returns\n *\n * The number of aggregated columns.\n * @returns {Promise<number>}\n */\n num_columns() {\n const ret = wasm.view_num_columns(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * The number of aggregated rows in this [`View`]. This is affected by the\n * \"group_by\" configuration parameter supplied to this view's contructor.\n *\n * # Returns\n *\n * The number of aggregated rows.\n * @returns {Promise<number>}\n */\n num_rows() {\n const ret = wasm.view_num_rows(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Register a callback with this [`View`]. Whenever the [`View`] is\n * deleted, this callback will be invoked.\n * @param {Function} on_delete\n * @returns {Promise<any>}\n */\n on_delete(on_delete) {\n const ret = wasm.view_on_delete(this.__wbg_ptr, addHeapObject(on_delete));\n return takeObject(ret);\n }\n /**\n * Register a callback with this [`View`]. Whenever the view's underlying\n * table emits an update, this callback will be invoked with an object\n * containing `port_id`, indicating which port the update fired on, and\n * optionally `delta`, which is the new data that was updated for each\n * cell or each row.\n *\n * # Arguments\n *\n * - `on_update` - A callback function invoked on update, which receives an\n * object with two keys: `port_id`, indicating which port the update was\n * triggered on, and `delta`, whose value is dependent on the mode\n * parameter.\n * - `options` - If this is provided as `OnUpdateOptions { mode:\n * Some(OnUpdateMode::Row) }`, then `delta` is an Arrow of the updated\n * rows. Otherwise `delta` will be [`Option::None`].\n *\n * # JavaScript Examples\n *\n * ```javascript\n * // Attach an `on_update` callback\n * view.on_update((updated) => console.log(updated.port_id));\n * ```\n *\n * ```javascript\n * // `on_update` with row deltas\n * view.on_update((updated) => console.log(updated.delta), { mode: \"row\" });\n * ```\n * @param {Function} on_update_js\n * @param {OnUpdateOptions | null} [options]\n * @returns {Promise<any>}\n */\n on_update(on_update_js, options) {\n const ret = wasm.view_on_update(this.__wbg_ptr, addHeapObject(on_update_js), isLikeNone(options) ? 0 : addHeapObject(options));\n return takeObject(ret);\n }\n /**\n * Unregister a previously registered [`View::on_delete`] callback.\n * @param {number} callback_id\n * @returns {Promise<any>}\n */\n remove_delete(callback_id) {\n const ret = wasm.view_remove_delete(this.__wbg_ptr, callback_id);\n return takeObject(ret);\n }\n /**\n * Unregister a previously registered update callback with this [`View`].\n *\n * # Arguments\n *\n * - `id` - A callback `id` as returned by a recipricol call to\n * [`View::on_update`].\n * @param {number} callback_id\n * @returns {Promise<void>}\n */\n remove_update(callback_id) {\n const ret = wasm.view_remove_update(this.__wbg_ptr, callback_id);\n return takeObject(ret);\n }\n /**\n * The schema of this [`View`].\n *\n * The [`View`] schema differs from the `schema` returned by\n * [`Table::schema`]; it may have different column names due to\n * `expressions` or `columns` configs, or it maye have _different\n * column types_ due to the application og `group_by` and `aggregates`\n * config. You can think of [`Table::schema`] as the _input_ schema and\n * [`View::schema`] as the _output_ schema of a Perspective pipeline.\n * @returns {Promise<any>}\n */\n schema() {\n const ret = wasm.view_schema(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Set expansion `depth` of the `group_by` tree.\n * @param {number} depth\n * @returns {Promise<void>}\n */\n set_depth(depth) {\n const ret = wasm.view_set_depth(this.__wbg_ptr, depth);\n return takeObject(ret);\n }\n /**\n * Serializes a [`View`] to the Apache Arrow data format.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<ArrayBuffer>}\n */\n to_arrow(window) {\n const ret = wasm.view_to_arrow(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Serializes this [`View`] to JavaScript objects in a column-oriented\n * format.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<object>}\n */\n to_columns(window) {\n const ret = wasm.view_to_columns(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Serializes this [`View`] to a string of JSON data. Useful if you want to\n * save additional round trip serialize/deserialize cycles.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<string>}\n */\n to_columns_string(window) {\n const ret = wasm.view_to_columns_string(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Serializes this [`View`] to CSV data in a standard format.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<string>}\n */\n to_csv(window) {\n const ret = wasm.view_to_csv(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Serializes this [`View`] to JavaScript objects in a row-oriented\n * format.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<Array<any>>}\n */\n to_json(window) {\n const ret = wasm.view_to_json(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Render this `View` as a JSON string.\n * @param {ViewWindow | null} [window]\n * @returns {Promise<string>}\n */\n to_json_string(window) {\n const ret = wasm.view_to_json_string(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n /**\n * Renders this [`View`] as an [NDJSON](https://github.com/ndjson/ndjson-spec)\n * formatted [`String`].\n * @param {ViewWindow | null} [window]\n * @returns {Promise<string>}\n */\n to_ndjson(window) {\n const ret = wasm.view_to_ndjson(this.__wbg_ptr, isLikeNone(window) ? 0 : addHeapObject(window));\n return takeObject(ret);\n }\n}\nif (Symbol.dispose) View.prototype[Symbol.dispose] = View.prototype.free;\n\nexport class VirtualDataSlice {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(VirtualDataSlice.prototype);\n obj.__wbg_ptr = ptr;\n VirtualDataSliceFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n VirtualDataSliceFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_virtualdataslice_free(ptr, 0);\n }\n /**\n * @param {ViewConfigUpdate} config\n */\n constructor(config) {\n const ret = wasm.virtualdataslice_new(addHeapObject(config));\n this.__wbg_ptr = ret >>> 0;\n VirtualDataSliceFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setBooleanCol(name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setBooleanCol(retptr, this.__wbg_ptr, ptr0, len0, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} dtype\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setCol(dtype, name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(dtype, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setCol(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setDatetimeCol(name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setDatetimeCol(retptr, this.__wbg_ptr, ptr0, len0, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setFloatCol(name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setFloatCol(retptr, this.__wbg_ptr, ptr0, len0, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setIntegerCol(name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setIntegerCol(retptr, this.__wbg_ptr, ptr0, len0, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} name\n * @param {number} index\n * @param {any} val\n * @param {number | null} [group_by_index]\n */\n setStringCol(name, index, val, group_by_index) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n wasm.virtualdataslice_setStringCol(retptr, this.__wbg_ptr, ptr0, len0, index, addHeapObject(val), isLikeNone(group_by_index) ? 0x100000001 : (group_by_index) >>> 0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\nif (Symbol.dispose) VirtualDataSlice.prototype[Symbol.dispose] = VirtualDataSlice.prototype.free;\n\nexport class VirtualServer {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n VirtualServerFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_virtualserver_free(ptr, 0);\n }\n /**\n * @param {Uint8Array} bytes\n * @returns {Promise<any>}\n */\n handleRequest(bytes) {\n const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.virtualserver_handleRequest(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {object} handler\n */\n constructor(handler) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.virtualserver_new(retptr, addHeapObject(handler));\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n VirtualServerFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\nif (Symbol.dispose) VirtualServer.prototype[Symbol.dispose] = VirtualServer.prototype.free;\n\nexport function init() {\n wasm.init();\n}\n\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg_Error_8c4e43fe74559d73: function(arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n const ret = Error(v0);\n return addHeapObject(ret);\n },\n __wbg_Number_04624de7d0e8332d: function(arg0) {\n const ret = Number(getObject(arg0));\n return ret;\n },\n __wbg_String_8f0eb39a4a4c2f66: function(arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_bigint_get_as_i64_8fcf4ce7f1ca72a2: function(arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof(v) === 'bigint' ? v : undefined;\n getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_boolean_get_bbbb1c18aa2f5e25: function(arg0) {\n const v = getObject(arg0);\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n },\n __wbg___wbindgen_debug_string_0bc8482c6e3508ae: function(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_in_47fa6863be6f2f25: function(arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n },\n __wbg___wbindgen_is_bigint_31b12575b56f32fc: function(arg0) {\n const ret = typeof(getObject(arg0)) === 'bigint';\n return ret;\n },\n __wbg___wbindgen_is_function_0095a73b8b156f76: function(arg0) {\n const ret = typeof(getObject(arg0)) === 'function';\n return ret;\n },\n __wbg___wbindgen_is_null_ac34f5003991759a: function(arg0) {\n const ret = getObject(arg0) === null;\n return ret;\n },\n __wbg___wbindgen_is_object_5ae8e5880f2c1fbd: function(arg0) {\n const val = getObject(arg0);\n const ret = typeof(val) === 'object' && val !== null;\n return ret;\n },\n __wbg___wbindgen_is_string_cd444516edc5b180: function(arg0) {\n const ret = typeof(getObject(arg0)) === 'string';\n return ret;\n },\n __wbg___wbindgen_is_undefined_9e4d92534c42d778: function(arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n },\n __wbg___wbindgen_jsval_eq_11888390b0186270: function(arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n },\n __wbg___wbindgen_jsval_loose_eq_9dd77d8cd6671811: function(arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n },\n __wbg___wbindgen_number_get_8ff4255516ccad3e: function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n },\n __wbg___wbindgen_string_get_72fb696202c56729: function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n },\n __wbg___wbindgen_throw_be289d5034ed271b: function(arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n throw new Error(v0);\n },\n __wbg__wbg_cb_unref_d9b87ff7982e3b21: function(arg0) {\n getObject(arg0)._wbg_cb_unref();\n },\n __wbg_apply_ada2ee1a60ac7b3c: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).apply(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_at_dfc235641cc0e40c: function(arg0, arg1) {\n const ret = getObject(arg0).at(arg1);\n return addHeapObject(ret);\n },\n __wbg_buffer_26d0910f3a5bc899: function(arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n },\n __wbg_call_389efe28435a9388: function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_call_4708e0c13bdc8e95: function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_call_812d25f1510c13c8: function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_client_new: function(arg0) {\n const ret = Client.__wrap(arg0);\n return addHeapObject(ret);\n },\n __wbg_debug_46a93995fc6f8820: function(arg0, arg1, arg2, arg3) {\n console.debug(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n },\n __wbg_debug_a4099fa12db6cd61: function(arg0) {\n console.debug(getObject(arg0));\n },\n __wbg_done_57b39ecd9addfe81: function(arg0) {\n const ret = getObject(arg0).done;\n return ret;\n },\n __wbg_entries_58c7934c745daac7: function(arg0) {\n const ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_error_794d0ffc9d00d5c3: function(arg0, arg1, arg2, arg3) {\n console.error(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n },\n __wbg_error_9a7fe3f932034cde: function(arg0) {\n console.error(getObject(arg0));\n },\n __wbg_error_f852e41c69b0bd84: function(arg0, arg1) {\n console.error(getObject(arg0), getObject(arg1));\n },\n __wbg_from_bddd64e7d5ff6941: function(arg0) {\n const ret = Array.from(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_getEntriesByName_02488cff0bc7581c: function(arg0, arg1, arg2, arg3, arg4) {\n var v0 = getCachedStringFromWasm0(arg1, arg2);\n var v1 = getCachedStringFromWasm0(arg3, arg4);\n const ret = getObject(arg0).getEntriesByName(v0, v1);\n return addHeapObject(ret);\n },\n __wbg_getRandomValues_1c61fac11405ffdc: function() { return handleError(function (arg0, arg1) {\n globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));\n }, arguments); },\n __wbg_getTime_1e3cd1391c5c3995: function(arg0) {\n const ret = getObject(arg0).getTime();\n return ret;\n },\n __wbg_get_76e04509d1922a04: function(arg0, arg1, arg2) {\n var v0 = getCachedStringFromWasm0(arg1, arg2);\n const ret = getObject(arg0)[v0];\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_get_9b94d73e6221f75c: function(arg0, arg1) {\n const ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n },\n __wbg_get_b3ed3ad4be2bc8ac: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_get_with_ref_key_1dc361bd10053bfe: function(arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n },\n __wbg_has_d4e53238966c12b6: function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.has(getObject(arg0), getObject(arg1));\n return ret;\n }, arguments); },\n __wbg_info_148d043840582012: function(arg0) {\n console.info(getObject(arg0));\n },\n __wbg_info_9e602cf10c5c690b: function(arg0, arg1, arg2, arg3) {\n console.info(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n },\n __wbg_instanceof_ArrayBuffer_c367199e2fa2aa04: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Array_d9eac779cd191cbc: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Date_1b9f15b87f10aa4c: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Date;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Error_8573fe0b0b480f46: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Error;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Map_53af74335dec57f4: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Map;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Object_1c6af87502b733ed: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Object;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Promise_0094681e3519d6ec: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Promise;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Uint8Array_9b9075935c74707c: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_instanceof_Window_ed49b2db8df90359: function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n },\n __wbg_isArray_d314bb98fcf08331: function(arg0) {\n const ret = Array.isArray(getObject(arg0));\n return ret;\n },\n __wbg_isSafeInteger_bfbc7332a9768d2a: function(arg0) {\n const ret = Number.isSafeInteger(getObject(arg0));\n return ret;\n },\n __wbg_iterator_6ff6560ca1568e55: function() {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n },\n __wbg_keys_b50a709a76add04e: function(arg0) {\n const ret = Object.keys(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_length_32ed9a279acd054c: function(arg0) {\n const ret = getObject(arg0).length;\n return ret;\n },\n __wbg_length_35a7bace40f36eac: function(arg0) {\n const ret = getObject(arg0).length;\n return ret;\n },\n __wbg_mark_3b530a64b09ba08a: function() { return handleError(function (arg0, arg1, arg2) {\n var v0 = getCachedStringFromWasm0(arg1, arg2);\n getObject(arg0).mark(v0);\n }, arguments); },\n __wbg_measure_288b48c082eae0fe: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var v0 = getCachedStringFromWasm0(arg1, arg2);\n var v1 = getCachedStringFromWasm0(arg3, arg4);\n getObject(arg0).measure(v0, v1);\n }, arguments); },\n __wbg_message_9ddc4b9a62a7c379: function(arg0) {\n const ret = getObject(arg0).message;\n return addHeapObject(ret);\n },\n __wbg_new_361308b2356cecd0: function() {\n const ret = new Object();\n return addHeapObject(ret);\n },\n __wbg_new_3eb36ae241fe6f44: function() {\n const ret = new Array();\n return addHeapObject(ret);\n },\n __wbg_new_72b49615380db768: function(arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n const ret = new Error(v0);\n return addHeapObject(ret);\n },\n __wbg_new_b5d9e2fb389fef91: function(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wasm_bindgen_func_elem_5713(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n },\n __wbg_new_dca287b076112a51: function() {\n const ret = new Map();\n return addHeapObject(ret);\n },\n __wbg_new_dd2b680c8bf6ae29: function(arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_new_from_slice_a3d2629dc1826784: function(arg0, arg1) {\n const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));\n return addHeapObject(ret);\n },\n __wbg_new_no_args_1c7c842f08d00ebb: function(arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n const ret = new Function(v0);\n return addHeapObject(ret);\n },\n __wbg_next_3482f54c49e8af19: function() { return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments); },\n __wbg_next_418f80d8f5303233: function(arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n },\n __wbg_now_ebffdf7e580f210d: function(arg0) {\n const ret = getObject(arg0).now();\n return ret;\n },\n __wbg_parse_708461a1feddfb38: function() { return handleError(function (arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n const ret = JSON.parse(v0);\n return addHeapObject(ret);\n }, arguments); },\n __wbg_performance_06f12ba62483475d: function(arg0) {\n const ret = getObject(arg0).performance;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_prototypesetcall_bdcdcc5842e4d77d: function(arg0, arg1, arg2) {\n Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), getObject(arg2));\n },\n __wbg_push_8ffdcb2063340ba5: function(arg0, arg1) {\n const ret = getObject(arg0).push(getObject(arg1));\n return ret;\n },\n __wbg_queueMicrotask_0aa0a927f78f5d98: function(arg0) {\n const ret = getObject(arg0).queueMicrotask;\n return addHeapObject(ret);\n },\n __wbg_queueMicrotask_5bb536982f78a56f: function(arg0) {\n queueMicrotask(getObject(arg0));\n },\n __wbg_reject_a2176de7f1212be5: function(arg0) {\n const ret = Promise.reject(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_resolve_002c4b7d9d8f6b64: function(arg0) {\n const ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_set_1eb0999cf5d27fc8: function(arg0, arg1, arg2) {\n const ret = getObject(arg0).set(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n },\n __wbg_set_3f1d0b984ed272ed: function(arg0, arg1, arg2) {\n getObject(arg0)[takeObject(arg1)] = takeObject(arg2);\n },\n __wbg_set_f43e577aea94465b: function(arg0, arg1, arg2) {\n getObject(arg0)[arg1 >>> 0] = takeObject(arg2);\n },\n __wbg_startTime_248495bfbcb427d3: function(arg0) {\n const ret = getObject(arg0).startTime;\n return ret;\n },\n __wbg_static_accessor_GLOBAL_12837167ad935116: function() {\n const ret = typeof global === 'undefined' ? null : global;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_static_accessor_GLOBAL_THIS_e628e89ab3b1c95f: function() {\n const ret = typeof globalThis === 'undefined' ? null : globalThis;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_static_accessor_SELF_a621d3dfbb60d0ce: function() {\n const ret = typeof self === 'undefined' ? null : self;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_static_accessor_WINDOW_f8727f0cf888e0bd: function() {\n const ret = typeof window === 'undefined' ? null : window;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n },\n __wbg_stringify_8d1cc6ff383e8bae: function() { return handleError(function (arg0) {\n const ret = JSON.stringify(getObject(arg0));\n return addHeapObject(ret);\n }, arguments); },\n __wbg_table_new: function(arg0) {\n const ret = Table.__wrap(arg0);\n return addHeapObject(ret);\n },\n __wbg_then_0d9fe2c7b1857d32: function(arg0, arg1, arg2) {\n const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n },\n __wbg_then_b9e7b3b5f1a9e1b5: function(arg0, arg1) {\n const ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n },\n __wbg_toString_964ff7fe6eca8362: function(arg0) {\n const ret = getObject(arg0).toString();\n return addHeapObject(ret);\n },\n __wbg_trace_9007714a6fbee374: function(arg0) {\n console.trace(getObject(arg0));\n },\n __wbg_trace_bd16b570941b54fb: function(arg0, arg1, arg2, arg3) {\n console.trace(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n },\n __wbg_value_0546255b415e96c1: function(arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n },\n __wbg_values_5da93bc719d272cf: function(arg0) {\n const ret = Object.values(getObject(arg0));\n return addHeapObject(ret);\n },\n __wbg_view_new: function(arg0) {\n const ret = View.__wrap(arg0);\n return addHeapObject(ret);\n },\n __wbg_view_unwrap: function(arg0) {\n const ret = View.__unwrap(getObject(arg0));\n return ret;\n },\n __wbg_virtualdataslice_new: function(arg0) {\n const ret = VirtualDataSlice.__wrap(arg0);\n return addHeapObject(ret);\n },\n __wbg_warn_a40b971467b219c7: function(arg0, arg1, arg2, arg3) {\n console.warn(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n },\n __wbg_warn_f7ae1b2e66ccb930: function(arg0) {\n console.warn(getObject(arg0));\n },\n __wbindgen_cast_0000000000000001: function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { dtor_idx: 12, function: Function { arguments: [], shim_idx: 29, ret: NamedExternref(\"Promise<any>\"), inner_ret: Some(NamedExternref(\"Promise<any>\")) }, mutable: false }) -> Externref`.\n const ret = makeClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_813, __wasm_bindgen_func_elem_1689);\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000002: function(arg0, arg1) {\n // Cast intrinsic for `Closure(Closure { dtor_idx: 549, function: Function { arguments: [Externref], shim_idx: 550, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n const ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_3857, __wasm_bindgen_func_elem_3874);\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000003: function(arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000004: function(arg0) {\n // Cast intrinsic for `I64 -> Externref`.\n const ret = arg0;\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000005: function(arg0, arg1) {\n var v0 = getCachedStringFromWasm0(arg0, arg1);\n // Cast intrinsic for `Ref(CachedString) -> Externref`.\n const ret = v0;\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000006: function(arg0, arg1) {\n // Cast intrinsic for `Ref(Slice(U8)) -> NamedExternref(\"Uint8Array\")`.\n const ret = getArrayU8FromWasm0(arg0, arg1);\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000007: function(arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000008: function(arg0, arg1) {\n var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_export4(arg0, arg1 * 4, 4);\n // Cast intrinsic for `Vector(NamedExternref(\"string\")) -> Externref`.\n const ret = v0;\n return addHeapObject(ret);\n },\n __wbindgen_cast_0000000000000009: function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_export4(arg0, arg1 * 1, 1);\n // Cast intrinsic for `Vector(U8) -> Externref`.\n const ret = v0;\n return addHeapObject(ret);\n },\n __wbindgen_object_clone_ref: function(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n },\n __wbindgen_object_drop_ref: function(arg0) {\n takeObject(arg0);\n },\n };\n return {\n __proto__: null,\n \"./perspective-js.wasm_bg.js\": import0,\n };\n}\n\nfunction __wasm_bindgen_func_elem_1689(arg0, arg1) {\n const ret = wasm.__wasm_bindgen_func_elem_1689(arg0, arg1);\n return takeObject(ret);\n}\n\nfunction __wasm_bindgen_func_elem_3874(arg0, arg1, arg2) {\n wasm.__wasm_bindgen_func_elem_3874(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wasm_bindgen_func_elem_5713(arg0, arg1, arg2, arg3) {\n wasm.__wasm_bindgen_func_elem_5713(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\nconst ClientFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_client_free(ptr >>> 0, 1));\nconst GenericSQLVirtualServerModelFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_genericsqlvirtualservermodel_free(ptr >>> 0, 1));\nconst ProxySessionFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_proxysession_free(ptr >>> 0, 1));\nconst TableFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_table_free(ptr >>> 0, 1));\nconst ViewFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_view_free(ptr >>> 0, 1));\nconst VirtualDataSliceFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_virtualdataslice_free(ptr >>> 0, 1));\nconst VirtualServerFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_virtualserver_free(ptr >>> 0, 1));\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n}\n\nfunction addBorrowedObject(obj) {\n if (stack_pointer == 1) throw new Error('out of js stack');\n heap[--stack_pointer] = obj;\n return stack_pointer;\n}\n\nconst CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(state => state.dtor(state.a, state.b));\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\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(takeObject(mem.getUint32(i, true)));\n }\n return result;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction getCachedStringFromWasm0(ptr, len) {\n if (ptr === 0) {\n return getObject(len);\n } else {\n return getStringFromWasm0(ptr, len);\n }\n}\n\nlet cachedDataViewMemory0 = null;\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 getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getObject(idx) { return heap[idx]; }\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export3(addHeapObject(e));\n }\n}\n\nlet heap = new Array(128).fill(undefined);\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n real._wbg_cb_unref();\n }\n };\n real._wbg_cb_unref = () => {\n if (--state.cnt === 0) {\n state.dtor(state.a, state.b);\n state.a = 0;\n CLOSURE_DTORS.unregister(state);\n }\n };\n CLOSURE_DTORS.register(real, state, state);\n return real;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n state.a = a;\n real._wbg_cb_unref();\n }\n };\n real._wbg_cb_unref = () => {\n if (--state.cnt === 0) {\n state.dtor(state.a, state.b);\n state.a = 0;\n CLOSURE_DTORS.unregister(state);\n }\n };\n CLOSURE_DTORS.register(real, state, state);\n return real;\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\nfunction passStringToWasm0(arg, malloc, realloc) {\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 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 = cachedTextEncoder.encodeInto(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 stack_pointer = 128;\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst cachedTextEncoder = new TextEncoder();\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n wasmModule = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n return wasm;\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 } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && 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 { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (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 if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\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 (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\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 const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n", "// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\nimport type * as perspective_client from \"../../dist/wasm/perspective-js.js\";\n\nfunction invert_promise<T>(): [(t: T) => void, Promise<T>, (t: any) => void] {\n let sender: ((t: T) => void) | undefined = undefined,\n reject: ((t: any) => void) | undefined = undefined;\n let receiver: Promise<T> = new Promise((x, u) => {\n sender = x;\n reject = u;\n });\n\n return [sender!, receiver, reject!];\n}\n\nexport async function websocket(\n WebSocket: typeof window.WebSocket,\n Client: typeof perspective_client.Client,\n url: string | URL,\n options?: { maxPayload: number },\n): Promise<perspective_client.Client> {\n let client: perspective_client.Client, ws: WebSocket;\n\n async function connect() {\n if (\n ws?.readyState === WebSocket.CONNECTING ||\n ws?.readyState === WebSocket.OPEN\n ) {\n console.warn(`Already connected ${ws.readyState}`);\n return;\n }\n\n let [sender, receiver, reject] = invert_promise();\n\n // @ts-ignore\n ws = new WebSocket(url, options);\n ws.onopen = sender;\n ws.binaryType = \"arraybuffer\";\n ws.onerror = (event) => {\n // @ts-expect-error\n const msg = event.message || \"Generic Websocket Error\";\n client.handle_error(msg, connect);\n reject(msg);\n };\n\n ws.onclose = (event) => {\n // https://www.rfc-editor.org/rfc/rfc6455#section-7.4.1\n const msg = `WebSocket closed ${event.code}`;\n client.handle_error(msg, connect);\n reject(msg);\n };\n\n ws.onmessage = (event) => {\n client.handle_response(event.data);\n };\n\n await receiver;\n }\n\n async function send_message(proto: Uint8Array) {\n if (\n ws.readyState === WebSocket.CLOSING ||\n ws.readyState === WebSocket.CLOSED\n ) {\n const msg = `WebSocket transport error (${ws.readyState})`;\n client.handle_error(msg, connect);\n throw new Error(msg);\n } else if (ws.readyState === WebSocket.CONNECTING) {\n const msg = `WebSocket message dropped (${ws.readyState})`;\n throw new Error(msg);\n } else {\n const buffer = proto.slice().buffer;\n ws.send(buffer);\n }\n }\n\n async function on_close() {\n console.debug(\"Closing WebSocket\");\n ws.close();\n }\n\n client = new Client(send_message, on_close);\n await connect();\n return client;\n}\n", "// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\nimport type * as psp from \"../../../dist/wasm/perspective-js.d.ts\";\n\nimport * as psp_websocket from \"../websocket.ts\";\n\nfunction invert_promise<T>(): [\n (t: T) => void,\n Promise<T>,\n (e: string) => void,\n] {\n let sender, reject;\n let receiver: Promise<T> = new Promise((x, y) => {\n sender = x;\n reject = y;\n });\n\n return [\n sender as unknown as (t: T) => void,\n receiver,\n reject as unknown as (e: string) => void,\n ];\n}\n\nasync function _init(\n ws: MessagePort | Worker,\n wasm: WebAssembly.Module | undefined,\n) {\n const [sender, receiver] = invert_promise();\n ws.addEventListener(\"message\", function listener(resp) {\n ws.removeEventListener(\"message\", listener);\n sender(null);\n });\n\n ws.onmessage = function listener(resp) {\n ws.onmessage = function () {};\n sender(null);\n };\n\n ws.onmessageerror = console.error;\n ws.postMessage(\n { cmd: \"init\", args: [wasm] },\n {\n transfer:\n wasm === undefined || wasm instanceof WebAssembly.Module\n ? []\n : [wasm],\n },\n );\n\n await receiver;\n}\n\n/**\n * Create a new client connected exclusively to a new Web Worker instance of\n * the Perspective engine.\n * @param module\n * @returns\n */\nexport async function worker(\n module: Promise<typeof psp>,\n server_wasm: Promise<WebAssembly.Module> | undefined,\n perspective_wasm_worker: Promise<\n SharedWorker | ServiceWorker | Worker | MessagePort\n >,\n) {\n let [wasm, webworker]: [\n WebAssembly.Module | undefined,\n SharedWorker | ServiceWorker | Worker | MessagePort,\n ] = await Promise.all([server_wasm, perspective_wasm_worker]);\n\n const { Client } = await module;\n let port: MessagePort;\n if (\n typeof SharedWorker !== \"undefined\" &&\n webworker instanceof SharedWorker\n ) {\n port = webworker.port;\n } else {\n // Assume `MessagePort`\n port = webworker as MessagePort;\n }\n\n const client = new Client(\n async (proto: Uint8Array) => {\n const f = proto.slice().buffer;\n port.postMessage(f, { transfer: [f] });\n },\n async () => {\n console.debug(\"Closing WebWorker\");\n port.close();\n if (webworker instanceof Worker) {\n webworker.terminate();\n }\n },\n );\n\n await _init(port, wasm);\n port.addEventListener(\"message\", (json: MessageEvent<Uint8Array>) => {\n client.handle_response(json.data);\n });\n\n return client;\n}\n\n/**\n * Create a new client connected via WebSocket to a server implemnting the\n * Perspective Protocol.\n * @param module\n * @param url\n * @returns\n */\nexport async function websocket(\n module: Promise<typeof psp>,\n url: string | URL,\n) {\n const { Client } = await module;\n return await psp_websocket.websocket(WebSocket, Client, url);\n}\n\nexport default { websocket, worker };\n", "// \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n// \u2502 \u2502\n// \u2502 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 Copyright (C) 2025, The Prospective Company \u2502\n// \u2502 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557 \u2502\n// \u2502 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2551 \u2588\u2588\u2551 This file is part of the Procss library, \u2502\n// \u2502 \u2588\u2588\u2554\u2550\u2550\u2550\u255D \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551 distributed under the terms of the \u2502\n// \u2502 \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D Apache License 2.0. The full license can \u2502\n// \u2502 \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D be found in the LICENSE file. \u2502\n// \u2502 \u2502\n// \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\nexport async function extract(input) {\n let bin;\n if (typeof input?.then === \"function\") {\n input = await input;\n }\n\n if (input instanceof Response) {\n bin = await WebAssembly.instantiateStreaming(input);\n } else if (typeof input === \"string\") {\n bin = await WebAssembly.instantiateStreaming(fetch(input));\n } else if (input instanceof ArrayBuffer) {\n bin = await WebAssembly.instantiate(input);\n } else if (input instanceof Uint8Array) {\n bin = await WebAssembly.instantiate(input.buffer);\n } else {\n bin = input;\n }\n\n const inst = bin.instance.exports;\n const [payload] = WebAssembly.Module.customSections(bin.module, \"psp-runtime\");\n const [raw_length_view] = WebAssembly.Module.customSections(bin.module, \"psp-len\");\n const raw_length = new DataView(raw_length_view).getUint32(0, true);\n const ptr = inst.resize(payload.byteLength);\n new Uint8Array(inst.memory.buffer).set(new Uint8Array(payload), ptr);\n const offset = inst.compile(payload.byteLength, raw_length);\n return new Uint8Array(inst.memory.buffer).slice(offset, raw_length + offset);\n}", "// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\n// @ts-ignore\nimport { extract } from \"pro_self_extracting_wasm\";\n\nif (typeof WebAssembly === \"undefined\") {\n throw new Error(\"WebAssembly not supported.\");\n}\n\ninterface Module extends WebAssembly.Exports {\n size(): number;\n offset(): number;\n memory: WebAssembly.Memory;\n}\n\n// Perform a silly dance to deal with the different ways webpack and esbuild\n// load binary, as this may either be an `ArrayBuffer` or `URL` depending\n// on whether `inline` option was specified to `perspective-esbuild-plugin`.\nasync function compile(\n buffer: ArrayBuffer | Response | WebAssembly.Module | WebAssembly.Exports,\n): Promise<Module> {\n if (buffer instanceof Response) {\n return (await WebAssembly.instantiateStreaming(buffer)).instance\n .exports as Module;\n } else if (buffer instanceof WebAssembly.Module) {\n return (await WebAssembly.instantiate(buffer)).exports as Module;\n } else if (buffer instanceof WebAssembly.Instance) {\n return buffer.exports as Module;\n } else if (buffer instanceof ArrayBuffer) {\n return (await WebAssembly.instantiate(buffer as BufferSource)).instance\n .exports as Module;\n } else {\n return buffer as Module;\n }\n}\n\nexport async function load_wasm_stage_0(\n wasm:\n | ArrayBuffer\n | Response\n | WebAssembly.Module\n | (() => Promise<ArrayBuffer>),\n): Promise<Uint8Array> {\n if (wasm instanceof Function) {\n wasm = await wasm();\n }\n\n try {\n return await extract(wasm as ArrayBuffer);\n } catch (e) {\n console.warn(\"Stage 0 wasm loading failed, skipping\");\n return new Uint8Array(wasm as ArrayBuffer);\n }\n}\n", "\"use strict\";(()=>{var B=Object.defineProperty;var H=(s,e,r)=>e in s?B(s,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):s[e]=r;var m=(s,e,r)=>H(s,typeof e!=\"symbol\"?e+\"\":e,r);var v=class{constructor(e){m(this,\"poll_handle\");m(this,\"server\");this.server=e}set_poll_handle(){return this.poll_handle=new Promise((e,r)=>setTimeout(()=>this.server.poll().then(e).catch(r).finally(()=>{this.poll_handle=void 0}))),this.poll_handle}async on_poll_request(){this.poll_handle?await this.poll_handle.then(()=>{if(!this.poll_handle)return this.set_poll_handle()}):await this.set_poll_handle()}},h=class{constructor(e,r){m(this,\"clients\");m(this,\"server\");m(this,\"module\");m(this,\"on_poll_request\");this.clients=new Map,this.module=e,this.on_poll_request=r?.on_poll_request,this.server=e._psp_new_server(r?.on_poll_request?1:0)}make_session(e){let r=this.module._psp_new_session(this.server);return this.clients.set(r,e),new P(this.module,this.server,r,this.clients,this.on_poll_request&&(()=>this.on_poll_request(this)))}async poll(){let e=this.module._psp_poll(this.server);await A(this.module,e,async r=>{await this.clients.get(r.client_id)(r.data)})}delete(){this.module._psp_delete_server(this.server)}},P=class{constructor(e,r,i,o,_){this.mod=e;this.server=r;this.client_id=i;this.client_map=o;this.on_poll_request=_}async handle_request(e){let r=await N(this.mod,e,async i=>this.mod._psp_handle_request(this.server,this.client_id,i,this.mod._psp_is_memory64()?BigInt(e.byteLength):e.byteLength));await A(this.mod,r,async i=>{await this.client_map.get(i.client_id)(i.data)}),this.on_poll_request?await this.on_poll_request():await this.poll()}async poll(){let e=this.mod._psp_poll(this.server);await A(this.mod,e,async r=>{r.client_id===0?await this.client_map.get(this.client_id)(r.data):await this.client_map.get(r.client_id)(r.data)})}close(){this.mod._psp_close_session(this.server,this.client_id)}};async function N(s,e,r){let i=s._psp_alloc(s._psp_is_memory64()?BigInt(e.byteLength):e.byteLength);s.HEAPU8.set(e,Number(i));let o=await r(i);return s._psp_free(i),o}async function A(s,e,r){let i=s._psp_is_memory64(),o=new DataView(s.HEAPU8.buffer,Number(e),i?12:8),_=o.getUint32(0,!0),d=i?o.getBigInt64(4,!0):o.getUint32(4,!0),t=new DataView(s.HEAPU8.buffer,Number(d),_*(i?16:12));try{for(let n=0;n<_;n++){let[a,l,f]=i?[t.getBigInt64(n*16,!0),t.getInt32(n*16+8,!0),t.getInt32(n*16+12,!0)]:[t.getInt32(n*12,!0),t.getInt32(n*12+4,!0),t.getInt32(n*12+8,!0)],c=new Uint8Array(s.HEAPU8.buffer,Number(a),l);await r({client_id:f,data:c})}}finally{for(let n=0;n<_;n++){let a=i?t.getBigInt64(n*16,!0):t.getInt32(n*12,!0);s._psp_free(a)}s._psp_free(i?BigInt(t.byteOffset):t.byteOffset),s._psp_free(i?BigInt(o.byteOffset):o.byteOffset)}}var q=console.log.bind(console),L=console.error.bind(console),O=new TextDecoder(\"utf8\"),R=[null,[],[]];function W(s,e=0,r=NaN){for(var i=e+r,o=e;s[o]&&!(o>=i);)++o;return O.decode(s instanceof Uint8Array?s.subarray(e,o):new Uint8Array(s.slice(e,o)))}function M(s,e){var r=R[s];e===0||e===10?((s===1?q:L)(W(r,0)),r.length=0):r.push(e)}async function U(s){let e,r=!1,i,o={HaveOffsetConverter(){console.error(\"HaveOffsetConverter\")},__syscall_ftruncate64(...t){console.error(\"__syscall_frtuncate64\",t)},__syscall_getdents64(...t){console.error(\"__syscall_frtuncate64\",t)},__syscall_unlinkat(...t){console.error(\"__syscall_frtuncate64\",t)},__throw_exception_with_stack_trace(t){let n=new WebAssembly.Exception(e.__cpp_exception,[t],{traceStack:!0});throw n.message=\"Unexpected internal error\",n},clock_time_get(t,n,a){if(r){if(a=a,a=Number(a),!(t==0||t==1||t==2||t==3))return 28;var l;t===0?l=Date.now():l=performance.now();let c=Math.round(l*1e3*1e3),p=new BigInt64Array(i.buffer);return p[a/8]=BigInt(c),0}else{if(a=a,a>>>=0,!(t==0||t==1||t==2||t==3))return 28;var l;t===0?l=Date.now():l=performance.now();var f=Math.round(l*1e6);let p=new BigInt64Array(i.buffer);return p[a>>>3]=BigInt(f),0}},emscripten_asm_const_int(...t){return 0},emscripten_notify_memory_growth(t){r?t=Number(t):(t=t,t>>>=0),t!=0&&console.error(\"abort\")},environ_get(...t){return 0},environ_sizes_get(...t){return 0},fd_close(...t){return console.error(\"fd_close\",t),0},fd_read(...t){return console.error(\"fd_read\",t),0},fd_seek(...t){return console.error(\"fs_seek\",t),0},fd_write(t,n,a,l){let f=new Uint8Array(i.buffer);if(r){n=Number(n),a=Number(a),l=Number(l);let c=0,p=new BigUint64Array(i.buffer);for(let y=0;y<a;y++){let w=Number(p[n/8]),b=Number(p[(n+8)/8]);n+=16;for(let u=0;u<b;u++)M(t,f[w+u]);c+=b}return p[l/8]=BigInt(c),0}else{n=n,a=a,l=l,n>>>=0,a>>>=0,l>>>=0;let c=0,p=new Uint32Array(i.buffer);for(let y=0;y<a;y++){let w=p[n>>>2>>>0],b=p[n+4>>>2>>>0];n+=8;for(let u=0;u<b;u++)M(t,f[w+u>>>0]);c+=b}return p[l>>>2>>>0]=c,0}},proc_exit(t){return console.error(\"proc_exit\",t),0}},_=await s.instantiateWasm({env:o,wasi_snapshot_preview1:o},t=>{e=t.exports,r=!!e.psp_is_memory64(),i=t.exports.memory,e._initialize()}),d={};for(let[t,n]of Object.entries(_))d[`_${t}`]=n;return{..._,...d,get HEAPU8(){return new Uint8Array(i.buffer)}}}async function S(s){let e=await U({locateFile(r){return r},instantiateWasm:async(r,i)=>{r.env={...r.env,psp_stack_trace(){let _=Error().stack||\"\",t=new TextEncoder().encode(_),n=e._psp_alloc(e._psp_is_memory64()?BigInt(t.byteLength+1):t.byteLength+1);return e.HEAPU8.set(t,Number(n)),e.HEAPU8[Number(n)+t.byteLength]=0,n},psp_heap_size(){return e._psp_is_memory64()?BigInt(e.HEAPU8.buffer.byteLength):e.HEAPU8.buffer.byteLength}};let o=await WebAssembly.instantiate(s,r);return i(o.instance),o.instance.exports}});return e}var g,x,E;async function I(s){if(s.data.cmd===\"init\"){let e=s.data.id;if(!g){let r=await S(s.data.args[0]);g=new h(r,{on_poll_request:()=>x.on_poll_request()}),x=new v(g)}E=g.make_session(async r=>{let i=r.slice().buffer;this.postMessage(i,{transfer:[i]})}),this.postMessage({id:e})}else if(E)await E?.handle_request(new Uint8Array(s.data));else throw new Error(\"No session\")}function T(s){let e=s.ports[0];e.addEventListener(\"message\",I.bind(e)),e.start()}self.addEventListener(\"connect\",T);self.addEventListener(\"message\",I.bind(self));})();\n", "\n import worker from \"../../src/ts/perspective-server.worker.js\";\n function make_host(a, b) {\n function addEventListener(type, callback) {\n if (type === \"message\") {\n a.push(callback);\n }\n }\n\n function removeEventListener(callback) {\n const idx = a.indexOf(callback);\n if (idx > -1) {\n a.splice(idx, 1);\n }\n }\n\n function postMessage(msg, ports) {\n for (const listener of b) {\n listener({data: msg, ports: ports});\n }\n }\n\n return {\n addEventListener,\n removeEventListener,\n postMessage,\n location: {href: \"\"}\n }\n }\n\n function run_single_threaded(code) {\n console.error(\"Running perspective in single-threaded mode\");\n let f = Function(\"const self = arguments[0];\" + code);\n const workers = [];\n const mains = [];\n f(make_host(workers, mains));\n return make_host(mains, workers);\n }\n\n export const initialize = async function () {\n try {\n if (window.location.protocol.startsWith(\"file\")) {\n console.warn(\"file:// protocol does not support Web Workers\");\n return run_single_threaded(worker);\n } else {\n const blob = new Blob([worker], {type: 'application/javascript'});\n const url = URL.createObjectURL(blob);\n return new Worker(url, {type: \"module\"});\n }\n } catch (e) {\n console.error(\"Error instantiating engine\", e);\n }\n };\n\n export default initialize;\n ", "// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\nexport type * from \"../../dist/wasm/perspective-js.d.ts\";\nimport type * as psp from \"../../dist/wasm/perspective-js.d.ts\";\nexport type * from \"./virtual_server.ts\";\nimport * as psp_virtual from \"./virtual_server.ts\";\nimport * as wasm_module from \"../../dist/wasm/perspective-js.js\";\nimport * as api from \"./wasm/browser.ts\";\nimport { load_wasm_stage_0 } from \"./wasm/decompress.ts\";\n\nexport {\n GenericSQLVirtualServerModel,\n VirtualDataSlice,\n VirtualServer,\n} from \"../../dist/wasm/perspective-js.js\";\n\nimport {\n GenericSQLVirtualServerModel,\n VirtualDataSlice,\n VirtualServer,\n} from \"../../dist/wasm/perspective-js.js\";\n\nlet GLOBAL_SERVER_WASM: Promise<ArrayBuffer | WebAssembly.Module>;\n\nexport async function createMessageHandler(\n handler: psp_virtual.VirtualServerHandler,\n) {\n return psp_virtual.createMessageHandler(await get_client(), handler);\n}\n\nexport function init_server(\n wasm:\n | Uint8Array\n | Promise<ArrayBuffer | Response | WebAssembly.Module>\n | ArrayBuffer\n | Response\n | WebAssembly.Module,\n disable_stage_0: boolean = false,\n) {\n if (wasm instanceof Uint8Array) {\n GLOBAL_SERVER_WASM = Promise.resolve(wasm.buffer);\n } else if (wasm instanceof Response) {\n GLOBAL_SERVER_WASM = Promise.resolve(wasm);\n } else if (wasm instanceof Promise) {\n GLOBAL_SERVER_WASM = wasm;\n } else {\n GLOBAL_SERVER_WASM = Promise.resolve(wasm);\n }\n\n if (!disable_stage_0) {\n GLOBAL_SERVER_WASM = GLOBAL_SERVER_WASM.then((x) =>\n load_wasm_stage_0(x).then((x) => x.buffer as ArrayBuffer),\n );\n }\n}\n\nlet GLOBAL_CLIENT_WASM: Promise<typeof psp>;\n\nasync function compilerize(\n wasm: PerspectiveWasm,\n disable_stage_0: boolean = false,\n) {\n const wasm_buff = disable_stage_0 ? wasm : await load_wasm_stage_0(wasm);\n await wasm_module.default({ module_or_path: wasm_buff });\n await wasm_module.init();\n return wasm_module;\n}\n\nexport type PerspectiveWasm =\n | ArrayBuffer\n | Response\n | typeof psp\n | Promise<ArrayBuffer | Response | Object>;\n\nexport function init_client(wasm: PerspectiveWasm, disable_stage_0 = false) {\n if (wasm instanceof Uint8Array) {\n GLOBAL_CLIENT_WASM = compilerize(\n wasm.buffer as ArrayBuffer,\n disable_stage_0,\n );\n } else if (wasm instanceof ArrayBuffer) {\n GLOBAL_CLIENT_WASM = compilerize(wasm, disable_stage_0);\n } else if (wasm instanceof Response) {\n GLOBAL_CLIENT_WASM = compilerize(wasm, disable_stage_0);\n } else if (wasm instanceof Promise) {\n GLOBAL_CLIENT_WASM = compilerize(wasm, disable_stage_0);\n } else if (wasm instanceof Object) {\n GLOBAL_CLIENT_WASM = Promise.resolve(wasm as typeof psp);\n }\n}\n\nfunction get_client() {\n const viewer_class: any = customElements.get(\"perspective-viewer\");\n if (viewer_class) {\n GLOBAL_CLIENT_WASM = Promise.resolve(viewer_class.__wasm_module__);\n } else if (GLOBAL_CLIENT_WASM === undefined) {\n throw new Error(\"Missing perspective-client.wasm\");\n }\n\n return GLOBAL_CLIENT_WASM;\n}\n\nfunction get_server() {\n if (GLOBAL_SERVER_WASM === undefined) {\n throw new Error(\"Missing perspective-server.wasm\");\n }\n\n return GLOBAL_SERVER_WASM.then((x) =>\n x instanceof WebAssembly.Module ? x : x.slice(0),\n );\n}\n\nlet GLOBAL_WORKER: undefined | (() => Promise<Worker>) = undefined;\n\n// Inline the worker for now. This code will eventually allow outlining this resource\n// @ts-ignore\nimport perspective_wasm_worker from \"../../src/ts/perspective-server.worker.js\";\n\nfunction get_worker(): Promise<Worker> {\n if (GLOBAL_WORKER === undefined) {\n return perspective_wasm_worker();\n }\n\n return GLOBAL_WORKER();\n}\n\nexport async function websocket(url: string | URL) {\n return await api.websocket(get_client(), url);\n}\n\nexport async function worker(\n worker?: Promise<SharedWorker | ServiceWorker | Worker | MessagePort>,\n) {\n if (typeof worker === \"undefined\") {\n worker = get_worker();\n }\n\n return await api.worker(get_client(), get_server(), worker);\n}\n\nexport default {\n websocket,\n worker,\n init_client,\n init_server,\n createMessageHandler,\n GenericSQLVirtualServerModel,\n VirtualDataSlice,\n VirtualServer,\n};\n", "// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\nimport perspective from \"./perspective.browser.ts\";\nexport * from \"./perspective.browser.ts\";\n\nconst url = new URL(\n \"../../../server/dist/wasm/perspective-server.wasm\",\n import.meta.url,\n);\n\nperspective.init_server(fetch(url));\nexport default perspective;\n"],
5
+ "mappings": "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",
6
+ "names": ["createMessageHandler", "mod", "handler", "virtualServer", "postMessage", "port", "msg", "error", "requestBytes", "buffer", "channel", "message", "perspective_js_exports", "__export", "Client", "GenericSQLVirtualServerModel", "ProxySession", "Table", "View", "VirtualDataSlice", "VirtualServer", "__wbg_init", "init", "initSync", "_Client", "ptr", "obj", "ClientFinalization", "wasm", "retptr", "r0", "getDataViewMemory0", "r1", "v1", "getCachedStringFromWasm0", "ret", "takeObject", "error", "reconnect", "ptr0", "passStringToWasm0", "len0", "WASM_VECTOR_LEN", "isLikeNone", "addHeapObject", "value", "send_request", "close", "r2", "on_response", "addBorrowedObject", "heap", "stack_pointer", "callback", "on_update_js", "entity_id", "update_id", "options", "GenericSQLVirtualServerModelFinalization", "r3", "args", "table_id", "view_id", "config", "ptr1", "len1", "v3", "v2", "expression", "viewport", "schema", "_ProxySession", "ProxySessionFinalization", "client", "_assertClass", "_Table", "TableFinalization", "on_delete", "callback_id", "input", "exprs", "_View", "ViewFinalization", "jsValue", "row_index", "window", "name", "depth", "_VirtualDataSlice", "VirtualDataSliceFinalization", "index", "val", "group_by_index", "dtype", "VirtualServerFinalization", "bytes", "passArray8ToWasm0", "handler", "__wbg_get_imports", "arg0", "arg1", "v0", "getObject", "v", "debugString", "handleError", "arg2", "arg3", "arg4", "getArrayU8FromWasm0", "result", "state0", "cb0", "a", "__wasm_bindgen_func_elem_5713", "makeClosure", "__wasm_bindgen_func_elem_1689", "makeMutClosure", "__wasm_bindgen_func_elem_3874", "getArrayJsValueFromWasm0", "heap_next", "idx", "instance", "klass", "CLOSURE_DTORS", "state", "type", "description", "length", "debug", "i", "builtInMatches", "className", "dropObject", "len", "mem", "getUint8ArrayMemory0", "getStringFromWasm0", "cachedDataViewMemory0", "decodeText", "cachedUint8ArrayMemory0", "f", "e", "x", "dtor", "real", "arg", "malloc", "realloc", "buf", "cachedTextEncoder", "offset", "code", "view", "cachedTextDecoder", "MAX_SAFARI_DECODE_BYTES", "numBytesDecoded", "wasmModule", "__wbg_finalize_init", "module", "__wbg_load", "imports", "expectedResponseType", "module_or_path", "invert_promise", "sender", "reject", "receiver", "x", "u", "websocket", "WebSocket", "Client", "url", "options", "client", "ws", "connect", "event", "msg", "send_message", "proto", "buffer", "on_close", "invert_promise", "sender", "reject", "receiver", "x", "y", "_init", "ws", "wasm", "listener", "resp", "worker", "module", "server_wasm", "perspective_wasm_worker", "webworker", "Client", "port", "client", "proto", "f", "json", "websocket", "url", "extract", "input", "bin", "inst", "payload", "raw_length_view", "raw_length", "ptr", "offset", "load_wasm_stage_0", "wasm", "extract", "perspective_server_default", "make_host", "a", "b", "addEventListener", "type", "callback", "removeEventListener", "idx", "postMessage", "msg", "ports", "listener", "run_single_threaded", "code", "f", "workers", "mains", "initialize", "perspective_server_default", "blob", "url", "e", "perspective_server_worker_default", "GLOBAL_SERVER_WASM", "createMessageHandler", "handler", "get_client", "init_server", "wasm", "disable_stage_0", "x", "load_wasm_stage_0", "GLOBAL_CLIENT_WASM", "compilerize", "wasm_buff", "__wbg_init", "init", "perspective_js_exports", "init_client", "viewer_class", "get_server", "GLOBAL_WORKER", "get_worker", "perspective_server_worker_default", "websocket", "url", "worker", "perspective_browser_default", "GenericSQLVirtualServerModel", "VirtualDataSlice", "VirtualServer", "url", "perspective_browser_default", "perspective_cdn_default"]
7
7
  }