{
  "version": 3,
  "sources": ["../../web-worker/cjs/node.js", "../src/targets/duckdb.ts", "../src/bindings/config.ts", "../src/bindings/tokens.ts", "../src/log.ts", "../src/status.ts", "../src/parallel/async_connection.ts", "../src/parallel/worker_request.ts", "../src/json_typedef.ts", "../src/utils/opfs_util.ts", "../src/parallel/async_bindings.ts", "../src/bindings/runtime.ts", "../src/parallel/worker_dispatcher.ts", "../../wasm-feature-detect/dist/esm/index.js", "../package.json", "../src/version.ts", "../src/platform.ts", "../src/worker.ts"],
  "sourcesContent": ["/**\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst URL = require('url');\n\nconst VM = require('vm');\n\nconst threads = require('worker_threads');\n\nconst WORKER = Symbol.for('worker');\nconst EVENTS = Symbol.for('events');\n\nclass EventTarget {\n  constructor() {\n    Object.defineProperty(this, EVENTS, {\n      value: new Map()\n    });\n  }\n\n  dispatchEvent(event) {\n    event.target = event.currentTarget = this;\n\n    if (this['on' + event.type]) {\n      try {\n        this['on' + event.type](event);\n      } catch (err) {\n        console.error(err);\n      }\n    }\n\n    const list = this[EVENTS].get(event.type);\n    if (list == null) return;\n    list.forEach(handler => {\n      try {\n        handler.call(this, event);\n      } catch (err) {\n        console.error(err);\n      }\n    });\n  }\n\n  addEventListener(type, fn) {\n    let events = this[EVENTS].get(type);\n    if (!events) this[EVENTS].set(type, events = []);\n    events.push(fn);\n  }\n\n  removeEventListener(type, fn) {\n    let events = this[EVENTS].get(type);\n\n    if (events) {\n      const index = events.indexOf(fn);\n      if (index !== -1) events.splice(index, 1);\n    }\n  }\n\n}\n\nfunction Event(type, target) {\n  this.type = type;\n  this.timeStamp = Date.now();\n  this.target = this.currentTarget = this.data = null;\n} // this module is used self-referentially on both sides of the\n// thread boundary, but behaves differently in each context.\n\n\nmodule.exports = threads.isMainThread ? mainThread() : workerThread();\nconst baseUrl = URL.pathToFileURL(process.cwd() + '/');\n\nfunction mainThread() {\n  /**\n   * A web-compatible Worker implementation atop Node's worker_threads.\n   *  - uses DOM-style events (Event.data, Event.type, etc)\n   *  - supports event handler properties (worker.onmessage)\n   *  - Worker() constructor accepts a module URL\n   *  - accepts the {type:'module'} option\n   *  - emulates WorkerGlobalScope within the worker\n   * @param {string} url  The URL or module specifier to load\n   * @param {object} [options]  Worker construction options\n   * @param {string} [options.name]  Available as `self.name` within the Worker\n   * @param {string} [options.type=\"classic\"]  Pass \"module\" to create a Module Worker.\n   */\n  class Worker extends EventTarget {\n    constructor(url, options) {\n      super();\n      const {\n        name,\n        type\n      } = options || {};\n      url += '';\n      let mod;\n\n      if (/^data:/.test(url)) {\n        mod = url;\n      } else {\n        mod = URL.fileURLToPath(new URL.URL(url, baseUrl));\n      }\n\n      const worker = new threads.Worker(__filename, {\n        workerData: {\n          mod,\n          name,\n          type\n        }\n      });\n      Object.defineProperty(this, WORKER, {\n        value: worker\n      });\n      worker.on('message', data => {\n        const event = new Event('message');\n        event.data = data;\n        this.dispatchEvent(event);\n      });\n      worker.on('error', error => {\n        error.type = 'error';\n        this.dispatchEvent(error);\n      });\n      worker.on('exit', () => {\n        this.dispatchEvent(new Event('close'));\n      });\n    }\n\n    postMessage(data, transferList) {\n      this[WORKER].postMessage(data, transferList);\n    }\n\n    terminate() {\n      this[WORKER].terminate();\n    }\n\n  }\n\n  Worker.prototype.onmessage = Worker.prototype.onerror = Worker.prototype.onclose = null;\n  return Worker;\n}\n\nfunction workerThread() {\n  let {\n    mod,\n    name,\n    type\n  } = threads.workerData; // turn global into a mock WorkerGlobalScope\n\n  const self = global.self = global; // enqueue messages to dispatch after modules are loaded\n\n  let q = [];\n\n  function flush() {\n    const buffered = q;\n    q = null;\n    buffered.forEach(event => {\n      self.dispatchEvent(event);\n    });\n  }\n\n  threads.parentPort.on('message', data => {\n    const event = new Event('message');\n    event.data = data;\n    if (q == null) self.dispatchEvent(event);else q.push(event);\n  });\n  threads.parentPort.on('error', err => {\n    err.type = 'Error';\n    self.dispatchEvent(err);\n  });\n\n  class WorkerGlobalScope extends EventTarget {\n    postMessage(data, transferList) {\n      threads.parentPort.postMessage(data, transferList);\n    } // Emulates https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope/close\n\n\n    close() {\n      process.exit();\n    }\n\n  }\n\n  let proto = Object.getPrototypeOf(global);\n  delete proto.constructor;\n  Object.defineProperties(WorkerGlobalScope.prototype, proto);\n  proto = Object.setPrototypeOf(global, new WorkerGlobalScope());\n  ['postMessage', 'addEventListener', 'removeEventListener', 'dispatchEvent'].forEach(fn => {\n    proto[fn] = proto[fn].bind(global);\n  });\n  global.name = name;\n  const isDataUrl = /^data:/.test(mod);\n\n  if (type === 'module') {\n    import(mod).catch(err => {\n      if (isDataUrl && err.message === 'Not supported') {\n        console.warn('Worker(): Importing data: URLs requires Node 12.10+. Falling back to classic worker.');\n        return evaluateDataUrl(mod, name);\n      }\n\n      console.error(err);\n    }).then(flush);\n  } else {\n    try {\n      if (/^data:/.test(mod)) {\n        evaluateDataUrl(mod, name);\n      } else {\n        require(mod);\n      }\n    } catch (err) {\n      console.error(err);\n    }\n\n    Promise.resolve().then(flush);\n  }\n}\n\nfunction evaluateDataUrl(url, name) {\n  const {\n    data\n  } = parseDataUrl(url);\n  return VM.runInThisContext(data, {\n    filename: 'worker.<' + (name || 'data:') + '>'\n  });\n}\n\nfunction parseDataUrl(url) {\n  let [m, type, encoding, data] = url.match(/^data: *([^;,]*)(?: *; *([^,]*))? *,(.*)$/) || [];\n  if (!m) throw Error('Invalid Data URL.');\n  if (encoding) switch (encoding.toLowerCase()) {\n    case 'base64':\n      data = Buffer.from(data, 'base64').toString();\n      break;\n\n    default:\n      throw Error('Unknown Data URL encoding \"' + encoding + '\"');\n  }\n  return {\n    type,\n    data\n  };\n}", "export * from '../bindings/config';\nexport * from '../bindings/tokens';\nexport * from '../log';\nexport * from '../status';\nexport * from '../parallel';\nexport * from '../platform';\nexport * from '../version';\nexport * from '../worker';\n\nexport { InstantiationProgress, InstantiationProgressHandler, DuckDBDataProtocol, WebFile } from '../bindings';\n", "export interface DuckDBQueryConfig {\n    /**\n     * The polling interval for queries\n     */\n    queryPollingInterval?: number;\n    /**\n     * Cast BigInt to Double?\n     */\n    castBigIntToDouble?: boolean;\n    /**\n     * Cast Timestamp to Date64?\n     */\n    castTimestampToDate?: boolean;\n    /**\n     * Cast Timestamp to Date64?\n     */\n    castDurationToTime64?: boolean;\n    /**\n     * Cast Decimal to Double?\n     */\n    castDecimalToDouble?: boolean;\n}\n\nexport interface DuckDBFilesystemConfig {\n    reliableHeadRequests?: boolean;\n    /**\n     * Allow falling back to full HTTP reads if the server does not support range requests.\n     */\n    allowFullHTTPReads?: boolean;\n    /**\n     * Force use of full HTTP reads, suppressing range requests.\n     */\n    forceFullHTTPReads?: boolean;\n}\n\nexport interface DuckDBOPFSConfig {\n    /**\n     * Defines how `opfs://` files are handled during SQL execution.\n     * - \"auto\": Automatically register `opfs://` files and drop them after execution.\n     * - \"manual\": Files must be manually registered and dropped.\n     */\n    fileHandling?: \"auto\" | \"manual\";\n}\n\nexport enum DuckDBAccessMode {\n    UNDEFINED = 0,\n    AUTOMATIC = 1,\n    READ_ONLY = 2,\n    READ_WRITE = 3,\n}\n\nexport interface DuckDBConfig {\n    /**\n     * The database path\n     */\n    path?: string;\n    /**\n     * The access mode\n     */\n    accessMode?: DuckDBAccessMode;\n    /**\n     * The maximum number of threads.\n     * Note that this will only work with cross-origin isolated sites since it requires SharedArrayBuffers.\n     */\n    maximumThreads?: number;\n    /**\n     * The direct io flag\n     */\n    useDirectIO?: boolean;\n    /**\n     * The query config\n     */\n    query?: DuckDBQueryConfig;\n    /**\n     * The filesystem config\n     */\n    filesystem?: DuckDBFilesystemConfig;\n    /**\n     * Whether to allow unsigned extensions\n     */\n    allowUnsignedExtensions?: boolean;\n    /**\n     * Whether to use alternate Arrow conversion that preserves full range and precision of data.\n     */\n    arrowLosslessConversion?: boolean;\n    /**\n     * Custom user agent string\n     */\n    customUserAgent?: string;\n    /**\n     * opfs string\n     */\n    opfs?: DuckDBOPFSConfig;\n}\n", "export enum TokenType {\n    IDENTIFIER = 0,\n    NUMERIC_CONSTANT = 1,\n    STRING_CONSTANT = 2,\n    OPERATOR = 3,\n    KEYWORD = 4,\n    COMMENT = 5,\n}\n\nexport interface ScriptTokens {\n    offsets: number[];\n    types: TokenType[];\n}\n", "export enum LogLevel {\n    NONE = 0,\n    DEBUG = 1,\n    INFO = 2,\n    WARNING = 3,\n    ERROR = 4,\n}\n\nexport enum LogTopic {\n    NONE = 0,\n    CONNECT = 1,\n    DISCONNECT = 2,\n    OPEN = 3,\n    QUERY = 4,\n    INSTANTIATE = 5,\n}\n\nexport enum LogEvent {\n    NONE = 0,\n    OK = 1,\n    ERROR = 2,\n    START = 3,\n    RUN = 4,\n    CAPTURE = 5,\n}\n\nexport enum LogOrigin {\n    NONE = 0,\n    WEB_WORKER = 1,\n    NODE_WORKER = 2,\n    BINDINGS = 3,\n    ASYNC_DUCKDB = 4,\n}\n\nexport type LogEntry<O, T, E, V> = {\n    readonly timestamp: Date;\n    readonly level: LogLevel;\n    readonly origin: O;\n    readonly topic: T;\n    readonly event: E;\n    readonly value: V;\n};\n\nexport type ProgressEntry = {\n    readonly status: string;\n    readonly percentage: string;\n    readonly repetitions: string;\n};\n\n/** An execution progress handler */\nexport type ExecutionProgressHandler = (p: ProgressEntry) => void;\n\nexport type LogEntryVariant =\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.INSTANTIATE, LogEvent.ERROR, string>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.QUERY, LogEvent.START, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.QUERY, LogEvent.OK, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.QUERY, LogEvent.ERROR, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.CONNECT, LogEvent.OK, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.CONNECT, LogEvent.ERROR, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.DISCONNECT, LogEvent.OK, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.DISCONNECT, LogEvent.ERROR, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.OPEN, LogEvent.START, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.OPEN, LogEvent.OK, void>\n    | LogEntry<LogOrigin.BINDINGS, LogTopic.OPEN, LogEvent.ERROR, void>\n    | LogEntry<LogOrigin.ASYNC_DUCKDB, LogTopic.QUERY, LogEvent.RUN, string>;\n\nexport interface Logger {\n    log(entry: LogEntryVariant): void;\n}\n\nexport class VoidLogger implements Logger {\n    public log(_entry: LogEntryVariant): void {}\n}\n\nexport class ConsoleLogger implements Logger {\n    constructor(protected level: LogLevel = LogLevel.INFO) {}\n    public log(entry: LogEntryVariant): void {\n        if (entry.level >= this.level) {\n            console.log(entry);\n        }\n    }\n}\n\nexport function getLogLevelLabel(level: LogLevel): string {\n    switch (level) {\n        case LogLevel.NONE:\n            return 'NONE';\n        case LogLevel.DEBUG:\n            return 'DEBUG';\n        case LogLevel.INFO:\n            return 'INFO';\n        case LogLevel.WARNING:\n            return 'WARNING';\n        case LogLevel.ERROR:\n            return 'ERROR';\n        default:\n            return '?';\n    }\n}\n\nexport function getLogEventLabel(event: LogEvent): string {\n    switch (event) {\n        case LogEvent.NONE:\n            return 'NONE';\n        case LogEvent.OK:\n            return 'OK';\n        case LogEvent.ERROR:\n            return 'ERROR';\n        case LogEvent.START:\n            return 'START';\n        case LogEvent.RUN:\n            return 'RUN';\n        case LogEvent.CAPTURE:\n            return 'CAPTURE';\n        default:\n            return '?';\n    }\n}\n\nexport function getLogTopicLabel(topic: LogTopic): string {\n    switch (topic) {\n        case LogTopic.CONNECT:\n            return 'CONNECT';\n        case LogTopic.DISCONNECT:\n            return 'DISCONNECT';\n        case LogTopic.INSTANTIATE:\n            return 'INSTANTIATE';\n        case LogTopic.OPEN:\n            return 'OPEN';\n        case LogTopic.QUERY:\n            return 'QUERY';\n        default:\n            return '?';\n    }\n}\n\nexport function getLogOriginLabel(origin: LogOrigin): string {\n    switch (origin) {\n        case LogOrigin.NONE:\n            return 'NONE';\n        case LogOrigin.WEB_WORKER:\n            return 'WEB WORKER';\n        case LogOrigin.NODE_WORKER:\n            return 'NODE WORKER';\n        case LogOrigin.BINDINGS:\n            return 'DUCKDB BINDINGS';\n        case LogOrigin.ASYNC_DUCKDB:\n            return 'DUCKDB';\n        default:\n            return '?';\n    }\n}\n", "export enum StatusCode {\n    SUCCESS = 0,\n    MAX_ARROW_ERROR = 255,\n    DUCKDB_WASM_RETRY = 256,\n}\n\nexport function IsArrowBuffer(status: StatusCode): boolean {\n    return status <= StatusCode.MAX_ARROW_ERROR;\n}\n\nexport function IsDuckDBWasmRetry(status: StatusCode): boolean {\n    return status === StatusCode.DUCKDB_WASM_RETRY;\n}\n", "import * as arrow from 'apache-arrow';\nimport { AsyncDuckDB } from './async_bindings';\nimport { LogLevel, LogTopic, LogOrigin, LogEvent } from '../log';\nimport { ArrowInsertOptions, CSVInsertOptions, JSONInsertOptions } from '../bindings/insert_options';\n\n/** A thin helper to memoize the connection id */\nexport class AsyncDuckDBConnection {\n    /** The async duckdb */\n    protected readonly _bindings: AsyncDuckDB;\n    /** The conn handle */\n    protected readonly _conn: number;\n\n    constructor(bindings: AsyncDuckDB, conn: number) {\n        this._bindings = bindings;\n        this._conn = conn;\n    }\n\n    /** Access the database bindings */\n    public get bindings(): AsyncDuckDB {\n        return this._bindings;\n    }\n\n    /** Disconnect from the database */\n    public async close(): Promise<void> {\n        return this._bindings.disconnect(this._conn);\n    }\n\n    /** Brave souls may use this function to consume the underlying connection id */\n    public useUnsafe<R>(callback: (bindings: AsyncDuckDB, conn: number) => R) {\n        return callback(this._bindings, this._conn);\n    }\n\n    /** Run a query */\n    public async query<T extends { [key: string]: arrow.DataType } = any>(text: string): Promise<arrow.Table<T>> {\n        this._bindings.logger.log({\n            timestamp: new Date(),\n            level: LogLevel.INFO,\n            origin: LogOrigin.ASYNC_DUCKDB,\n            topic: LogTopic.QUERY,\n            event: LogEvent.RUN,\n            value: text,\n        });\n        const buffer = await this._bindings.runQuery(this._conn, text);\n        const reader = arrow.RecordBatchReader.from<T>(buffer);\n        console.assert(reader.isSync(), 'Reader is not sync');\n        console.assert(reader.isFile(), 'Reader is not file');\n        return new arrow.Table(reader as arrow.RecordBatchFileReader);\n    }\n\n    /** Send a query */\n    public async send<T extends { [key: string]: arrow.DataType } = any>(\n        text: string,\n        allowStreamResult: boolean = false,\n    ): Promise<arrow.AsyncRecordBatchStreamReader<T>> {\n        this._bindings.logger.log({\n            timestamp: new Date(),\n            level: LogLevel.INFO,\n            origin: LogOrigin.ASYNC_DUCKDB,\n            topic: LogTopic.QUERY,\n            event: LogEvent.RUN,\n            value: text,\n        });\n        let header = await this._bindings.startPendingQuery(this._conn, text, allowStreamResult);\n        while (header == null) {\n            // Avoid infinite loop on detached state\n            if (this._bindings.isDetached()) {\n                console.error('cannot send a message since the worker is not set!');\n                return undefined as any;\n            }\n            header = await this._bindings.pollPendingQuery(this._conn);\n        }\n        const iter = new AsyncResultStreamIterator(this._bindings, this._conn, header);\n        const reader = await arrow.RecordBatchReader.from<T>(iter);\n        console.assert(reader.isAsync());\n        console.assert(reader.isStream());\n        return reader as unknown as arrow.AsyncRecordBatchStreamReader<T>; // XXX\n    }\n\n    /** Cancel a query that was sent earlier */\n    public async cancelSent(): Promise<boolean> {\n        return await this._bindings.cancelPendingQuery(this._conn);\n    }\n\n    /** Get table names */\n    public async getTableNames(query: string): Promise<string[]> {\n        return await this._bindings.getTableNames(this._conn, query);\n    }\n\n    /** Create a prepared statement */\n    public async prepare<T extends { [key: string]: arrow.DataType } = any>(\n        text: string,\n    ): Promise<AsyncPreparedStatement<T>> {\n        const stmt = await this._bindings.createPrepared(this._conn, text);\n        return new AsyncPreparedStatement<T>(this._bindings, this._conn, stmt);\n    }\n\n    /** Insert an arrow table */\n    public async insertArrowTable(table: arrow.Table, options: ArrowInsertOptions): Promise<void> {\n        const buffer = arrow.tableToIPC(table, 'stream');\n        await this.insertArrowFromIPCStream(buffer, options);\n    }\n    /** Insert an arrow table from an ipc stream */\n    public async insertArrowFromIPCStream(buffer: Uint8Array, options: ArrowInsertOptions): Promise<void> {\n        await this._bindings.insertArrowFromIPCStream(this._conn, buffer, options);\n    }\n    /** Insert csv file from path */\n    public async insertCSVFromPath(text: string, options: CSVInsertOptions): Promise<void> {\n        await this._bindings.insertCSVFromPath(this._conn, text, options);\n    }\n    /** Insert json file from path */\n    public async insertJSONFromPath(text: string, options: JSONInsertOptions): Promise<void> {\n        await this._bindings.insertJSONFromPath(this._conn, text, options);\n    }\n}\n\n/** An async result stream iterator */\nexport class AsyncResultStreamIterator implements AsyncIterable<Uint8Array> {\n    /** First chunk? */\n    protected _first: boolean;\n    /** Reached end of stream? */\n    protected _depleted: boolean;\n    /** In-flight */\n    protected _inFlight: Promise<Uint8Array | null> | null;\n\n    constructor(\n        protected readonly db: AsyncDuckDB,\n        protected readonly conn: number,\n        protected readonly header: Uint8Array,\n    ) {\n        this._first = true;\n        this._depleted = false;\n        this._inFlight = null;\n    }\n\n    async next(): Promise<IteratorResult<Uint8Array>> {\n        if (this._first) {\n            this._first = false;\n            return { done: false, value: this.header };\n        }\n        if (this._depleted) {\n            return { done: true, value: null };\n        }\n        let buffer: Uint8Array | null = null;\n        if (this._inFlight != null) {\n            buffer = await this._inFlight;\n            this._inFlight = null;\n        }\n\n        while (buffer == null) {\n            buffer = await this.db.fetchQueryResults(this.conn);\n        }\n\n        this._depleted = buffer.length == 0;\n        if (!this._depleted) {\n            this._inFlight = this.db.fetchQueryResults(this.conn);\n        }\n\n        return {\n            done: this._depleted,\n            value: buffer,\n        };\n    }\n\n    [Symbol.asyncIterator]() {\n        return this;\n    }\n}\n\n/** A thin helper to bind the prepared statement id */\nexport class AsyncPreparedStatement<T extends { [key: string]: arrow.DataType } = any> {\n    /** The bindings */\n    protected readonly bindings: AsyncDuckDB;\n    /** The connection id */\n    protected readonly connectionId: number;\n    /** The statement id */\n    protected readonly statementId: number;\n\n    /** Constructor */\n    constructor(bindings: AsyncDuckDB, connectionId: number, statementId: number) {\n        this.bindings = bindings;\n        this.connectionId = connectionId;\n        this.statementId = statementId;\n    }\n\n    /** Close a prepared statement */\n    public async close() {\n        await this.bindings.closePrepared(this.connectionId, this.statementId);\n    }\n\n    /** Run a prepared statement */\n    public async query(...params: any[]): Promise<arrow.Table<T>> {\n        const buffer = await this.bindings.runPrepared(this.connectionId, this.statementId, params);\n        const reader = arrow.RecordBatchReader.from<T>(buffer);\n        console.assert(reader.isSync());\n        console.assert(reader.isFile());\n        return new arrow.Table(reader as arrow.RecordBatchFileReader);\n    }\n\n    /** Send a prepared statement */\n    public async send(...params: any[]): Promise<arrow.AsyncRecordBatchStreamReader<T>> {\n        const header = await this.bindings.sendPrepared(this.connectionId, this.statementId, params);\n        const iter = new AsyncResultStreamIterator(this.bindings, this.connectionId, header);\n        const reader = await arrow.RecordBatchReader.from<T>(iter);\n        console.assert(reader.isAsync());\n        console.assert(reader.isStream());\n        return reader as unknown as arrow.AsyncRecordBatchStreamReader<T>; // XXX\n    }\n}\n", "import { CSVInsertOptions, JSONInsertOptions, ArrowInsertOptions } from '../bindings/insert_options';\nimport { LogEntryVariant, ProgressEntry } from '../log';\nimport { ScriptTokens } from '../bindings/tokens';\nimport { FileStatistics } from '../bindings/file_stats';\nimport { DuckDBConfig } from '../bindings/config';\nimport { WebFile } from '../bindings/web_file';\nimport { InstantiationProgress } from '../bindings/progress';\nimport { DuckDBDataProtocol } from '../bindings';\n\nexport type ConnectionID = number;\nexport type StatementID = number;\n\nexport enum WorkerRequestType {\n    CANCEL_PENDING_QUERY = 'CANCEL_PENDING_QUERY',\n    CLOSE_PREPARED = 'CLOSE_PREPARED',\n    COLLECT_FILE_STATISTICS = 'COLLECT_FILE_STATISTICS',\n    REGISTER_OPFS_FILE_NAME = 'REGISTER_OPFS_FILE_NAME',\n    CONNECT = 'CONNECT',\n    COPY_FILE_TO_BUFFER = 'COPY_FILE_TO_BUFFER',\n    COPY_FILE_TO_PATH = 'COPY_FILE_TO_PATH',\n    CREATE_PREPARED = 'CREATE_PREPARED',\n    DISCONNECT = 'DISCONNECT',\n    DROP_FILE = 'DROP_FILE',\n    DROP_FILES = 'DROP_FILES',\n    EXPORT_FILE_STATISTICS = 'EXPORT_FILE_STATISTICS',\n    FETCH_QUERY_RESULTS = 'FETCH_QUERY_RESULTS',\n    FLUSH_FILES = 'FLUSH_FILES',\n    GET_FEATURE_FLAGS = 'GET_FEATURE_FLAGS',\n    GET_TABLE_NAMES = 'GET_TABLE_NAMES',\n    GET_VERSION = 'GET_VERSION',\n    GLOB_FILE_INFOS = 'GLOB_FILE_INFOS',\n    INSERT_ARROW_FROM_IPC_STREAM = 'INSERT_ARROW_FROM_IPC_STREAM',\n    INSERT_CSV_FROM_PATH = 'IMPORT_CSV_FROM_PATH',\n    INSERT_JSON_FROM_PATH = 'IMPORT_JSON_FROM_PATH',\n    INSTANTIATE = 'INSTANTIATE',\n    OPEN = 'OPEN',\n    PING = 'PING',\n    POLL_PENDING_QUERY = 'POLL_PENDING_QUERY',\n    REGISTER_FILE_BUFFER = 'REGISTER_FILE_BUFFER',\n    REGISTER_FILE_HANDLE = 'REGISTER_FILE_HANDLE',\n    REGISTER_FILE_URL = 'REGISTER_FILE_URL',\n    RESET = 'RESET',\n    RUN_PREPARED = 'RUN_PREPARED',\n    RUN_QUERY = 'RUN_QUERY',\n    SEND_PREPARED = 'SEND_PREPARED',\n    START_PENDING_QUERY = 'START_PENDING_QUERY',\n    TOKENIZE = 'TOKENIZE',\n}\n\nexport enum WorkerResponseType {\n    CONNECTION_INFO = 'CONNECTION_INFO',\n    ERROR = 'ERROR',\n    FEATURE_FLAGS = 'FEATURE_FLAGS',\n    FILE_BUFFER = 'FILE_BUFFER',\n    FILE_INFOS = 'FILE_INFOS',\n    FILE_SIZE = 'FILE_SIZE',\n    FILE_STATISTICS = 'FILE_STATISTICS',\n    INSTANTIATE_PROGRESS = 'INSTANTIATE_PROGRESS',\n    LOG = 'LOG',\n    PROGRESS_UPDATE = 'PROGRESS_UPDATE',\n    OK = 'OK',\n    PREPARED_STATEMENT_ID = 'PREPARED_STATEMENT_ID',\n    QUERY_PLAN = 'QUERY_PLAN',\n    QUERY_RESULT = 'QUERY_RESULT',\n    QUERY_RESULT_CHUNK = 'QUERY_RESULT_CHUNK',\n    QUERY_RESULT_HEADER = 'QUERY_RESULT_HEADER',\n    QUERY_RESULT_HEADER_OR_NULL = 'QUERY_RESULT_HEADER_OR_NULL',\n    REGISTERED_FILE = 'REGISTERED_FILE',\n    SCRIPT_TOKENS = 'SCRIPT_TOKENS',\n    SUCCESS = 'SUCCESS',\n    TABLE_NAMES = 'TABLE_NAMES',\n    VERSION_STRING = 'VERSION_STRING',\n}\n\nexport type WorkerRequest<T, P> = {\n    readonly messageId: number;\n    readonly type: T;\n    readonly data: P;\n};\n\nexport type WorkerResponse<T, P> = {\n    readonly messageId: number;\n    readonly requestId: number;\n    readonly type: T;\n    readonly data: P;\n};\n\nexport type WorkerTaskReturnType<T extends WorkerTaskVariant> = T extends WorkerTask<any, any, infer P> ? P : never;\n\nexport class WorkerTask<T, D, P> {\n    readonly type: T;\n    readonly data: D;\n    promise: Promise<P>;\n    promiseResolver: (value: P | PromiseLike<P>) => void = () => {};\n    promiseRejecter: (value: any) => void = () => {};\n\n    constructor(type: T, data: D) {\n        this.type = type;\n        this.data = data;\n        this.promise = new Promise<P>(\n            (resolve: (value: P | PromiseLike<P>) => void, reject: (reason?: void) => void) => {\n                this.promiseResolver = resolve;\n                this.promiseRejecter = reject;\n            },\n        );\n    }\n}\n\nexport type WorkerRequestVariant =\n    | WorkerRequest<WorkerRequestType.CLOSE_PREPARED, [ConnectionID, StatementID]>\n    | WorkerRequest<WorkerRequestType.CANCEL_PENDING_QUERY, number>\n    | WorkerRequest<WorkerRequestType.COLLECT_FILE_STATISTICS, [string, boolean]>\n    | WorkerRequest<WorkerRequestType.REGISTER_OPFS_FILE_NAME, [string]>\n    | WorkerRequest<WorkerRequestType.CONNECT, null>\n    | WorkerRequest<WorkerRequestType.COPY_FILE_TO_BUFFER, string>\n    | WorkerRequest<WorkerRequestType.COPY_FILE_TO_PATH, [string, string]>\n    | WorkerRequest<WorkerRequestType.CREATE_PREPARED, [ConnectionID, string]>\n    | WorkerRequest<WorkerRequestType.DISCONNECT, number>\n    | WorkerRequest<WorkerRequestType.DROP_FILE, string>\n    | WorkerRequest<WorkerRequestType.DROP_FILES, string[] | undefined>\n    | WorkerRequest<WorkerRequestType.EXPORT_FILE_STATISTICS, string>\n    | WorkerRequest<WorkerRequestType.FETCH_QUERY_RESULTS, number>\n    | WorkerRequest<WorkerRequestType.FLUSH_FILES, null>\n    | WorkerRequest<WorkerRequestType.GET_FEATURE_FLAGS, null>\n    | WorkerRequest<WorkerRequestType.GET_TABLE_NAMES, [number, string]>\n    | WorkerRequest<WorkerRequestType.GET_VERSION, null>\n    | WorkerRequest<WorkerRequestType.GLOB_FILE_INFOS, string>\n    | WorkerRequest<\n          WorkerRequestType.INSERT_ARROW_FROM_IPC_STREAM,\n          [number, Uint8Array, ArrowInsertOptions | undefined]\n      >\n    | WorkerRequest<WorkerRequestType.INSERT_CSV_FROM_PATH, [number, string, CSVInsertOptions]>\n    | WorkerRequest<WorkerRequestType.INSERT_JSON_FROM_PATH, [number, string, JSONInsertOptions]>\n    | WorkerRequest<WorkerRequestType.INSTANTIATE, [string, string | null]>\n    | WorkerRequest<WorkerRequestType.OPEN, DuckDBConfig>\n    | WorkerRequest<WorkerRequestType.PING, null>\n    | WorkerRequest<WorkerRequestType.POLL_PENDING_QUERY, number>\n    | WorkerRequest<WorkerRequestType.REGISTER_FILE_BUFFER, [string, Uint8Array]>\n    | WorkerRequest<WorkerRequestType.REGISTER_FILE_HANDLE, [string, any, DuckDBDataProtocol, boolean]>\n    | WorkerRequest<WorkerRequestType.REGISTER_FILE_URL, [string, string, DuckDBDataProtocol, boolean]>\n    | WorkerRequest<WorkerRequestType.RESET, null>\n    | WorkerRequest<WorkerRequestType.RUN_PREPARED, [number, number, any[]]>\n    | WorkerRequest<WorkerRequestType.RUN_QUERY, [number, string]>\n    | WorkerRequest<WorkerRequestType.SEND_PREPARED, [number, number, any[]]>\n    | WorkerRequest<WorkerRequestType.START_PENDING_QUERY, [number, string, boolean]>\n    | WorkerRequest<WorkerRequestType.TOKENIZE, string>;\n\nexport type WorkerResponseVariant =\n    | WorkerResponse<WorkerResponseType.CONNECTION_INFO, number>\n    | WorkerResponse<WorkerResponseType.ERROR, any>\n    | WorkerResponse<WorkerResponseType.FEATURE_FLAGS, number>\n    | WorkerResponse<WorkerResponseType.FILE_BUFFER, Uint8Array>\n    | WorkerResponse<WorkerResponseType.FILE_INFOS, WebFile[]>\n    | WorkerResponse<WorkerResponseType.FILE_SIZE, number>\n    | WorkerResponse<WorkerResponseType.FILE_STATISTICS, FileStatistics>\n    | WorkerResponse<WorkerResponseType.INSTANTIATE_PROGRESS, InstantiationProgress>\n    | WorkerResponse<WorkerResponseType.LOG, LogEntryVariant>\n    | WorkerResponse<WorkerResponseType.PROGRESS_UPDATE, ProgressEntry>\n    | WorkerResponse<WorkerResponseType.OK, null>\n    | WorkerResponse<WorkerResponseType.PREPARED_STATEMENT_ID, number>\n    | WorkerResponse<WorkerResponseType.QUERY_PLAN, Uint8Array>\n    | WorkerResponse<WorkerResponseType.QUERY_RESULT, Uint8Array>\n    | WorkerResponse<WorkerResponseType.QUERY_RESULT_CHUNK, Uint8Array | null>\n    | WorkerResponse<WorkerResponseType.QUERY_RESULT_HEADER, Uint8Array>\n    | WorkerResponse<WorkerResponseType.QUERY_RESULT_HEADER_OR_NULL, Uint8Array | null>\n    | WorkerResponse<WorkerResponseType.SCRIPT_TOKENS, ScriptTokens>\n    | WorkerResponse<WorkerResponseType.SUCCESS, boolean>\n    | WorkerResponse<WorkerResponseType.TABLE_NAMES, string[]>\n    | WorkerResponse<WorkerResponseType.VERSION_STRING, string>;\n\nexport type WorkerTaskVariant =\n    | WorkerTask<WorkerRequestType.COLLECT_FILE_STATISTICS, [string, boolean], null>\n    | WorkerTask<WorkerRequestType.REGISTER_OPFS_FILE_NAME, [string], null>\n    | WorkerTask<WorkerRequestType.CLOSE_PREPARED, [number, number], null>\n    | WorkerTask<WorkerRequestType.CONNECT, null, ConnectionID>\n    | WorkerTask<WorkerRequestType.COPY_FILE_TO_BUFFER, string, Uint8Array>\n    | WorkerTask<WorkerRequestType.COPY_FILE_TO_PATH, [string, string], null>\n    | WorkerTask<WorkerRequestType.CREATE_PREPARED, [number, string], number>\n    | WorkerTask<WorkerRequestType.DISCONNECT, ConnectionID, null>\n    | WorkerTask<WorkerRequestType.DROP_FILE, string, null>\n    | WorkerTask<WorkerRequestType.DROP_FILES, string[] | undefined, null>\n    | WorkerTask<WorkerRequestType.EXPORT_FILE_STATISTICS, string, FileStatistics>\n    | WorkerTask<WorkerRequestType.FETCH_QUERY_RESULTS, ConnectionID, Uint8Array | null>\n    | WorkerTask<WorkerRequestType.FLUSH_FILES, null, null>\n    | WorkerTask<WorkerRequestType.GET_FEATURE_FLAGS, null, number>\n    | WorkerTask<WorkerRequestType.GET_TABLE_NAMES, [number, string], string[]>\n    | WorkerTask<WorkerRequestType.GET_VERSION, null, string>\n    | WorkerTask<\n          WorkerRequestType.INSERT_ARROW_FROM_IPC_STREAM,\n          [number, Uint8Array, ArrowInsertOptions | undefined],\n          null\n      >\n    | WorkerTask<WorkerRequestType.INSERT_CSV_FROM_PATH, [number, string, CSVInsertOptions], null>\n    | WorkerTask<WorkerRequestType.INSERT_JSON_FROM_PATH, [number, string, JSONInsertOptions], null>\n    | WorkerTask<WorkerRequestType.INSTANTIATE, [string, string | null], null>\n    | WorkerTask<WorkerRequestType.OPEN, DuckDBConfig, null>\n    | WorkerTask<WorkerRequestType.PING, null, null>\n    | WorkerTask<WorkerRequestType.REGISTER_FILE_BUFFER, [string, Uint8Array], null>\n    | WorkerTask<WorkerRequestType.REGISTER_FILE_HANDLE, [string, any, DuckDBDataProtocol, boolean], null>\n    | WorkerTask<WorkerRequestType.REGISTER_FILE_URL, [string, string, DuckDBDataProtocol, boolean], null>\n    | WorkerTask<WorkerRequestType.GLOB_FILE_INFOS, string, WebFile[]>\n    | WorkerTask<WorkerRequestType.RESET, null, null>\n    | WorkerTask<WorkerRequestType.RUN_PREPARED, [number, number, any[]], Uint8Array>\n    | WorkerTask<WorkerRequestType.RUN_QUERY, [ConnectionID, string], Uint8Array>\n    | WorkerTask<WorkerRequestType.SEND_PREPARED, [number, number, any[]], Uint8Array>\n    | WorkerTask<WorkerRequestType.START_PENDING_QUERY, [ConnectionID, string, boolean], Uint8Array | null>\n    | WorkerTask<WorkerRequestType.POLL_PENDING_QUERY, ConnectionID, Uint8Array | null>\n    | WorkerTask<WorkerRequestType.CANCEL_PENDING_QUERY, ConnectionID, boolean>\n    | WorkerTask<WorkerRequestType.TOKENIZE, string, ScriptTokens>;\n", "import * as arrow from 'apache-arrow';\n\nexport interface SQLType {\n    /// The sql type\n    sqlType: string;\n    /// Is nullable?\n    nullable?: boolean;\n    /// Decimal precision\n    precision?: number;\n    /// Decimal scaling\n    scale?: number;\n    /// Timezone\n    timezone?: string;\n    /// Byte width (FixedSizeBinary)\n    byteWidth?: number;\n    /// Key type\n    keyType?: SQLType;\n    /// Value type\n    valueType?: SQLType;\n    /// Fields\n    fields?: SQLField[];\n}\n\nexport function arrowToSQLType(type: arrow.DataType): SQLType {\n    switch (type.typeId) {\n        case arrow.Type.Binary:\n            return { sqlType: 'binary' };\n        case arrow.Type.Bool:\n            return { sqlType: 'bool' };\n        case arrow.Type.Date:\n            return { sqlType: 'date' };\n        case arrow.Type.DateDay:\n            return { sqlType: 'date32[d]' };\n        case arrow.Type.DateMillisecond:\n            return { sqlType: 'date64[ms]' };\n        case arrow.Type.Decimal: {\n            const dec = type as arrow.Decimal;\n            return { sqlType: 'decimal', precision: dec.precision, scale: dec.scale };\n        }\n        case arrow.Type.Float:\n            return { sqlType: 'float' };\n        case arrow.Type.Float16:\n            return { sqlType: 'float16' };\n        case arrow.Type.Float32:\n            return { sqlType: 'float32' };\n        case arrow.Type.Float64:\n            return { sqlType: 'float64' };\n        case arrow.Type.Int:\n            return { sqlType: 'int32' };\n        case arrow.Type.Int16:\n            return { sqlType: 'int16' };\n        case arrow.Type.Int32:\n            return { sqlType: 'int32' };\n        case arrow.Type.Int64:\n            return { sqlType: 'int64' };\n        case arrow.Type.Uint16:\n            return { sqlType: 'uint16' };\n        case arrow.Type.Uint32:\n            return { sqlType: 'uint32' };\n        case arrow.Type.Uint64:\n            return { sqlType: 'uint64' };\n        case arrow.Type.Uint8:\n            return { sqlType: 'uint8' };\n        case arrow.Type.IntervalDayTime:\n            return { sqlType: 'interval[dt]' };\n        case arrow.Type.IntervalYearMonth:\n            return { sqlType: 'interval[m]' };\n        case arrow.Type.List: {\n            const list = type as arrow.List;\n            return {\n                sqlType: 'list',\n                valueType: arrowToSQLType(list.valueType),\n            };\n        }\n        case arrow.Type.FixedSizeBinary: {\n            const bin = type as arrow.FixedSizeBinary;\n            return { sqlType: 'fixedsizebinary', byteWidth: bin.byteWidth };\n        }\n        case arrow.Type.Null:\n            return { sqlType: 'null' };\n        case arrow.Type.Utf8:\n            return { sqlType: 'utf8' };\n        case arrow.Type.Struct: {\n            const struct_ = type as arrow.Struct;\n            return {\n                sqlType: 'struct',\n                fields: struct_.children.map(c => arrowToSQLField(c.name, c.type)),\n            };\n        }\n        case arrow.Type.Map: {\n            const map_ = type as arrow.Map_;\n            return {\n                sqlType: 'map',\n                keyType: arrowToSQLType(map_.keyType),\n                valueType: arrowToSQLType(map_.valueType),\n            };\n        }\n        case arrow.Type.Time:\n            return { sqlType: 'time[s]' };\n        case arrow.Type.TimeMicrosecond:\n            return { sqlType: 'time[us]' };\n        case arrow.Type.TimeMillisecond:\n            return { sqlType: 'time[ms]' };\n        case arrow.Type.TimeNanosecond:\n            return { sqlType: 'time[ns]' };\n        case arrow.Type.TimeSecond:\n            return { sqlType: 'time[s]' };\n        case arrow.Type.Timestamp: {\n            const ts = type as arrow.Timestamp;\n            return { sqlType: 'timestamp', timezone: ts.timezone || undefined };\n        }\n        case arrow.Type.TimestampSecond: {\n            const ts = type as arrow.TimestampSecond;\n            return { sqlType: 'timestamp[s]', timezone: ts.timezone || undefined };\n        }\n        case arrow.Type.TimestampMicrosecond: {\n            const ts = type as arrow.TimestampMicrosecond;\n            return { sqlType: 'timestamp[us]', timezone: ts.timezone || undefined };\n        }\n        case arrow.Type.TimestampNanosecond: {\n            const ts = type as arrow.TimestampNanosecond;\n            return { sqlType: 'timestamp[ns]', timezone: ts.timezone || undefined };\n        }\n        case arrow.Type.TimestampMillisecond: {\n            const ts = type as arrow.TimestampMillisecond;\n            return { sqlType: 'timestamp[ms]', timezone: ts.timezone || undefined };\n        }\n    }\n    throw new Error(`unsupported arrow type: ${type.toString()}`);\n}\n\nexport type SQLField = SQLType & { name: string };\n\nexport function arrowToSQLField(name: string, type: arrow.DataType): SQLField {\n    const t = arrowToSQLType(type) as SQLField;\n    t.name = name;\n    return t;\n}\n", "export const REGEX_OPFS_FILE = /'(opfs:\\/\\/\\S*?)'/g;\nexport const REGEX_OPFS_PROTOCOL = /(opfs:\\/\\/\\S*?)/g;\n\nexport function isOPFSProtocol(path: string): boolean {\n    return path.search(REGEX_OPFS_PROTOCOL) > -1;\n}\n\nexport function searchOPFSFiles(text: string) {\n    return [...text.matchAll(REGEX_OPFS_FILE)].map(match => match[1]);\n}", "import {\n    WorkerRequestType,\n    WorkerResponseType,\n    WorkerResponseVariant,\n    WorkerTaskVariant,\n    WorkerTask,\n    ConnectionID,\n    WorkerTaskReturnType,\n} from './worker_request';\nimport { AsyncDuckDBBindings } from './async_bindings_interface';\nimport { Logger } from '../log';\nimport { AsyncDuckDBConnection } from './async_connection';\nimport { CSVInsertOptions, JSONInsertOptions, ArrowInsertOptions } from '../bindings/insert_options';\nimport { ScriptTokens } from '../bindings/tokens';\nimport { FileStatistics } from '../bindings/file_stats';\nimport { DuckDBConfig } from '../bindings/config';\nimport { InstantiationProgress } from '../bindings/progress';\nimport { arrowToSQLField } from '../json_typedef';\nimport { WebFile } from '../bindings/web_file';\nimport { DuckDBDataProtocol } from '../bindings';\nimport { searchOPFSFiles, isOPFSProtocol } from \"../utils/opfs_util\";\nimport { ProgressEntry } from '../log';\n\nconst TEXT_ENCODER = new TextEncoder();\n\nexport class AsyncDuckDB implements AsyncDuckDBBindings {\n    /** The message handler */\n    protected readonly _onMessageHandler: (event: MessageEvent) => void;\n    /** The error handler */\n    protected readonly _onErrorHandler: (event: ErrorEvent) => void;\n    /** The close handler */\n    protected readonly _onCloseHandler: () => void;\n\n    /** Instantiate the module */\n    protected _onInstantiationProgress: ((p: InstantiationProgress) => void)[] = [];\n\n    /** Progress callbacks */\n    protected _onExecutionProgress: ((p: ProgressEntry) => void)[] = [];\n\n    /** The logger */\n    protected readonly _logger: Logger;\n    /** The worker */\n    protected _worker: Worker | null = null;\n    /** The promise for the worker shutdown */\n    protected _workerShutdownPromise: Promise<null> | null = null;\n    /** Make the worker as terminated */\n    protected _workerShutdownResolver: (value: PromiseLike<null> | null) => void = () => {};\n\n    /** The next message id */\n    protected _nextMessageId = 0;\n    /** The pending requests */\n    protected _pendingRequests: Map<number, WorkerTaskVariant> = new Map();\n    /** The DuckDBConfig */\n    protected _config: DuckDBConfig = {};\n\n    constructor(logger: Logger, worker: Worker | null = null) {\n        this._logger = logger;\n        this._onMessageHandler = this.onMessage.bind(this);\n        this._onErrorHandler = this.onError.bind(this);\n        this._onCloseHandler = this.onClose.bind(this);\n        if (worker != null) this.attach(worker);\n    }\n\n    /** Get the logger */\n    public get logger(): Logger {\n        return this._logger;\n    }\n\n    /** Get the logger */\n    public get config(): DuckDBConfig {\n        return this._config;\n    }\n\n    /** Attach to worker */\n    protected attach(worker: Worker): void {\n        this._worker = worker;\n        this._worker.addEventListener('message', this._onMessageHandler);\n        this._worker.addEventListener('error', this._onErrorHandler);\n        this._worker.addEventListener('close', this._onCloseHandler);\n        this._workerShutdownPromise = new Promise<null>(\n            (resolve: (value: PromiseLike<null> | null) => void, _reject: (reason?: void) => void) => {\n                this._workerShutdownResolver = resolve;\n            },\n        );\n    }\n\n    /** Detach from worker */\n    public detach(): void {\n        if (!this._worker) return;\n        this._worker.removeEventListener('message', this._onMessageHandler);\n        this._worker.removeEventListener('error', this._onErrorHandler);\n        this._worker.removeEventListener('close', this._onCloseHandler);\n        this._worker = null;\n        this._workerShutdownResolver(null);\n        this._workerShutdownPromise = null;\n        this._workerShutdownResolver = () => {};\n    }\n\n    /** Kill the worker */\n    public async terminate(): Promise<void> {\n        if (!this._worker) return;\n        this._worker.terminate();\n        //await this._workerShutdownPromise; TODO deadlocking in karma?\n        this._worker = null;\n        this._workerShutdownPromise = null;\n        this._workerShutdownResolver = () => {};\n    }\n\n    /** Post a task */\n    protected async postTask<W extends WorkerTaskVariant>(\n        task: W,\n        transfer: ArrayBuffer[] = [],\n    ): Promise<WorkerTaskReturnType<W>> {\n        if (!this._worker) {\n            console.error('cannot send a message since the worker is not set!:' + task.type+\",\" + task.data);\n            return undefined as any;\n        }\n        const mid = this._nextMessageId++;\n        this._pendingRequests.set(mid, task);\n        this._worker.postMessage(\n            {\n                messageId: mid,\n                type: task.type,\n                data: task.data,\n            },\n            transfer,\n        );\n        return (await task.promise) as WorkerTaskReturnType<W>;\n    }\n\n    /** Received a message */\n    protected onMessage(event: MessageEvent): void {\n        // Unassociated responses?\n        const response = event.data as WorkerResponseVariant;\n        switch (response.type) {\n            // Request failed?\n            case WorkerResponseType.PROGRESS_UPDATE: {\n                for (const p of this._onExecutionProgress) {\n                    p(response.data);\n                }\n                return;\n            }\n            case WorkerResponseType.LOG: {\n                this._logger.log(response.data);\n                return;\n            }\n            // Call progress callback\n            case WorkerResponseType.INSTANTIATE_PROGRESS: {\n                for (const p of this._onInstantiationProgress) {\n                    p(response.data);\n                }\n                return;\n            }\n        }\n\n        // Get associated task\n        const task = this._pendingRequests.get(response.requestId);\n        if (!task) {\n            console.warn(`unassociated response: [${response.requestId}, ${response.type.toString()}]`);\n            return;\n        }\n        this._pendingRequests.delete(response.requestId);\n\n        // Request failed?\n        if (response.type == WorkerResponseType.ERROR) {\n            // Workaround for Firefox not being able to perform structured-clone on Native Errors\n            // https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\n            const e = new Error(response.data.message);\n            e.name = response.data.name;\n            if (Object.getOwnPropertyDescriptor(e, 'stack')?.writable) {\n                e.stack = response.data.stack;\n            }\n            task.promiseRejecter(e);\n            return;\n        }\n\n        // Otherwise differentiate between the tasks first\n        switch (task.type) {\n            case WorkerRequestType.CLOSE_PREPARED:\n            case WorkerRequestType.COLLECT_FILE_STATISTICS:\n            case WorkerRequestType.REGISTER_OPFS_FILE_NAME:\n            case WorkerRequestType.COPY_FILE_TO_PATH:\n            case WorkerRequestType.DISCONNECT:\n            case WorkerRequestType.DROP_FILE:\n            case WorkerRequestType.DROP_FILES:\n            case WorkerRequestType.FLUSH_FILES:\n            case WorkerRequestType.INSERT_ARROW_FROM_IPC_STREAM:\n            case WorkerRequestType.INSERT_CSV_FROM_PATH:\n            case WorkerRequestType.INSERT_JSON_FROM_PATH:\n            case WorkerRequestType.OPEN:\n            case WorkerRequestType.PING:\n            case WorkerRequestType.REGISTER_FILE_BUFFER:\n            case WorkerRequestType.REGISTER_FILE_HANDLE:\n            case WorkerRequestType.REGISTER_FILE_URL:\n            case WorkerRequestType.RESET:\n                if (response.type == WorkerResponseType.OK) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.INSTANTIATE:\n                this._onInstantiationProgress = [];\n                if (response.type == WorkerResponseType.OK) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.GLOB_FILE_INFOS:\n                if (response.type == WorkerResponseType.FILE_INFOS) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.GET_VERSION:\n                if (response.type == WorkerResponseType.VERSION_STRING) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.GET_FEATURE_FLAGS:\n                if (response.type == WorkerResponseType.FEATURE_FLAGS) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.GET_TABLE_NAMES:\n                if (response.type == WorkerResponseType.TABLE_NAMES) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.TOKENIZE:\n                if (response.type == WorkerResponseType.SCRIPT_TOKENS) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.COPY_FILE_TO_BUFFER:\n                if (response.type == WorkerResponseType.FILE_BUFFER) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.EXPORT_FILE_STATISTICS:\n                if (response.type == WorkerResponseType.FILE_STATISTICS) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.CONNECT:\n                if (response.type == WorkerResponseType.CONNECTION_INFO) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.RUN_PREPARED:\n            case WorkerRequestType.RUN_QUERY:\n                if (response.type == WorkerResponseType.QUERY_RESULT) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.SEND_PREPARED:\n                if (response.type == WorkerResponseType.QUERY_RESULT_HEADER) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.START_PENDING_QUERY:\n                if (response.type == WorkerResponseType.QUERY_RESULT_HEADER_OR_NULL) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.POLL_PENDING_QUERY:\n                if (response.type == WorkerResponseType.QUERY_RESULT_HEADER_OR_NULL) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.CANCEL_PENDING_QUERY:\n                this._onInstantiationProgress = [];\n                if (response.type == WorkerResponseType.SUCCESS) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.FETCH_QUERY_RESULTS:\n                if (response.type == WorkerResponseType.QUERY_RESULT_CHUNK) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n            case WorkerRequestType.CREATE_PREPARED:\n                if (response.type == WorkerResponseType.PREPARED_STATEMENT_ID) {\n                    task.promiseResolver(response.data);\n                    return;\n                }\n                break;\n        }\n        task.promiseRejecter(new Error(`unexpected response type: ${response.type.toString()}`));\n    }\n\n    /** Received an error */\n    protected onError(event: ErrorEvent): void {\n        console.error(event);\n        console.error(`error in duckdb worker: ${event.message}`);\n        this._pendingRequests.clear();\n    }\n\n    /** The worker was closed */\n    protected onClose(): void {\n        this._workerShutdownResolver(null);\n        if (this._pendingRequests.size != 0) {\n            console.warn(`worker terminated with ${this._pendingRequests.size} pending requests`);\n            return;\n        }\n        this._pendingRequests.clear();\n    }\n\n    /** Is in detached state, no worker defined */\n    public isDetached(): boolean {\n        return !this._worker;\n    }\n\n    /** Reset the duckdb */\n    public async reset(): Promise<null> {\n        const task = new WorkerTask<WorkerRequestType.RESET, null, null>(WorkerRequestType.RESET, null);\n        return await this.postTask(task);\n    }\n\n    /** Ping the worker thread */\n    public async ping(): Promise<any> {\n        const task = new WorkerTask<WorkerRequestType.PING, null, null>(WorkerRequestType.PING, null);\n        await this.postTask(task);\n    }\n    /** Try to drop a file */\n    public async dropFile(name: string): Promise<null> {\n        const task = new WorkerTask<WorkerRequestType.DROP_FILE, string, null>(WorkerRequestType.DROP_FILE, name);\n        return await this.postTask(task);\n    }\n    /** Try to drop files */\n    public async dropFiles(names?: string[]): Promise<null> {\n        const task = new WorkerTask<WorkerRequestType.DROP_FILES, string[] | undefined, null>(WorkerRequestType.DROP_FILES, names);\n        return await this.postTask(task);\n    }\n    /** Flush all files */\n    public async flushFiles(): Promise<null> {\n        const task = new WorkerTask<WorkerRequestType.FLUSH_FILES, null, null>(WorkerRequestType.FLUSH_FILES, null);\n        return await this.postTask(task);\n    }\n\n    /** Open the database */\n    public async instantiate(\n        mainModuleURL: string,\n        pthreadWorkerURL: string | null = null,\n        progress: (progress: InstantiationProgress) => void = _p => {},\n    ): Promise<null> {\n        this._onInstantiationProgress.push(progress);\n        const task = new WorkerTask<WorkerRequestType.INSTANTIATE, [string, string | null], null>(\n            WorkerRequestType.INSTANTIATE,\n            [mainModuleURL, pthreadWorkerURL],\n        );\n        return await this.postTask(task);\n    }\n\n    /** Get the version */\n    public async getVersion(): Promise<string> {\n        const task = new WorkerTask<WorkerRequestType.GET_VERSION, null, string>(WorkerRequestType.GET_VERSION, null);\n        const version = await this.postTask(task);\n        return version;\n    }\n\n    /** Get the feature flags */\n    public async getFeatureFlags(): Promise<number> {\n        const task = new WorkerTask<WorkerRequestType.GET_FEATURE_FLAGS, null, number>(\n            WorkerRequestType.GET_FEATURE_FLAGS,\n            null,\n        );\n        const feature = await this.postTask(task);\n        return feature;\n    }\n\n    /** Open a new database */\n    public async open(config: DuckDBConfig): Promise<void> {\n        this._config = config;\n        const task = new WorkerTask<WorkerRequestType.OPEN, DuckDBConfig, null>(WorkerRequestType.OPEN, config);\n        await this.postTask(task);\n    }\n\n    /** Tokenize a script text */\n    public async tokenize(text: string): Promise<ScriptTokens> {\n        const task = new WorkerTask<WorkerRequestType.TOKENIZE, string, ScriptTokens>(WorkerRequestType.TOKENIZE, text);\n        const tokens = await this.postTask(task);\n        return tokens;\n    }\n\n    /** Connect to the database */\n    public async connectInternal(): Promise<number> {\n        const task = new WorkerTask<WorkerRequestType.CONNECT, null, ConnectionID>(WorkerRequestType.CONNECT, null);\n        return await this.postTask(task);\n    }\n\n    /** Connect to the database */\n    public async connect(): Promise<AsyncDuckDBConnection> {\n        const cid = await this.connectInternal();\n        return new AsyncDuckDBConnection(this, cid);\n    }\n\n    /** Disconnect from the database */\n    public async disconnect(conn: ConnectionID): Promise<void> {\n        const task = new WorkerTask<WorkerRequestType.DISCONNECT, ConnectionID, null>(\n            WorkerRequestType.DISCONNECT,\n            conn,\n        );\n        await this.postTask(task);\n    }\n\n    /** Run a query */\n    public async runQuery(conn: ConnectionID, text: string): Promise<Uint8Array> {\n        if( this.shouldOPFSFileHandling() ){\n            const files = await this.registerOPFSFileFromSQL(text);\n            try {\n                return await this._runQueryAsync(conn, text);\n            } finally {\n                if( files.length > 0 ){\n                    await this.dropFiles(files);\n                }\n            }\n        } else {\n            return await this._runQueryAsync(conn, text);\n        }\n    }\n\n    private async _runQueryAsync(conn: ConnectionID, text: string): Promise<Uint8Array> {\n        const task = new WorkerTask<WorkerRequestType.RUN_QUERY, [ConnectionID, string], Uint8Array>(\n            WorkerRequestType.RUN_QUERY,\n            [conn, text],\n        );\n        return await this.postTask(task);\n    }\n\n    /** Start a pending query */\n    public async startPendingQuery(\n        conn: ConnectionID,\n        text: string,\n        allowStreamResult: boolean = false,\n    ): Promise<Uint8Array | null> {\n        if( this.shouldOPFSFileHandling() ){\n            const files = await this.registerOPFSFileFromSQL(text);\n            try {\n                return await this._startPendingQueryAsync(conn, text, allowStreamResult);\n            } finally {\n                if( files.length > 0 ){\n                    await this.dropFiles(files);\n                }\n            }\n        } else {\n            return await this._startPendingQueryAsync(conn, text, allowStreamResult);\n        }\n    }\n\n    private async _startPendingQueryAsync(\n        conn: ConnectionID,\n        text: string,\n        allowStreamResult: boolean = false,\n    ): Promise<Uint8Array | null> {\n        const task = new WorkerTask<\n            WorkerRequestType.START_PENDING_QUERY,\n            [ConnectionID, string, boolean],\n            Uint8Array | null\n        >(WorkerRequestType.START_PENDING_QUERY, [conn, text, allowStreamResult]);\n        return await this.postTask(task);\n    }\n\n    /** Poll a pending query */\n    public async pollPendingQuery(conn: ConnectionID): Promise<Uint8Array | null> {\n        const task = new WorkerTask<WorkerRequestType.POLL_PENDING_QUERY, ConnectionID, Uint8Array | null>(\n            WorkerRequestType.POLL_PENDING_QUERY,\n            conn,\n        );\n        return await this.postTask(task);\n    }\n    /** Cancel a pending query */\n    public async cancelPendingQuery(conn: ConnectionID): Promise<boolean> {\n        const task = new WorkerTask<WorkerRequestType.CANCEL_PENDING_QUERY, ConnectionID, boolean>(\n            WorkerRequestType.CANCEL_PENDING_QUERY,\n            conn,\n        );\n        return await this.postTask(task);\n    }\n\n    /** Fetch query results */\n    public async fetchQueryResults(conn: ConnectionID): Promise<Uint8Array | null> {\n        const task = new WorkerTask<WorkerRequestType.FETCH_QUERY_RESULTS, ConnectionID, Uint8Array | null>(\n            WorkerRequestType.FETCH_QUERY_RESULTS,\n            conn,\n        );\n        return await this.postTask(task);\n    }\n\n    /** Get table names */\n    public async getTableNames(conn: number, text: string): Promise<string[]> {\n        const task = new WorkerTask<WorkerRequestType.GET_TABLE_NAMES, [number, string], string[]>(\n            WorkerRequestType.GET_TABLE_NAMES,\n            [conn, text],\n        );\n        return await this.postTask(task);\n    }\n\n    /** Prepare a statement and return its identifier */\n    public async createPrepared(conn: number, text: string): Promise<number> {\n        const task = new WorkerTask<WorkerRequestType.CREATE_PREPARED, [number, string], number>(\n            WorkerRequestType.CREATE_PREPARED,\n            [conn, text],\n        );\n        return await this.postTask(task);\n    }\n    /** Close a prepared statement */\n    public async closePrepared(conn: number, statement: number): Promise<void> {\n        const task = new WorkerTask<WorkerRequestType.CLOSE_PREPARED, [number, number], null>(\n            WorkerRequestType.CLOSE_PREPARED,\n            [conn, statement],\n        );\n        await this.postTask(task);\n    }\n    /** Execute a prepared statement and return the full result */\n    public async runPrepared(conn: number, statement: number, params: any[]): Promise<Uint8Array> {\n        const task = new WorkerTask<WorkerRequestType.RUN_PREPARED, [ConnectionID, number, any[]], Uint8Array>(\n            WorkerRequestType.RUN_PREPARED,\n            [conn, statement, params],\n        );\n        return await this.postTask(task);\n    }\n    /** Execute a prepared statement and stream the result */\n    public async sendPrepared(conn: number, statement: number, params: any[]): Promise<Uint8Array> {\n        const task = new WorkerTask<WorkerRequestType.SEND_PREPARED, [ConnectionID, number, any[]], Uint8Array>(\n            WorkerRequestType.SEND_PREPARED,\n            [conn, statement, params],\n        );\n        return await this.postTask(task);\n    }\n    /** Glob file infos */\n    public async globFiles(path: string): Promise<WebFile[]> {\n        const task = new WorkerTask<WorkerRequestType.GLOB_FILE_INFOS, string, WebFile[]>(\n            WorkerRequestType.GLOB_FILE_INFOS,\n            path,\n        );\n        return await this.postTask(task);\n    }\n    /** Register file text */\n    public async registerFileText(name: string, text: string): Promise<void> {\n        const buffer = TEXT_ENCODER.encode(text);\n        await this.registerFileBuffer(name, buffer);\n    }\n    /** Register a file path. */\n    public async registerFileURL(\n        name: string,\n        url: string,\n        proto: DuckDBDataProtocol,\n        directIO: boolean,\n    ): Promise<void> {\n        if (url === undefined) {\n            url = name;\n        }\n        const task = new WorkerTask<\n            WorkerRequestType.REGISTER_FILE_URL,\n            [string, string, DuckDBDataProtocol, boolean],\n            null\n        >(WorkerRequestType.REGISTER_FILE_URL, [name, url, proto, directIO]);\n        await this.postTask(task);\n    }\n\n    /** Register an empty file buffer. */\n    public async registerEmptyFileBuffer(name: string): Promise<void> {\n        /*\n        const task = new WorkerTask<WorkerRequestType.REGISTER_FILE_BUFFER, [string, Uint8Array], null>(\n            WorkerRequestType.REGISTER_FILE_BUFFER,\n            [name, new Uint8Array()],\n        );\n        await this.postTask(task);\n*/\n    }\n\n    /** Register a file buffer. */\n    public async registerFileBuffer(name: string, buffer: Uint8Array): Promise<void> {\n        const task = new WorkerTask<WorkerRequestType.REGISTER_FILE_BUFFER, [string, Uint8Array], null>(\n            WorkerRequestType.REGISTER_FILE_BUFFER,\n            [name, buffer],\n        );\n        await this.postTask(task, [buffer.buffer]);\n    }\n\n    /** Register a file handle. */\n    public async registerFileHandle<HandleType>(\n        name: string,\n        handle: HandleType,\n        protocol: DuckDBDataProtocol,\n        directIO: boolean,\n    ): Promise<void> {\n        const task = new WorkerTask<\n            WorkerRequestType.REGISTER_FILE_HANDLE,\n            [string, any, DuckDBDataProtocol, boolean],\n            null\n        >(WorkerRequestType.REGISTER_FILE_HANDLE, [name, handle, protocol, directIO]);\n        await this.postTask(task, []);\n    }\n\n    /** Enable file statistics */\n    public async registerOPFSFileName(name: string): Promise<void> {\n        const task = new WorkerTask<WorkerRequestType.REGISTER_OPFS_FILE_NAME, [string], null>(\n            WorkerRequestType.REGISTER_OPFS_FILE_NAME,\n            [name],\n        );\n        await this.postTask(task, []);\n    }\n\n    /** Enable file statistics */\n    public async collectFileStatistics(name: string, enable: boolean): Promise<void> {\n        const task = new WorkerTask<WorkerRequestType.COLLECT_FILE_STATISTICS, [string, boolean], null>(\n            WorkerRequestType.COLLECT_FILE_STATISTICS,\n            [name, enable],\n        );\n        await this.postTask(task, []);\n    }\n\n    /** Export file statistics */\n    public async exportFileStatistics(name: string): Promise<FileStatistics> {\n        const task = new WorkerTask<WorkerRequestType.EXPORT_FILE_STATISTICS, string, FileStatistics>(\n            WorkerRequestType.EXPORT_FILE_STATISTICS,\n            name,\n        );\n        return await this.postTask(task, []);\n    }\n\n    /** Copy a file to a buffer. */\n    public async copyFileToBuffer(name: string): Promise<Uint8Array> {\n        const task = new WorkerTask<WorkerRequestType.COPY_FILE_TO_BUFFER, string, Uint8Array>(\n            WorkerRequestType.COPY_FILE_TO_BUFFER,\n            name,\n        );\n        return await this.postTask(task);\n    }\n\n    /** Copy a file to a path. */\n    public async copyFileToPath(name: string, path: string): Promise<void> {\n        const task = new WorkerTask<WorkerRequestType.COPY_FILE_TO_PATH, [string, string], null>(\n            WorkerRequestType.COPY_FILE_TO_PATH,\n            [name, path],\n        );\n        await this.postTask(task);\n    }\n\n    /** Insert arrow from an ipc stream */\n    public async insertArrowFromIPCStream(\n        conn: ConnectionID,\n        buffer: Uint8Array,\n        options?: ArrowInsertOptions,\n    ): Promise<void> {\n        if (buffer.length == 0) return;\n        // Pass to the worker\n        const task = new WorkerTask<\n            WorkerRequestType.INSERT_ARROW_FROM_IPC_STREAM,\n            [number, Uint8Array, ArrowInsertOptions | undefined],\n            null\n        >(WorkerRequestType.INSERT_ARROW_FROM_IPC_STREAM, [conn, buffer, options]);\n        await this.postTask(task, [buffer.buffer]);\n    }\n    /** Insert a csv file */\n    public async insertCSVFromPath(conn: ConnectionID, path: string, options: CSVInsertOptions): Promise<void> {\n        // Flatten the table options\n        if (options.columns !== undefined) {\n            const out = [];\n            for (const k in options.columns) {\n                const type = options.columns[k];\n                out.push(arrowToSQLField(k, type));\n            }\n            options.columnsFlat = out;\n            delete options.columns;\n        }\n\n        // Pass to the worker\n        const task = new WorkerTask<WorkerRequestType.INSERT_CSV_FROM_PATH, [number, string, CSVInsertOptions], null>(\n            WorkerRequestType.INSERT_CSV_FROM_PATH,\n            [conn, path, options],\n        );\n        await this.postTask(task);\n    }\n    /** Insert a json file */\n    public async insertJSONFromPath(conn: ConnectionID, path: string, options: JSONInsertOptions): Promise<void> {\n        // Flatten the table options\n        if (options.columns !== undefined) {\n            const out = [];\n            for (const k in options.columns) {\n                const type = options.columns[k];\n                out.push(arrowToSQLField(k, type));\n            }\n            options.columnsFlat = out;\n            delete options.columns;\n        }\n\n        // Pass to the worker\n        const task = new WorkerTask<WorkerRequestType.INSERT_JSON_FROM_PATH, [number, string, JSONInsertOptions], null>(\n            WorkerRequestType.INSERT_JSON_FROM_PATH,\n            [conn, path, options],\n        );\n        await this.postTask(task);\n    }\n\n    private shouldOPFSFileHandling():boolean {\n        if( isOPFSProtocol(this.config.path ?? \"\")){\n            return this.config.opfs?.fileHandling == \"auto\";\n        }\n        return false;\n    }\n\n    private async registerOPFSFileFromSQL(text: string) {\n        const files = searchOPFSFiles(text);\n        const result: string[] = [];\n        for (const file of files) {\n            try {\n                await this.registerOPFSFileName(file);\n                result.push(file);\n            } catch (e) {\n                console.error(e);\n                throw new Error(\"File Not found:\" + file);\n            }\n        }\n        return result;\n    }\n}\n", "import { DuckDBModule } from './duckdb_module';\nimport { UDFFunction } from './udf_function';\nimport * as udf_rt from './udf_runtime';\n\n/** Wrapper for TextDecoder to support shared array buffers */\nfunction TextDecoderWrapper(): (input?: BufferSource) => string {\n    const decoder = new TextDecoder();\n    return (data: any) => {\n        if (typeof SharedArrayBuffer !== 'undefined' && data.buffer instanceof SharedArrayBuffer) {\n            data = new Uint8Array(data);\n        }\n        return decoder.decode(data);\n    };\n}\n/** Helper to decode text */\nexport const decodeText = TextDecoderWrapper();\n\n/** Copy a buffer */\nexport function failWith(mod: DuckDBModule, msg: string): void {\n    console.error(`FAIL WITH: ${msg}`);\n    mod.ccall('duckdb_web_fail_with', null, ['string'], [msg]);\n}\n\n/** Copy a buffer */\nexport function copyBuffer(mod: DuckDBModule, begin: number, length: number): Uint8Array {\n    const buffer = mod.HEAPU8.subarray(begin, begin + length);\n    const copy = new Uint8Array(new ArrayBuffer(buffer.byteLength));\n    copy.set(buffer);\n    return copy;\n}\n\n/** Decode a string */\nexport function readString(mod: DuckDBModule, begin: number, length: number): string {\n    return decodeText(mod.HEAPU8.subarray(begin, begin + length));\n}\n\n/** The data protocol */\nexport enum DuckDBDataProtocol {\n    BUFFER = 0,\n    NODE_FS = 1,\n    BROWSER_FILEREADER = 2,\n    BROWSER_FSACCESS = 3,\n    HTTP = 4,\n    S3 = 5,\n}\n\n/** File flags for opening files*/\nexport enum FileFlags {\n    //! Open file with read access\n    FILE_FLAGS_READ = 1 << 0,\n    //! Open file with write access\n    FILE_FLAGS_WRITE = 1 << 1,\n    //! Use direct IO when reading/writing to the file\n    FILE_FLAGS_DIRECT_IO = 1 << 2,\n    //! Create file if not exists, can only be used together with WRITE\n    FILE_FLAGS_FILE_CREATE = 1 << 3,\n    //! Always create a new file. If a file exists, the file is truncated. Cannot be used together with CREATE.\n    FILE_FLAGS_FILE_CREATE_NEW = 1 << 4,\n    //! Open file in append mode\n    FILE_FLAGS_APPEND = 1 << 5,\n    FILE_FLAGS_PRIVATE = 1 << 6,\n    FILE_FLAGS_NULL_IF_NOT_EXISTS = 1 << 7,\n    FILE_FLAGS_PARALLEL_ACCESS = 1 << 8,\n    FILE_FLAGS_EXCLUSIVE_CREATE = 1 << 9,\n    FILE_FLAGS_NULL_IF_EXISTS = 1 << 10\n}\n\n/** Configuration for the AWS S3 Filesystem */\nexport interface S3Config {\n    region?: string;\n    endpoint?: string;\n    accessKeyId?: string;\n    secretAccessKey?: string;\n    sessionToken?: string;\n}\n\n/** An info for a file registered with DuckDB */\nexport interface DuckDBFileInfo {\n    cacheEpoch: number;\n    fileId: number;\n    fileName: string;\n    dataProtocol: DuckDBDataProtocol;\n    dataUrl: string | null;\n    reliableHeadRequests?: boolean;\n    allowFullHttpReads?: boolean;\n    forceFullHttpReads?: boolean;\n    s3Config?: S3Config;\n}\n\n/** Global info for all files registered with DuckDB */\nexport interface DuckDBGlobalFileInfo {\n    cacheEpoch: number;\n    reliableHeadRequests?: boolean;\n    allowFullHttpReads?: boolean;\n    forceFullHttpReads?: boolean;\n    s3Config?: S3Config;\n}\n\nexport interface PreparedDBFileHandle {\n    path: string;\n    handle: any;\n    fromCached: boolean;\n}\n\n/** Call a function with packed response buffer */\nexport function callSRet(\n    mod: DuckDBModule,\n    funcName: string,\n    argTypes: Array<Emscripten.JSType>,\n    args: Array<any>,\n): [number, number, number] {\n    const stackPointer = mod.stackSave();\n\n    // Allocate the packed response buffer\n    const response = mod.stackAlloc(3 * 8);\n    argTypes.unshift('number');\n    args.unshift(response);\n\n    // Do the call\n    mod.ccall(funcName, null, argTypes, args);\n\n    // Read the response\n    const status = mod.HEAPF64[(response >> 3) + 0];\n    const data = mod.HEAPF64[(response >> 3) + 1];\n    const dataSize = mod.HEAPF64[(response >> 3) + 2];\n\n    // Restore the stack\n    mod.stackRestore(stackPointer);\n    return [status, data, dataSize];\n}\n\n/** Drop response buffers */\nexport function dropResponseBuffers(mod: DuckDBModule): void {\n    mod.ccall('duckdb_web_clear_response', null, [], []);\n}\n\n/** The duckdb runtime */\nexport interface DuckDBRuntime {\n    _files?: Map<string, any>;\n    _udfFunctions: Map<number, UDFFunction>;\n\n    // Test a platform feature\n    testPlatformFeature(mod: DuckDBModule, feature: number): boolean;\n\n    // File APIs with dedicated file identifier\n    getDefaultDataProtocol(mod: DuckDBModule): number;\n    openFile(mod: DuckDBModule, fileId: number, flags: FileFlags): void;\n    syncFile(mod: DuckDBModule, fileId: number): void;\n    closeFile(mod: DuckDBModule, fileId: number): void;\n    dropFile(mod: DuckDBModule, fileNamePtr: number, fileNameLen: number): void;\n    getLastFileModificationTime(mod: DuckDBModule, fileId: number): number;\n    truncateFile(mod: DuckDBModule, fileId: number, newSize: number): void;\n    readFile(mod: DuckDBModule, fileId: number, buffer: number, bytes: number, location: number): number;\n    writeFile(mod: DuckDBModule, fileId: number, buffer: number, bytes: number, location: number): number;\n\n    // File APIs with path parameter\n    removeDirectory(mod: DuckDBModule, pathPtr: number, pathLen: number): void;\n    checkDirectory(mod: DuckDBModule, pathPtr: number, pathLen: number): boolean;\n    createDirectory(mod: DuckDBModule, pathPtr: number, pathLen: number): void;\n    listDirectoryEntries(mod: DuckDBModule, pathPtr: number, pathLen: number): boolean;\n    glob(mod: DuckDBModule, pathPtr: number, pathLen: number): void;\n    moveFile(mod: DuckDBModule, fromPtr: number, fromLen: number, toPtr: number, toLen: number): void;\n    checkFile(mod: DuckDBModule, pathPtr: number, pathLen: number): boolean;\n    removeFile(mod: DuckDBModule, pathPtr: number, pathLen: number): void;\n\n    // Prepare a file handle that could only be acquired aschronously\n    prepareFileHandle?: (path: string, protocol: DuckDBDataProtocol) => Promise<PreparedDBFileHandle[]>;\n    prepareFileHandles?: (path: string[], protocol: DuckDBDataProtocol) => Promise<PreparedDBFileHandle[]>;\n    prepareDBFileHandle?: (path: string, protocol: DuckDBDataProtocol) => Promise<PreparedDBFileHandle[]>;\n\n    // Internal API - experimental\n    progressUpdate(final: number, percentage: number, iteration: number): void;\n\n    // Call a scalar UDF function\n    callScalarUDF(\n        mod: DuckDBModule,\n        response: number,\n        funcId: number,\n        descPtr: number,\n        descSize: number,\n        ptrsPtr: number,\n        ptrsSize: number,\n    ): void;\n}\n\nexport const DEFAULT_RUNTIME: DuckDBRuntime = {\n    _udfFunctions: new Map(),\n\n    testPlatformFeature: (_mod: DuckDBModule, _feature: number): boolean => false,\n    getDefaultDataProtocol: (_mod: DuckDBModule): number => DuckDBDataProtocol.BUFFER,\n    openFile: (_mod: DuckDBModule, _fileId: number, flags: FileFlags): void => {},\n    syncFile: (_mod: DuckDBModule, _fileId: number): void => {},\n    closeFile: (_mod: DuckDBModule, _fileId: number): void => {},\n    dropFile: (_mod: DuckDBModule, _fileNamePtr: number, _fileNameLen: number): void => {},\n    getLastFileModificationTime: (_mod: DuckDBModule, _fileId: number): number => {\n        return 0;\n    },\n    progressUpdate: (_final: number, _percentage: number, _iteration: number): void => {\n        return;\n    },\n    truncateFile: (_mod: DuckDBModule, _fileId: number, _newSize: number): void => {},\n    readFile: (_mod: DuckDBModule, _fileId: number, _buffer: number, _bytes: number, _location: number): number => {\n        return 0;\n    },\n    writeFile: (_mod: DuckDBModule, _fileId: number, _buffer: number, _bytes: number, _location: number): number => {\n        return 0;\n    },\n\n    removeDirectory: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): void => {},\n    checkDirectory: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): boolean => {\n        return false;\n    },\n    createDirectory: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): void => {},\n    listDirectoryEntries: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): boolean => {\n        return false;\n    },\n    glob: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): void => {},\n    moveFile: (_mod: DuckDBModule, _fromPtr: number, _fromLen: number, _toPtr: number, _toLen: number): void => {},\n    checkFile: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): boolean => {\n        return false;\n    },\n    removeFile: (_mod: DuckDBModule, _pathPtr: number, _pathLen: number): void => {},\n    callScalarUDF: (\n        mod: DuckDBModule,\n        response: number,\n        funcId: number,\n        descPtr: number,\n        descSize: number,\n        ptrsPtr: number,\n        ptrsSize: number,\n    ): void => {\n        udf_rt.callScalarUDF(DEFAULT_RUNTIME, mod, response, funcId, descPtr, descSize, ptrsPtr, ptrsSize);\n    },\n};\n", "import { DuckDBBindings, DuckDBDataProtocol } from '../bindings';\nimport { WorkerResponseVariant, WorkerRequestVariant, WorkerRequestType, WorkerResponseType } from './worker_request';\nimport { Logger, LogEntryVariant } from '../log';\nimport { InstantiationProgress } from '../bindings/progress';\n\nexport abstract class AsyncDuckDBDispatcher implements Logger {\n    /** The bindings */\n    protected _bindings: DuckDBBindings | null = null;\n    /** The next message id */\n    protected _nextMessageId = 0;\n\n    /** Instantiate the wasm module */\n    protected abstract instantiate(\n        mainModule: string,\n        pthreadWorker: string | null,\n        progress: (p: InstantiationProgress) => void,\n    ): Promise<DuckDBBindings>;\n    /** Post a response to the main thread */\n    protected abstract postMessage(response: WorkerResponseVariant, transfer: ArrayBuffer[]): void;\n\n    /** Send log entry to the main thread */\n    public log(entry: LogEntryVariant): void {\n        this.postMessage(\n            {\n                messageId: this._nextMessageId++,\n                requestId: 0,\n                type: WorkerResponseType.LOG,\n                data: entry,\n            },\n            [],\n        );\n    }\n\n    /** Send plain OK without further data */\n    protected sendOK(request: WorkerRequestVariant): void {\n        this.postMessage(\n            {\n                messageId: this._nextMessageId++,\n                requestId: request.messageId,\n                type: WorkerResponseType.OK,\n                data: null,\n            },\n            [],\n        );\n    }\n\n    /** Fail with an error */\n    protected failWith(request: WorkerRequestVariant, e: Error): void {\n        // Workaround for Firefox not being able to perform structured-clone on Native Errors\n        // https://bugzilla.mozilla.org/show_bug.cgi?id=1556604\n        const obj: any = {\n            name: e.name,\n            message: e.message,\n            stack: e.stack || undefined,\n        };\n        this.postMessage(\n            {\n                messageId: this._nextMessageId++,\n                requestId: request.messageId,\n                type: WorkerResponseType.ERROR,\n                data: obj,\n            },\n            [],\n        );\n        return;\n    }\n\n    /** Process a request from the main thread */\n    public async onMessage(request: WorkerRequestVariant): Promise<void> {\n        // First process those requests that don't need bindings\n        switch (request.type) {\n            case WorkerRequestType.PING:\n                this.sendOK(request);\n                return;\n            case WorkerRequestType.INSTANTIATE:\n                if (this._bindings != null) {\n                    this.failWith(request, new Error('duckdb already initialized'));\n                }\n                try {\n                    this._bindings = await this.instantiate(request.data[0], request.data[1], p => {\n                        this.postMessage(\n                            {\n                                messageId: this._nextMessageId++,\n                                requestId: request.messageId,\n                                type: WorkerResponseType.INSTANTIATE_PROGRESS,\n                                data: p,\n                            },\n                            [],\n                        );\n                    });\n                    this.sendOK(request);\n                } catch (e: any) {\n                    console.log(e);\n                    this._bindings = null;\n                    this.failWith(request, e);\n                }\n                return;\n            default:\n                break;\n        }\n\n        // Bindings not initialized?\n        if (!this._bindings) {\n            return this.failWith(request, new Error('duckdb is not initialized'));\n        }\n\n        // Catch every exception and forward it as error message to the main thread\n        try {\n            switch (request.type) {\n                case WorkerRequestType.GET_VERSION:\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.VERSION_STRING,\n                            data: this._bindings.getVersion(),\n                        },\n                        [],\n                    );\n                    break;\n                case WorkerRequestType.GET_FEATURE_FLAGS:\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.FEATURE_FLAGS,\n                            data: this._bindings.getFeatureFlags(),\n                        },\n                        [],\n                    );\n                    break;\n                case WorkerRequestType.RESET:\n                    this._bindings.reset();\n                    this.sendOK(request);\n                    break;\n\n                case WorkerRequestType.OPEN: {\n                    const path = request.data.path;\n                    if (path?.startsWith('opfs://')) {\n                        await this._bindings.prepareDBFileHandle(path, DuckDBDataProtocol.BROWSER_FSACCESS);\n                        request.data.useDirectIO = true;\n                    }\n                    this._bindings.open(request.data);\n                    this.sendOK(request);\n                    break;\n                }\n                case WorkerRequestType.DROP_FILE:\n                    this._bindings.dropFile(request.data);\n                    this.sendOK(request);\n                    break;\n                case WorkerRequestType.DROP_FILES:\n                    this._bindings.dropFiles(request.data);\n                    this.sendOK(request);\n                    break;\n                case WorkerRequestType.FLUSH_FILES:\n                    this._bindings.flushFiles();\n                    this.sendOK(request);\n                    break;\n                case WorkerRequestType.CONNECT: {\n                    const conn = this._bindings.connect();\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.CONNECTION_INFO,\n                            data: conn.useUnsafe((_, c) => c),\n                        },\n                        [],\n                    );\n                    break;\n                }\n                case WorkerRequestType.DISCONNECT:\n                    this._bindings.disconnect(request.data);\n                    this.sendOK(request);\n                    break;\n                case WorkerRequestType.CREATE_PREPARED: {\n                    const result = this._bindings.createPrepared(request.data[0], request.data[1]);\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.PREPARED_STATEMENT_ID,\n                            data: result,\n                        },\n                        [],\n                    );\n                    break;\n                }\n                case WorkerRequestType.CLOSE_PREPARED: {\n                    this._bindings.closePrepared(request.data[0], request.data[1]);\n                    this.sendOK(request);\n                    break;\n                }\n                case WorkerRequestType.RUN_PREPARED: {\n                    const result = this._bindings.runPrepared(request.data[0], request.data[1], request.data[2]);\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.QUERY_RESULT,\n                            data: result,\n                        },\n                        [result.buffer],\n                    );\n                    break;\n                }\n                case WorkerRequestType.RUN_QUERY: {\n                    const result = this._bindings.runQuery(request.data[0], request.data[1]);\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.QUERY_RESULT,\n                            data: result,\n                        },\n                        [result.buffer],\n                    );\n                    break;\n                }\n                case WorkerRequestType.SEND_PREPARED: {\n                    const result = this._bindings.sendPrepared(request.data[0], request.data[1], request.data[2]);\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.QUERY_RESULT_HEADER,\n                            data: result,\n                        },\n                        [result.buffer],\n                    );\n                    break;\n                }\n                case WorkerRequestType.START_PENDING_QUERY: {\n                    const result = this._bindings.startPendingQuery(request.data[0], request.data[1], request.data[2]);\n                    const transfer = [];\n                    if (result) {\n                        transfer.push(result.buffer);\n                    }\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.QUERY_RESULT_HEADER_OR_NULL,\n                            data: result,\n                        },\n                        transfer,\n                    );\n                    break;\n                }\n                case WorkerRequestType.POLL_PENDING_QUERY: {\n                    const result = this._bindings.pollPendingQuery(request.data);\n                    const transfer = [];\n                    if (result) {\n                        transfer.push(result.buffer);\n                    }\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.QUERY_RESULT_HEADER_OR_NULL,\n                            data: result,\n                        },\n                        transfer,\n                    );\n                    break;\n                }\n                case WorkerRequestType.CANCEL_PENDING_QUERY: {\n                    const result = this._bindings.cancelPendingQuery(request.data);\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.SUCCESS,\n                            data: result,\n                        },\n                        [],\n                    );\n                    break;\n                }\n                case WorkerRequestType.FETCH_QUERY_RESULTS: {\n                    const result = this._bindings.fetchQueryResults(request.data);\n                    const transfer = result ? [result.buffer] : [];\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.QUERY_RESULT_CHUNK,\n                            data: result,\n                        },\n                        transfer,\n                    );\n                    break;\n                }\n                case WorkerRequestType.GET_TABLE_NAMES: {\n                    const result = this._bindings.getTableNames(request.data[0], request.data[1]);\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.TABLE_NAMES,\n                            data: result,\n                        },\n                        [],\n                    );\n                    break;\n                }\n                case WorkerRequestType.GLOB_FILE_INFOS: {\n                    const infos = this._bindings.globFiles(request.data);\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.FILE_INFOS,\n                            data: infos,\n                        },\n                        [],\n                    );\n                    break;\n                }\n\n                case WorkerRequestType.REGISTER_FILE_URL:\n                    this._bindings.registerFileURL(request.data[0], request.data[1], request.data[2], request.data[3]);\n                    this.sendOK(request);\n                    break;\n\n                case WorkerRequestType.REGISTER_FILE_BUFFER:\n                    this._bindings.registerFileBuffer(request.data[0], request.data[1]);\n                    this.sendOK(request);\n                    break;\n\n                case WorkerRequestType.REGISTER_FILE_HANDLE:\n                    await this._bindings.registerFileHandleAsync(\n                        request.data[0],\n                        request.data[1],\n                        request.data[2],\n                        request.data[3],\n                    );\n                    this.sendOK(request);\n                    break;\n\n                case WorkerRequestType.COPY_FILE_TO_PATH:\n                    this._bindings.copyFileToPath(request.data[0], request.data[1]);\n                    this.sendOK(request);\n                    break;\n\n                case WorkerRequestType.COPY_FILE_TO_BUFFER: {\n                    const buffer = this._bindings.copyFileToBuffer(request.data);\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.FILE_BUFFER,\n                            data: buffer,\n                        },\n                        [],\n                    );\n                    break;\n                }\n                case WorkerRequestType.COLLECT_FILE_STATISTICS:\n                    this._bindings.collectFileStatistics(request.data[0], request.data[1]);\n                    this.sendOK(request);\n                    break;\n\n                case WorkerRequestType.REGISTER_OPFS_FILE_NAME:\n                    await this._bindings.registerOPFSFileName(request.data[0]);\n                    this.sendOK(request);\n                    break;\n\n                case WorkerRequestType.EXPORT_FILE_STATISTICS: {\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.FILE_STATISTICS,\n                            data: this._bindings.exportFileStatistics(request.data),\n                        },\n                        [],\n                    );\n                    break;\n                }\n                case WorkerRequestType.INSERT_ARROW_FROM_IPC_STREAM: {\n                    this._bindings.insertArrowFromIPCStream(request.data[0], request.data[1], request.data[2]);\n                    this.sendOK(request);\n                    break;\n                }\n                case WorkerRequestType.INSERT_CSV_FROM_PATH: {\n                    this._bindings.insertCSVFromPath(request.data[0], request.data[1], request.data[2]);\n                    this.sendOK(request);\n                    break;\n                }\n                case WorkerRequestType.INSERT_JSON_FROM_PATH: {\n                    this._bindings.insertJSONFromPath(request.data[0], request.data[1], request.data[2]);\n                    this.sendOK(request);\n                    break;\n                }\n                case WorkerRequestType.TOKENIZE: {\n                    const result = this._bindings.tokenize(request.data);\n                    this.postMessage(\n                        {\n                            messageId: this._nextMessageId++,\n                            requestId: request.messageId,\n                            type: WorkerResponseType.SCRIPT_TOKENS,\n                            data: result,\n                        },\n                        [],\n                    );\n                    break;\n                }\n            }\n        } catch (e: any) {\n            console.log(e);\n            return this.failWith(request, e);\n        }\n    }\n}\n", "export const bigInt=()=>(async e=>{try{return(await WebAssembly.instantiate(e)).instance.exports.b(BigInt(0))===BigInt(0)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,126,1,126,3,2,1,0,7,5,1,1,98,0,0,10,6,1,4,0,32,0,11])),bulkMemory=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11])),exceptions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11])),extendedConst=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,0,1,11,9,1,0,65,1,65,2,106,11,0])),gc=()=>(async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,95,1,120,0])))(),jspi=()=>(async()=>\"Suspender\"in WebAssembly)(),memory64=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,5,3,1,4,1])),multiMemory=()=>(async()=>{try{return new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,5,5,2,0,0,0,0])),!0}catch(e){return!1}})(),multiValue=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,0,2,127,127,3,2,1,0,10,8,1,6,0,65,0,65,0,11])),mutableGlobals=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,2,8,1,1,97,1,98,3,127,1,6,6,1,127,1,65,0,11,7,5,1,1,97,3,1])),referenceTypes=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,7,1,5,0,208,112,26,11])),relaxedSimd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,15,1,13,0,65,1,253,15,65,2,253,15,253,128,2,11])),saturatedFloatToInt=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,12,1,10,0,67,0,0,0,0,252,0,26,11])),signExtensions=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,65,0,192,26,11])),simd=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),streamingCompilation=()=>(async()=>\"compileStreaming\"in WebAssembly)(),tailCall=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,6,1,4,0,18,0,11])),threads=()=>(async e=>{try{return\"undefined\"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(e)}catch(e){return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11])),typeReflection=()=>(async()=>\"Function\"in WebAssembly)();\n", "{\n    \"name\": \"@duckdb/duckdb-wasm\",\n    \"version\": \"1.33.1-dev45.0\",\n    \"description\": \"DuckDB powered by WebAssembly\",\n    \"license\": \"MIT\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/duckdb/duckdb-wasm.git\"\n    },\n    \"keywords\": [\n        \"sql\",\n        \"duckdb\",\n        \"relational\",\n        \"database\",\n        \"data\",\n        \"query\",\n        \"wasm\",\n        \"analytics\",\n        \"olap\",\n        \"arrow\",\n        \"parquet\",\n        \"json\",\n        \"csv\"\n    ],\n    \"dependencies\": {\n        \"apache-arrow\": \"^17.0.0\",\n        \"qs\": \"^6.14.1\"\n    },\n    \"devDependencies\": {\n        \"@types/emscripten\": \"^1.39.10\",\n        \"@types/jasmine\": \"^5.1.13\",\n        \"@typescript-eslint/eslint-plugin\": \"^6.21.0\",\n        \"@typescript-eslint/parser\": \"^6.21.0\",\n        \"esbuild\": \"^0.20.2\",\n        \"eslint\": \"^8.57.0\",\n        \"eslint-plugin-jasmine\": \"^4.1.3\",\n        \"eslint-plugin-react\": \"^7.37.5\",\n        \"fast-glob\": \"^3.3.2\",\n        \"jasmine\": \"^5.13.0\",\n        \"jasmine-core\": \"^5.1.2\",\n        \"jasmine-spec-reporter\": \"^7.0.0\",\n        \"js-sha256\": \"^0.11.1\",\n        \"karma\": \"^6.4.2\",\n        \"karma-chrome-launcher\": \"^3.2.0\",\n        \"karma-coverage\": \"^2.2.1\",\n        \"karma-firefox-launcher\": \"^2.1.3\",\n        \"karma-jasmine\": \"^5.1.0\",\n        \"karma-jasmine-html-reporter\": \"^2.1.0\",\n        \"karma-sourcemap-loader\": \"^0.4.0\",\n        \"karma-spec-reporter\": \"^0.0.36\",\n        \"make-dir\": \"^4.0.0\",\n        \"nyc\": \"^15.1.0\",\n        \"prettier\": \"^3.2.5\",\n        \"puppeteer\": \"^22.8.0\",\n        \"rimraf\": \"^5.0.5\",\n        \"s3rver\": \"^3.7.1\",\n        \"typedoc\": \"^0.28.15\",\n        \"typescript\": \"^5.3.3\",\n        \"wasm-feature-detect\": \"^1.6.1\",\n        \"web-worker\": \"^1.2.0\"\n    },\n    \"scripts\": {\n        \"build:debug\": \"node bundle.mjs debug && tsc --emitDeclarationOnly\",\n        \"build:release\": \"node bundle.mjs release && tsc --emitDeclarationOnly\",\n        \"docs\": \"typedoc\",\n        \"format\": \"prettier --write \\\"**/*.+(js|ts)\\\"\",\n        \"report\": \"node ./coverage.mjs\",\n        \"test:node\": \"node --enable-source-maps ../jasmine/bin/jasmine ./dist/tests-node.cjs\",\n        \"test:node:debug\": \"node --inspect-brk --enable-source-maps ../jasmine/bin/jasmine ./dist/tests-node.cjs\",\n        \"test:node:coverage\": \"nyc -r json --report-dir ./coverage/node node ../jasmine/bin/jasmine ./dist/tests-node.cjs\",\n        \"test:firefox\": \"karma start ./karma/tests-firefox.cjs\",\n        \"test:chrome\": \"karma start ./karma/tests-chrome.cjs\",\n        \"test:chrome:eh\": \"karma start ./karma/tests-chrome-eh.cjs\",\n        \"test:chrome:coverage\": \"karma start ./karma/tests-chrome-coverage.cjs\",\n        \"test:browser\": \"karma start ./karma/tests-all.cjs\",\n        \"test:browser:debug\": \"karma start ./karma/tests-debug.cjs\",\n        \"test\": \"npm run test:chrome && npm run test:node\",\n        \"test:coverage\": \"npm run test:chrome:coverage && npm run test:node:coverage && npm run report\",\n        \"lint\": \"eslint src test\"\n    },\n    \"files\": [\n        \"dist\",\n        \"!dist/tests-*\",\n        \"!dist/duckdb-browser-mvp.worker.js.map\",\n        \"!dist/types/test\"\n    ],\n    \"main\": \"dist/duckdb-browser.cjs\",\n    \"module\": \"dist/duckdb-browser.mjs\",\n    \"types\": \"dist/duckdb-browser.d.ts\",\n    \"jsdelivr\": \"dist/duckdb-browser.cjs\",\n    \"unpkg\": \"dist/duckdb-browser.mjs\",\n    \"sideEffects\": false,\n    \"browser\": {\n        \"fs\": false,\n        \"path\": false,\n        \"perf_hooks\": false,\n        \"os\": false,\n        \"worker_threads\": false\n    },\n    \"exports\": {\n        \"./dist/duckdb-mvp.wasm\": \"./dist/duckdb-mvp.wasm\",\n        \"./dist/duckdb-eh.wasm\": \"./dist/duckdb-eh.wasm\",\n        \"./dist/duckdb-coi.wasm\": \"./dist/duckdb-coi.wasm\",\n        \"./dist/duckdb-browser\": \"./dist/duckdb-browser.mjs\",\n        \"./dist/duckdb-browser.cjs\": \"./dist/duckdb-browser.cjs\",\n        \"./dist/duckdb-browser.mjs\": \"./dist/duckdb-browser.mjs\",\n        \"./dist/duckdb-browser-coi.pthread.worker.js\": \"./dist/duckdb-browser-coi.pthread.worker.js\",\n        \"./dist/duckdb-browser-coi.worker.js\": \"./dist/duckdb-browser-coi.worker.js\",\n        \"./dist/duckdb-browser-eh.worker.js\": \"./dist/duckdb-browser-eh.worker.js\",\n        \"./dist/duckdb-browser-mvp.worker.js\": \"./dist/duckdb-browser-mvp.worker.js\",\n        \"./dist/duckdb-node\": \"./dist/duckdb-node.cjs\",\n        \"./dist/duckdb-node.cjs\": \"./dist/duckdb-node.cjs\",\n        \"./dist/duckdb-node-blocking\": \"./dist/duckdb-node-blocking.cjs\",\n        \"./dist/duckdb-node-blocking.cjs\": \"./dist/duckdb-node-blocking.cjs\",\n        \"./dist/duckdb-node-eh.worker.cjs\": \"./dist/duckdb-node-eh.worker.cjs\",\n        \"./dist/duckdb-node-mvp.worker.cjs\": \"./dist/duckdb-node-mvp.worker.cjs\",\n        \"./blocking\": {\n            \"node\": {\n                \"types\": \"./dist/duckdb-node-blocking.d.ts\",\n                \"require\": \"./dist/duckdb-node-blocking.cjs\",\n                \"import\": \"./dist/duckdb-node-blocking.cjs\"\n            },\n            \"types\": \"./dist/duckdb-node-blocking.d.ts\",\n            \"import\": \"./dist/duckdb-node-blocking.mjs\",\n            \"require\": \"./dist/duckdb-node-blocking.cjs\"\n        },\n        \".\": {\n            \"browser\": {\n                \"types\": \"./dist/duckdb-browser.d.ts\",\n                \"import\": \"./dist/duckdb-browser.mjs\",\n                \"require\": \"./dist/duckdb-browser.cjs\"\n            },\n            \"node\": {\n                \"types\": \"./dist/duckdb-node.d.ts\",\n                \"import\": \"./dist/duckdb-node.cjs\",\n                \"require\": \"./dist/duckdb-node.cjs\"\n            },\n            \"types\": \"./dist/duckdb-browser.d.ts\",\n            \"import\": \"./dist/duckdb-browser.mjs\",\n            \"require\": \"./dist/duckdb-browser.cjs\"\n        }\n    }\n}\n", "import config from '../package.json';\n\nexport const PACKAGE_NAME = config.name;\nexport const PACKAGE_VERSION = config.version;\n\nconst VERSION_PARTS = config.version.split('.');\nexport const PACKAGE_VERSION_MAJOR = VERSION_PARTS[0];\nexport const PACKAGE_VERSION_MINOR = VERSION_PARTS[1];\nexport const PACKAGE_VERSION_PATCH = VERSION_PARTS[2];\n", "import * as check from 'wasm-feature-detect';\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\n\n// Platform check taken from here:\n// https://github.com/xtermjs/xterm.js/blob/master/src/common/Platform.ts#L21\n\ninterface INavigator {\n    userAgent: string;\n    language: string;\n    platform: string;\n}\n\n// We're declaring a navigator global here as we expect it in all runtimes (node and browser), but\n// we want this module to live in common.\ndeclare const navigator: INavigator;\n\nexport const isNode = () => (typeof navigator === 'undefined' ? true : false);\nconst userAgent = () => (isNode() ? 'node' : navigator.userAgent);\nexport const isFirefox = () => userAgent().includes('Firefox');\nexport const isSafari = () => /^((?!chrome|android).)*safari/i.test(userAgent());\n\n/** Bundles have different characteristics:\n * - MVP: minimum viable product (uses features from first stable version of WebAssembly standard)\n * - EH: exception handling\n * - COI: cross origin isolation\n */\nexport interface DuckDBBundles {\n    mvp: {\n        mainModule: string;\n        mainWorker: string;\n    };\n    eh?: {\n        mainModule: string;\n        mainWorker: string;\n    };\n    coi?: {\n        mainModule: string;\n        mainWorker: string;\n        pthreadWorker: string;\n    };\n}\n\nexport function getJsDelivrBundles(): DuckDBBundles {\n    const jsdelivr_dist_url = `https://cdn.jsdelivr.net/npm/${PACKAGE_NAME}@${PACKAGE_VERSION}/dist/`;\n    return {\n        mvp: {\n            mainModule: `${jsdelivr_dist_url}duckdb-mvp.wasm`,\n            mainWorker: `${jsdelivr_dist_url}duckdb-browser-mvp.worker.js`,\n        },\n        eh: {\n            mainModule: `${jsdelivr_dist_url}duckdb-eh.wasm`,\n            mainWorker: `${jsdelivr_dist_url}duckdb-browser-eh.worker.js`,\n        },\n        // COI is still experimental, let the user opt in explicitly\n    };\n}\n\nexport interface DuckDBBundle {\n    mainModule: string;\n    mainWorker: string | null;\n    pthreadWorker: string | null;\n}\n\nexport interface PlatformFeatures {\n    bigInt64Array: boolean;\n    crossOriginIsolated: boolean;\n    wasmExceptions: boolean;\n    wasmSIMD: boolean;\n    wasmBulkMemory: boolean;\n    wasmThreads: boolean;\n}\n\nlet bigInt64Array: boolean | null = null;\nlet wasmExceptions: boolean | null = null;\nlet wasmThreads: boolean | null = null;\nlet wasmSIMD: boolean | null = null;\nlet wasmBulkMemory: boolean | null = null;\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\ndeclare namespace globalThis {\n    let crossOriginIsolated: boolean;\n}\n\nexport async function getPlatformFeatures(): Promise<PlatformFeatures> {\n    if (bigInt64Array == null) {\n        bigInt64Array = typeof BigInt64Array != 'undefined';\n    }\n    if (wasmExceptions == null) {\n        wasmExceptions = await check.exceptions();\n    }\n    if (wasmThreads == null) {\n        wasmThreads = await check.threads();\n    }\n    if (wasmSIMD == null) {\n        wasmSIMD = await check.simd();\n    }\n    if (wasmBulkMemory == null) {\n        wasmBulkMemory = await check.bulkMemory();\n    }\n    return {\n        bigInt64Array: bigInt64Array!,\n        crossOriginIsolated: isNode() || globalThis.crossOriginIsolated || false,\n        wasmExceptions: wasmExceptions!,\n        wasmSIMD: wasmSIMD!,\n        wasmThreads: wasmThreads!,\n        wasmBulkMemory: wasmBulkMemory!,\n    };\n}\n\nexport async function selectBundle(bundles: DuckDBBundles): Promise<DuckDBBundle> {\n    const platform = await getPlatformFeatures();\n    if (platform.wasmExceptions) {\n        if (platform.wasmSIMD && platform.wasmThreads && platform.crossOriginIsolated && bundles.coi) {\n            return {\n                mainModule: bundles.coi.mainModule,\n                mainWorker: bundles.coi.mainWorker,\n                pthreadWorker: bundles.coi.pthreadWorker,\n            };\n        }\n        if (bundles.eh) {\n            return {\n                mainModule: bundles.eh.mainModule,\n                mainWorker: bundles.eh.mainWorker,\n                pthreadWorker: null,\n            };\n        }\n    }\n    return {\n        mainModule: bundles.mvp.mainModule,\n        mainWorker: bundles.mvp.mainWorker,\n        pthreadWorker: null,\n    };\n}\n", "import Worker from 'web-worker';\n\nexport async function createWorker(url: string) {\n    const request = new Request(url);\n    const workerScript = await fetch(request);\n    const workerURL = URL.createObjectURL(await workerScript.blob());\n    return new Worker(workerURL);\n}\n"],
  "mappings": "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",
  "names": ["require_node", "__commonJSMin", "exports", "module", "URL", "VM", "threads", "WORKER", "EVENTS", "EventTarget", "event", "err", "list", "handler", "type", "fn", "events", "index", "Event", "target", "mainThread", "workerThread", "baseUrl", "Worker", "url", "options", "name", "mod", "worker", "data", "error", "transferList", "self", "q", "flush", "buffered", "WorkerGlobalScope", "proto", "isDataUrl", "evaluateDataUrl", "parseDataUrl", "m", "encoding", "duckdb_exports", "__export", "AsyncDuckDB", "AsyncDuckDBConnection", "AsyncDuckDBDispatcher", "AsyncPreparedStatement", "AsyncResultStreamIterator", "ConsoleLogger", "DuckDBAccessMode", "DuckDBDataProtocol", "IsArrowBuffer", "IsDuckDBWasmRetry", "LogEvent", "LogLevel", "LogOrigin", "LogTopic", "PACKAGE_NAME", "PACKAGE_VERSION", "PACKAGE_VERSION_MAJOR", "PACKAGE_VERSION_MINOR", "PACKAGE_VERSION_PATCH", "StatusCode", "TokenType", "VoidLogger", "WorkerRequestType", "WorkerResponseType", "WorkerTask", "createWorker", "getJsDelivrBundles", "getLogEventLabel", "getLogLevelLabel", "getLogOriginLabel", "getLogTopicLabel", "getPlatformFeatures", "isFirefox", "isNode", "isSafari", "selectBundle", "__toCommonJS", "DuckDBAccessMode", "TokenType", "LogLevel", "LogTopic", "LogEvent", "LogOrigin", "VoidLogger", "_entry", "ConsoleLogger", "level", "entry", "getLogLevelLabel", "getLogEventLabel", "event", "getLogTopicLabel", "topic", "getLogOriginLabel", "origin", "StatusCode", "IsArrowBuffer", "status", "IsDuckDBWasmRetry", "arrow", "AsyncDuckDBConnection", "bindings", "conn", "callback", "text", "buffer", "reader", "allowStreamResult", "header", "iter", "AsyncResultStreamIterator", "query", "stmt", "AsyncPreparedStatement", "table", "options", "db", "connectionId", "statementId", "params", "WorkerRequestType", "WorkerResponseType", "WorkerTask", "type", "data", "resolve", "reject", "arrow", "arrowToSQLType", "type", "dec", "c", "arrowToSQLField", "map_", "name", "t", "REGEX_OPFS_FILE", "REGEX_OPFS_PROTOCOL", "isOPFSProtocol", "path", "searchOPFSFiles", "text", "match", "TEXT_ENCODER", "AsyncDuckDB", "logger", "worker", "resolve", "_reject", "task", "transfer", "mid", "event", "_a", "response", "p", "e", "WorkerTask", "name", "names", "mainModuleURL", "pthreadWorkerURL", "progress", "_p", "config", "text", "cid", "AsyncDuckDBConnection", "conn", "files", "allowStreamResult", "statement", "params", "path", "buffer", "url", "proto", "directIO", "handle", "protocol", "enable", "options", "out", "k", "type", "arrowToSQLField", "isOPFSProtocol", "searchOPFSFiles", "result", "file", "TextDecoderWrapper", "decoder", "data", "decodeText", "DuckDBDataProtocol", "AsyncDuckDBDispatcher", "entry", "request", "e", "obj", "p", "path", "conn", "_", "c", "result", "transfer", "infos", "buffer", "bulkMemory", "exceptions", "simd", "threads", "e", "package_default", "PACKAGE_NAME", "package_default", "PACKAGE_VERSION", "VERSION_PARTS", "PACKAGE_VERSION_MAJOR", "PACKAGE_VERSION_MINOR", "PACKAGE_VERSION_PATCH", "isNode", "userAgent", "isFirefox", "isSafari", "getJsDelivrBundles", "jsdelivr_dist_url", "PACKAGE_NAME", "PACKAGE_VERSION", "bigInt64Array", "wasmExceptions", "wasmThreads", "wasmSIMD", "wasmBulkMemory", "getPlatformFeatures", "exceptions", "threads", "simd", "bulkMemory", "selectBundle", "bundles", "platform", "import_web_worker", "createWorker", "url", "request", "workerScript", "workerURL", "Worker"]
}
