@duckdb/duckdb-wasm
Version:
DuckDB powered by WebAssembly
3 lines (2 loc) • 35.4 kB
JavaScript
"use strict";var pe=Object.create;var g=Object.defineProperty;var _e=Object.getOwnPropertyDescriptor;var me=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty;var be=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),Ie=(s,e)=>{for(var r in e)g(s,r,{get:e[r],enumerable:!0})},j=(s,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of me(e))!Te.call(s,n)&&n!==r&&g(s,n,{get:()=>e[n],enumerable:!(t=_e(e,n))||t.enumerable});return s};var N=(s,e,r)=>(r=s!=null?pe(Re(s)):{},j(e||!s||!s.__esModule?g(r,"default",{value:s,enumerable:!0}):r,s)),ge=s=>j(g({},"__esModule",{value:!0}),s);var de=be((Ir,le)=>{var q=require("url"),Ge=require("vm"),R=require("worker_threads"),H=Symbol.for("worker"),I=Symbol.for("events"),P=class{constructor(){Object.defineProperty(this,I,{value:new Map})}dispatchEvent(e){if(e.target=e.currentTarget=this,this["on"+e.type])try{this["on"+e.type](e)}catch(t){console.error(t)}let r=this[I].get(e.type);r!=null&&r.forEach(t=>{try{t.call(this,e)}catch(n){console.error(n)}})}addEventListener(e,r){let t=this[I].get(e);t||this[I].set(e,t=[]),t.push(r)}removeEventListener(e,r){let t=this[I].get(e);if(t){let n=t.indexOf(r);n!==-1&&t.splice(n,1)}}};function Y(s,e){this.type=s,this.timeStamp=Date.now(),this.target=this.currentTarget=this.data=null}le.exports=R.isMainThread?Qe():He();var xe=q.pathToFileURL(process.cwd()+"/");function Qe(){class s extends P{constructor(r,t){super();let{name:n,type:a}=t||{};r+="";let o;/^data:/.test(r)?o=r:o=q.fileURLToPath(new q.URL(r,xe));let E=new R.Worker(__filename,{workerData:{mod:o,name:n,type:a}});Object.defineProperty(this,H,{value:E}),E.on("message",m=>{let u=new Y("message");u.data=m,this.dispatchEvent(u)}),E.on("error",m=>{m.type="error",this.dispatchEvent(m)}),E.on("exit",()=>{this.dispatchEvent(new Y("close"))})}postMessage(r,t){this[H].postMessage(r,t)}terminate(){this[H].terminate()}}return s.prototype.onmessage=s.prototype.onerror=s.prototype.onclose=null,s}function He(){let{mod:s,name:e,type:r}=R.workerData,t=global.self=global,n=[];function a(){let u=n;n=null,u.forEach(_=>{t.dispatchEvent(_)})}R.parentPort.on("message",u=>{let _=new Y("message");_.data=u,n==null?t.dispatchEvent(_):n.push(_)}),R.parentPort.on("error",u=>{u.type="Error",t.dispatchEvent(u)});class o extends P{postMessage(_,Ee){R.parentPort.postMessage(_,Ee)}close(){process.exit()}}let E=Object.getPrototypeOf(global);delete E.constructor,Object.defineProperties(o.prototype,E),E=Object.setPrototypeOf(global,new o),["postMessage","addEventListener","removeEventListener","dispatchEvent"].forEach(u=>{E[u]=E[u].bind(global)}),global.name=e;let m=/^data:/.test(s);if(r==="module")import(s).catch(u=>{if(m&&u.message==="Not supported")return console.warn("Worker(): Importing data: URLs requires Node 12.10+. Falling back to classic worker."),ce(s,e);console.error(u)}).then(a);else{try{/^data:/.test(s)?ce(s,e):require(s)}catch(u){console.error(u)}Promise.resolve().then(a)}}function ce(s,e){let{data:r}=qe(s);return Ge.runInThisContext(r,{filename:"worker.<"+(e||"data:")+">"})}function qe(s){let[e,r,t,n]=s.match(/^data: *([^;,]*)(?: *; *([^,]*))? *,(.*)$/)||[];if(!e)throw Error("Invalid Data URL.");if(t)switch(t.toLowerCase()){case"base64":n=Buffer.from(n,"base64").toString();break;default:throw Error('Unknown Data URL encoding "'+t+'"')}return{type:r,data:n}}});var je={};Ie(je,{AsyncDuckDB:()=>L,AsyncDuckDBConnection:()=>T,AsyncDuckDBDispatcher:()=>w,AsyncPreparedStatement:()=>y,AsyncResultStreamIterator:()=>b,ConsoleLogger:()=>A,DuckDBAccessMode:()=>K,DuckDBDataProtocol:()=>F,IsArrowBuffer:()=>Pe,IsDuckDBWasmRetry:()=>Ne,LogEvent:()=>X,LogLevel:()=>z,LogOrigin:()=>$,LogTopic:()=>J,PACKAGE_NAME:()=>U,PACKAGE_VERSION:()=>C,PACKAGE_VERSION_MAJOR:()=>we,PACKAGE_VERSION_MINOR:()=>Ue,PACKAGE_VERSION_PATCH:()=>Ce,StatusCode:()=>Z,TokenType:()=>V,VoidLogger:()=>f,WorkerRequestType:()=>D,WorkerResponseType:()=>O,WorkerTask:()=>i,createWorker:()=>Ye,getJsDelivrBundles:()=>Me,getLogEventLabel:()=>ke,getLogLevelLabel:()=>ye,getLogOriginLabel:()=>he,getLogTopicLabel:()=>Se,getPlatformFeatures:()=>ie,isFirefox:()=>We,isNode:()=>Q,isSafari:()=>ve,selectBundle:()=>Be});module.exports=ge(je);var K=(n=>(n[n.UNDEFINED=0]="UNDEFINED",n[n.AUTOMATIC=1]="AUTOMATIC",n[n.READ_ONLY=2]="READ_ONLY",n[n.READ_WRITE=3]="READ_WRITE",n))(K||{});var V=(o=>(o[o.IDENTIFIER=0]="IDENTIFIER",o[o.NUMERIC_CONSTANT=1]="NUMERIC_CONSTANT",o[o.STRING_CONSTANT=2]="STRING_CONSTANT",o[o.OPERATOR=3]="OPERATOR",o[o.KEYWORD=4]="KEYWORD",o[o.COMMENT=5]="COMMENT",o))(V||{});var z=(a=>(a[a.NONE=0]="NONE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARNING=3]="WARNING",a[a.ERROR=4]="ERROR",a))(z||{}),J=(o=>(o[o.NONE=0]="NONE",o[o.CONNECT=1]="CONNECT",o[o.DISCONNECT=2]="DISCONNECT",o[o.OPEN=3]="OPEN",o[o.QUERY=4]="QUERY",o[o.INSTANTIATE=5]="INSTANTIATE",o))(J||{}),X=(o=>(o[o.NONE=0]="NONE",o[o.OK=1]="OK",o[o.ERROR=2]="ERROR",o[o.START=3]="START",o[o.RUN=4]="RUN",o[o.CAPTURE=5]="CAPTURE",o))(X||{}),$=(a=>(a[a.NONE=0]="NONE",a[a.WEB_WORKER=1]="WEB_WORKER",a[a.NODE_WORKER=2]="NODE_WORKER",a[a.BINDINGS=3]="BINDINGS",a[a.ASYNC_DUCKDB=4]="ASYNC_DUCKDB",a))($||{}),f=class{log(e){}},A=class{constructor(e=2){this.level=e}log(e){e.level>=this.level&&console.log(e)}};function ye(s){switch(s){case 0:return"NONE";case 1:return"DEBUG";case 2:return"INFO";case 3:return"WARNING";case 4:return"ERROR";default:return"?"}}function ke(s){switch(s){case 0:return"NONE";case 1:return"OK";case 2:return"ERROR";case 3:return"START";case 4:return"RUN";case 5:return"CAPTURE";default:return"?"}}function Se(s){switch(s){case 1:return"CONNECT";case 2:return"DISCONNECT";case 5:return"INSTANTIATE";case 3:return"OPEN";case 4:return"QUERY";default:return"?"}}function he(s){switch(s){case 0:return"NONE";case 1:return"WEB WORKER";case 2:return"NODE WORKER";case 3:return"DUCKDB BINDINGS";case 4:return"DUCKDB";default:return"?"}}var Z=(t=>(t[t.SUCCESS=0]="SUCCESS",t[t.MAX_ARROW_ERROR=255]="MAX_ARROW_ERROR",t[t.DUCKDB_WASM_RETRY=256]="DUCKDB_WASM_RETRY",t))(Z||{});function Pe(s){return s<=255}function Ne(s){return s===256}var p=N(require("apache-arrow"));var T=class{constructor(e,r){this._bindings=e,this._conn=r}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 r=await this._bindings.runQuery(this._conn,e),t=p.RecordBatchReader.from(r);return console.assert(t.isSync(),"Reader is not sync"),console.assert(t.isFile(),"Reader is not file"),new p.Table(t)}async send(e,r=!1){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,r);for(;t==null;){if(this._bindings.isDetached()){console.error("cannot send a message since the worker is not set!");return}t=await this._bindings.pollPendingQuery(this._conn)}let n=new b(this._bindings,this._conn,t),a=await p.RecordBatchReader.from(n);return console.assert(a.isAsync()),console.assert(a.isStream()),a}async cancelSent(){return await this._bindings.cancelPendingQuery(this._conn)}async getTableNames(e){return await this._bindings.getTableNames(this._conn,e)}async prepare(e){let r=await this._bindings.createPrepared(this._conn,e);return new y(this._bindings,this._conn,r)}async insertArrowTable(e,r){let t=p.tableToIPC(e,"stream");await this.insertArrowFromIPCStream(t,r)}async insertArrowFromIPCStream(e,r){await this._bindings.insertArrowFromIPCStream(this._conn,e,r)}async insertCSVFromPath(e,r){await this._bindings.insertCSVFromPath(this._conn,e,r)}async insertJSONFromPath(e,r){await this._bindings.insertJSONFromPath(this._conn,e,r)}},b=class{constructor(e,r,t){this.db=e;this.conn=r;this.header=t;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=null;for(this._inFlight!=null&&(e=await this._inFlight,this._inFlight=null);e==null;)e=await this.db.fetchQueryResults(this.conn);return this._depleted=e.length==0,this._depleted||(this._inFlight=this.db.fetchQueryResults(this.conn)),{done:this._depleted,value:e}}[Symbol.asyncIterator](){return this}},y=class{constructor(e,r,t){this.bindings=e,this.connectionId=r,this.statementId=t}async close(){await this.bindings.closePrepared(this.connectionId,this.statementId)}async query(...e){let r=await this.bindings.runPrepared(this.connectionId,this.statementId,e),t=p.RecordBatchReader.from(r);return console.assert(t.isSync()),console.assert(t.isFile()),new p.Table(t)}async send(...e){let r=await this.bindings.sendPrepared(this.connectionId,this.statementId,e),t=new b(this.bindings,this.connectionId,r),n=await p.RecordBatchReader.from(t);return console.assert(n.isAsync()),console.assert(n.isStream()),n}};var D=(l=>(l.CANCEL_PENDING_QUERY="CANCEL_PENDING_QUERY",l.CLOSE_PREPARED="CLOSE_PREPARED",l.COLLECT_FILE_STATISTICS="COLLECT_FILE_STATISTICS",l.REGISTER_OPFS_FILE_NAME="REGISTER_OPFS_FILE_NAME",l.CONNECT="CONNECT",l.COPY_FILE_TO_BUFFER="COPY_FILE_TO_BUFFER",l.COPY_FILE_TO_PATH="COPY_FILE_TO_PATH",l.CREATE_PREPARED="CREATE_PREPARED",l.DISCONNECT="DISCONNECT",l.DROP_FILE="DROP_FILE",l.DROP_FILES="DROP_FILES",l.EXPORT_FILE_STATISTICS="EXPORT_FILE_STATISTICS",l.FETCH_QUERY_RESULTS="FETCH_QUERY_RESULTS",l.FLUSH_FILES="FLUSH_FILES",l.GET_FEATURE_FLAGS="GET_FEATURE_FLAGS",l.GET_TABLE_NAMES="GET_TABLE_NAMES",l.GET_VERSION="GET_VERSION",l.GLOB_FILE_INFOS="GLOB_FILE_INFOS",l.INSERT_ARROW_FROM_IPC_STREAM="INSERT_ARROW_FROM_IPC_STREAM",l.INSERT_CSV_FROM_PATH="IMPORT_CSV_FROM_PATH",l.INSERT_JSON_FROM_PATH="IMPORT_JSON_FROM_PATH",l.INSTANTIATE="INSTANTIATE",l.OPEN="OPEN",l.PING="PING",l.POLL_PENDING_QUERY="POLL_PENDING_QUERY",l.REGISTER_FILE_BUFFER="REGISTER_FILE_BUFFER",l.REGISTER_FILE_HANDLE="REGISTER_FILE_HANDLE",l.REGISTER_FILE_URL="REGISTER_FILE_URL",l.RESET="RESET",l.RUN_PREPARED="RUN_PREPARED",l.RUN_QUERY="RUN_QUERY",l.SEND_PREPARED="SEND_PREPARED",l.START_PENDING_QUERY="START_PENDING_QUERY",l.TOKENIZE="TOKENIZE",l))(D||{}),O=(d=>(d.CONNECTION_INFO="CONNECTION_INFO",d.ERROR="ERROR",d.FEATURE_FLAGS="FEATURE_FLAGS",d.FILE_BUFFER="FILE_BUFFER",d.FILE_INFOS="FILE_INFOS",d.FILE_SIZE="FILE_SIZE",d.FILE_STATISTICS="FILE_STATISTICS",d.INSTANTIATE_PROGRESS="INSTANTIATE_PROGRESS",d.LOG="LOG",d.PROGRESS_UPDATE="PROGRESS_UPDATE",d.OK="OK",d.PREPARED_STATEMENT_ID="PREPARED_STATEMENT_ID",d.QUERY_PLAN="QUERY_PLAN",d.QUERY_RESULT="QUERY_RESULT",d.QUERY_RESULT_CHUNK="QUERY_RESULT_CHUNK",d.QUERY_RESULT_HEADER="QUERY_RESULT_HEADER",d.QUERY_RESULT_HEADER_OR_NULL="QUERY_RESULT_HEADER_OR_NULL",d.REGISTERED_FILE="REGISTERED_FILE",d.SCRIPT_TOKENS="SCRIPT_TOKENS",d.SUCCESS="SUCCESS",d.TABLE_NAMES="TABLE_NAMES",d.VERSION_STRING="VERSION_STRING",d))(O||{}),i=class{constructor(e,r){this.promiseResolver=()=>{};this.promiseRejecter=()=>{};this.type=e,this.data=r,this.promise=new Promise((t,n)=>{this.promiseResolver=t,this.promiseRejecter=n})}};var c=N(require("apache-arrow"));function k(s){switch(s.typeId){case c.Type.Binary:return{sqlType:"binary"};case c.Type.Bool:return{sqlType:"bool"};case c.Type.Date:return{sqlType:"date"};case c.Type.DateDay:return{sqlType:"date32[d]"};case c.Type.DateMillisecond:return{sqlType:"date64[ms]"};case c.Type.Decimal:{let e=s;return{sqlType:"decimal",precision:e.precision,scale:e.scale}}case c.Type.Float:return{sqlType:"float"};case c.Type.Float16:return{sqlType:"float16"};case c.Type.Float32:return{sqlType:"float32"};case c.Type.Float64:return{sqlType:"float64"};case c.Type.Int:return{sqlType:"int32"};case c.Type.Int16:return{sqlType:"int16"};case c.Type.Int32:return{sqlType:"int32"};case c.Type.Int64:return{sqlType:"int64"};case c.Type.Uint16:return{sqlType:"uint16"};case c.Type.Uint32:return{sqlType:"uint32"};case c.Type.Uint64:return{sqlType:"uint64"};case c.Type.Uint8:return{sqlType:"uint8"};case c.Type.IntervalDayTime:return{sqlType:"interval[dt]"};case c.Type.IntervalYearMonth:return{sqlType:"interval[m]"};case c.Type.List:return{sqlType:"list",valueType:k(s.valueType)};case c.Type.FixedSizeBinary:return{sqlType:"fixedsizebinary",byteWidth:s.byteWidth};case c.Type.Null:return{sqlType:"null"};case c.Type.Utf8:return{sqlType:"utf8"};case c.Type.Struct:return{sqlType:"struct",fields:s.children.map(r=>S(r.name,r.type))};case c.Type.Map:{let e=s;return{sqlType:"map",keyType:k(e.keyType),valueType:k(e.valueType)}}case c.Type.Time:return{sqlType:"time[s]"};case c.Type.TimeMicrosecond:return{sqlType:"time[us]"};case c.Type.TimeMillisecond:return{sqlType:"time[ms]"};case c.Type.TimeNanosecond:return{sqlType:"time[ns]"};case c.Type.TimeSecond:return{sqlType:"time[s]"};case c.Type.Timestamp:return{sqlType:"timestamp",timezone:s.timezone||void 0};case c.Type.TimestampSecond:return{sqlType:"timestamp[s]",timezone:s.timezone||void 0};case c.Type.TimestampMicrosecond:return{sqlType:"timestamp[us]",timezone:s.timezone||void 0};case c.Type.TimestampNanosecond:return{sqlType:"timestamp[ns]",timezone:s.timezone||void 0};case c.Type.TimestampMillisecond:return{sqlType:"timestamp[ms]",timezone:s.timezone||void 0}}throw new Error(`unsupported arrow type: ${s.toString()}`)}function S(s,e){let r=k(e);return r.name=s,r}var fe=/'(opfs:\/\/\S*?)'/g,Ae=/(opfs:\/\/\S*?)/g;function ee(s){return s.search(Ae)>-1}function re(s){return[...s.matchAll(fe)].map(e=>e[1])}var De=new TextEncoder,L=class{constructor(e,r=null){this._onInstantiationProgress=[];this._onExecutionProgress=[];this._worker=null;this._workerShutdownPromise=null;this._workerShutdownResolver=()=>{};this._nextMessageId=0;this._pendingRequests=new Map;this._config={};this._logger=e,this._onMessageHandler=this.onMessage.bind(this),this._onErrorHandler=this.onError.bind(this),this._onCloseHandler=this.onClose.bind(this),r!=null&&this.attach(r)}get logger(){return this._logger}get config(){return this._config}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((r,t)=>{this._workerShutdownResolver=r})}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,r=[]){if(!this._worker){console.error("cannot send a message since the worker is not set!:"+e.type+","+e.data);return}let t=this._nextMessageId++;return this._pendingRequests.set(t,e),this._worker.postMessage({messageId:t,type:e.type,data:e.data},r),await e.promise}onMessage(e){var n;let r=e.data;switch(r.type){case"PROGRESS_UPDATE":{for(let a of this._onExecutionProgress)a(r.data);return}case"LOG":{this._logger.log(r.data);return}case"INSTANTIATE_PROGRESS":{for(let a of this._onInstantiationProgress)a(r.data);return}}let t=this._pendingRequests.get(r.requestId);if(!t){console.warn(`unassociated response: [${r.requestId}, ${r.type.toString()}]`);return}if(this._pendingRequests.delete(r.requestId),r.type=="ERROR"){let a=new Error(r.data.message);a.name=r.data.name,(n=Object.getOwnPropertyDescriptor(a,"stack"))!=null&&n.writable&&(a.stack=r.data.stack),t.promiseRejecter(a);return}switch(t.type){case"CLOSE_PREPARED":case"COLLECT_FILE_STATISTICS":case"REGISTER_OPFS_FILE_NAME":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"){t.promiseResolver(r.data);return}break;case"INSTANTIATE":if(this._onInstantiationProgress=[],r.type=="OK"){t.promiseResolver(r.data);return}break;case"GLOB_FILE_INFOS":if(r.type=="FILE_INFOS"){t.promiseResolver(r.data);return}break;case"GET_VERSION":if(r.type=="VERSION_STRING"){t.promiseResolver(r.data);return}break;case"GET_FEATURE_FLAGS":if(r.type=="FEATURE_FLAGS"){t.promiseResolver(r.data);return}break;case"GET_TABLE_NAMES":if(r.type=="TABLE_NAMES"){t.promiseResolver(r.data);return}break;case"TOKENIZE":if(r.type=="SCRIPT_TOKENS"){t.promiseResolver(r.data);return}break;case"COPY_FILE_TO_BUFFER":if(r.type=="FILE_BUFFER"){t.promiseResolver(r.data);return}break;case"EXPORT_FILE_STATISTICS":if(r.type=="FILE_STATISTICS"){t.promiseResolver(r.data);return}break;case"CONNECT":if(r.type=="CONNECTION_INFO"){t.promiseResolver(r.data);return}break;case"RUN_PREPARED":case"RUN_QUERY":if(r.type=="QUERY_RESULT"){t.promiseResolver(r.data);return}break;case"SEND_PREPARED":if(r.type=="QUERY_RESULT_HEADER"){t.promiseResolver(r.data);return}break;case"START_PENDING_QUERY":if(r.type=="QUERY_RESULT_HEADER_OR_NULL"){t.promiseResolver(r.data);return}break;case"POLL_PENDING_QUERY":if(r.type=="QUERY_RESULT_HEADER_OR_NULL"){t.promiseResolver(r.data);return}break;case"CANCEL_PENDING_QUERY":if(this._onInstantiationProgress=[],r.type=="SUCCESS"){t.promiseResolver(r.data);return}break;case"FETCH_QUERY_RESULTS":if(r.type=="QUERY_RESULT_CHUNK"){t.promiseResolver(r.data);return}break;case"CREATE_PREPARED":if(r.type=="PREPARED_STATEMENT_ID"){t.promiseResolver(r.data);return}break}t.promiseRejecter(new Error(`unexpected response type: ${r.type.toString()}`))}onError(e){console.error(e),console.error(`error in duckdb worker: ${e.message}`),this._pendingRequests.clear()}onClose(){if(this._workerShutdownResolver(null),this._pendingRequests.size!=0){console.warn(`worker terminated with ${this._pendingRequests.size} pending requests`);return}this._pendingRequests.clear()}isDetached(){return!this._worker}async reset(){let e=new i("RESET",null);return await this.postTask(e)}async ping(){let e=new i("PING",null);await this.postTask(e)}async dropFile(e){let r=new i("DROP_FILE",e);return await this.postTask(r)}async dropFiles(e){let r=new i("DROP_FILES",e);return await this.postTask(r)}async flushFiles(){let e=new i("FLUSH_FILES",null);return await this.postTask(e)}async instantiate(e,r=null,t=n=>{}){this._onInstantiationProgress.push(t);let n=new i("INSTANTIATE",[e,r]);return await this.postTask(n)}async getVersion(){let e=new i("GET_VERSION",null);return await this.postTask(e)}async getFeatureFlags(){let e=new i("GET_FEATURE_FLAGS",null);return await this.postTask(e)}async open(e){this._config=e;let r=new i("OPEN",e);await this.postTask(r)}async tokenize(e){let r=new i("TOKENIZE",e);return await this.postTask(r)}async connectInternal(){let e=new i("CONNECT",null);return await this.postTask(e)}async connect(){let e=await this.connectInternal();return new T(this,e)}async disconnect(e){let r=new i("DISCONNECT",e);await this.postTask(r)}async runQuery(e,r){if(this.shouldOPFSFileHandling()){let t=await this.registerOPFSFileFromSQL(r);try{return await this._runQueryAsync(e,r)}finally{t.length>0&&await this.dropFiles(t)}}else return await this._runQueryAsync(e,r)}async _runQueryAsync(e,r){let t=new i("RUN_QUERY",[e,r]);return await this.postTask(t)}async startPendingQuery(e,r,t=!1){if(this.shouldOPFSFileHandling()){let n=await this.registerOPFSFileFromSQL(r);try{return await this._startPendingQueryAsync(e,r,t)}finally{n.length>0&&await this.dropFiles(n)}}else return await this._startPendingQueryAsync(e,r,t)}async _startPendingQueryAsync(e,r,t=!1){let n=new i("START_PENDING_QUERY",[e,r,t]);return await this.postTask(n)}async pollPendingQuery(e){let r=new i("POLL_PENDING_QUERY",e);return await this.postTask(r)}async cancelPendingQuery(e){let r=new i("CANCEL_PENDING_QUERY",e);return await this.postTask(r)}async fetchQueryResults(e){let r=new i("FETCH_QUERY_RESULTS",e);return await this.postTask(r)}async getTableNames(e,r){let t=new i("GET_TABLE_NAMES",[e,r]);return await this.postTask(t)}async createPrepared(e,r){let t=new i("CREATE_PREPARED",[e,r]);return await this.postTask(t)}async closePrepared(e,r){let t=new i("CLOSE_PREPARED",[e,r]);await this.postTask(t)}async runPrepared(e,r,t){let n=new i("RUN_PREPARED",[e,r,t]);return await this.postTask(n)}async sendPrepared(e,r,t){let n=new i("SEND_PREPARED",[e,r,t]);return await this.postTask(n)}async globFiles(e){let r=new i("GLOB_FILE_INFOS",e);return await this.postTask(r)}async registerFileText(e,r){let t=De.encode(r);await this.registerFileBuffer(e,t)}async registerFileURL(e,r,t,n){r===void 0&&(r=e);let a=new i("REGISTER_FILE_URL",[e,r,t,n]);await this.postTask(a)}async registerEmptyFileBuffer(e){}async registerFileBuffer(e,r){let t=new i("REGISTER_FILE_BUFFER",[e,r]);await this.postTask(t,[r.buffer])}async registerFileHandle(e,r,t,n){let a=new i("REGISTER_FILE_HANDLE",[e,r,t,n]);await this.postTask(a,[])}async registerOPFSFileName(e){let r=new i("REGISTER_OPFS_FILE_NAME",[e]);await this.postTask(r,[])}async collectFileStatistics(e,r){let t=new i("COLLECT_FILE_STATISTICS",[e,r]);await this.postTask(t,[])}async exportFileStatistics(e){let r=new i("EXPORT_FILE_STATISTICS",e);return await this.postTask(r,[])}async copyFileToBuffer(e){let r=new i("COPY_FILE_TO_BUFFER",e);return await this.postTask(r)}async copyFileToPath(e,r){let t=new i("COPY_FILE_TO_PATH",[e,r]);await this.postTask(t)}async insertArrowFromIPCStream(e,r,t){if(r.length==0)return;let n=new i("INSERT_ARROW_FROM_IPC_STREAM",[e,r,t]);await this.postTask(n,[r.buffer])}async insertCSVFromPath(e,r,t){if(t.columns!==void 0){let a=[];for(let o in t.columns){let E=t.columns[o];a.push(S(o,E))}t.columnsFlat=a,delete t.columns}let n=new i("IMPORT_CSV_FROM_PATH",[e,r,t]);await this.postTask(n)}async insertJSONFromPath(e,r,t){if(t.columns!==void 0){let a=[];for(let o in t.columns){let E=t.columns[o];a.push(S(o,E))}t.columnsFlat=a,delete t.columns}let n=new i("IMPORT_JSON_FROM_PATH",[e,r,t]);await this.postTask(n)}shouldOPFSFileHandling(){var e;return ee(this.config.path??"")?((e=this.config.opfs)==null?void 0:e.fileHandling)=="auto":!1}async registerOPFSFileFromSQL(e){let r=re(e),t=[];for(let n of r)try{await this.registerOPFSFileName(n),t.push(n)}catch(a){throw console.error(a),new Error("File Not found:"+n)}return t}};function Oe(){let s=new TextDecoder;return e=>(typeof SharedArrayBuffer<"u"&&e.buffer instanceof SharedArrayBuffer&&(e=new Uint8Array(e)),s.decode(e))}var ur=Oe();var F=(o=>(o[o.BUFFER=0]="BUFFER",o[o.NODE_FS=1]="NODE_FS",o[o.BROWSER_FILEREADER=2]="BROWSER_FILEREADER",o[o.BROWSER_FSACCESS=3]="BROWSER_FSACCESS",o[o.HTTP=4]="HTTP",o[o.S3=5]="S3",o))(F||{});var w=class{constructor(){this._bindings=null;this._nextMessageId=0}log(e){this.postMessage({messageId:this._nextMessageId++,requestId:0,type:"LOG",data:e},[])}sendOK(e){this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"OK",data:null},[])}failWith(e,r){let t={name:r.name,message:r.message,stack:r.stack||void 0};this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"ERROR",data:t},[])}async onMessage(e){switch(e.type){case"PING":this.sendOK(e);return;case"INSTANTIATE":this._bindings!=null&&this.failWith(e,new Error("duckdb already initialized"));try{this._bindings=await this.instantiate(e.data[0],e.data[1],r=>{this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"INSTANTIATE_PROGRESS",data:r},[])}),this.sendOK(e)}catch(r){console.log(r),this._bindings=null,this.failWith(e,r)}return;default:break}if(!this._bindings)return this.failWith(e,new Error("duckdb is not initialized"));try{switch(e.type){case"GET_VERSION":this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"VERSION_STRING",data:this._bindings.getVersion()},[]);break;case"GET_FEATURE_FLAGS":this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"FEATURE_FLAGS",data:this._bindings.getFeatureFlags()},[]);break;case"RESET":this._bindings.reset(),this.sendOK(e);break;case"OPEN":{let r=e.data.path;r!=null&&r.startsWith("opfs://")&&(await this._bindings.prepareDBFileHandle(r,3),e.data.useDirectIO=!0),this._bindings.open(e.data),this.sendOK(e);break}case"DROP_FILE":this._bindings.dropFile(e.data),this.sendOK(e);break;case"DROP_FILES":this._bindings.dropFiles(e.data),this.sendOK(e);break;case"FLUSH_FILES":this._bindings.flushFiles(),this.sendOK(e);break;case"CONNECT":{let r=this._bindings.connect();this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"CONNECTION_INFO",data:r.useUnsafe((t,n)=>n)},[]);break}case"DISCONNECT":this._bindings.disconnect(e.data),this.sendOK(e);break;case"CREATE_PREPARED":{let r=this._bindings.createPrepared(e.data[0],e.data[1]);this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"PREPARED_STATEMENT_ID",data:r},[]);break}case"CLOSE_PREPARED":{this._bindings.closePrepared(e.data[0],e.data[1]),this.sendOK(e);break}case"RUN_PREPARED":{let r=this._bindings.runPrepared(e.data[0],e.data[1],e.data[2]);this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"QUERY_RESULT",data:r},[r.buffer]);break}case"RUN_QUERY":{let r=this._bindings.runQuery(e.data[0],e.data[1]);this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"QUERY_RESULT",data:r},[r.buffer]);break}case"SEND_PREPARED":{let r=this._bindings.sendPrepared(e.data[0],e.data[1],e.data[2]);this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"QUERY_RESULT_HEADER",data:r},[r.buffer]);break}case"START_PENDING_QUERY":{let r=this._bindings.startPendingQuery(e.data[0],e.data[1],e.data[2]),t=[];r&&t.push(r.buffer),this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"QUERY_RESULT_HEADER_OR_NULL",data:r},t);break}case"POLL_PENDING_QUERY":{let r=this._bindings.pollPendingQuery(e.data),t=[];r&&t.push(r.buffer),this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"QUERY_RESULT_HEADER_OR_NULL",data:r},t);break}case"CANCEL_PENDING_QUERY":{let r=this._bindings.cancelPendingQuery(e.data);this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"SUCCESS",data:r},[]);break}case"FETCH_QUERY_RESULTS":{let r=this._bindings.fetchQueryResults(e.data),t=r?[r.buffer]:[];this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"QUERY_RESULT_CHUNK",data:r},t);break}case"GET_TABLE_NAMES":{let r=this._bindings.getTableNames(e.data[0],e.data[1]);this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"TABLE_NAMES",data:r},[]);break}case"GLOB_FILE_INFOS":{let r=this._bindings.globFiles(e.data);this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"FILE_INFOS",data:r},[]);break}case"REGISTER_FILE_URL":this._bindings.registerFileURL(e.data[0],e.data[1],e.data[2],e.data[3]),this.sendOK(e);break;case"REGISTER_FILE_BUFFER":this._bindings.registerFileBuffer(e.data[0],e.data[1]),this.sendOK(e);break;case"REGISTER_FILE_HANDLE":await this._bindings.registerFileHandleAsync(e.data[0],e.data[1],e.data[2],e.data[3]),this.sendOK(e);break;case"COPY_FILE_TO_PATH":this._bindings.copyFileToPath(e.data[0],e.data[1]),this.sendOK(e);break;case"COPY_FILE_TO_BUFFER":{let r=this._bindings.copyFileToBuffer(e.data);this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"FILE_BUFFER",data:r},[]);break}case"COLLECT_FILE_STATISTICS":this._bindings.collectFileStatistics(e.data[0],e.data[1]),this.sendOK(e);break;case"REGISTER_OPFS_FILE_NAME":await this._bindings.registerOPFSFileName(e.data[0]),this.sendOK(e);break;case"EXPORT_FILE_STATISTICS":{this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"FILE_STATISTICS",data:this._bindings.exportFileStatistics(e.data)},[]);break}case"INSERT_ARROW_FROM_IPC_STREAM":{this._bindings.insertArrowFromIPCStream(e.data[0],e.data[1],e.data[2]),this.sendOK(e);break}case"IMPORT_CSV_FROM_PATH":{this._bindings.insertCSVFromPath(e.data[0],e.data[1],e.data[2]),this.sendOK(e);break}case"IMPORT_JSON_FROM_PATH":{this._bindings.insertJSONFromPath(e.data[0],e.data[1],e.data[2]),this.sendOK(e);break}case"TOKENIZE":{let r=this._bindings.tokenize(e.data);this.postMessage({messageId:this._nextMessageId++,requestId:e.messageId,type:"SCRIPT_TOKENS",data:r},[]);break}}}catch(r){return console.log(r),this.failWith(e,r)}}};var te=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,1,10,14,1,12,0,65,0,65,0,65,0,252,10,0,0,11])),se=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,8,1,6,0,6,64,25,11,11]));var ne=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]));var oe=()=>(async s=>{try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(s)}catch{return!1}})(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]));var h={name:"@duckdb/duckdb-wasm",version:"1.33.1-dev45.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":"^17.0.0",qs:"^6.14.1"},devDependencies:{"@types/emscripten":"^1.39.10","@types/jasmine":"^5.1.13","@typescript-eslint/eslint-plugin":"^6.21.0","@typescript-eslint/parser":"^6.21.0",esbuild:"^0.20.2",eslint:"^8.57.0","eslint-plugin-jasmine":"^4.1.3","eslint-plugin-react":"^7.37.5","fast-glob":"^3.3.2",jasmine:"^5.13.0","jasmine-core":"^5.1.2","jasmine-spec-reporter":"^7.0.0","js-sha256":"^0.11.1",karma:"^6.4.2","karma-chrome-launcher":"^3.2.0","karma-coverage":"^2.2.1","karma-firefox-launcher":"^2.1.3","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.5",puppeteer:"^22.8.0",rimraf:"^5.0.5",s3rver:"^3.7.1",typedoc:"^0.28.15",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",format:'prettier --write "**/*.+(js|ts)"',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/tests-*","!dist/duckdb-browser-mvp.worker.js.map","!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-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":{node:{types:"./dist/duckdb-node-blocking.d.ts",require:"./dist/duckdb-node-blocking.cjs",import:"./dist/duckdb-node-blocking.cjs"},types:"./dist/duckdb-node-blocking.d.ts",import:"./dist/duckdb-node-blocking.mjs",require:"./dist/duckdb-node-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"}}};var U=h.name,C=h.version,W=h.version.split("."),we=W[0],Ue=W[1],Ce=W[2];var Q=()=>typeof navigator>"u",ae=()=>Q()?"node":navigator.userAgent,We=()=>ae().includes("Firefox"),ve=()=>/^((?!chrome|android).)*safari/i.test(ae());function Me(){let s=`https://cdn.jsdelivr.net/npm/${U}@${C}/dist/`;return{mvp:{mainModule:`${s}duckdb-mvp.wasm`,mainWorker:`${s}duckdb-browser-mvp.worker.js`},eh:{mainModule:`${s}duckdb-eh.wasm`,mainWorker:`${s}duckdb-browser-eh.worker.js`}}}var v=null,M=null,B=null,G=null,x=null;async function ie(){return v==null&&(v=typeof BigInt64Array<"u"),M==null&&(M=await se()),B==null&&(B=await oe()),G==null&&(G=await ne()),x==null&&(x=await te()),{bigInt64Array:v,crossOriginIsolated:Q()||globalThis.crossOriginIsolated||!1,wasmExceptions:M,wasmSIMD:G,wasmThreads:B,wasmBulkMemory:x}}async function Be(s){let e=await ie();if(e.wasmExceptions){if(e.wasmSIMD&&e.wasmThreads&&e.crossOriginIsolated&&s.coi)return{mainModule:s.coi.mainModule,mainWorker:s.coi.mainWorker,pthreadWorker:s.coi.pthreadWorker};if(s.eh)return{mainModule:s.eh.mainModule,mainWorker:s.eh.mainWorker,pthreadWorker:null}}return{mainModule:s.mvp.mainModule,mainWorker:s.mvp.mainWorker,pthreadWorker:null}}var ue=N(de());async function Ye(s){let e=new Request(s),r=await fetch(e),t=URL.createObjectURL(await r.blob());return new ue.default(t)}0&&(module.exports={AsyncDuckDB,AsyncDuckDBConnection,AsyncDuckDBDispatcher,AsyncPreparedStatement,AsyncResultStreamIterator,ConsoleLogger,DuckDBAccessMode,DuckDBDataProtocol,IsArrowBuffer,IsDuckDBWasmRetry,LogEvent,LogLevel,LogOrigin,LogTopic,PACKAGE_NAME,PACKAGE_VERSION,PACKAGE_VERSION_MAJOR,PACKAGE_VERSION_MINOR,PACKAGE_VERSION_PATCH,StatusCode,TokenType,VoidLogger,WorkerRequestType,WorkerResponseType,WorkerTask,createWorker,getJsDelivrBundles,getLogEventLabel,getLogLevelLabel,getLogOriginLabel,getLogTopicLabel,getPlatformFeatures,isFirefox,isNode,isSafari,selectBundle});
//# sourceMappingURL=duckdb-node.cjs.map