@motherduck/wasm-client 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,6 +6,10 @@
6
6
 
7
7
  The MotherDuck WASM Client library enables using MotherDuck through DuckDB WASM in your own browser applications.
8
8
 
9
+ ## Examples
10
+
11
+ Example projects and live demos can be found [here](https://github.com/motherduckdb/wasm-client).
12
+
9
13
  ## Status
10
14
 
11
15
  Please note that the MotherDuck WASM Client library is in an early stage of active development. Its structure and API may change considerably.
package/index.js CHANGED
@@ -1 +1 @@
1
- import*as E from"apache-arrow";import*as o from"apache-arrow";var He=Object.create,ye=Object.defineProperty,Ke=Object.getOwnPropertyDescriptor,Je=Object.getOwnPropertyNames,Ze=Object.getPrototypeOf,Xe=Object.prototype.hasOwnProperty,et=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),tt=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Je(t))!Xe.call(e,n)&&n!==r&&ye(e,n,{get:()=>t[n],enumerable:!(s=Ke(t,n))||s.enumerable});return e},rt=(e,t,r)=>(r=e!=null?He(Ze(e)):{},tt(t||!e||!e.__esModule?ye(r,"default",{value:e,enumerable:!0}):r,e)),st=et((e,t)=>{t.exports=Worker}),nt=(e=>(e[e.UNDEFINED=0]="UNDEFINED",e[e.AUTOMATIC=1]="AUTOMATIC",e[e.READ_ONLY=2]="READ_ONLY",e[e.READ_WRITE=3]="READ_WRITE",e))(nt||{}),ke=(e=>(e[e.IDENTIFIER=0]="IDENTIFIER",e[e.NUMERIC_CONSTANT=1]="NUMERIC_CONSTANT",e[e.STRING_CONSTANT=2]="STRING_CONSTANT",e[e.OPERATOR=3]="OPERATOR",e[e.KEYWORD=4]="KEYWORD",e[e.COMMENT=5]="COMMENT",e))(ke||{}),at=(e=>(e[e.NONE=0]="NONE",e[e.DEBUG=1]="DEBUG",e[e.INFO=2]="INFO",e[e.WARNING=3]="WARNING",e[e.ERROR=4]="ERROR",e))(at||{}),it=(e=>(e[e.NONE=0]="NONE",e[e.CONNECT=1]="CONNECT",e[e.DISCONNECT=2]="DISCONNECT",e[e.OPEN=3]="OPEN",e[e.QUERY=4]="QUERY",e[e.INSTANTIATE=5]="INSTANTIATE",e))(it||{}),ot=(e=>(e[e.NONE=0]="NONE",e[e.OK=1]="OK",e[e.ERROR=2]="ERROR",e[e.START=3]="START",e[e.RUN=4]="RUN",e[e.CAPTURE=5]="CAPTURE",e))(ot||{}),ct=(e=>(e[e.NONE=0]="NONE",e[e.WEB_WORKER=1]="WEB_WORKER",e[e.NODE_WORKER=2]="NODE_WORKER",e[e.BINDINGS=3]="BINDINGS",e[e.ASYNC_DUCKDB=4]="ASYNC_DUCKDB",e))(ct||{});var be=class{constructor(e=2){this.level=e}log(e){e.level>=this.level&&console.log(e)}};var ut=(e=>(e[e.SUCCESS=0]="SUCCESS",e))(ut||{}),dt=class{constructor(e,t){this._bindings=e,this._conn=t}get bindings(){return this._bindings}async close(){return this._bindings.disconnect(this._conn)}useUnsafe(e){return e(this._bindings,this._conn)}async query(e){this._bindings.logger.log({timestamp:new Date,level:2,origin:4,topic:4,event:4,value:e});let t=await this._bindings.runQuery(this._conn,e),r=E.RecordBatchReader.from(t);return console.assert(r.isSync(),"Reader is not sync"),console.assert(r.isFile(),"Reader is not file"),new E.Table(r)}async send(e){this._bindings.logger.log({timestamp:new Date,level:2,origin:4,topic:4,event:4,value:e});let t=await this._bindings.startPendingQuery(this._conn,e);for(;t==null;)t=await this._bindings.pollPendingQuery(this._conn);let r=new Se(this._bindings,this._conn,t),s=await E.RecordBatchReader.from(r);return console.assert(s.isAsync()),console.assert(s.isStream()),s}async cancelSent(){return await this._bindings.cancelPendingQuery(this._conn)}async getTableNames(e){return await this._bindings.getTableNames(this._conn,e)}async prepare(e){let t=await this._bindings.createPrepared(this._conn,e);return new lt(this._bindings,this._conn,t)}async insertArrowTable(e,t){let r=E.tableToIPC(e,"stream");await this.insertArrowFromIPCStream(r,t)}async insertArrowFromIPCStream(e,t){await this._bindings.insertArrowFromIPCStream(this._conn,e,t)}async insertCSVFromPath(e,t){await this._bindings.insertCSVFromPath(this._conn,e,t)}async insertJSONFromPath(e,t){await this._bindings.insertJSONFromPath(this._conn,e,t)}},Se=class{constructor(e,t,r){this.db=e,this.conn=t,this.header=r,this._first=!0,this._depleted=!1,this._inFlight=null}async next(){if(this._first)return this._first=!1,{done:!1,value:this.header};if(this._depleted)return{done:!0,value:null};let e;return this._inFlight!=null?(e=await this._inFlight,this._inFlight=null):e=await this.db.fetchQueryResults(this.conn),this._depleted=e.length==0,this._depleted||(this._inFlight=this.db.fetchQueryResults(this.conn)),{done:this._depleted,value:e}}[Symbol.asyncIterator](){return this}},lt=class{constructor(e,t,r){this.bindings=e,this.connectionId=t,this.statementId=r}async close(){await this.bindings.closePrepared(this.connectionId,this.statementId)}async query(...e){let t=await this.bindings.runPrepared(this.connectionId,this.statementId,e),r=E.RecordBatchReader.from(t);return console.assert(r.isSync()),console.assert(r.isFile()),new E.Table(r)}async send(...e){let t=await this.bindings.sendPrepared(this.connectionId,this.statementId,e),r=new Se(this.bindings,this.connectionId,t),s=await E.RecordBatchReader.from(r);return console.assert(s.isAsync()),console.assert(s.isStream()),s}},pt=(e=>(e.CANCEL_PENDING_QUERY="CANCEL_PENDING_QUERY",e.CLOSE_PREPARED="CLOSE_PREPARED",e.COLLECT_FILE_STATISTICS="COLLECT_FILE_STATISTICS",e.CONNECT="CONNECT",e.COPY_FILE_TO_BUFFER="COPY_FILE_TO_BUFFER",e.COPY_FILE_TO_PATH="COPY_FILE_TO_PATH",e.CREATE_PREPARED="CREATE_PREPARED",e.DISCONNECT="DISCONNECT",e.DROP_FILE="DROP_FILE",e.DROP_FILES="DROP_FILES",e.EXPORT_FILE_STATISTICS="EXPORT_FILE_STATISTICS",e.FETCH_QUERY_RESULTS="FETCH_QUERY_RESULTS",e.FLUSH_FILES="FLUSH_FILES",e.GET_FEATURE_FLAGS="GET_FEATURE_FLAGS",e.GET_TABLE_NAMES="GET_TABLE_NAMES",e.GET_VERSION="GET_VERSION",e.GLOB_FILE_INFOS="GLOB_FILE_INFOS",e.INSERT_ARROW_FROM_IPC_STREAM="INSERT_ARROW_FROM_IPC_STREAM",e.INSERT_CSV_FROM_PATH="IMPORT_CSV_FROM_PATH",e.INSERT_JSON_FROM_PATH="IMPORT_JSON_FROM_PATH",e.INSTANTIATE="INSTANTIATE",e.OPEN="OPEN",e.PING="PING",e.POLL_PENDING_QUERY="POLL_PENDING_QUERY",e.REGISTER_FILE_BUFFER="REGISTER_FILE_BUFFER",e.REGISTER_FILE_HANDLE="REGISTER_FILE_HANDLE",e.REGISTER_FILE_URL="REGISTER_FILE_URL",e.RESET="RESET",e.RUN_PREPARED="RUN_PREPARED",e.RUN_QUERY="RUN_QUERY",e.SEND_PREPARED="SEND_PREPARED",e.START_PENDING_QUERY="START_PENDING_QUERY",e.TOKENIZE="TOKENIZE",e))(pt||{}),mt=(e=>(e.CONNECTION_INFO="CONNECTION_INFO",e.ERROR="ERROR",e.FEATURE_FLAGS="FEATURE_FLAGS",e.FILE_BUFFER="FILE_BUFFER",e.FILE_INFOS="FILE_INFOS",e.FILE_SIZE="FILE_SIZE",e.FILE_STATISTICS="FILE_STATISTICS",e.INSTANTIATE_PROGRESS="INSTANTIATE_PROGRESS",e.LOG="LOG",e.OK="OK",e.PREPARED_STATEMENT_ID="PREPARED_STATEMENT_ID",e.QUERY_PLAN="QUERY_PLAN",e.QUERY_RESULT="QUERY_RESULT",e.QUERY_RESULT_CHUNK="QUERY_RESULT_CHUNK",e.QUERY_RESULT_HEADER="QUERY_RESULT_HEADER",e.QUERY_RESULT_HEADER_OR_NULL="QUERY_RESULT_HEADER_OR_NULL",e.REGISTERED_FILE="REGISTERED_FILE",e.SCRIPT_TOKENS="SCRIPT_TOKENS",e.SUCCESS="SUCCESS",e.TABLE_NAMES="TABLE_NAMES",e.VERSION_STRING="VERSION_STRING",e))(mt||{}),c=class{constructor(e,t){this.promiseResolver=()=>{},this.promiseRejecter=()=>{},this.type=e,this.data=t,this.promise=new Promise((r,s)=>{this.promiseResolver=r,this.promiseRejecter=s})}};function K(e){switch(e.typeId){case o.Type.Binary:return{sqlType:"binary"};case o.Type.Bool:return{sqlType:"bool"};case o.Type.Date:return{sqlType:"date"};case o.Type.DateDay:return{sqlType:"date32[d]"};case o.Type.DateMillisecond:return{sqlType:"date64[ms]"};case o.Type.Decimal:{let t=e;return{sqlType:"decimal",precision:t.precision,scale:t.scale}}case o.Type.Float:return{sqlType:"float"};case o.Type.Float16:return{sqlType:"float16"};case o.Type.Float32:return{sqlType:"float32"};case o.Type.Float64:return{sqlType:"float64"};case o.Type.Int:return{sqlType:"int32"};case o.Type.Int16:return{sqlType:"int16"};case o.Type.Int32:return{sqlType:"int32"};case o.Type.Int64:return{sqlType:"int64"};case o.Type.Uint16:return{sqlType:"uint16"};case o.Type.Uint32:return{sqlType:"uint32"};case o.Type.Uint64:return{sqlType:"uint64"};case o.Type.Uint8:return{sqlType:"uint8"};case o.Type.IntervalDayTime:return{sqlType:"interval[dt]"};case o.Type.IntervalYearMonth:return{sqlType:"interval[m]"};case o.Type.List:return{sqlType:"list",valueType:K(e.valueType)};case o.Type.FixedSizeBinary:return{sqlType:"fixedsizebinary",byteWidth:e.byteWidth};case o.Type.Null:return{sqlType:"null"};case o.Type.Utf8:return{sqlType:"utf8"};case o.Type.Struct:return{sqlType:"struct",fields:e.children.map(t=>re(t.name,t.type))};case o.Type.Map:{let t=e;return{sqlType:"map",keyType:K(t.keyType),valueType:K(t.valueType)}}case o.Type.Time:return{sqlType:"time[s]"};case o.Type.TimeMicrosecond:return{sqlType:"time[us]"};case o.Type.TimeMillisecond:return{sqlType:"time[ms]"};case o.Type.TimeNanosecond:return{sqlType:"time[ns]"};case o.Type.TimeSecond:return{sqlType:"time[s]"};case o.Type.Timestamp:return{sqlType:"timestamp",timezone:e.timezone||void 0};case o.Type.TimestampSecond:return{sqlType:"timestamp[s]",timezone:e.timezone||void 0};case o.Type.TimestampMicrosecond:return{sqlType:"timestamp[us]",timezone:e.timezone||void 0};case o.Type.TimestampNanosecond:return{sqlType:"timestamp[ns]",timezone:e.timezone||void 0};case o.Type.TimestampMillisecond:return{sqlType:"timestamp[ms]",timezone:e.timezone||void 0}}throw new Error("unsupported arrow type: ".concat(e.toString()))}function re(e,t){let r=K(t);return r.name=e,r}var Dt=new TextEncoder,Re=class{constructor(e,t=null){this._onInstantiationProgress=[],this._worker=null,this._workerShutdownPromise=null,this._workerShutdownResolver=()=>{},this._nextMessageId=0,this._pendingRequests=new Map,this._logger=e,this._onMessageHandler=this.onMessage.bind(this),this._onErrorHandler=this.onError.bind(this),this._onCloseHandler=this.onClose.bind(this),t!=null&&this.attach(t)}get logger(){return this._logger}attach(e){this._worker=e,this._worker.addEventListener("message",this._onMessageHandler),this._worker.addEventListener("error",this._onErrorHandler),this._worker.addEventListener("close",this._onCloseHandler),this._workerShutdownPromise=new Promise((t,r)=>{this._workerShutdownResolver=t})}detach(){this._worker&&(this._worker.removeEventListener("message",this._onMessageHandler),this._worker.removeEventListener("error",this._onErrorHandler),this._worker.removeEventListener("close",this._onCloseHandler),this._worker=null,this._workerShutdownResolver(null),this._workerShutdownPromise=null,this._workerShutdownResolver=()=>{})}async terminate(){this._worker&&(this._worker.terminate(),this._worker=null,this._workerShutdownPromise=null,this._workerShutdownResolver=()=>{})}async postTask(e,t=[]){if(!this._worker){console.error("cannot send a message since the worker is not set!");return}let r=this._nextMessageId++;return this._pendingRequests.set(r,e),this._worker.postMessage({messageId:r,type:e.type,data:e.data},t),await e.promise}onMessage(e){var t;let r=e.data;switch(r.type){case"LOG":{this._logger.log(r.data);return}case"INSTANTIATE_PROGRESS":{for(let n of this._onInstantiationProgress)n(r.data);return}}let s=this._pendingRequests.get(r.requestId);if(!s){console.warn("unassociated response: [".concat(r.requestId,", ").concat(r.type.toString(),"]"));return}if(this._pendingRequests.delete(r.requestId),r.type=="ERROR"){let n=new Error(r.data.message);n.name=r.data.name,(t=Object.getOwnPropertyDescriptor(n,"stack"))!=null&&t.writable&&(n.stack=r.data.stack),s.promiseRejecter(n);return}switch(s.type){case"CLOSE_PREPARED":case"COLLECT_FILE_STATISTICS":case"COPY_FILE_TO_PATH":case"DISCONNECT":case"DROP_FILE":case"DROP_FILES":case"FLUSH_FILES":case"INSERT_ARROW_FROM_IPC_STREAM":case"IMPORT_CSV_FROM_PATH":case"IMPORT_JSON_FROM_PATH":case"OPEN":case"PING":case"REGISTER_FILE_BUFFER":case"REGISTER_FILE_HANDLE":case"REGISTER_FILE_URL":case"RESET":if(r.type=="OK"){s.promiseResolver(r.data);return}break;case"INSTANTIATE":if(this._onInstantiationProgress=[],r.type=="OK"){s.promiseResolver(r.data);return}break;case"GLOB_FILE_INFOS":if(r.type=="FILE_INFOS"){s.promiseResolver(r.data);return}break;case"GET_VERSION":if(r.type=="VERSION_STRING"){s.promiseResolver(r.data);return}break;case"GET_FEATURE_FLAGS":if(r.type=="FEATURE_FLAGS"){s.promiseResolver(r.data);return}break;case"GET_TABLE_NAMES":if(r.type=="TABLE_NAMES"){s.promiseResolver(r.data);return}break;case"TOKENIZE":if(r.type=="SCRIPT_TOKENS"){s.promiseResolver(r.data);return}break;case"COPY_FILE_TO_BUFFER":if(r.type=="FILE_BUFFER"){s.promiseResolver(r.data);return}break;case"EXPORT_FILE_STATISTICS":if(r.type=="FILE_STATISTICS"){s.promiseResolver(r.data);return}break;case"CONNECT":if(r.type=="CONNECTION_INFO"){s.promiseResolver(r.data);return}break;case"RUN_PREPARED":case"RUN_QUERY":if(r.type=="QUERY_RESULT"){s.promiseResolver(r.data);return}break;case"SEND_PREPARED":if(r.type=="QUERY_RESULT_HEADER"){s.promiseResolver(r.data);return}break;case"START_PENDING_QUERY":if(r.type=="QUERY_RESULT_HEADER_OR_NULL"){s.promiseResolver(r.data);return}break;case"POLL_PENDING_QUERY":if(r.type=="QUERY_RESULT_HEADER_OR_NULL"){s.promiseResolver(r.data);return}break;case"CANCEL_PENDING_QUERY":if(this._onInstantiationProgress=[],r.type=="SUCCESS"){s.promiseResolver(r.data);return}break;case"FETCH_QUERY_RESULTS":if(r.type=="QUERY_RESULT_CHUNK"){s.promiseResolver(r.data);return}break;case"CREATE_PREPARED":if(r.type=="PREPARED_STATEMENT_ID"){s.promiseResolver(r.data);return}break}s.promiseRejecter(new Error("unexpected response type: ".concat(r.type.toString())))}onError(e){console.error(e),console.error("error in duckdb worker: ".concat(e.message)),this._pendingRequests.clear()}onClose(){if(this._workerShutdownResolver(null),this._pendingRequests.size!=0){console.warn("worker terminated with ".concat(this._pendingRequests.size," pending requests"));return}this._pendingRequests.clear()}async reset(){let e=new c("RESET",null);return await this.postTask(e)}async ping(){let e=new c("PING",null);await this.postTask(e)}async dropFile(e){let t=new c("DROP_FILE",e);return await this.postTask(t)}async dropFiles(){let e=new c("DROP_FILES",null);return await this.postTask(e)}async flushFiles(){let e=new c("FLUSH_FILES",null);return await this.postTask(e)}async instantiate(e,t=null,r=s=>{}){this._onInstantiationProgress.push(r);let s=new c("INSTANTIATE",[e,t]);return await this.postTask(s)}async getVersion(){let e=new c("GET_VERSION",null);return await this.postTask(e)}async getFeatureFlags(){let e=new c("GET_FEATURE_FLAGS",null);return await this.postTask(e)}async open(e){let t=new c("OPEN",e);await this.postTask(t)}async tokenize(e){let t=new c("TOKENIZE",e);return await this.postTask(t)}async connectInternal(){let e=new c("CONNECT",null);return await this.postTask(e)}async connect(){let e=await this.connectInternal();return new dt(this,e)}async disconnect(e){let t=new c("DISCONNECT",e);await this.postTask(t)}async runQuery(e,t){let r=new c("RUN_QUERY",[e,t]);return await this.postTask(r)}async startPendingQuery(e,t){let r=new c("START_PENDING_QUERY",[e,t]);return await this.postTask(r)}async pollPendingQuery(e){let t=new c("POLL_PENDING_QUERY",e);return await this.postTask(t)}async cancelPendingQuery(e){let t=new c("CANCEL_PENDING_QUERY",e);return await this.postTask(t)}async fetchQueryResults(e){let t=new c("FETCH_QUERY_RESULTS",e);return await this.postTask(t)}async getTableNames(e,t){let r=new c("GET_TABLE_NAMES",[e,t]);return await this.postTask(r)}async createPrepared(e,t){let r=new c("CREATE_PREPARED",[e,t]);return await this.postTask(r)}async closePrepared(e,t){let r=new c("CLOSE_PREPARED",[e,t]);await this.postTask(r)}async runPrepared(e,t,r){let s=new c("RUN_PREPARED",[e,t,r]);return await this.postTask(s)}async sendPrepared(e,t,r){let s=new c("SEND_PREPARED",[e,t,r]);return await this.postTask(s)}async globFiles(e){let t=new c("GLOB_FILE_INFOS",e);return await this.postTask(t)}async registerFileText(e,t){let r=Dt.encode(t);await this.registerFileBuffer(e,r)}async registerFileURL(e,t,r,s){t===void 0&&(t=e);let n=new c("REGISTER_FILE_URL",[e,t,r,s]);await this.postTask(n)}async registerEmptyFileBuffer(e){let t=new c("REGISTER_FILE_BUFFER",[e,new Uint8Array]);await this.postTask(t)}async registerFileBuffer(e,t){let r=new c("REGISTER_FILE_BUFFER",[e,t]);await this.postTask(r,[t.buffer])}async registerFileHandle(e,t,r,s){let n=new c("REGISTER_FILE_HANDLE",[e,t,r,s]);await this.postTask(n,[])}async collectFileStatistics(e,t){let r=new c("COLLECT_FILE_STATISTICS",[e,t]);await this.postTask(r,[])}async exportFileStatistics(e){let t=new c("EXPORT_FILE_STATISTICS",e);return await this.postTask(t,[])}async copyFileToBuffer(e){let t=new c("COPY_FILE_TO_BUFFER",e);return await this.postTask(t)}async copyFileToPath(e,t){let r=new c("COPY_FILE_TO_PATH",[e,t]);await this.postTask(r)}async insertArrowFromIPCStream(e,t,r){if(t.length==0)return;let s=new c("INSERT_ARROW_FROM_IPC_STREAM",[e,t,r]);await this.postTask(s,[t.buffer])}async insertCSVFromPath(e,t,r){if(r.columns!==void 0){let n=[];for(let a in r.columns){let i=r.columns[a];n.push(re(a,i))}r.columnsFlat=n,delete r.columns}let s=new c("IMPORT_CSV_FROM_PATH",[e,t,r]);await this.postTask(s)}async insertJSONFromPath(e,t,r){if(r.columns!==void 0){let n=[];for(let a in r.columns){let i=r.columns[a];n.push(re(a,i))}r.columnsFlat=n,delete r.columns}let s=new c("IMPORT_JSON_FROM_PATH",[e,t,r]);await this.postTask(s)}};var se={name:"@duckdb/duckdb-wasm",version:"1.11.0",description:"DuckDB powered by WebAssembly",license:"MIT",repository:{type:"git",url:"https://github.com/duckdb/duckdb-wasm.git"},keywords:["sql","duckdb","relational","database","data","query","wasm","analytics","olap","arrow","parquet","json","csv"],dependencies:{"apache-arrow":"^14.0.1"},devDependencies:{"@types/emscripten":"^1.39.10","@types/jasmine":"^5.1.4","@typescript-eslint/eslint-plugin":"^6.18.0","@typescript-eslint/parser":"^6.18.0",esbuild:"^0.20.0",eslint:"^8.56.0","eslint-plugin-jasmine":"^4.1.3","eslint-plugin-react":"^7.33.2","fast-glob":"^3.3.2",jasmine:"^5.1.0","jasmine-core":"^5.1.1","jasmine-spec-reporter":"^7.0.0","js-sha256":"^0.11.0",karma:"^6.4.2","karma-chrome-launcher":"^3.2.0","karma-coverage":"^2.2.1","karma-firefox-launcher":"^2.1.2","karma-jasmine":"^5.1.0","karma-jasmine-html-reporter":"^2.1.0","karma-sourcemap-loader":"^0.4.0","karma-spec-reporter":"^0.0.36","make-dir":"^4.0.0",nyc:"^15.1.0",prettier:"^3.2.4",puppeteer:"^21.7.0",rimraf:"^5.0.5",s3rver:"^3.7.1",typedoc:"^0.25.7",typescript:"^5.3.3","wasm-feature-detect":"^1.6.1","web-worker":"^1.2.0"},scripts:{"build:debug":"node bundle.mjs debug && tsc --emitDeclarationOnly","build:release":"node bundle.mjs release && tsc --emitDeclarationOnly",docs:"typedoc",report:"node ./coverage.mjs","test:node":"node --enable-source-maps ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs","test:node:debug":"node --inspect-brk --enable-source-maps ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs","test:node:coverage":"nyc -r json --report-dir ./coverage/node node ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs","test:firefox":"karma start ./karma/tests-firefox.cjs","test:chrome":"karma start ./karma/tests-chrome.cjs","test:chrome:eh":"karma start ./karma/tests-chrome-eh.cjs","test:chrome:coverage":"karma start ./karma/tests-chrome-coverage.cjs","test:browser":"karma start ./karma/tests-all.cjs","test:browser:debug":"karma start ./karma/tests-debug.cjs",test:"npm run test:chrome && npm run test:node","test:coverage":"npm run test:chrome:coverage && npm run test:node:coverage && npm run report",lint:"eslint src test"},files:["dist","!dist/types/test"],main:"dist/duckdb-browser.cjs",module:"dist/duckdb-browser.mjs",types:"dist/duckdb-browser.d.ts",jsdelivr:"dist/duckdb-browser.cjs",unpkg:"dist/duckdb-browser.mjs",sideEffects:!1,browser:{fs:!1,path:!1,perf_hooks:!1,os:!1,worker_threads:!1},exports:{"./dist/duckdb-mvp.wasm":"./dist/duckdb-mvp.wasm","./dist/duckdb-eh.wasm":"./dist/duckdb-eh.wasm","./dist/duckdb-coi.wasm":"./dist/duckdb-coi.wasm","./dist/duckdb-browser":"./dist/duckdb-browser.mjs","./dist/duckdb-browser.cjs":"./dist/duckdb-browser.cjs","./dist/duckdb-browser.mjs":"./dist/duckdb-browser.mjs","./dist/duckdb-browser-blocking":"./dist/duckdb-browser-blocking.mjs","./dist/duckdb-browser-blocking.mjs":"./dist/duckdb-browser-blocking.mjs","./dist/duckdb-browser-blocking.cjs":"./dist/duckdb-browser-blocking.cjs","./dist/duckdb-browser-coi.pthread.worker.js":"./dist/duckdb-browser-coi.pthread.worker.js","./dist/duckdb-browser-coi.worker.js":"./dist/duckdb-browser-coi.worker.js","./dist/duckdb-browser-eh.worker.js":"./dist/duckdb-browser-eh.worker.js","./dist/duckdb-browser-mvp.worker.js":"./dist/duckdb-browser-mvp.worker.js","./dist/duckdb-node":"./dist/duckdb-node.cjs","./dist/duckdb-node.cjs":"./dist/duckdb-node.cjs","./dist/duckdb-node-blocking":"./dist/duckdb-node-blocking.cjs","./dist/duckdb-node-blocking.cjs":"./dist/duckdb-node-blocking.cjs","./dist/duckdb-node-eh.worker.cjs":"./dist/duckdb-node-eh.worker.cjs","./dist/duckdb-node-mvp.worker.cjs":"./dist/duckdb-node-mvp.worker.cjs","./blocking":{browser:{types:"./dist/duckdb-browser-blocking.d.ts",import:"./dist/duckdb-browser-blocking.mjs",require:"./dist/duckdb-browser-blocking.cjs"},node:{types:"./dist/duckdb-node-blocking.d.ts",require:"./dist/duckdb-node-blocking.cjs",import:"./dist/duckdb-node-blocking.cjs"},types:"./dist/duckdb-browser-blocking.d.ts",import:"./dist/duckdb-browser-blocking.mjs",require:"./dist/duckdb-browser-blocking.cjs"},".":{browser:{types:"./dist/duckdb-browser.d.ts",import:"./dist/duckdb-browser.mjs",require:"./dist/duckdb-browser.cjs"},node:{types:"./dist/duckdb-node.d.ts",import:"./dist/duckdb-node.cjs",require:"./dist/duckdb-node.cjs"},types:"./dist/duckdb-browser.d.ts",import:"./dist/duckdb-browser.mjs",require:"./dist/duckdb-browser.cjs"}}},br=se.name,Sr=se.version,ne=se.version.split("."),Rr=ne[0],Ir=ne[1],_r=ne[2];var fr=rt(st());function Tt(){let e=new TextDecoder;return t=>(typeof SharedArrayBuffer<"u"&&t.buffer instanceof SharedArrayBuffer&&(t=new Uint8Array(t)),e.decode(t))}var wr=Tt(),ae=(e=>(e[e.BUFFER=0]="BUFFER",e[e.NODE_FS=1]="NODE_FS",e[e.BROWSER_FILEREADER=2]="BROWSER_FILEREADER",e[e.BROWSER_FSACCESS=3]="BROWSER_FSACCESS",e[e.HTTP=4]="HTTP",e[e.S3=5]="S3",e))(ae||{});var f=class{singleValue(){let{columnCount:t,rowCount:r}=this;if(t===0)throw Error("no column data");if(r===0)throw Error("no rows");if(t>1)throw Error("more than one column");if(r>1)throw Error("more than one row");return this.value(0,0)}columnNames(){let{columnCount:t}=this,r=[];for(let s=0;s<t;s++)r.push(this.columnName(s));return r}deduplicatedColumnNames(){let{columnCount:t}=this,r=[],s={};for(let n=0;n<t;n++){let a=this.columnName(n),i=(s[a]||0)+1;s[a]=i,i>1?r.push(`${a}:${i-1}`):r.push(a)}return r}toRows(){let{rowCount:t,columnCount:r}=this,s=this.deduplicatedColumnNames(),n=[];for(let a=0;a<t;a++){let i={};for(let d=0;d<r;d++)i[s[d]]=this.value(d,a);n.push(i)}return n}};import{DateUnit as Ie,IntervalUnit as ie,Precision as oe,TimeUnit as b,Type as p,UnionMode as _e}from"apache-arrow";var u=class e{constructor(){}static{this.BIGINT={name:"BIGINT"}}static{this.BIT={name:"BIT"}}static{this.BOOLEAN={name:"BOOLEAN"}}static{this.BLOB={name:"BLOB"}}static{this.DATE={name:"DATE"}}static{this.DOUBLE={name:"DOUBLE"}}static{this.default_DECIMAL={name:"DECIMAL"}}static DECIMAL(t,r){return t===void 0&&r===void 0?e.default_DECIMAL:{name:"DECIMAL",width:t,scale:r}}static{this.ENUM={name:"ENUM"}}static{this.HUGEINT={name:"HUGEINT"}}static{this.INTEGER={name:"INTEGER"}}static{this.INTERVAL={name:"INTERVAL"}}static LIST(t){return{name:"LIST",valueType:t}}static MAP(t,r){return{name:"MAP",keyType:t,valueType:r}}static{this.REAL={name:"REAL"}}static{this.SMALLINT={name:"SMALLINT"}}static{this.SQLNULL={name:"SQLNULL"}}static STRUCT(t){return{name:"STRUCT",entries:t}}static STRUCT_entry(t,r){return{key:t,valueType:r}}static{this.TIME={name:"TIME"}}static{this.TIMESTAMP={name:"TIMESTAMP"}}static{this.TIMESTAMP_S={name:"TIMESTAMP_S"}}static{this.TIMESTAMP_MS={name:"TIMESTAMP_MS"}}static{this.TIMESTAMP_NS={name:"TIMESTAMP_NS"}}static{this.TIMESTAMP_TZ={name:"TIMESTAMP_TZ"}}static{this.TINYINT={name:"TINYINT"}}static{this.UBIGINT={name:"UBIGINT"}}static{this.UINTEGER={name:"UINTEGER"}}static{this.USMALLINT={name:"USMALLINT"}}static{this.UTINYINT={name:"UTINYINT"}}static{this.UUID={name:"UUID"}}static UNION(t){return{name:"UNION",alternatives:t}}static UNION_alternative(t,r){return{tag:t,valueType:r}}static{this.VARCHAR={name:"VARCHAR"}}static VARCHAR_withLength(t){return{name:"VARCHAR",length:t}}};function _(e){switch(e.typeId){case p.Null:return u.SQLNULL;case p.Int:{let{isSigned:t,bitWidth:r}=e;if(t)switch(r){case 8:return u.TINYINT;case 16:return u.SMALLINT;case 32:return u.INTEGER;case 64:return u.BIGINT;default:throw Error(`unexpected integer bit width: ${r}`)}else switch(r){case 8:return u.UTINYINT;case 16:return u.USMALLINT;case 32:return u.UINTEGER;case 64:return u.UBIGINT;default:throw Error(`unexpected integer bit width: ${r}`)}}case p.Float:{let{precision:t}=e;switch(t){case oe.HALF:throw Error("DuckDB does not support half-precision floats");case oe.SINGLE:return u.REAL;case oe.DOUBLE:return u.DOUBLE;default:throw Error(`unexpected precision: ${t}`)}}case p.Binary:return u.BLOB;case p.Utf8:return u.VARCHAR;case p.Bool:return u.BOOLEAN;case p.Decimal:{let{precision:t,scale:r}=e;return(t==null||t===18)&&(r==null||r===3)?u.DECIMAL():u.DECIMAL(t,r)}case p.Date:{let{unit:t}=e;switch(t){case Ie.DAY:return u.DATE;case Ie.MILLISECOND:throw Error("DuckDB does not support millisecond-unit dates");default:throw Error(`unexpected date unit: ${t}`)}}case p.Time:{let{unit:t}=e;switch(t){case b.SECOND:throw Error("DuckDB does not support second-unit times");case b.MILLISECOND:throw Error("DuckDB does not support millisecond-unit times");case b.MICROSECOND:return u.TIME;case b.NANOSECOND:throw Error("DuckDB does not support nanosecond-unit times");default:throw Error(`unexpected time unit: ${t}`)}}case p.Timestamp:{let{unit:t,timezone:r}=e;switch(t){case b.SECOND:if(r)throw Error("DuckDB does not support second-unit timestamps with timezone");return u.TIMESTAMP_S;case b.MILLISECOND:if(r)throw Error("DuckDB does not support millisecond-unit timestamps with timezone");return u.TIMESTAMP_MS;case b.MICROSECOND:return r?u.TIMESTAMP_TZ:u.TIMESTAMP;case b.NANOSECOND:if(r)throw Error("DuckDB does not support nanosecond-unit timestamps with timezone");return u.TIMESTAMP_NS;default:throw Error(`unexpected time unit: ${t}`)}}case p.Interval:{let{unit:t}=e;switch(t){case ie.YEAR_MONTH:throw Error("DuckDB does not support year-month intervals");case ie.DAY_TIME:throw Error("DuckDB does not support day-time intervals");case ie.MONTH_DAY_NANO:return u.INTERVAL;default:throw Error(`unexpected interval unit: ${t}`)}}case p.List:{let{valueType:t}=e;return u.LIST(_(t))}case p.Struct:{let{children:t}=e,r=t.map(s=>({key:s.name,valueType:_(s.type)}));return u.STRUCT(r)}case p.Union:{let{mode:t}=e;switch(t){case _e.Dense:throw Error("DuckDB does not support dense unions");case _e.Sparse:{let r=e.children.map(s=>({tag:s.name,valueType:_(s.type)}));return u.UNION(r)}default:throw Error(`unexpected union mode: ${t}`)}}case p.FixedSizeBinary:throw Error("DuckDB does not support fixed-size binary");case p.FixedSizeList:throw Error("DuckDB does not support fixed-size lists");case p.Map:{let{keyType:t,valueType:r}=e;return u.MAP(_(t),_(r))}case p.Dictionary:return u.ENUM;default:throw Error(`unexpected type id: ${e.typeId}`)}}import{DateUnit as Ce,IntervalUnit as De,Precision as Te,TimeUnit as R,Type as m,UnionMode as Le}from"apache-arrow";function fe(e){let t="";for(let r of e)r<=31||r===34||r===39||r>=127?t+=`\\x${r.toString(16).toUpperCase().padStart(2,"0")}`:t+=String.fromCharCode(r);return t}var l=class{toString(){return this.toDuckDBString()}};var M=class extends l{constructor(r){super();this.bytes=r}toDuckDBString(){return fe(this.bytes)}};var ue=BigInt(1e6),ht=BigInt(1e3),gt=BigInt(1e3),we=BigInt(60),Be=BigInt(60),J=BigInt(864e8),Et=BigInt("-9223372036854775807"),yt=BigInt("9223372036854775807");function kt(e,t,r){let s=String(Math.abs(e)).padStart(4,"0"),n=String(t).padStart(2,"0"),a=String(r).padStart(2,"0");return`${s}-${n}-${a}${e<0?" (BC)":""}`}function de(e){let t=Math.abs(e),r=e<0?-1:1,s=Math.floor(t/146097),n=r*s*400,a=t%146097,i=r*a*864e5,d=new Date(i),D=n+d.getUTCFullYear();D<0&&D--;let h=d.getUTCMonth()+1,k=d.getUTCDate();return kt(D,h,k)}function bt(e,t,r,s){let n=String(e).padStart(2,"0"),a=String(t).padStart(2,"0"),i=String(r).padStart(2,"0"),d=String(s).padStart(6,"0").replace(/0+$/,"");return`${n}:${a}:${i}${d.length>0?`.${d}`:""}`}function Ne(e){let t=e%ue,r=e/ue,s=r%we,n=r/we,a=n%Be,i=n/Be;return bt(i,a,s,t)}function le(e){let t=e<0?e+J:e;return Ne(t)}function St(e){let t=e<0,r=t?-e:e,s=Ne(r);return t?`-${s}`:s}function Rt(e,t,r){let s=de(Number(e)),n=le(t),a=r?` ${r}`:"";return`${s} ${n}${a}`}function F(e,t){if(e===Et)return"-infinity";if(e===yt)return"infinity";let r=e/J,s=e%J;return s<0&&(r--,s+=J),Rt(r,s,t)}function Ae(e,t){return F(e*ue,t)}function Oe(e,t){return F(e*ht,t)}function Me(e,t){return F(e/gt,t)}function ce(e,t){return`${e} ${t}${e!==1?"s":""}`}function Fe(e,t,r){let s=[];if(e!==0){let n=e<0?-1:1,a=Math.abs(e),i=Math.floor(a/12),d=n*i,D=n*(a-i*12);d!==0&&s.push(ce(d,"year")),D!==0&&s.push(ce(D,"month"))}return t!==0&&s.push(ce(t,"day")),r!==BigInt(0)&&s.push(St(r)),s.length>0?s.join(" "):"00:00:00"}var C=class extends l{constructor(r){super();this.days=r}toDuckDBString(){return de(this.days)}};function It(e){return new Intl.NumberFormat(e,{useGrouping:!1}).formatToParts(.1).find(r=>r.type==="decimal")?.value??"."}var pe={};function _t(e){let t=JSON.stringify(e);if(t in pe)return pe[t];let r=It(e);return pe[t]=r,r}function ft(e,t){if(e){let{minimumFractionDigits:r,maximumFractionDigits:s,...n}=e.options??{};return t.toLocaleString(e?.locales,n)}return String(t)}function wt(e,t,r){let s=String(t).padStart(r,"0");if(!e)return s;let n=e?.options?.minimumFractionDigits??0,a=e?.options?.maximumFractionDigits??20;return s.padEnd(n,"0").slice(0,a)}function me(e,t,r){if(t>0){let s=BigInt(10)**BigInt(t),n=e<0?-e:e,a=e<0?"-":"",i=n/s,d=ft(r,i),D=n%s,h=wt(r,D,t),k=r?_t(r.locales):".";return`${a}${d}${k}${h}`}return r?e.toLocaleString(r?.locales,r?.options):String(e)}var L=class extends l{constructor(r,s){super();this.scaledValue=r,this.scale=s}toDuckDBString(){return me(this.scaledValue,this.scale)}toLocaleString(r,s){return me(this.scaledValue,this.scale,{locales:r,options:s})}};var P=class extends l{constructor(r,s,n){super();this.months=r,this.days=s,this.microseconds=n}toDuckDBString(){return Fe(this.months,this.days,this.microseconds)}};function S(e){return e==null?"NULL":typeof e=="string"?`'${e.replace("'","''")}'`:String(e)}var v=class extends l{constructor(r){super();this.values=r}toDuckDBString(){return`[${this.values.map(S).join(", ")}]`}};var U=class extends l{constructor(r){super();this.entries=r}toDuckDBString(){return`{${this.entries.map(({key:s,value:n})=>`${S(s)}: ${S(n)}`).join(", ")}}`}};var x=class extends l{constructor(r){super();this.entries=r}toDuckDBString(){return`{${this.entries.map(({key:s,value:n})=>`${S(s)}: ${S(n)}`).join(", ")}}`}};var Q=class extends l{constructor(r){super();this.microseconds=r}toDuckDBString(){return le(this.microseconds)}};var q=class extends l{constructor(r,s){super();this.microseconds=r,this.timezone=s}toDuckDBString(){return F(this.microseconds,this.timezone)}};var j=class extends l{constructor(r){super();this.milliseconds=r}toDuckDBString(){return Oe(this.milliseconds)}};var V=class extends l{constructor(r){super();this.nanoseconds=r}toDuckDBString(){return Me(this.nanoseconds)}};var G=class extends l{constructor(r){super();this.seconds=r}toDuckDBString(){return Ae(this.seconds)}};var Bt=new TextDecoder;function Nt(e,t,r){return e.getValid(t)?r(e,t):null}function T(e){return(t,r)=>Nt(t,r,e)}function At(e,t,r,s){return Array.from({length:r-t}).map((n,a)=>s(e,t+a))}function Pe(e){return new BigInt64Array(e.values.buffer,e.values.byteOffset,e.values.length/2)}function W(e,t){return Pe(e)[t]}function Ot(e,t){let r=Pe(e),s=r[t*2];return(r[t*2+1]<<BigInt(64))+(s&BigInt.asUintN(64,BigInt(-1)))}function ve(e,t){let{values:r,valueOffsets:s}=e,n=s[t],a=s[t+1];return r.subarray(n,a)}function Mt(e,t){return null}function Ft(e,t){return e.values[t]}var y=T(Ft);function Ct(e,t){return new M(ve(e,t))}var Lt=T(Ct);function Pt(e,t){return Bt.decode(ve(e,t))}var vt=T(Pt);function Ut(e,t){let r=e.offset+t;return(e.values[r>>3]&1<<r%8)!==0}var xt=T(Ut);function Qt(e,t){return new L(Ot(e,t),e.type.scale)}var qt=T(Qt);function jt(e,t){return new C(e.values[t])}var Vt=T(jt);function Gt(e,t){return new Q(e.values[t])}var Wt=T(Gt);function Yt(e,t){return new G(W(e,t))}var $t=T(Yt);function zt(e,t){return new j(W(e,t))}var Ht=T(zt);function Kt(e,t){return new q(W(e,t),e.type.timezone)}var Jt=T(Kt);function Zt(e,t){return new V(W(e,t))}var Xt=T(Zt);function er(e,t){return new P(e.values[t*4],e.values[t*4+1],W(e,t*2+1)/BigInt(1e3))}var tr=T(er);function rr(e,t){let{children:r,valueOffsets:s}=e,n=s[t],a=s[t+1];return new v(lr(r[0],n,a))}var sr=T(rr);function nr(e,t){let r=[],{children:s,type:n}=e,a=n.children;for(let i=0;i<s.length;i++){let d=s[i],D=a[i].name,h=w(d,t);r.push({key:D,value:h})}return new x(r)}var ar=T(nr);function ir(e,t){let{children:r,typeIds:s}=e,n=s[t],a=e.type.typeIdToChildIndex[n],i=r[a];return w(i,t)}function or(e,t){let r=[],{children:s,valueOffsets:n}=e,a=n[t],i=n[t+1],[d,D]=s[0].children;for(let h=a;h<i;h++)r.push({key:w(d,h),value:w(D,h)});return new U(r)}var cr=T(or);function ur(e,t){return e.dictionary&&e.dictionary.length>0?e.dictionary.get(e.values[t]):e.values[t]}var dr=T(ur);function Ue(e){switch(e.typeId){case m.Null:return Mt;case m.Int:{let{isSigned:t,bitWidth:r}=e;if(t)switch(r){case 8:return y;case 16:return y;case 32:return y;case 64:return y;default:throw Error(`unexpected integer bit width: ${r}`)}else switch(r){case 8:return y;case 16:return y;case 32:return y;case 64:return y;default:throw Error(`unexpected integer bit width: ${r}`)}}case m.Float:{let{precision:t}=e;switch(t){case Te.HALF:throw Error("DuckDB does not support half-precision floats");case Te.SINGLE:return y;case Te.DOUBLE:return y;default:throw Error(`unexpected precision: ${t}`)}}case m.Binary:return Lt;case m.Utf8:return vt;case m.Bool:return xt;case m.Decimal:return qt;case m.Date:{let{unit:t}=e;switch(t){case Ce.DAY:return Vt;case Ce.MILLISECOND:throw Error("DuckDB does not support millisecond-unit dates");default:throw Error(`unexpected date unit: ${t}`)}}case m.Time:{let{unit:t}=e;switch(t){case R.SECOND:throw Error("DuckDB does not support second-unit times");case R.MILLISECOND:throw Error("DuckDB does not support millisecond-unit times");case R.MICROSECOND:return Wt;case R.NANOSECOND:throw Error("DuckDB does not support nanosecond-unit times");default:throw Error(`unexpected time unit: ${t}`)}}case m.Timestamp:{let{unit:t,timezone:r}=e;switch(t){case R.SECOND:if(r)throw Error("DuckDB does not support second-unit timestamps with time zone");return $t;case R.MILLISECOND:if(r)throw Error("DuckDB does not support millisecond-unit timestamps with time zone");return Ht;case R.MICROSECOND:return Jt;case R.NANOSECOND:if(r)throw Error("DuckDB does not support nanosecond-unit timestamps with time zone");return Xt;default:throw Error(`unexpected time unit: ${t}`)}}case m.Interval:{let{unit:t}=e;switch(t){case De.YEAR_MONTH:throw Error("DuckDB does not support year-month intervals");case De.DAY_TIME:throw Error("DuckDB does not support day-time intervals");case De.MONTH_DAY_NANO:return tr;default:throw Error(`unexpected interval unit: ${t}`)}}case m.List:return sr;case m.Struct:return ar;case m.Union:{let{mode:t}=e;switch(t){case Le.Dense:throw Error("DuckDB does not support dense unions");case Le.Sparse:return ir;default:throw Error(`unexpected union mode: ${t}`)}}case m.FixedSizeBinary:throw Error("DuckDB does not support fixed-size binary");case m.FixedSizeList:throw Error("DuckDB does not support fixed-size lists");case m.Map:return cr;case m.Dictionary:return dr;default:throw Error(`unexpected type id: ${e.typeId}`)}}function w(e,t){return Ue(e.type)(e,t)}function lr(e,t,r){let s=Ue(e.type);return At(e,t,r,s)}var Z=class extends f{constructor(r){super();this.recordBatch=r}get columnCount(){return this.recordBatch.schema.fields.length}get rowCount(){return this.recordBatch.data.length}columnName(r){return this.recordBatch.schema.fields[r].name}columnType(r){let s=this.recordBatch.schema.fields[r];return _(s.type)}value(r,s){let n=this.recordBatch.data.children[r];return w(n,s)}};var he=Object.freeze({done:!0,value:void 0}),B=class{constructor(t){this.recordBatchIterator=t}async next(){let{done:t,value:r}=await this.recordBatchIterator.next();return r?{done:!!t,value:new Z(r)}:he}async return(t){return this.recordBatchIterator.return&&await this.recordBatchIterator.return(),t?{done:!0,value:t}:he}async throw(t){return this.recordBatchIterator.throw&&await this.recordBatchIterator.throw(t),he}[Symbol.asyncIterator](){return this}};function ge(e,t){return[0,(t-e)*1e6]}var N=class extends f{constructor(r){super();this.iteratorDone=!1;this.totalRowsRead=0;this.batches=[];this.batchSizeRuns=[];this.iterator=r}get columnCount(){return this.batches.length===0?0:this.batches[0].columnCount}get rowCount(){return this.totalRowsRead}columnName(r){if(this.batches.length===0)throw Error("no column data");return this.batches[0].columnName(r)}columnType(r){if(this.batches.length===0)throw Error("no column data");return this.batches[0].columnType(r)}value(r,s){if(this.totalRowsRead===0)throw Error("no data");let n=0,a=s;for(let i of this.batchSizeRuns){if(a<i.rowCount){n+=Math.floor(a/i.batchSize);let d=a%i.batchSize;return this.batches[n].value(r,d)}n+=i.batchCount,a-=i.rowCount}throw Error(`Row index ${s} requested, but only ${this.totalRowsRead} row have been read so far.`)}get done(){return this.iteratorDone}async readAll(){return this.read()}async readUntil(r){return this.read(r)}async read(r){for(;!(this.iteratorDone||r!==void 0&&this.totalRowsRead>=r);){let{value:s,done:n}=await this.iterator.next();s&&(this.updateBatchSizeRuns(s),this.batches.push(s),this.totalRowsRead+=s.rowCount),n&&(this.iteratorDone=n)}}updateBatchSizeRuns(r){if(this.batchSizeRuns.length>0){let s=this.batchSizeRuns[this.batchSizeRuns.length-1];if(s.batchSize===r.rowCount){s.batchCount+=1,s.rowCount+=s.batchSize;return}}this.batchSizeRuns.push({batchCount:1,batchSize:r.rowCount,rowCount:r.rowCount})}};var X=performance?.now?.bind?.(performance)??(()=>Date.now()/1e3);var A=class{constructor(t,r,s){this.connection=null;this.deferredConnection=t,this.query=r,this.args=s,this.creationTime=X()}async run(t){let r=X(),s=await this.sendQuery(),n=new B(s),a=new N(n);await a.readAll();let i=X();return{type:"materialized",initialQueuePosition:t,queueTime:ge(this.creationTime,r),executionTime:ge(r,i),data:a}}async cancel(){return(this.connection||await this.getConnection()).cancelSent()}async getConnection(){return this.connection=await this.deferredConnection,this.connection}async sendQuery(){let t=this.connection||await this.getConnection();return this.args&&this.args?.length>0?(await t.prepare(this.query)).send(...this.args):t.send(this.query)}};var Y=class{constructor(t,r,s){this.connection=null;this.deferredConnection=t,this.query=r,this.args=s}async run(){let t=await this.sendQuery(),r=new B(t),s=new N(r);return{type:"streaming",arrowStream:t,dataStream:r,dataReader:s}}async cancel(){return(this.connection||await this.getConnection()).cancelSent()}async getConnection(){return this.connection=await this.deferredConnection,this.connection}async sendQuery(){let t=this.connection||await this.getConnection();return this.args&&this.args?.length>0?(await t.prepare(this.query)).send(this.args):t.send(this.query)}};function xe(){throw new Error("should never be called")}function Qe(){let e=xe,t=xe;return{promise:new Promise((s,n)=>{e=s,t=n}),resolve:e,reject:t}}var ee=class{constructor(t){this.nextTaskId=1;this.queuedTaskIds=[];this.queuedTasksById={};this.processingQueue=!1;this.logSink=t}enqueueTask(t){let r=this.createTaskId();return this.logDebug(`enqueueTask: creating task id = ${r}`),this.addQueuedTask({id:r,task:t,state:0,deferred:Qe(),cancelled:!1,initialQueuePosition:this.queuedTaskIds.length}),this.scheduleProcessQueueIfNeeded(),r}async cancelTask(t,r){this.logDebug(`cancelTask(${t}): called`);let s=this.queuedTasksById[t];if(!s)throw new Error(`Task with id ${t} not found`);switch(s.state){case 0:return s.cancelled?this.logDebug(`cancelTask(${t}): cancelling pending task (already cancelled)`):(this.logDebug(`cancelTask(${t}): cancelling pending task`),s.cancelled=!0,s.deferred.reject(new Error(r??"pending task cancelled")),this.scheduleProcessQueueIfNeeded()),!0;case 1:return this.logDebug(`cancelTask(${t}): cancelling running task`),s.cancelled=!0,s.task.cancel();case 2:return this.logDebug(`cancelTask(${t}): can't cancel resolved task`),!1;case 3:return this.logDebug(`cancelTask(${t}): can't cancel rejected task`),!1;default:throw s.state,new Error("unreachable")}}taskResult(t){this.logDebug(`taskResults(${t}): called`);let r=this.queuedTasksById[t];if(!r)throw new Error(`Task with id ${t} not found`);return r.deferred.promise}logDebug(t){this.logSink&&this.logSink.debug(t)}logWarn(t){this.logSink&&this.logSink.warn(t)}createTaskId(){return`t${this.nextTaskId++}`}addQueuedTask(t){this.queuedTaskIds.push(t.id),this.queuedTasksById[t.id]=t}scheduleProcessQueueIfNeeded(){this.processingQueue?this.logDebug("scheduleProcessQueueIfNeeded: processQueue already scheduled"):(this.logDebug("scheduleProcessQueueIfNeeded: scheduling processQueue"),this.processingQueue=!0,setTimeout(()=>{this.processQueue(),this.processingQueue=!1},0))}processQueue(){this.logDebug("processQueue: processing started");let t;do t=this.processFirstQueuedTask();while(t);this.logDebug("processQueue: processing completed")}processFirstQueuedTask(){if(this.queuedTaskIds.length===0)return this.logDebug("processFirstQueuedTask: queue empty"),!1;let t=this.queuedTaskIds[0];this.logDebug(`processFirstQueuedTask: processing task ${t}`);let r=this.queuedTasksById[t];if(!r)return this.logWarn(`processFirstQueuedTask: task ${t} not found in map`),this.queuedTaskIds.shift(),!0;switch(r.state){case 0:return r.cancelled?(this.logDebug(`processFirstQueuedTask: removing cancelled pending task ${t} from queue`),this.queuedTaskIds.shift(),delete this.queuedTasksById[r.id],!0):(this.logDebug(`processFirstQueuedTask: running pending task ${t}`),r.state=1,r.task.run(r.initialQueuePosition).then(s=>{this.logDebug(`processFirstQueuedTask: task ${t} resolved`),r.state=2,r.deferred.resolve(s)}).catch(s=>{this.logDebug(`processFirstQueuedTask: task ${t} rejected`),r.state=3,r.deferred.reject(s)}).finally(()=>{this.scheduleProcessQueueIfNeeded()}),!1);case 1:return this.logDebug(`processFirstQueuedTask: task ${t} at front of queue is already running`),!1;case 2:case 3:return this.logDebug(`processFirstQueuedTask: task ${t} at front of queue is completed, removing from queue`),this.queuedTaskIds.shift(),delete this.queuedTasksById[r.id],!0;default:throw r.state,new Error("unreachable")}}};var $=null;async function je(e){let r=await(await z(e)).connect();return e.skipWelcomePack||await r.query("PRAGMA MD_USE_DEFAULT"),r}async function z(e){return $||($=mr(e),$)}function Ve(e){return e?e.endsWith("/")?e:`${e}/`:"https://app.motherduck.com/"}async function pr(e){let t=`${e}duckdb-assets.json`,s=await(await fetch(t)).json();return s.coi&&(s.coi.mainModule=e+s.coi.mainModule,s.coi.mainWorker=e+s.coi.mainWorker,s.coi.pthreadWorker=e+s.coi.pthreadWorker),s.mvp&&(s.mvp.mainModule=e+s.mvp.mainModule,s.mvp.mainWorker=e+s.mvp.mainWorker),s.eh&&(s.eh.mainModule=e+s.eh.mainModule,s.eh.mainWorker=e+s.eh.mainWorker),s}function qe(e,t){return URL.createObjectURL(new Blob([`importScripts("${t}");`],{type:"text/javascript"}))}async function mr(e){let t=await hr(),r=Ve(e.duckDBAssetsURLPrefix),s=await pr(r),n=e.useDuckDBWasmCOI?s.coi:s.eh;if(!n)throw new Error("Could not find DuckDB WASM asset URLs in duckdb-assets.json");let a=/^https?:\/\//.test(r),i=a?qe(r,n.mainWorker):n.mainWorker,d=a&&n.pthreadWorker?qe(r,n.pthreadWorker):n.pthreadWorker,D=new Worker(i);t||D.addEventListener("message",g=>{if(g&&g.data&&g.data.type==="Initialize"){let te=new Worker(g.data.workerUrl);URL.revokeObjectURL(g.data.workerUrl),te.postMessage(g.data,[g.data.port])}});let h=new be,k=new Re(h,D);await k.instantiate(n.mainModule,d),a&&(URL.revokeObjectURL(i),d&&URL.revokeObjectURL(d));let I=await k.connect();await Tr(I,e.version,e.duckDBAssetsURLPrefix),await I.query("LOAD icu;");let H=new URL(e.mdServerURL||"https://api.motherduck.com");await I.query(`SET motherduck_host='${H.hostname}';`),H.port&&await I.query(`SET motherduck_port='${H.port}';`),H.protocol==="http:"&&await I.query("SET motherduck_use_tls=false;"),await I.query(`SET motherduck_token='${e.mdToken}';`);let Ee=!1;for(let g=0;g<6e3;++g){if(await Dr(I)){Ee=!0;break}await new Promise(te=>setTimeout(te,10))}if(!Ee)throw new Error("Could not initialize worker after 1 minute.");return $=k,k}async function Dr(e){return(await e.query("from MD_IS_NETWORK_READY();")).toArray()[0].Success}async function Tr(e,t,r){let s=Ve(r),n=t;n||(n=(await(await fetch(`${s}version`)).json()).version);let a=!n||n.startsWith("DEV-")?"":n,i=s==="/"?`${window.origin}${a.length>0?"/":""}`:s;await e.query([`SET custom_extension_repository="${i}${a}";`,"LOAD motherduck;","RESET custom_extension_repository;"].join(""))}async function hr(){return new Promise(e=>{let t=URL.createObjectURL(new Blob(["self.postMessage({ canCreateWorker: !!self.Worker });"],{type:"application/javascript"})),r=new Worker(t);URL.revokeObjectURL(t),r.addEventListener("message",s);function s(n){r.removeEventListener("message",s),r.terminate(),e(n.data.canCreateWorker)}})}function Ge(e){let t=/^[^{]*({.*})/.exec(e);if(t){let r=t[1];try{let s=JSON.parse(r);if(s.message)return s.message}catch{return e}}return e}function gr(e){return typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"}function We(e){if(gr(e))return e.message;try{return JSON.stringify(e)}catch{return String(e)}}var Ye=class{constructor(t,r,s){this.name=t,this.startTimeMs=Date.now(),this.timeTakenMs=0,this.logger=r,this.context=s||{},this.spanId=String(Math.random()).slice(2),this.internalError=null}finish(){this.timeTakenMs=Date.now()-this.startTimeMs,this.context.timeTakenMs=this.timeTakenMs,this.logger.finishSpan(this)}setContextProperty(t,r){this.context[t]=r}get error(){return this.internalError}set error(t){t&&(this.internalError=t)}},Er=new Map([[/CREATE SECRET/i,"CREATE SECRET [REDACTED]"],[/s3_secret_access_key/i,"S3_SECRET_ACCESS_KEY [REDACTED]"],[/motherduck_token/i,"motherduck_token [REDACTED]"]]);function O(e){for(let[t,r]of Er)if(t.test(e))return r;return e}var yr=0;function kr(){return`MDConnection_${yr++}`}var $e=class e{static{this.idMap={}}constructor(t,r,s){this.params=t,this.deferredDdbConnection=r,this.id=s,this.sequencer=new ee(t.logSink)}static create(t){let r=kr(),s=je(t),n=new e(t,s,r);return this.idMap[r]=n,n}async isInitialized(){return await this.deferredDdbConnection,!0}static getById(t){return this.idMap[t]}async tokenize(t){return(await this.deferredDdbConnection).bindings.tokenize(t)}enqueueQuery(t,r){let s=this.sequencer.enqueueTask(new A(this.deferredDdbConnection,t,r));return this.params.logSink?.debug("enqueueQuery called",{id:s,query:O(t)}),s}async safeEvaluateQuery(t){try{return{status:"success",result:await this.evaluateQuery(t)}}catch(r){return{status:"error",err:r}}}async safeEvaluatePreparedStatement(t,...r){try{return{status:"success",result:await this.evaluatePreparedStatement(t,r)}}catch(s){return{status:"error",err:s}}}async safeEvaluateStreamingQuery(t){try{return{status:"success",result:await this.evaluateStreamingQuery(t)}}catch(r){return{status:"error",err:r}}}async safeEvaluateStreamingPreparedStatement(t,r){try{return{status:"success",result:await this.evaluateStreamingPreparedStatement(t,r)}}catch(s){return{status:"error",err:s}}}async safeEvaluateQueuedQuery(t){try{return{status:"success",result:await this.evaluateQueuedQuery(t)}}catch(r){return{status:"error",err:r}}}async evaluateQuery(t){return this.params.logSink?.debug("evaluateQuery called",{query:O(t)}),this.evaluateExclusive(new A(this.deferredDdbConnection,t))}async evaluatePreparedStatement(t,r){return this.params.logSink?.debug("evaluatePreparedStatement called",{query:O(t)}),this.evaluateExclusive(new A(this.deferredDdbConnection,t,r))}async evaluateStreamingQuery(t){return this.params.logSink?.debug("evaluateStreamingQuery called",{query:O(t)}),this.evaluateExclusive(new Y(this.deferredDdbConnection,t,void 0))}async evaluateStreamingPreparedStatement(t,r){return this.params.logSink?.debug("evaluateStreamingPreparedStatement called",{query:O(t)}),this.evaluateExclusive(new Y(this.deferredDdbConnection,t,r))}async evaluateExclusive(t){let r=this.sequencer.enqueueTask(t);return this.sequencer.taskResult(r).catch(ze)}async evaluateQueuedQuery(t){return this.params.logSink?.debug("evaluateQueuedQuery called",{queryId:t}),this.sequencer.taskResult(t).catch(ze)}async cancelQuery(t,r){return this.params.logSink?.debug("cancelQuery called",{queryId:t}),this.sequencer.cancelTask(t,r)}async close(){return(await this.deferredDdbConnection).close()}};function ze(e){throw new Error(Ge(We(e)))}async function xa(e,t){let r=await z(e);for(let s=0;s<t.length;++s){let n=t.item(s);await r.dropFile(n.name),await r.registerFileHandle(n.name,n,ae.BROWSER_FILEREADER,!1)}}async function Qa(e){return(await z(e)).globFiles("*")}export{M as DuckDBBlob,f as DuckDBData,N as DuckDBDataReader,C as DuckDBDate,L as DuckDBDecimal,P as DuckDBInterval,v as DuckDBList,U as DuckDBMap,x as DuckDBStruct,Q as DuckDBTime,q as DuckDBTimestampMicroseconds,j as DuckDBTimestampMilliseconds,V as DuckDBTimestampNanoseconds,G as DuckDBTimestampSeconds,u as DuckDBTypes,$e as MDConnection,Ye as Span,l as SpecialDuckDBValue,ke as TokenType,z as getAsyncDuckDb,Qa as readLocalFS,xa as registerFiles,O as sanitize};
1
+ import*as E from"apache-arrow";import*as o from"apache-arrow";var Ke=Object.create,ye=Object.defineProperty,Je=Object.getOwnPropertyDescriptor,Ze=Object.getOwnPropertyNames,Xe=Object.getPrototypeOf,et=Object.prototype.hasOwnProperty,tt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),rt=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ze(t))!et.call(e,n)&&n!==r&&ye(e,n,{get:()=>t[n],enumerable:!(s=Je(t,n))||s.enumerable});return e},st=(e,t,r)=>(r=e!=null?Ke(Xe(e)):{},rt(t||!e||!e.__esModule?ye(r,"default",{value:e,enumerable:!0}):r,e)),nt=tt((e,t)=>{t.exports=Worker}),at=(e=>(e[e.UNDEFINED=0]="UNDEFINED",e[e.AUTOMATIC=1]="AUTOMATIC",e[e.READ_ONLY=2]="READ_ONLY",e[e.READ_WRITE=3]="READ_WRITE",e))(at||{}),ke=(e=>(e[e.IDENTIFIER=0]="IDENTIFIER",e[e.NUMERIC_CONSTANT=1]="NUMERIC_CONSTANT",e[e.STRING_CONSTANT=2]="STRING_CONSTANT",e[e.OPERATOR=3]="OPERATOR",e[e.KEYWORD=4]="KEYWORD",e[e.COMMENT=5]="COMMENT",e))(ke||{}),Z=(e=>(e[e.NONE=0]="NONE",e[e.DEBUG=1]="DEBUG",e[e.INFO=2]="INFO",e[e.WARNING=3]="WARNING",e[e.ERROR=4]="ERROR",e))(Z||{}),it=(e=>(e[e.NONE=0]="NONE",e[e.CONNECT=1]="CONNECT",e[e.DISCONNECT=2]="DISCONNECT",e[e.OPEN=3]="OPEN",e[e.QUERY=4]="QUERY",e[e.INSTANTIATE=5]="INSTANTIATE",e))(it||{}),ot=(e=>(e[e.NONE=0]="NONE",e[e.OK=1]="OK",e[e.ERROR=2]="ERROR",e[e.START=3]="START",e[e.RUN=4]="RUN",e[e.CAPTURE=5]="CAPTURE",e))(ot||{}),ct=(e=>(e[e.NONE=0]="NONE",e[e.WEB_WORKER=1]="WEB_WORKER",e[e.NODE_WORKER=2]="NODE_WORKER",e[e.BINDINGS=3]="BINDINGS",e[e.ASYNC_DUCKDB=4]="ASYNC_DUCKDB",e))(ct||{});var be=class{constructor(e=2){this.level=e}log(e){e.level>=this.level&&console.log(e)}};var ut=(e=>(e[e.SUCCESS=0]="SUCCESS",e))(ut||{}),dt=class{constructor(e,t){this._bindings=e,this._conn=t}get bindings(){return this._bindings}async close(){return this._bindings.disconnect(this._conn)}useUnsafe(e){return e(this._bindings,this._conn)}async query(e){this._bindings.logger.log({timestamp:new Date,level:2,origin:4,topic:4,event:4,value:e});let t=await this._bindings.runQuery(this._conn,e),r=E.RecordBatchReader.from(t);return console.assert(r.isSync(),"Reader is not sync"),console.assert(r.isFile(),"Reader is not file"),new E.Table(r)}async send(e){this._bindings.logger.log({timestamp:new Date,level:2,origin:4,topic:4,event:4,value:e});let t=await this._bindings.startPendingQuery(this._conn,e);for(;t==null;)t=await this._bindings.pollPendingQuery(this._conn);let r=new Se(this._bindings,this._conn,t),s=await E.RecordBatchReader.from(r);return console.assert(s.isAsync()),console.assert(s.isStream()),s}async cancelSent(){return await this._bindings.cancelPendingQuery(this._conn)}async getTableNames(e){return await this._bindings.getTableNames(this._conn,e)}async prepare(e){let t=await this._bindings.createPrepared(this._conn,e);return new lt(this._bindings,this._conn,t)}async insertArrowTable(e,t){let r=E.tableToIPC(e,"stream");await this.insertArrowFromIPCStream(r,t)}async insertArrowFromIPCStream(e,t){await this._bindings.insertArrowFromIPCStream(this._conn,e,t)}async insertCSVFromPath(e,t){await this._bindings.insertCSVFromPath(this._conn,e,t)}async insertJSONFromPath(e,t){await this._bindings.insertJSONFromPath(this._conn,e,t)}},Se=class{constructor(e,t,r){this.db=e,this.conn=t,this.header=r,this._first=!0,this._depleted=!1,this._inFlight=null}async next(){if(this._first)return this._first=!1,{done:!1,value:this.header};if(this._depleted)return{done:!0,value:null};let e;return this._inFlight!=null?(e=await this._inFlight,this._inFlight=null):e=await this.db.fetchQueryResults(this.conn),this._depleted=e.length==0,this._depleted||(this._inFlight=this.db.fetchQueryResults(this.conn)),{done:this._depleted,value:e}}[Symbol.asyncIterator](){return this}},lt=class{constructor(e,t,r){this.bindings=e,this.connectionId=t,this.statementId=r}async close(){await this.bindings.closePrepared(this.connectionId,this.statementId)}async query(...e){let t=await this.bindings.runPrepared(this.connectionId,this.statementId,e),r=E.RecordBatchReader.from(t);return console.assert(r.isSync()),console.assert(r.isFile()),new E.Table(r)}async send(...e){let t=await this.bindings.sendPrepared(this.connectionId,this.statementId,e),r=new Se(this.bindings,this.connectionId,t),s=await E.RecordBatchReader.from(r);return console.assert(s.isAsync()),console.assert(s.isStream()),s}},pt=(e=>(e.CANCEL_PENDING_QUERY="CANCEL_PENDING_QUERY",e.CLOSE_PREPARED="CLOSE_PREPARED",e.COLLECT_FILE_STATISTICS="COLLECT_FILE_STATISTICS",e.CONNECT="CONNECT",e.COPY_FILE_TO_BUFFER="COPY_FILE_TO_BUFFER",e.COPY_FILE_TO_PATH="COPY_FILE_TO_PATH",e.CREATE_PREPARED="CREATE_PREPARED",e.DISCONNECT="DISCONNECT",e.DROP_FILE="DROP_FILE",e.DROP_FILES="DROP_FILES",e.EXPORT_FILE_STATISTICS="EXPORT_FILE_STATISTICS",e.FETCH_QUERY_RESULTS="FETCH_QUERY_RESULTS",e.FLUSH_FILES="FLUSH_FILES",e.GET_FEATURE_FLAGS="GET_FEATURE_FLAGS",e.GET_TABLE_NAMES="GET_TABLE_NAMES",e.GET_VERSION="GET_VERSION",e.GLOB_FILE_INFOS="GLOB_FILE_INFOS",e.INSERT_ARROW_FROM_IPC_STREAM="INSERT_ARROW_FROM_IPC_STREAM",e.INSERT_CSV_FROM_PATH="IMPORT_CSV_FROM_PATH",e.INSERT_JSON_FROM_PATH="IMPORT_JSON_FROM_PATH",e.INSTANTIATE="INSTANTIATE",e.OPEN="OPEN",e.PING="PING",e.POLL_PENDING_QUERY="POLL_PENDING_QUERY",e.REGISTER_FILE_BUFFER="REGISTER_FILE_BUFFER",e.REGISTER_FILE_HANDLE="REGISTER_FILE_HANDLE",e.REGISTER_FILE_URL="REGISTER_FILE_URL",e.RESET="RESET",e.RUN_PREPARED="RUN_PREPARED",e.RUN_QUERY="RUN_QUERY",e.SEND_PREPARED="SEND_PREPARED",e.START_PENDING_QUERY="START_PENDING_QUERY",e.TOKENIZE="TOKENIZE",e))(pt||{}),mt=(e=>(e.CONNECTION_INFO="CONNECTION_INFO",e.ERROR="ERROR",e.FEATURE_FLAGS="FEATURE_FLAGS",e.FILE_BUFFER="FILE_BUFFER",e.FILE_INFOS="FILE_INFOS",e.FILE_SIZE="FILE_SIZE",e.FILE_STATISTICS="FILE_STATISTICS",e.INSTANTIATE_PROGRESS="INSTANTIATE_PROGRESS",e.LOG="LOG",e.OK="OK",e.PREPARED_STATEMENT_ID="PREPARED_STATEMENT_ID",e.QUERY_PLAN="QUERY_PLAN",e.QUERY_RESULT="QUERY_RESULT",e.QUERY_RESULT_CHUNK="QUERY_RESULT_CHUNK",e.QUERY_RESULT_HEADER="QUERY_RESULT_HEADER",e.QUERY_RESULT_HEADER_OR_NULL="QUERY_RESULT_HEADER_OR_NULL",e.REGISTERED_FILE="REGISTERED_FILE",e.SCRIPT_TOKENS="SCRIPT_TOKENS",e.SUCCESS="SUCCESS",e.TABLE_NAMES="TABLE_NAMES",e.VERSION_STRING="VERSION_STRING",e))(mt||{}),c=class{constructor(e,t){this.promiseResolver=()=>{},this.promiseRejecter=()=>{},this.type=e,this.data=t,this.promise=new Promise((r,s)=>{this.promiseResolver=r,this.promiseRejecter=s})}};function J(e){switch(e.typeId){case o.Type.Binary:return{sqlType:"binary"};case o.Type.Bool:return{sqlType:"bool"};case o.Type.Date:return{sqlType:"date"};case o.Type.DateDay:return{sqlType:"date32[d]"};case o.Type.DateMillisecond:return{sqlType:"date64[ms]"};case o.Type.Decimal:{let t=e;return{sqlType:"decimal",precision:t.precision,scale:t.scale}}case o.Type.Float:return{sqlType:"float"};case o.Type.Float16:return{sqlType:"float16"};case o.Type.Float32:return{sqlType:"float32"};case o.Type.Float64:return{sqlType:"float64"};case o.Type.Int:return{sqlType:"int32"};case o.Type.Int16:return{sqlType:"int16"};case o.Type.Int32:return{sqlType:"int32"};case o.Type.Int64:return{sqlType:"int64"};case o.Type.Uint16:return{sqlType:"uint16"};case o.Type.Uint32:return{sqlType:"uint32"};case o.Type.Uint64:return{sqlType:"uint64"};case o.Type.Uint8:return{sqlType:"uint8"};case o.Type.IntervalDayTime:return{sqlType:"interval[dt]"};case o.Type.IntervalYearMonth:return{sqlType:"interval[m]"};case o.Type.List:return{sqlType:"list",valueType:J(e.valueType)};case o.Type.FixedSizeBinary:return{sqlType:"fixedsizebinary",byteWidth:e.byteWidth};case o.Type.Null:return{sqlType:"null"};case o.Type.Utf8:return{sqlType:"utf8"};case o.Type.Struct:return{sqlType:"struct",fields:e.children.map(t=>se(t.name,t.type))};case o.Type.Map:{let t=e;return{sqlType:"map",keyType:J(t.keyType),valueType:J(t.valueType)}}case o.Type.Time:return{sqlType:"time[s]"};case o.Type.TimeMicrosecond:return{sqlType:"time[us]"};case o.Type.TimeMillisecond:return{sqlType:"time[ms]"};case o.Type.TimeNanosecond:return{sqlType:"time[ns]"};case o.Type.TimeSecond:return{sqlType:"time[s]"};case o.Type.Timestamp:return{sqlType:"timestamp",timezone:e.timezone||void 0};case o.Type.TimestampSecond:return{sqlType:"timestamp[s]",timezone:e.timezone||void 0};case o.Type.TimestampMicrosecond:return{sqlType:"timestamp[us]",timezone:e.timezone||void 0};case o.Type.TimestampNanosecond:return{sqlType:"timestamp[ns]",timezone:e.timezone||void 0};case o.Type.TimestampMillisecond:return{sqlType:"timestamp[ms]",timezone:e.timezone||void 0}}throw new Error("unsupported arrow type: ".concat(e.toString()))}function se(e,t){let r=J(t);return r.name=e,r}var Dt=new TextEncoder,Re=class{constructor(e,t=null){this._onInstantiationProgress=[],this._worker=null,this._workerShutdownPromise=null,this._workerShutdownResolver=()=>{},this._nextMessageId=0,this._pendingRequests=new Map,this._logger=e,this._onMessageHandler=this.onMessage.bind(this),this._onErrorHandler=this.onError.bind(this),this._onCloseHandler=this.onClose.bind(this),t!=null&&this.attach(t)}get logger(){return this._logger}attach(e){this._worker=e,this._worker.addEventListener("message",this._onMessageHandler),this._worker.addEventListener("error",this._onErrorHandler),this._worker.addEventListener("close",this._onCloseHandler),this._workerShutdownPromise=new Promise((t,r)=>{this._workerShutdownResolver=t})}detach(){this._worker&&(this._worker.removeEventListener("message",this._onMessageHandler),this._worker.removeEventListener("error",this._onErrorHandler),this._worker.removeEventListener("close",this._onCloseHandler),this._worker=null,this._workerShutdownResolver(null),this._workerShutdownPromise=null,this._workerShutdownResolver=()=>{})}async terminate(){this._worker&&(this._worker.terminate(),this._worker=null,this._workerShutdownPromise=null,this._workerShutdownResolver=()=>{})}async postTask(e,t=[]){if(!this._worker){console.error("cannot send a message since the worker is not set!");return}let r=this._nextMessageId++;return this._pendingRequests.set(r,e),this._worker.postMessage({messageId:r,type:e.type,data:e.data},t),await e.promise}onMessage(e){var t;let r=e.data;switch(r.type){case"LOG":{this._logger.log(r.data);return}case"INSTANTIATE_PROGRESS":{for(let n of this._onInstantiationProgress)n(r.data);return}}let s=this._pendingRequests.get(r.requestId);if(!s){console.warn("unassociated response: [".concat(r.requestId,", ").concat(r.type.toString(),"]"));return}if(this._pendingRequests.delete(r.requestId),r.type=="ERROR"){let n=new Error(r.data.message);n.name=r.data.name,(t=Object.getOwnPropertyDescriptor(n,"stack"))!=null&&t.writable&&(n.stack=r.data.stack),s.promiseRejecter(n);return}switch(s.type){case"CLOSE_PREPARED":case"COLLECT_FILE_STATISTICS":case"COPY_FILE_TO_PATH":case"DISCONNECT":case"DROP_FILE":case"DROP_FILES":case"FLUSH_FILES":case"INSERT_ARROW_FROM_IPC_STREAM":case"IMPORT_CSV_FROM_PATH":case"IMPORT_JSON_FROM_PATH":case"OPEN":case"PING":case"REGISTER_FILE_BUFFER":case"REGISTER_FILE_HANDLE":case"REGISTER_FILE_URL":case"RESET":if(r.type=="OK"){s.promiseResolver(r.data);return}break;case"INSTANTIATE":if(this._onInstantiationProgress=[],r.type=="OK"){s.promiseResolver(r.data);return}break;case"GLOB_FILE_INFOS":if(r.type=="FILE_INFOS"){s.promiseResolver(r.data);return}break;case"GET_VERSION":if(r.type=="VERSION_STRING"){s.promiseResolver(r.data);return}break;case"GET_FEATURE_FLAGS":if(r.type=="FEATURE_FLAGS"){s.promiseResolver(r.data);return}break;case"GET_TABLE_NAMES":if(r.type=="TABLE_NAMES"){s.promiseResolver(r.data);return}break;case"TOKENIZE":if(r.type=="SCRIPT_TOKENS"){s.promiseResolver(r.data);return}break;case"COPY_FILE_TO_BUFFER":if(r.type=="FILE_BUFFER"){s.promiseResolver(r.data);return}break;case"EXPORT_FILE_STATISTICS":if(r.type=="FILE_STATISTICS"){s.promiseResolver(r.data);return}break;case"CONNECT":if(r.type=="CONNECTION_INFO"){s.promiseResolver(r.data);return}break;case"RUN_PREPARED":case"RUN_QUERY":if(r.type=="QUERY_RESULT"){s.promiseResolver(r.data);return}break;case"SEND_PREPARED":if(r.type=="QUERY_RESULT_HEADER"){s.promiseResolver(r.data);return}break;case"START_PENDING_QUERY":if(r.type=="QUERY_RESULT_HEADER_OR_NULL"){s.promiseResolver(r.data);return}break;case"POLL_PENDING_QUERY":if(r.type=="QUERY_RESULT_HEADER_OR_NULL"){s.promiseResolver(r.data);return}break;case"CANCEL_PENDING_QUERY":if(this._onInstantiationProgress=[],r.type=="SUCCESS"){s.promiseResolver(r.data);return}break;case"FETCH_QUERY_RESULTS":if(r.type=="QUERY_RESULT_CHUNK"){s.promiseResolver(r.data);return}break;case"CREATE_PREPARED":if(r.type=="PREPARED_STATEMENT_ID"){s.promiseResolver(r.data);return}break}s.promiseRejecter(new Error("unexpected response type: ".concat(r.type.toString())))}onError(e){console.error(e),console.error("error in duckdb worker: ".concat(e.message)),this._pendingRequests.clear()}onClose(){if(this._workerShutdownResolver(null),this._pendingRequests.size!=0){console.warn("worker terminated with ".concat(this._pendingRequests.size," pending requests"));return}this._pendingRequests.clear()}async reset(){let e=new c("RESET",null);return await this.postTask(e)}async ping(){let e=new c("PING",null);await this.postTask(e)}async dropFile(e){let t=new c("DROP_FILE",e);return await this.postTask(t)}async dropFiles(){let e=new c("DROP_FILES",null);return await this.postTask(e)}async flushFiles(){let e=new c("FLUSH_FILES",null);return await this.postTask(e)}async instantiate(e,t=null,r=s=>{}){this._onInstantiationProgress.push(r);let s=new c("INSTANTIATE",[e,t]);return await this.postTask(s)}async getVersion(){let e=new c("GET_VERSION",null);return await this.postTask(e)}async getFeatureFlags(){let e=new c("GET_FEATURE_FLAGS",null);return await this.postTask(e)}async open(e){let t=new c("OPEN",e);await this.postTask(t)}async tokenize(e){let t=new c("TOKENIZE",e);return await this.postTask(t)}async connectInternal(){let e=new c("CONNECT",null);return await this.postTask(e)}async connect(){let e=await this.connectInternal();return new dt(this,e)}async disconnect(e){let t=new c("DISCONNECT",e);await this.postTask(t)}async runQuery(e,t){let r=new c("RUN_QUERY",[e,t]);return await this.postTask(r)}async startPendingQuery(e,t){let r=new c("START_PENDING_QUERY",[e,t]);return await this.postTask(r)}async pollPendingQuery(e){let t=new c("POLL_PENDING_QUERY",e);return await this.postTask(t)}async cancelPendingQuery(e){let t=new c("CANCEL_PENDING_QUERY",e);return await this.postTask(t)}async fetchQueryResults(e){let t=new c("FETCH_QUERY_RESULTS",e);return await this.postTask(t)}async getTableNames(e,t){let r=new c("GET_TABLE_NAMES",[e,t]);return await this.postTask(r)}async createPrepared(e,t){let r=new c("CREATE_PREPARED",[e,t]);return await this.postTask(r)}async closePrepared(e,t){let r=new c("CLOSE_PREPARED",[e,t]);await this.postTask(r)}async runPrepared(e,t,r){let s=new c("RUN_PREPARED",[e,t,r]);return await this.postTask(s)}async sendPrepared(e,t,r){let s=new c("SEND_PREPARED",[e,t,r]);return await this.postTask(s)}async globFiles(e){let t=new c("GLOB_FILE_INFOS",e);return await this.postTask(t)}async registerFileText(e,t){let r=Dt.encode(t);await this.registerFileBuffer(e,r)}async registerFileURL(e,t,r,s){t===void 0&&(t=e);let n=new c("REGISTER_FILE_URL",[e,t,r,s]);await this.postTask(n)}async registerEmptyFileBuffer(e){let t=new c("REGISTER_FILE_BUFFER",[e,new Uint8Array]);await this.postTask(t)}async registerFileBuffer(e,t){let r=new c("REGISTER_FILE_BUFFER",[e,t]);await this.postTask(r,[t.buffer])}async registerFileHandle(e,t,r,s){let n=new c("REGISTER_FILE_HANDLE",[e,t,r,s]);await this.postTask(n,[])}async collectFileStatistics(e,t){let r=new c("COLLECT_FILE_STATISTICS",[e,t]);await this.postTask(r,[])}async exportFileStatistics(e){let t=new c("EXPORT_FILE_STATISTICS",e);return await this.postTask(t,[])}async copyFileToBuffer(e){let t=new c("COPY_FILE_TO_BUFFER",e);return await this.postTask(t)}async copyFileToPath(e,t){let r=new c("COPY_FILE_TO_PATH",[e,t]);await this.postTask(r)}async insertArrowFromIPCStream(e,t,r){if(t.length==0)return;let s=new c("INSERT_ARROW_FROM_IPC_STREAM",[e,t,r]);await this.postTask(s,[t.buffer])}async insertCSVFromPath(e,t,r){if(r.columns!==void 0){let n=[];for(let a in r.columns){let i=r.columns[a];n.push(se(a,i))}r.columnsFlat=n,delete r.columns}let s=new c("IMPORT_CSV_FROM_PATH",[e,t,r]);await this.postTask(s)}async insertJSONFromPath(e,t,r){if(r.columns!==void 0){let n=[];for(let a in r.columns){let i=r.columns[a];n.push(se(a,i))}r.columnsFlat=n,delete r.columns}let s=new c("IMPORT_JSON_FROM_PATH",[e,t,r]);await this.postTask(s)}};var ne={name:"@duckdb/duckdb-wasm",version:"1.11.0",description:"DuckDB powered by WebAssembly",license:"MIT",repository:{type:"git",url:"https://github.com/duckdb/duckdb-wasm.git"},keywords:["sql","duckdb","relational","database","data","query","wasm","analytics","olap","arrow","parquet","json","csv"],dependencies:{"apache-arrow":"^14.0.1"},devDependencies:{"@types/emscripten":"^1.39.10","@types/jasmine":"^5.1.4","@typescript-eslint/eslint-plugin":"^6.18.0","@typescript-eslint/parser":"^6.18.0",esbuild:"^0.20.0",eslint:"^8.56.0","eslint-plugin-jasmine":"^4.1.3","eslint-plugin-react":"^7.33.2","fast-glob":"^3.3.2",jasmine:"^5.1.0","jasmine-core":"^5.1.1","jasmine-spec-reporter":"^7.0.0","js-sha256":"^0.11.0",karma:"^6.4.2","karma-chrome-launcher":"^3.2.0","karma-coverage":"^2.2.1","karma-firefox-launcher":"^2.1.2","karma-jasmine":"^5.1.0","karma-jasmine-html-reporter":"^2.1.0","karma-sourcemap-loader":"^0.4.0","karma-spec-reporter":"^0.0.36","make-dir":"^4.0.0",nyc:"^15.1.0",prettier:"^3.2.4",puppeteer:"^21.7.0",rimraf:"^5.0.5",s3rver:"^3.7.1",typedoc:"^0.25.7",typescript:"^5.3.3","wasm-feature-detect":"^1.6.1","web-worker":"^1.2.0"},scripts:{"build:debug":"node bundle.mjs debug && tsc --emitDeclarationOnly","build:release":"node bundle.mjs release && tsc --emitDeclarationOnly",docs:"typedoc",report:"node ./coverage.mjs","test:node":"node --enable-source-maps ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs","test:node:debug":"node --inspect-brk --enable-source-maps ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs","test:node:coverage":"nyc -r json --report-dir ./coverage/node node ../../node_modules/jasmine/bin/jasmine ./dist/tests-node.cjs","test:firefox":"karma start ./karma/tests-firefox.cjs","test:chrome":"karma start ./karma/tests-chrome.cjs","test:chrome:eh":"karma start ./karma/tests-chrome-eh.cjs","test:chrome:coverage":"karma start ./karma/tests-chrome-coverage.cjs","test:browser":"karma start ./karma/tests-all.cjs","test:browser:debug":"karma start ./karma/tests-debug.cjs",test:"npm run test:chrome && npm run test:node","test:coverage":"npm run test:chrome:coverage && npm run test:node:coverage && npm run report",lint:"eslint src test"},files:["dist","!dist/types/test"],main:"dist/duckdb-browser.cjs",module:"dist/duckdb-browser.mjs",types:"dist/duckdb-browser.d.ts",jsdelivr:"dist/duckdb-browser.cjs",unpkg:"dist/duckdb-browser.mjs",sideEffects:!1,browser:{fs:!1,path:!1,perf_hooks:!1,os:!1,worker_threads:!1},exports:{"./dist/duckdb-mvp.wasm":"./dist/duckdb-mvp.wasm","./dist/duckdb-eh.wasm":"./dist/duckdb-eh.wasm","./dist/duckdb-coi.wasm":"./dist/duckdb-coi.wasm","./dist/duckdb-browser":"./dist/duckdb-browser.mjs","./dist/duckdb-browser.cjs":"./dist/duckdb-browser.cjs","./dist/duckdb-browser.mjs":"./dist/duckdb-browser.mjs","./dist/duckdb-browser-blocking":"./dist/duckdb-browser-blocking.mjs","./dist/duckdb-browser-blocking.mjs":"./dist/duckdb-browser-blocking.mjs","./dist/duckdb-browser-blocking.cjs":"./dist/duckdb-browser-blocking.cjs","./dist/duckdb-browser-coi.pthread.worker.js":"./dist/duckdb-browser-coi.pthread.worker.js","./dist/duckdb-browser-coi.worker.js":"./dist/duckdb-browser-coi.worker.js","./dist/duckdb-browser-eh.worker.js":"./dist/duckdb-browser-eh.worker.js","./dist/duckdb-browser-mvp.worker.js":"./dist/duckdb-browser-mvp.worker.js","./dist/duckdb-node":"./dist/duckdb-node.cjs","./dist/duckdb-node.cjs":"./dist/duckdb-node.cjs","./dist/duckdb-node-blocking":"./dist/duckdb-node-blocking.cjs","./dist/duckdb-node-blocking.cjs":"./dist/duckdb-node-blocking.cjs","./dist/duckdb-node-eh.worker.cjs":"./dist/duckdb-node-eh.worker.cjs","./dist/duckdb-node-mvp.worker.cjs":"./dist/duckdb-node-mvp.worker.cjs","./blocking":{browser:{types:"./dist/duckdb-browser-blocking.d.ts",import:"./dist/duckdb-browser-blocking.mjs",require:"./dist/duckdb-browser-blocking.cjs"},node:{types:"./dist/duckdb-node-blocking.d.ts",require:"./dist/duckdb-node-blocking.cjs",import:"./dist/duckdb-node-blocking.cjs"},types:"./dist/duckdb-browser-blocking.d.ts",import:"./dist/duckdb-browser-blocking.mjs",require:"./dist/duckdb-browser-blocking.cjs"},".":{browser:{types:"./dist/duckdb-browser.d.ts",import:"./dist/duckdb-browser.mjs",require:"./dist/duckdb-browser.cjs"},node:{types:"./dist/duckdb-node.d.ts",import:"./dist/duckdb-node.cjs",require:"./dist/duckdb-node.cjs"},types:"./dist/duckdb-browser.d.ts",import:"./dist/duckdb-browser.mjs",require:"./dist/duckdb-browser.cjs"}}},br=ne.name,Sr=ne.version,ae=ne.version.split("."),Rr=ae[0],Ir=ae[1],_r=ae[2];var fr=st(nt());function Tt(){let e=new TextDecoder;return t=>(typeof SharedArrayBuffer<"u"&&t.buffer instanceof SharedArrayBuffer&&(t=new Uint8Array(t)),e.decode(t))}var wr=Tt(),ie=(e=>(e[e.BUFFER=0]="BUFFER",e[e.NODE_FS=1]="NODE_FS",e[e.BROWSER_FILEREADER=2]="BROWSER_FILEREADER",e[e.BROWSER_FSACCESS=3]="BROWSER_FSACCESS",e[e.HTTP=4]="HTTP",e[e.S3=5]="S3",e))(ie||{});var _=class{singleValue(){let{columnCount:t,rowCount:r}=this;if(t===0)throw Error("no column data");if(r===0)throw Error("no rows");if(t>1)throw Error("more than one column");if(r>1)throw Error("more than one row");return this.value(0,0)}columnNames(){let{columnCount:t}=this,r=[];for(let s=0;s<t;s++)r.push(this.columnName(s));return r}deduplicatedColumnNames(){let{columnCount:t}=this,r=[],s={};for(let n=0;n<t;n++){let a=this.columnName(n),i=(s[a]||0)+1;s[a]=i,i>1?r.push(`${a}:${i-1}`):r.push(a)}return r}toRows(){let{rowCount:t,columnCount:r}=this,s=this.deduplicatedColumnNames(),n=[];for(let a=0;a<t;a++){let i={};for(let d=0;d<r;d++)i[s[d]]=this.value(d,a);n.push(i)}return n}};import{DateUnit as Ie,IntervalUnit as oe,Precision as ce,TimeUnit as b,Type as p,UnionMode as _e}from"apache-arrow";var u=class e{constructor(){}static{this.BIGINT={name:"BIGINT"}}static{this.BIT={name:"BIT"}}static{this.BOOLEAN={name:"BOOLEAN"}}static{this.BLOB={name:"BLOB"}}static{this.DATE={name:"DATE"}}static{this.DOUBLE={name:"DOUBLE"}}static{this.default_DECIMAL={name:"DECIMAL"}}static DECIMAL(t,r){return t===void 0&&r===void 0?e.default_DECIMAL:{name:"DECIMAL",width:t,scale:r}}static{this.ENUM={name:"ENUM"}}static{this.HUGEINT={name:"HUGEINT"}}static{this.INTEGER={name:"INTEGER"}}static{this.INTERVAL={name:"INTERVAL"}}static LIST(t){return{name:"LIST",valueType:t}}static MAP(t,r){return{name:"MAP",keyType:t,valueType:r}}static{this.REAL={name:"REAL"}}static{this.SMALLINT={name:"SMALLINT"}}static{this.SQLNULL={name:"SQLNULL"}}static STRUCT(t){return{name:"STRUCT",entries:t}}static STRUCT_entry(t,r){return{key:t,valueType:r}}static{this.TIME={name:"TIME"}}static{this.TIMESTAMP={name:"TIMESTAMP"}}static{this.TIMESTAMP_S={name:"TIMESTAMP_S"}}static{this.TIMESTAMP_MS={name:"TIMESTAMP_MS"}}static{this.TIMESTAMP_NS={name:"TIMESTAMP_NS"}}static{this.TIMESTAMP_TZ={name:"TIMESTAMP_TZ"}}static{this.TINYINT={name:"TINYINT"}}static{this.UBIGINT={name:"UBIGINT"}}static{this.UINTEGER={name:"UINTEGER"}}static{this.USMALLINT={name:"USMALLINT"}}static{this.UTINYINT={name:"UTINYINT"}}static{this.UUID={name:"UUID"}}static UNION(t){return{name:"UNION",alternatives:t}}static UNION_alternative(t,r){return{tag:t,valueType:r}}static{this.VARCHAR={name:"VARCHAR"}}static VARCHAR_withLength(t){return{name:"VARCHAR",length:t}}};function I(e){switch(e.typeId){case p.Null:return u.SQLNULL;case p.Int:{let{isSigned:t,bitWidth:r}=e;if(t)switch(r){case 8:return u.TINYINT;case 16:return u.SMALLINT;case 32:return u.INTEGER;case 64:return u.BIGINT;default:throw Error(`unexpected integer bit width: ${r}`)}else switch(r){case 8:return u.UTINYINT;case 16:return u.USMALLINT;case 32:return u.UINTEGER;case 64:return u.UBIGINT;default:throw Error(`unexpected integer bit width: ${r}`)}}case p.Float:{let{precision:t}=e;switch(t){case ce.HALF:throw Error("DuckDB does not support half-precision floats");case ce.SINGLE:return u.REAL;case ce.DOUBLE:return u.DOUBLE;default:throw Error(`unexpected precision: ${t}`)}}case p.Binary:return u.BLOB;case p.Utf8:return u.VARCHAR;case p.Bool:return u.BOOLEAN;case p.Decimal:{let{precision:t,scale:r}=e;return(t==null||t===18)&&(r==null||r===3)?u.DECIMAL():u.DECIMAL(t,r)}case p.Date:{let{unit:t}=e;switch(t){case Ie.DAY:return u.DATE;case Ie.MILLISECOND:throw Error("DuckDB does not support millisecond-unit dates");default:throw Error(`unexpected date unit: ${t}`)}}case p.Time:{let{unit:t}=e;switch(t){case b.SECOND:throw Error("DuckDB does not support second-unit times");case b.MILLISECOND:throw Error("DuckDB does not support millisecond-unit times");case b.MICROSECOND:return u.TIME;case b.NANOSECOND:throw Error("DuckDB does not support nanosecond-unit times");default:throw Error(`unexpected time unit: ${t}`)}}case p.Timestamp:{let{unit:t,timezone:r}=e;switch(t){case b.SECOND:if(r)throw Error("DuckDB does not support second-unit timestamps with timezone");return u.TIMESTAMP_S;case b.MILLISECOND:if(r)throw Error("DuckDB does not support millisecond-unit timestamps with timezone");return u.TIMESTAMP_MS;case b.MICROSECOND:return r?u.TIMESTAMP_TZ:u.TIMESTAMP;case b.NANOSECOND:if(r)throw Error("DuckDB does not support nanosecond-unit timestamps with timezone");return u.TIMESTAMP_NS;default:throw Error(`unexpected time unit: ${t}`)}}case p.Interval:{let{unit:t}=e;switch(t){case oe.YEAR_MONTH:throw Error("DuckDB does not support year-month intervals");case oe.DAY_TIME:throw Error("DuckDB does not support day-time intervals");case oe.MONTH_DAY_NANO:return u.INTERVAL;default:throw Error(`unexpected interval unit: ${t}`)}}case p.List:{let{valueType:t}=e;return u.LIST(I(t))}case p.Struct:{let{children:t}=e,r=t.map(s=>({key:s.name,valueType:I(s.type)}));return u.STRUCT(r)}case p.Union:{let{mode:t}=e;switch(t){case _e.Dense:throw Error("DuckDB does not support dense unions");case _e.Sparse:{let r=e.children.map(s=>({tag:s.name,valueType:I(s.type)}));return u.UNION(r)}default:throw Error(`unexpected union mode: ${t}`)}}case p.FixedSizeBinary:throw Error("DuckDB does not support fixed-size binary");case p.FixedSizeList:throw Error("DuckDB does not support fixed-size lists");case p.Map:{let{keyType:t,valueType:r}=e;return u.MAP(I(t),I(r))}case p.Dictionary:return u.ENUM;default:throw Error(`unexpected type id: ${e.typeId}`)}}import{DateUnit as Le,IntervalUnit as Te,Precision as he,TimeUnit as R,Type as m,UnionMode as Ce}from"apache-arrow";function fe(e){let t="";for(let r of e)r<=31||r===34||r===39||r>=127?t+=`\\x${r.toString(16).toUpperCase().padStart(2,"0")}`:t+=String.fromCharCode(r);return t}var l=class{toString(){return this.toDuckDBString()}};var M=class extends l{constructor(r){super();this.bytes=r}toDuckDBString(){return fe(this.bytes)}};var de=BigInt(1e6),ht=BigInt(1e3),gt=BigInt(1e3),we=BigInt(60),Be=BigInt(60),X=BigInt(864e8),Et=BigInt("-9223372036854775807"),yt=BigInt("9223372036854775807");function kt(e,t,r){let s=String(Math.abs(e)).padStart(4,"0"),n=String(t).padStart(2,"0"),a=String(r).padStart(2,"0");return`${s}-${n}-${a}${e<0?" (BC)":""}`}function le(e){let t=Math.abs(e),r=e<0?-1:1,s=Math.floor(t/146097),n=r*s*400,a=t%146097,i=r*a*864e5,d=new Date(i),D=n+d.getUTCFullYear();D<0&&D--;let h=d.getUTCMonth()+1,O=d.getUTCDate();return kt(D,h,O)}function bt(e,t,r,s){let n=String(e).padStart(2,"0"),a=String(t).padStart(2,"0"),i=String(r).padStart(2,"0"),d=String(s).padStart(6,"0").replace(/0+$/,"");return`${n}:${a}:${i}${d.length>0?`.${d}`:""}`}function Ne(e){let t=e%de,r=e/de,s=r%we,n=r/we,a=n%Be,i=n/Be;return bt(i,a,s,t)}function pe(e){let t=e<0?e+X:e;return Ne(t)}function St(e){let t=e<0,r=t?-e:e,s=Ne(r);return t?`-${s}`:s}function Rt(e,t,r){let s=le(Number(e)),n=pe(t),a=r?` ${r}`:"";return`${s} ${n}${a}`}function F(e,t){if(e===Et)return"-infinity";if(e===yt)return"infinity";let r=e/X,s=e%X;return s<0&&(r--,s+=X),Rt(r,s,t)}function Ae(e,t){return F(e*de,t)}function Oe(e,t){return F(e*ht,t)}function Me(e,t){return F(e/gt,t)}function ue(e,t){return`${e} ${t}${e!==1?"s":""}`}function Fe(e,t,r){let s=[];if(e!==0){let n=e<0?-1:1,a=Math.abs(e),i=Math.floor(a/12),d=n*i,D=n*(a-i*12);d!==0&&s.push(ue(d,"year")),D!==0&&s.push(ue(D,"month"))}return t!==0&&s.push(ue(t,"day")),r!==BigInt(0)&&s.push(St(r)),s.length>0?s.join(" "):"00:00:00"}var L=class extends l{constructor(r){super();this.days=r}toDuckDBString(){return le(this.days)}};function It(e){return new Intl.NumberFormat(e,{useGrouping:!1}).formatToParts(.1).find(r=>r.type==="decimal")?.value??"."}var me={};function _t(e){let t=JSON.stringify(e);if(t in me)return me[t];let r=It(e);return me[t]=r,r}function ft(e,t){if(e){let{minimumFractionDigits:r,maximumFractionDigits:s,...n}=e.options??{};return t.toLocaleString(e?.locales,n)}return String(t)}function wt(e,t,r){let s=String(t).padStart(r,"0");if(!e)return s;let n=e?.options?.minimumFractionDigits??0,a=e?.options?.maximumFractionDigits??20;return s.padEnd(n,"0").slice(0,a)}function De(e,t,r){if(t>0){let s=BigInt(10)**BigInt(t),n=e<0?-e:e,a=e<0?"-":"",i=n/s,d=ft(r,i),D=n%s,h=wt(r,D,t),O=r?_t(r.locales):".";return`${a}${d}${O}${h}`}return r?e.toLocaleString(r?.locales,r?.options):String(e)}var C=class extends l{constructor(r,s){super();this.scaledValue=r,this.scale=s}toDuckDBString(){return De(this.scaledValue,this.scale)}toLocaleString(r,s){return De(this.scaledValue,this.scale,{locales:r,options:s})}};var P=class extends l{constructor(r,s,n){super();this.months=r,this.days=s,this.microseconds=n}toDuckDBString(){return Fe(this.months,this.days,this.microseconds)}};function S(e){return e==null?"NULL":typeof e=="string"?`'${e.replace("'","''")}'`:String(e)}var v=class extends l{constructor(r){super();this.values=r}toDuckDBString(){return`[${this.values.map(S).join(", ")}]`}};var U=class extends l{constructor(r){super();this.entries=r}toDuckDBString(){return`{${this.entries.map(({key:s,value:n})=>`${S(s)}: ${S(n)}`).join(", ")}}`}};var x=class extends l{constructor(r){super();this.entries=r}toDuckDBString(){return`{${this.entries.map(({key:s,value:n})=>`${S(s)}: ${S(n)}`).join(", ")}}`}};var Q=class extends l{constructor(r){super();this.microseconds=r}toDuckDBString(){return pe(this.microseconds)}};var q=class extends l{constructor(r,s){super();this.microseconds=r,this.timezone=s}toDuckDBString(){return F(this.microseconds,this.timezone)}};var j=class extends l{constructor(r){super();this.milliseconds=r}toDuckDBString(){return Oe(this.milliseconds)}};var V=class extends l{constructor(r){super();this.nanoseconds=r}toDuckDBString(){return Me(this.nanoseconds)}};var G=class extends l{constructor(r){super();this.seconds=r}toDuckDBString(){return Ae(this.seconds)}};var Bt=new TextDecoder;function Nt(e,t,r){return e.getValid(t)?r(e,t):null}function T(e){return(t,r)=>Nt(t,r,e)}function At(e,t,r,s){return Array.from({length:r-t}).map((n,a)=>s(e,t+a))}function Pe(e){return new BigInt64Array(e.values.buffer,e.values.byteOffset,e.values.length/2)}function W(e,t){return Pe(e)[t]}function Ot(e,t){let r=Pe(e),s=r[t*2];return(r[t*2+1]<<BigInt(64))+(s&BigInt.asUintN(64,BigInt(-1)))}function ve(e,t){let{values:r,valueOffsets:s}=e,n=s[t],a=s[t+1];return r.subarray(n,a)}function Mt(e,t){return null}function Ft(e,t){return e.values[t]}var y=T(Ft);function Lt(e,t){return new M(ve(e,t))}var Ct=T(Lt);function Pt(e,t){return Bt.decode(ve(e,t))}var vt=T(Pt);function Ut(e,t){let r=e.offset+t;return(e.values[r>>3]&1<<r%8)!==0}var xt=T(Ut);function Qt(e,t){return new C(Ot(e,t),e.type.scale)}var qt=T(Qt);function jt(e,t){return new L(e.values[t])}var Vt=T(jt);function Gt(e,t){return new Q(e.values[t])}var Wt=T(Gt);function Yt(e,t){return new G(W(e,t))}var $t=T(Yt);function zt(e,t){return new j(W(e,t))}var Ht=T(zt);function Kt(e,t){return new q(W(e,t),e.type.timezone)}var Jt=T(Kt);function Zt(e,t){return new V(W(e,t))}var Xt=T(Zt);function er(e,t){return new P(e.values[t*4],e.values[t*4+1],W(e,t*2+1)/BigInt(1e3))}var tr=T(er);function rr(e,t){let{children:r,valueOffsets:s}=e,n=s[t],a=s[t+1];return new v(lr(r[0],n,a))}var sr=T(rr);function nr(e,t){let r=[],{children:s,type:n}=e,a=n.children;for(let i=0;i<s.length;i++){let d=s[i],D=a[i].name,h=f(d,t);r.push({key:D,value:h})}return new x(r)}var ar=T(nr);function ir(e,t){let{children:r,typeIds:s}=e,n=s[t],a=e.type.typeIdToChildIndex[n],i=r[a];return f(i,t)}function or(e,t){let r=[],{children:s,valueOffsets:n}=e,a=n[t],i=n[t+1],[d,D]=s[0].children;for(let h=a;h<i;h++)r.push({key:f(d,h),value:f(D,h)});return new U(r)}var cr=T(or);function ur(e,t){return e.dictionary&&e.dictionary.length>0?e.dictionary.get(e.values[t]):e.values[t]}var dr=T(ur);function Ue(e){switch(e.typeId){case m.Null:return Mt;case m.Int:{let{isSigned:t,bitWidth:r}=e;if(t)switch(r){case 8:return y;case 16:return y;case 32:return y;case 64:return y;default:throw Error(`unexpected integer bit width: ${r}`)}else switch(r){case 8:return y;case 16:return y;case 32:return y;case 64:return y;default:throw Error(`unexpected integer bit width: ${r}`)}}case m.Float:{let{precision:t}=e;switch(t){case he.HALF:throw Error("DuckDB does not support half-precision floats");case he.SINGLE:return y;case he.DOUBLE:return y;default:throw Error(`unexpected precision: ${t}`)}}case m.Binary:return Ct;case m.Utf8:return vt;case m.Bool:return xt;case m.Decimal:return qt;case m.Date:{let{unit:t}=e;switch(t){case Le.DAY:return Vt;case Le.MILLISECOND:throw Error("DuckDB does not support millisecond-unit dates");default:throw Error(`unexpected date unit: ${t}`)}}case m.Time:{let{unit:t}=e;switch(t){case R.SECOND:throw Error("DuckDB does not support second-unit times");case R.MILLISECOND:throw Error("DuckDB does not support millisecond-unit times");case R.MICROSECOND:return Wt;case R.NANOSECOND:throw Error("DuckDB does not support nanosecond-unit times");default:throw Error(`unexpected time unit: ${t}`)}}case m.Timestamp:{let{unit:t,timezone:r}=e;switch(t){case R.SECOND:if(r)throw Error("DuckDB does not support second-unit timestamps with time zone");return $t;case R.MILLISECOND:if(r)throw Error("DuckDB does not support millisecond-unit timestamps with time zone");return Ht;case R.MICROSECOND:return Jt;case R.NANOSECOND:if(r)throw Error("DuckDB does not support nanosecond-unit timestamps with time zone");return Xt;default:throw Error(`unexpected time unit: ${t}`)}}case m.Interval:{let{unit:t}=e;switch(t){case Te.YEAR_MONTH:throw Error("DuckDB does not support year-month intervals");case Te.DAY_TIME:throw Error("DuckDB does not support day-time intervals");case Te.MONTH_DAY_NANO:return tr;default:throw Error(`unexpected interval unit: ${t}`)}}case m.List:return sr;case m.Struct:return ar;case m.Union:{let{mode:t}=e;switch(t){case Ce.Dense:throw Error("DuckDB does not support dense unions");case Ce.Sparse:return ir;default:throw Error(`unexpected union mode: ${t}`)}}case m.FixedSizeBinary:throw Error("DuckDB does not support fixed-size binary");case m.FixedSizeList:throw Error("DuckDB does not support fixed-size lists");case m.Map:return cr;case m.Dictionary:return dr;default:throw Error(`unexpected type id: ${e.typeId}`)}}function f(e,t){return Ue(e.type)(e,t)}function lr(e,t,r){let s=Ue(e.type);return At(e,t,r,s)}var ee=class extends _{constructor(r){super();this.recordBatch=r}get columnCount(){return this.recordBatch.schema.fields.length}get rowCount(){return this.recordBatch.data.length}columnName(r){return this.recordBatch.schema.fields[r].name}columnType(r){let s=this.recordBatch.schema.fields[r];return I(s.type)}value(r,s){let n=this.recordBatch.data.children[r];return f(n,s)}};var ge=Object.freeze({done:!0,value:void 0}),w=class{constructor(t){this.recordBatchIterator=t}async next(){let{done:t,value:r}=await this.recordBatchIterator.next();return r?{done:!!t,value:new ee(r)}:ge}async return(t){return this.recordBatchIterator.return&&await this.recordBatchIterator.return(),t?{done:!0,value:t}:ge}async throw(t){return this.recordBatchIterator.throw&&await this.recordBatchIterator.throw(t),ge}[Symbol.asyncIterator](){return this}};var B=class extends _{constructor(r){super();this.iteratorDone=!1;this.totalRowsRead=0;this.batches=[];this.batchSizeRuns=[];this.iterator=r}get columnCount(){return this.batches.length===0?0:this.batches[0].columnCount}get rowCount(){return this.totalRowsRead}columnName(r){if(this.batches.length===0)throw Error("no column data");return this.batches[0].columnName(r)}columnType(r){if(this.batches.length===0)throw Error("no column data");return this.batches[0].columnType(r)}value(r,s){if(this.totalRowsRead===0)throw Error("no data");let n=0,a=s;for(let i of this.batchSizeRuns){if(a<i.rowCount){n+=Math.floor(a/i.batchSize);let d=a%i.batchSize;return this.batches[n].value(r,d)}n+=i.batchCount,a-=i.rowCount}throw Error(`Row index ${s} requested, but only ${this.totalRowsRead} row have been read so far.`)}get done(){return this.iteratorDone}async readAll(){return this.read()}async readUntil(r){return this.read(r)}async read(r){for(;!(this.iteratorDone||r!==void 0&&this.totalRowsRead>=r);){let{value:s,done:n}=await this.iterator.next();s&&(this.updateBatchSizeRuns(s),this.batches.push(s),this.totalRowsRead+=s.rowCount),n&&(this.iteratorDone=n)}}updateBatchSizeRuns(r){if(this.batchSizeRuns.length>0){let s=this.batchSizeRuns[this.batchSizeRuns.length-1];if(s.batchSize===r.rowCount){s.batchCount+=1,s.rowCount+=s.batchSize;return}}this.batchSizeRuns.push({batchCount:1,batchSize:r.rowCount,rowCount:r.rowCount})}};var N=class{constructor(t,r,s){this.connection=null;this.deferredConnection=t,this.query=r,this.args=s}async run(){let t=performance.now(),r=await this.sendQuery(),s=new w(r),n=new B(s);await n.readAll();let a=performance.now();return{type:"materialized",startTimeMs:t,endTimeMs:a,data:n}}async cancel(){return(this.connection||await this.getConnection()).cancelSent()}async getConnection(){return this.connection=await this.deferredConnection,this.connection}async sendQuery(){let t=this.connection||await this.getConnection();return this.args&&this.args?.length>0?(await t.prepare(this.query)).send(...this.args):t.send(this.query)}};var Y=class{constructor(t,r,s){this.connection=null;this.deferredConnection=t,this.query=r,this.args=s}async run(){let t=await this.sendQuery(),r=new w(t),s=new B(r);return{type:"streaming",arrowStream:t,dataStream:r,dataReader:s}}async cancel(){return(this.connection||await this.getConnection()).cancelSent()}async getConnection(){return this.connection=await this.deferredConnection,this.connection}async sendQuery(){let t=this.connection||await this.getConnection();return this.args&&this.args?.length>0?(await t.prepare(this.query)).send(this.args):t.send(this.query)}};function xe(){throw new Error("should never be called")}function Qe(){let e=xe,t=xe;return{promise:new Promise((s,n)=>{e=s,t=n}),resolve:e,reject:t}}var te=class{constructor(t){this.nextTaskId=1;this.queuedTaskIds=[];this.queuedTasksById={};this.processingQueue=!1;this.logSink=t}incompleteTaskCount(){let t=0;for(let r of this.queuedTaskIds){let s=this.queuedTasksById[r];s&&(s.state===0||s.state===1)&&t++}return t}enqueueTask(t){let r=this.createTaskId();return this.logDebug(`enqueueTask: creating task id = ${r}`),this.addQueuedTask({id:r,task:t,state:0,deferred:Qe(),cancelled:!1}),this.scheduleProcessQueueIfNeeded(),r}async cancelTask(t,r){this.logDebug(`cancelTask(${t}): called`);let s=this.queuedTasksById[t];if(!s)throw new Error(`Task with id ${t} not found`);switch(s.state){case 0:return s.cancelled?this.logDebug(`cancelTask(${t}): cancelling pending task (already cancelled)`):(this.logDebug(`cancelTask(${t}): cancelling pending task`),s.cancelled=!0,s.deferred.reject(new Error(r??"pending task cancelled")),this.scheduleProcessQueueIfNeeded()),!0;case 1:return this.logDebug(`cancelTask(${t}): cancelling running task`),s.cancelled=!0,s.task.cancel();case 2:return this.logDebug(`cancelTask(${t}): can't cancel resolved task`),!1;case 3:return this.logDebug(`cancelTask(${t}): can't cancel rejected task`),!1;default:throw s.state,new Error("unreachable")}}taskResult(t){this.logDebug(`taskResults(${t}): called`);let r=this.queuedTasksById[t];if(!r)throw new Error(`Task with id ${t} not found`);return r.deferred.promise}logDebug(t){this.logSink&&this.logSink.debug(t)}logWarn(t){this.logSink&&this.logSink.warn(t)}createTaskId(){return`t${this.nextTaskId++}`}addQueuedTask(t){this.queuedTaskIds.push(t.id),this.queuedTasksById[t.id]=t}scheduleProcessQueueIfNeeded(){this.processingQueue?this.logDebug("scheduleProcessQueueIfNeeded: processQueue already scheduled"):(this.logDebug("scheduleProcessQueueIfNeeded: scheduling processQueue"),this.processingQueue=!0,setTimeout(()=>{this.processQueue(),this.processingQueue=!1},0))}processQueue(){this.logDebug("processQueue: processing started");let t;do t=this.processFirstQueuedTask();while(t);this.logDebug("processQueue: processing completed")}processFirstQueuedTask(){if(this.queuedTaskIds.length===0)return this.logDebug("processFirstQueuedTask: queue empty"),!1;let t=this.queuedTaskIds[0];this.logDebug(`processFirstQueuedTask: processing task ${t}`);let r=this.queuedTasksById[t];if(!r)return this.logWarn(`processFirstQueuedTask: task ${t} not found in map`),this.queuedTaskIds.shift(),!0;switch(r.state){case 0:return r.cancelled?(this.logDebug(`processFirstQueuedTask: removing cancelled pending task ${t} from queue`),this.queuedTaskIds.shift(),delete this.queuedTasksById[r.id],!0):(this.logDebug(`processFirstQueuedTask: running pending task ${t}`),r.state=1,r.task.run().then(s=>{this.logDebug(`processFirstQueuedTask: task ${t} resolved`),r.state=2,r.deferred.resolve(s)}).catch(s=>{this.logDebug(`processFirstQueuedTask: task ${t} rejected`),r.state=3,r.deferred.reject(s)}).finally(()=>{this.scheduleProcessQueueIfNeeded()}),!1);case 1:return this.logDebug(`processFirstQueuedTask: task ${t} at front of queue is already running`),!1;case 2:case 3:return this.logDebug(`processFirstQueuedTask: task ${t} at front of queue is completed, removing from queue`),this.queuedTaskIds.shift(),delete this.queuedTasksById[r.id],!0;default:throw r.state,new Error("unreachable")}}};var $=null;async function je(e){let r=await(await z(e)).connect();return e.skipWelcomePack||await r.query("PRAGMA MD_USE_DEFAULT"),r}async function z(e){return $||($=mr(e),$)}function Ve(e){return e?e.endsWith("/")?e:`${e}/`:"https://app.motherduck.com/"}async function pr(e){let t=`${e}duckdb-assets.json`,s=await(await fetch(t)).json();return s.coi&&(s.coi.mainModule=e+s.coi.mainModule,s.coi.mainWorker=e+s.coi.mainWorker,s.coi.pthreadWorker=e+s.coi.pthreadWorker),s.mvp&&(s.mvp.mainModule=e+s.mvp.mainModule,s.mvp.mainWorker=e+s.mvp.mainWorker),s.eh&&(s.eh.mainModule=e+s.eh.mainModule,s.eh.mainWorker=e+s.eh.mainWorker),s}function qe(e,t){return URL.createObjectURL(new Blob([`importScripts("${t}");`],{type:"text/javascript"}))}async function mr(e){let t=await hr(),r=Ve(e.duckDBAssetsURLPrefix),s=await pr(r),n=e.useDuckDBWasmCOI?s.coi:s.eh;if(!n)throw new Error("Could not find DuckDB WASM asset URLs in duckdb-assets.json");let a=/^https?:\/\//.test(r),i=a?qe(r,n.mainWorker):n.mainWorker,d=a&&n.pthreadWorker?qe(r,n.pthreadWorker):n.pthreadWorker,D=new Worker(i);t||D.addEventListener("message",g=>{if(g&&g.data&&g.data.type==="Initialize"){let re=new Worker(g.data.workerUrl);URL.revokeObjectURL(g.data.workerUrl),re.postMessage(g.data,[g.data.port])}});let h=e.enableDebugLogging?Z.INFO:Z.WARNING,O=new be(h),H=new Re(O,D);await H.instantiate(n.mainModule,d),a&&(URL.revokeObjectURL(i),d&&URL.revokeObjectURL(d));let k=await H.connect();await Tr(k,e.version,e.duckDBAssetsURLPrefix),await k.query("LOAD icu;");let K=new URL(e.mdServerURL||"https://api.motherduck.com");await k.query(`SET motherduck_host='${K.hostname}';`),K.port&&await k.query(`SET motherduck_port='${K.port}';`),K.protocol==="http:"&&await k.query("SET motherduck_use_tls=false;"),await k.query(`SET motherduck_token='${e.mdToken}';`);let Ee=!1;for(let g=0;g<6e3;++g){if(await Dr(k)){Ee=!0;break}await new Promise(re=>setTimeout(re,10))}if(!Ee)throw new Error("Could not initialize worker after 1 minute.");let He=e.enableDebugLogging?"debug":"error";return await k.query(`SET motherduck_log_level='${He}';`),$=H,H}async function Dr(e){return(await e.query("from MD_IS_NETWORK_READY();")).toArray()[0].Success}async function Tr(e,t,r){let s=Ve(r),n=t;n||(n=(await(await fetch(`${s}version`)).json()).version);let a=!n||n.startsWith("DEV-")?"":n,i=s==="/"?`${window.origin}${a.length>0?"/":""}`:s;await e.query([`SET custom_extension_repository="${i}${a}";`,"LOAD motherduck;","RESET custom_extension_repository;"].join(""))}async function hr(){return new Promise(e=>{let t=URL.createObjectURL(new Blob(["self.postMessage({ canCreateWorker: !!self.Worker });"],{type:"application/javascript"})),r=new Worker(t);URL.revokeObjectURL(t),r.addEventListener("message",s);function s(n){r.removeEventListener("message",s),r.terminate(),e(n.data.canCreateWorker)}})}function Ge(e){let t=/^[^{]*({.*})/.exec(e);if(t){let r=t[1];try{let s=JSON.parse(r);if(s.message)return s.message}catch{return e}}return e}function gr(e){return typeof e=="object"&&e!==null&&"message"in e&&typeof e.message=="string"}function We(e){if(gr(e))return e.message;try{return JSON.stringify(e)}catch{return String(e)}}var Ye=class{constructor(t,r,s){this.name=t,this.startTimeMs=Date.now(),this.timeTakenMs=0,this.logger=r,this.context=s||{},this.spanId=String(Math.random()).slice(2),this.internalError=null}finish(){this.timeTakenMs=Date.now()-this.startTimeMs,this.context.timeTakenMs=this.timeTakenMs,this.logger.finishSpan(this)}setContextProperty(t,r){this.context[t]=r}get error(){return this.internalError}set error(t){t&&(this.internalError=t)}},Er=new Map([[/CREATE SECRET/i,"CREATE SECRET [REDACTED]"],[/s3_secret_access_key/i,"S3_SECRET_ACCESS_KEY [REDACTED]"],[/motherduck_token/i,"motherduck_token [REDACTED]"]]);function A(e){for(let[t,r]of Er)if(t.test(e))return r;return e}var yr=0;function kr(){return`MDConnection_${yr++}`}var $e=class e{static{this.idMap={}}constructor(t,r,s){this.params=t,this.deferredDdbConnection=r,this.id=s,this.sequencer=new te(t.logSink)}static create(t){let r=kr(),s=je(t),n=new e(t,s,r);return this.idMap[r]=n,n}async isInitialized(){return await this.deferredDdbConnection,!0}static getById(t){return this.idMap[t]}async tokenize(t){return(await this.deferredDdbConnection).bindings.tokenize(t)}incompleteQueryCount(){return this.sequencer.incompleteTaskCount()}enqueueQuery(t,r){let s=this.sequencer.enqueueTask(new N(this.deferredDdbConnection,t,r));return this.params.logSink?.debug("enqueueQuery called",{id:s,query:A(t)}),s}async safeEvaluateQuery(t){try{return{status:"success",result:await this.evaluateQuery(t)}}catch(r){return{status:"error",err:r}}}async safeEvaluatePreparedStatement(t,...r){try{return{status:"success",result:await this.evaluatePreparedStatement(t,r)}}catch(s){return{status:"error",err:s}}}async safeEvaluateStreamingQuery(t){try{return{status:"success",result:await this.evaluateStreamingQuery(t)}}catch(r){return{status:"error",err:r}}}async safeEvaluateStreamingPreparedStatement(t,r){try{return{status:"success",result:await this.evaluateStreamingPreparedStatement(t,r)}}catch(s){return{status:"error",err:s}}}async safeEvaluateQueuedQuery(t){try{return{status:"success",result:await this.evaluateQueuedQuery(t)}}catch(r){return{status:"error",err:r}}}async evaluateQuery(t){return this.params.logSink?.debug("evaluateQuery called",{query:A(t)}),this.evaluateExclusive(new N(this.deferredDdbConnection,t))}async evaluatePreparedStatement(t,r){return this.params.logSink?.debug("evaluatePreparedStatement called",{query:A(t)}),this.evaluateExclusive(new N(this.deferredDdbConnection,t,r))}async evaluateStreamingQuery(t){return this.params.logSink?.debug("evaluateStreamingQuery called",{query:A(t)}),this.evaluateExclusive(new Y(this.deferredDdbConnection,t,void 0))}async evaluateStreamingPreparedStatement(t,r){return this.params.logSink?.debug("evaluateStreamingPreparedStatement called",{query:A(t)}),this.evaluateExclusive(new Y(this.deferredDdbConnection,t,r))}async evaluateExclusive(t){let r=this.sequencer.enqueueTask(t);return this.sequencer.taskResult(r).catch(ze)}async evaluateQueuedQuery(t){return this.params.logSink?.debug("evaluateQueuedQuery called",{queryId:t}),this.sequencer.taskResult(t).catch(ze)}async cancelQuery(t,r){return this.params.logSink?.debug("cancelQuery called",{queryId:t}),this.sequencer.cancelTask(t,r)}async close(){return(await this.deferredDdbConnection).close()}};function ze(e){throw new Error(Ge(We(e)))}async function Ca(e,t){let r=await z(e);for(let s=0;s<t.length;++s){let n=t.item(s);await r.dropFile(n.name),await r.registerFileHandle(n.name,n,ie.BROWSER_FILEREADER,!1)}}async function Pa(e){return(await z(e)).globFiles("*")}export{M as DuckDBBlob,_ as DuckDBData,B as DuckDBDataReader,L as DuckDBDate,C as DuckDBDecimal,P as DuckDBInterval,v as DuckDBList,U as DuckDBMap,x as DuckDBStruct,Q as DuckDBTime,q as DuckDBTimestampMicroseconds,j as DuckDBTimestampMilliseconds,V as DuckDBTimestampNanoseconds,G as DuckDBTimestampSeconds,u as DuckDBTypes,$e as MDConnection,Ye as Span,l as SpecialDuckDBValue,ke as TokenType,z as getAsyncDuckDb,Pa as readLocalFS,Ca as registerFiles,A as sanitize};