{"version":3,"sources":["jsdelivr-header.js","/npm/@duckdb/web-worker/cjs/browser.js","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/bindings/config.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/bindings/tokens.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/log.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/status.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/parallel/async_connection.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/parallel/worker_request.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/json_typedef.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/utils/opfs_util.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/parallel/async_bindings.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/bindings/runtime.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/parallel/worker_dispatcher.ts","/npm/@duckdb/wasm-feature-detect/dist/esm/index.js","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/package.json","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/version.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/platform.ts","/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/src/worker.ts"],"names":[],"mappings":"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","file":"/npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/dist/duckdb-browser.mjs/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.\n * Original file: /npm/@duckdb/duckdb-wasm@1.33.1-dev20.0/dist/duckdb-browser.mjs\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\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 */\nmodule.exports = Worker;","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-dev20.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"]}