flatsql 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +489 -0
- package/dist/btree/btree.d.ts +34 -0
- package/dist/btree/btree.d.ts.map +1 -0
- package/dist/btree/btree.js +235 -0
- package/dist/btree/btree.js.map +1 -0
- package/dist/btree/index.d.ts +3 -0
- package/dist/btree/index.d.ts.map +1 -0
- package/dist/btree/index.js +3 -0
- package/dist/btree/index.js.map +1 -0
- package/dist/btree/types.d.ts +36 -0
- package/dist/btree/types.d.ts.map +1 -0
- package/dist/btree/types.js +55 -0
- package/dist/btree/types.js.map +1 -0
- package/dist/core/database.d.ts +45 -0
- package/dist/core/database.d.ts.map +1 -0
- package/dist/core/database.js +248 -0
- package/dist/core/database.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/table-store.d.ts +28 -0
- package/dist/core/table-store.d.ts.map +1 -0
- package/dist/core/table-store.js +153 -0
- package/dist/core/table-store.js.map +1 -0
- package/dist/flatbuffer-accessor.d.ts +35 -0
- package/dist/flatbuffer-accessor.d.ts.map +1 -0
- package/dist/flatbuffer-accessor.js +114 -0
- package/dist/flatbuffer-accessor.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/schema/index.d.ts +3 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +3 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/parser.d.ts +25 -0
- package/dist/schema/parser.d.ts.map +1 -0
- package/dist/schema/parser.js +394 -0
- package/dist/schema/parser.js.map +1 -0
- package/dist/schema/types.d.ts +33 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +29 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +3 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/stacked-flatbuffers.d.ts +38 -0
- package/dist/storage/stacked-flatbuffers.d.ts.map +1 -0
- package/dist/storage/stacked-flatbuffers.js +253 -0
- package/dist/storage/stacked-flatbuffers.js.map +1 -0
- package/dist/storage/types.d.ts +23 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +27 -0
- package/dist/storage/types.js.map +1 -0
- package/package.json +79 -0
- package/wasm/flatsql-client.js +280 -0
- package/wasm/flatsql.js +2 -0
- package/wasm/flatsql.wasm +0 -0
- package/wasm/flatsql.worker.js +209 -0
- package/wasm/index.d.ts +234 -0
- package/wasm/index.js +463 -0
package/wasm/flatsql.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
async function FlatSQL(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("module");var require=createRequire(import.meta.url)}var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("path").dirname(require("url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var isFileURI=filename=>filename.startsWith("file://");var readyPromiseResolve,readyPromiseReject;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["ua"]()}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("flatsql.wasm")}return new URL("flatsql.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={a:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);return ___cxa_get_exception_ptr(ptr)};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}___cxa_increment_exception_refcount(ptr);exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);___cxa_increment_exception_refcount(ptr);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var ___syscall_chmod=(path,mode)=>{};var ___syscall_faccessat=(dirfd,path,amode,flags)=>{};var ___syscall_fchmod=(fd,mode)=>{};var ___syscall_fchown32=(fd,owner,group)=>{};var UTF8Decoder=globalThis.TextDecoder&&new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var SYSCALLS={varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;return 0}var ___syscall_fstat64=(fd,buf)=>{};var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num<INT53_MIN||num>INT53_MAX?NaN:Number(num);function ___syscall_ftruncate64(fd,length){length=bigintToI53Checked(length)}var ___syscall_getcwd=(buf,size)=>{};var ___syscall_lstat64=(path,buf)=>{};var ___syscall_mkdirat=(dirfd,path,mode)=>{};var ___syscall_newfstatat=(dirfd,path,buf,flags)=>{};function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs}var ___syscall_readlinkat=(dirfd,path,buf,bufsize)=>{};var ___syscall_rmdir=path=>{};var ___syscall_stat64=(path,buf)=>{};var ___syscall_unlinkat=(dirfd,path,flags)=>{};var ___syscall_utimensat=(dirfd,path,times,flags)=>{};var __abort_js=()=>abort("");var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time,tmPtr){time=bigintToI53Checked(time);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.codePointAt(i);if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffset<winterOffset){stringToUTF8(winterName,std_name,17);stringToUTF8(summerName,dst_name,17)}else{stringToUTF8(winterName,dst_name,17);stringToUTF8(summerName,std_name,17)}};var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var _fd_fdstat_get=(fd,pbuf)=>{var rightsBase=0;var rightsInheriting=0;var flags=0;{var type=2;if(fd==0){rightsBase=2}else if(fd==1||fd==2){rightsBase=64}flags=1}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0};var _fd_read=(fd,iov,iovcnt,pnum)=>52;function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);return 70}var _fd_sync=fd=>52;var printCharBuffers=[null,[],[]];var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}HEAPU32[pnum>>2]=num;return 0};var _llvm_eh_typeid_for=type=>type;var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func(...cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret};var cwrap=(ident,returnType,argTypes,opts)=>{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;var _flatsql_create_db,_flatsql_destroy_db,_flatsql_register_file_id,_flatsql_enable_demo_extractors,_flatsql_ingest,_flatsql_ingest_one,_flatsql_register_source,_flatsql_create_unified_views,_flatsql_ingest_with_source,_flatsql_ingest_one_with_source,_flatsql_query,_flatsql_get_error,_flatsql_result_column_count,_flatsql_result_row_count,_flatsql_result_column_name,_flatsql_result_cell_type,_flatsql_result_cell_number,_flatsql_result_cell_string,_flatsql_result_cell_blob,_flatsql_result_cell_blob_size,_flatsql_export_data,_flatsql_export_size,_flatsql_load_and_rebuild,_flatsql_create_test_user,_flatsql_test_buffer_size,_flatsql_create_test_post,_flatsql_get_stats_count,_flatsql_get_stat_table_name,_flatsql_get_stat_file_id,_flatsql_get_stat_record_count,_flatsql_mark_deleted,_flatsql_get_deleted_count,_flatsql_clear_tombstones,_flatsql_get_sources_count,_flatsql_get_source_name,_flatsql_get_flatbuffer_by_id,_flatsql_get_flatbuffer_by_email,_flatsql_get_raw_flatbuffer_size,_flatsql_get_raw_flatbuffer_sequence,_flatsql_get_storage_buffer,_flatsql_get_storage_size,_malloc,_free,_setThrew,__emscripten_tempret_set,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,___cxa_decrement_exception_refcount,___cxa_increment_exception_refcount,___cxa_can_catch,___cxa_get_exception_ptr,dynCall_v,dynCall_ii,dynCall_iii,dynCall_viiiiii,dynCall_vii,dynCall_viii,dynCall_jiij,dynCall_vij,dynCall_iiii,dynCall_iij,dynCall_viji,dynCall_vijii,dynCall_iiiiii,dynCall_viiiii,dynCall_viiii,dynCall_iiiiiii,dynCall_iiiii,dynCall_vi,dynCall_viijij,dynCall_viiijj,dynCall_jiiii,dynCall_viiiiiiiiii,dynCall_iiji,dynCall_i,dynCall_jii,dynCall_dii,dynCall_viij,dynCall_iiiij,dynCall_iijii,dynCall_viijii,dynCall_iidiiii,dynCall_iiiiiiii,dynCall_iiiiiiiiiii,dynCall_iiiiiiiiiiiii,dynCall_fiii,dynCall_diii,dynCall_viiiiiii,dynCall_iiiiiiiiiiii,dynCall_viiiiiiiiiiiiiii,dynCall_iiiiiiiii,dynCall_iiiiij,dynCall_iiiiid,dynCall_iiiiijj,dynCall_iiiiiijj,memory,__indirect_function_table,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_flatsql_create_db=Module["_flatsql_create_db"]=wasmExports["wa"];_flatsql_destroy_db=Module["_flatsql_destroy_db"]=wasmExports["xa"];_flatsql_register_file_id=Module["_flatsql_register_file_id"]=wasmExports["ya"];_flatsql_enable_demo_extractors=Module["_flatsql_enable_demo_extractors"]=wasmExports["za"];_flatsql_ingest=Module["_flatsql_ingest"]=wasmExports["Aa"];_flatsql_ingest_one=Module["_flatsql_ingest_one"]=wasmExports["Ba"];_flatsql_register_source=Module["_flatsql_register_source"]=wasmExports["Ca"];_flatsql_create_unified_views=Module["_flatsql_create_unified_views"]=wasmExports["Da"];_flatsql_ingest_with_source=Module["_flatsql_ingest_with_source"]=wasmExports["Ea"];_flatsql_ingest_one_with_source=Module["_flatsql_ingest_one_with_source"]=wasmExports["Fa"];_flatsql_query=Module["_flatsql_query"]=wasmExports["Ga"];_flatsql_get_error=Module["_flatsql_get_error"]=wasmExports["Ha"];_flatsql_result_column_count=Module["_flatsql_result_column_count"]=wasmExports["Ia"];_flatsql_result_row_count=Module["_flatsql_result_row_count"]=wasmExports["Ja"];_flatsql_result_column_name=Module["_flatsql_result_column_name"]=wasmExports["Ka"];_flatsql_result_cell_type=Module["_flatsql_result_cell_type"]=wasmExports["La"];_flatsql_result_cell_number=Module["_flatsql_result_cell_number"]=wasmExports["Ma"];_flatsql_result_cell_string=Module["_flatsql_result_cell_string"]=wasmExports["Na"];_flatsql_result_cell_blob=Module["_flatsql_result_cell_blob"]=wasmExports["Oa"];_flatsql_result_cell_blob_size=Module["_flatsql_result_cell_blob_size"]=wasmExports["Pa"];_flatsql_export_data=Module["_flatsql_export_data"]=wasmExports["Qa"];_flatsql_export_size=Module["_flatsql_export_size"]=wasmExports["Ra"];_flatsql_load_and_rebuild=Module["_flatsql_load_and_rebuild"]=wasmExports["Sa"];_flatsql_create_test_user=Module["_flatsql_create_test_user"]=wasmExports["Ta"];_flatsql_test_buffer_size=Module["_flatsql_test_buffer_size"]=wasmExports["Ua"];_flatsql_create_test_post=Module["_flatsql_create_test_post"]=wasmExports["Va"];_flatsql_get_stats_count=Module["_flatsql_get_stats_count"]=wasmExports["Wa"];_flatsql_get_stat_table_name=Module["_flatsql_get_stat_table_name"]=wasmExports["Xa"];_flatsql_get_stat_file_id=Module["_flatsql_get_stat_file_id"]=wasmExports["Ya"];_flatsql_get_stat_record_count=Module["_flatsql_get_stat_record_count"]=wasmExports["Za"];_flatsql_mark_deleted=Module["_flatsql_mark_deleted"]=wasmExports["_a"];_flatsql_get_deleted_count=Module["_flatsql_get_deleted_count"]=wasmExports["$a"];_flatsql_clear_tombstones=Module["_flatsql_clear_tombstones"]=wasmExports["ab"];_flatsql_get_sources_count=Module["_flatsql_get_sources_count"]=wasmExports["bb"];_flatsql_get_source_name=Module["_flatsql_get_source_name"]=wasmExports["cb"];_flatsql_get_flatbuffer_by_id=Module["_flatsql_get_flatbuffer_by_id"]=wasmExports["db"];_flatsql_get_flatbuffer_by_email=Module["_flatsql_get_flatbuffer_by_email"]=wasmExports["eb"];_flatsql_get_raw_flatbuffer_size=Module["_flatsql_get_raw_flatbuffer_size"]=wasmExports["fb"];_flatsql_get_raw_flatbuffer_sequence=Module["_flatsql_get_raw_flatbuffer_sequence"]=wasmExports["gb"];_flatsql_get_storage_buffer=Module["_flatsql_get_storage_buffer"]=wasmExports["hb"];_flatsql_get_storage_size=Module["_flatsql_get_storage_size"]=wasmExports["ib"];_malloc=Module["_malloc"]=wasmExports["jb"];_free=Module["_free"]=wasmExports["kb"];_setThrew=wasmExports["lb"];__emscripten_tempret_set=wasmExports["mb"];__emscripten_stack_restore=wasmExports["nb"];__emscripten_stack_alloc=wasmExports["ob"];_emscripten_stack_get_current=wasmExports["pb"];___cxa_decrement_exception_refcount=wasmExports["qb"];___cxa_increment_exception_refcount=wasmExports["rb"];___cxa_can_catch=wasmExports["sb"];___cxa_get_exception_ptr=wasmExports["tb"];dynCall_v=wasmExports["ub"];dynCall_ii=wasmExports["vb"];dynCall_iii=wasmExports["wb"];dynCall_viiiiii=wasmExports["xb"];dynCall_vii=wasmExports["yb"];dynCall_viii=wasmExports["zb"];dynCall_jiij=wasmExports["Ab"];dynCall_vij=wasmExports["Bb"];dynCall_iiii=wasmExports["Cb"];dynCall_iij=wasmExports["Db"];dynCall_viji=wasmExports["Eb"];dynCall_vijii=wasmExports["Fb"];dynCall_iiiiii=wasmExports["Gb"];dynCall_viiiii=wasmExports["Hb"];dynCall_viiii=wasmExports["Ib"];dynCall_iiiiiii=wasmExports["Jb"];dynCall_iiiii=wasmExports["Kb"];dynCall_vi=wasmExports["Lb"];dynCall_viijij=wasmExports["Mb"];dynCall_viiijj=wasmExports["Nb"];dynCall_jiiii=wasmExports["Ob"];dynCall_viiiiiiiiii=wasmExports["Pb"];dynCall_iiji=wasmExports["Qb"];dynCall_i=wasmExports["Rb"];dynCall_jii=wasmExports["Sb"];dynCall_dii=wasmExports["Tb"];dynCall_viij=wasmExports["Ub"];dynCall_iiiij=wasmExports["dynCall_iiiij"];dynCall_iijii=wasmExports["dynCall_iijii"];dynCall_viijii=wasmExports["dynCall_viijii"];dynCall_iidiiii=wasmExports["dynCall_iidiiii"];dynCall_iiiiiiii=wasmExports["Vb"];dynCall_iiiiiiiiiii=wasmExports["dynCall_iiiiiiiiiii"];dynCall_iiiiiiiiiiiii=wasmExports["dynCall_iiiiiiiiiiiii"];dynCall_fiii=wasmExports["Wb"];dynCall_diii=wasmExports["Xb"];dynCall_viiiiiii=wasmExports["Yb"];dynCall_iiiiiiiiiiii=wasmExports["Zb"];dynCall_viiiiiiiiiiiiiii=wasmExports["_b"];dynCall_iiiiiiiii=wasmExports["dynCall_iiiiiiiii"];dynCall_iiiiij=wasmExports["dynCall_iiiiij"];dynCall_iiiiid=wasmExports["dynCall_iiiiid"];dynCall_iiiiijj=wasmExports["dynCall_iiiiijj"];dynCall_iiiiiijj=wasmExports["dynCall_iiiiiijj"];memory=wasmMemory=wasmExports["ta"];__indirect_function_table=wasmTable=wasmExports["va"]}var wasmImports={t:___cxa_begin_catch,x:___cxa_end_catch,a:___cxa_find_matching_catch_2,h:___cxa_find_matching_catch_3,L:___cxa_rethrow,k:___cxa_throw,P:___cxa_uncaught_exceptions,c:___resumeException,la:___syscall_chmod,na:___syscall_faccessat,ma:___syscall_fchmod,ka:___syscall_fchown32,u:___syscall_fcntl64,ja:___syscall_fstat64,ea:___syscall_ftruncate64,da:___syscall_getcwd,ga:___syscall_lstat64,$:___syscall_mkdirat,ha:___syscall_newfstatat,Y:___syscall_openat,W:___syscall_readlinkat,V:___syscall_rmdir,ia:___syscall_stat64,U:___syscall_unlinkat,T:___syscall_utimensat,O:__abort_js,Z:__localtime_js,_:__tzset_js,I:_emscripten_date_now,H:_emscripten_get_now,Q:_emscripten_resize_heap,ba:_environ_get,ca:_environ_sizes_get,J:_fd_close,S:_fd_fdstat_get,X:_fd_read,aa:_fd_seek,fa:_fd_sync,R:_fd_write,oa:invoke_dii,E:invoke_diii,F:invoke_fiii,o:invoke_i,d:invoke_ii,e:invoke_iii,i:invoke_iiii,j:invoke_iiiii,m:invoke_iiiiii,p:invoke_iiiiiii,G:invoke_iiiiiiii,A:invoke_iiiiiiiiiiii,y:invoke_iij,B:invoke_iiji,pa:invoke_jii,w:invoke_jiiii,N:invoke_jiij,f:invoke_v,r:invoke_vi,b:invoke_vii,g:invoke_viii,l:invoke_viiii,s:invoke_viiiii,n:invoke_viiiiii,q:invoke_viiiiiii,v:invoke_viiiiiiiiii,z:invoke_viiiiiiiiiiiiiii,M:invoke_viiijj,qa:invoke_viij,ra:invoke_viijij,D:invoke_vij,C:invoke_viji,sa:invoke_vijii,K:_llvm_eh_typeid_for};function invoke_v(index){var sp=stackSave();try{dynCall_v(index)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return dynCall_ii(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return dynCall_iii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{dynCall_viiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{dynCall_vii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vij(index,a1,a2){var sp=stackSave();try{dynCall_vij(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{dynCall_viii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiij(index,a1,a2,a3){var sp=stackSave();try{return dynCall_jiij(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0);return 0n}}function invoke_iij(index,a1,a2){var sp=stackSave();try{return dynCall_iij(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viji(index,a1,a2,a3){var sp=stackSave();try{dynCall_viji(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vijii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_vijii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return dynCall_iiiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiiii(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{dynCall_viiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return dynCall_iiiiiii(index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_iiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{dynCall_vi(index,a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viijij(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viijij(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viij(index,a1,a2,a3){var sp=stackSave();try{dynCall_viij(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiijj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{dynCall_viiijj(index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0);return 0n}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{dynCall_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiji(index,a1,a2,a3){var sp=stackSave();try{return dynCall_iiji(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return dynCall_i(index)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0);return 0n}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return dynCall_dii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return dynCall_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_fiii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return dynCall_diii(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{dynCall_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return dynCall_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{dynCall_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function run(){preRun();function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})}
|
|
2
|
+
;return moduleRtn}export default FlatSQL;
|
|
Binary file
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FlatSQL Unified Worker
|
|
3
|
+
* Works in: Browser Web Workers, Node.js worker_threads, Deno Workers
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* Browser: new Worker('./flatsql.worker.js', { type: 'module' })
|
|
7
|
+
* Node: new Worker('./flatsql.worker.js')
|
|
8
|
+
* Deno: new Worker(new URL('./flatsql.worker.js', import.meta.url), { type: 'module' })
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// Environment detection
|
|
12
|
+
const isBrowser = typeof self !== 'undefined' && typeof self.postMessage === 'function';
|
|
13
|
+
const isNode = typeof process !== 'undefined' && process.versions && process.versions.node;
|
|
14
|
+
const isDeno = typeof Deno !== 'undefined';
|
|
15
|
+
|
|
16
|
+
// Message passing abstraction
|
|
17
|
+
let postMessage, onMessage;
|
|
18
|
+
|
|
19
|
+
if (isBrowser) {
|
|
20
|
+
postMessage = (msg) => self.postMessage(msg);
|
|
21
|
+
onMessage = (handler) => { self.onmessage = (e) => handler(e.data); };
|
|
22
|
+
} else if (isNode) {
|
|
23
|
+
const { parentPort } = await import('worker_threads');
|
|
24
|
+
postMessage = (msg) => parentPort.postMessage(msg);
|
|
25
|
+
onMessage = (handler) => parentPort.on('message', handler);
|
|
26
|
+
} else if (isDeno) {
|
|
27
|
+
postMessage = (msg) => self.postMessage(msg);
|
|
28
|
+
onMessage = (handler) => { self.onmessage = (e) => handler(e.data); };
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// WASM module loading
|
|
32
|
+
let flatsql = null;
|
|
33
|
+
let databases = new Map();
|
|
34
|
+
|
|
35
|
+
async function loadModule() {
|
|
36
|
+
if (flatsql) return flatsql;
|
|
37
|
+
|
|
38
|
+
// Dynamic import of the WASM module
|
|
39
|
+
const FlatSQLModule = (await import('./flatsql.js')).default;
|
|
40
|
+
flatsql = await FlatSQLModule();
|
|
41
|
+
return flatsql;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Helper: Convert Uint8Array to C++ vector
|
|
45
|
+
function toVec(arr) {
|
|
46
|
+
const vec = new flatsql.VectorUint8();
|
|
47
|
+
for (const byte of arr) vec.push_back(byte);
|
|
48
|
+
return vec;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Helper: Build size-prefixed stream from buffers
|
|
52
|
+
function buildStream(buffers) {
|
|
53
|
+
const parts = [];
|
|
54
|
+
for (const buf of buffers) {
|
|
55
|
+
const size = new Uint8Array(4);
|
|
56
|
+
new DataView(size.buffer).setUint32(0, buf.length, true);
|
|
57
|
+
parts.push(size, new Uint8Array(buf));
|
|
58
|
+
}
|
|
59
|
+
const total = parts.reduce((s, p) => s + p.length, 0);
|
|
60
|
+
const result = new Uint8Array(total);
|
|
61
|
+
let offset = 0;
|
|
62
|
+
for (const p of parts) {
|
|
63
|
+
result.set(p, offset);
|
|
64
|
+
offset += p.length;
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// API Methods
|
|
70
|
+
const methods = {
|
|
71
|
+
async init() {
|
|
72
|
+
await loadModule();
|
|
73
|
+
return { success: true, version: '1.0.0' };
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
async createDatabase({ id, schema, name = 'default' }) {
|
|
77
|
+
await loadModule();
|
|
78
|
+
const db = new flatsql.FlatSQLDatabase(schema, name);
|
|
79
|
+
databases.set(id, { db, schema, name });
|
|
80
|
+
return { success: true, id };
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
async registerFileId({ dbId, fileId, tableName }) {
|
|
84
|
+
const entry = databases.get(dbId);
|
|
85
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
86
|
+
entry.db.registerFileId(fileId, tableName);
|
|
87
|
+
return { success: true };
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
async enableDemoExtractors({ dbId }) {
|
|
91
|
+
const entry = databases.get(dbId);
|
|
92
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
93
|
+
entry.db.enableDemoExtractors();
|
|
94
|
+
return { success: true };
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
async setFieldExtractor({ dbId, tableName, extractorName }) {
|
|
98
|
+
const entry = databases.get(dbId);
|
|
99
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
100
|
+
// Note: Custom extractors need to be compiled into WASM
|
|
101
|
+
// This is a placeholder for built-in extractors
|
|
102
|
+
return { success: true };
|
|
103
|
+
},
|
|
104
|
+
|
|
105
|
+
async query({ dbId, sql }) {
|
|
106
|
+
const entry = databases.get(dbId);
|
|
107
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
108
|
+
|
|
109
|
+
const result = entry.db.query(sql);
|
|
110
|
+
const response = {
|
|
111
|
+
columns: result.getColumns(),
|
|
112
|
+
rows: result.getRows(),
|
|
113
|
+
rowCount: result.getRowCount()
|
|
114
|
+
};
|
|
115
|
+
result.delete();
|
|
116
|
+
return response;
|
|
117
|
+
},
|
|
118
|
+
|
|
119
|
+
async ingest({ dbId, data }) {
|
|
120
|
+
const entry = databases.get(dbId);
|
|
121
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
122
|
+
|
|
123
|
+
const vec = toVec(new Uint8Array(data));
|
|
124
|
+
const result = entry.db.ingest(vec);
|
|
125
|
+
vec.delete();
|
|
126
|
+
return { bytesConsumed: result };
|
|
127
|
+
},
|
|
128
|
+
|
|
129
|
+
async ingestOne({ dbId, data }) {
|
|
130
|
+
const entry = databases.get(dbId);
|
|
131
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
132
|
+
|
|
133
|
+
const vec = toVec(new Uint8Array(data));
|
|
134
|
+
const rowId = entry.db.ingestOne(vec);
|
|
135
|
+
vec.delete();
|
|
136
|
+
return { rowId };
|
|
137
|
+
},
|
|
138
|
+
|
|
139
|
+
async ingestStream({ dbId, buffers }) {
|
|
140
|
+
const entry = databases.get(dbId);
|
|
141
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
142
|
+
|
|
143
|
+
const stream = buildStream(buffers);
|
|
144
|
+
const vec = toVec(stream);
|
|
145
|
+
const result = entry.db.ingest(vec);
|
|
146
|
+
vec.delete();
|
|
147
|
+
return { bytesConsumed: result, recordCount: buffers.length };
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
async exportData({ dbId }) {
|
|
151
|
+
const entry = databases.get(dbId);
|
|
152
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
153
|
+
|
|
154
|
+
const data = entry.db.exportData();
|
|
155
|
+
return { data: Array.from(data) };
|
|
156
|
+
},
|
|
157
|
+
|
|
158
|
+
async listTables({ dbId }) {
|
|
159
|
+
const entry = databases.get(dbId);
|
|
160
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
161
|
+
return { tables: entry.db.listTables() };
|
|
162
|
+
},
|
|
163
|
+
|
|
164
|
+
async getStats({ dbId }) {
|
|
165
|
+
const entry = databases.get(dbId);
|
|
166
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
167
|
+
return { stats: entry.db.getStats() };
|
|
168
|
+
},
|
|
169
|
+
|
|
170
|
+
async deleteDatabase({ dbId }) {
|
|
171
|
+
const entry = databases.get(dbId);
|
|
172
|
+
if (!entry) throw new Error(`Database not found: ${dbId}`);
|
|
173
|
+
entry.db.delete();
|
|
174
|
+
databases.delete(dbId);
|
|
175
|
+
return { success: true };
|
|
176
|
+
},
|
|
177
|
+
|
|
178
|
+
// Test helpers (for demo purposes)
|
|
179
|
+
async createTestUser({ id, name, email, age }) {
|
|
180
|
+
await loadModule();
|
|
181
|
+
const fb = flatsql.createTestUser(id, name, email, age);
|
|
182
|
+
return { data: Array.from(fb) };
|
|
183
|
+
},
|
|
184
|
+
|
|
185
|
+
async createTestPost({ id, userId, title }) {
|
|
186
|
+
await loadModule();
|
|
187
|
+
const fb = flatsql.createTestPost(id, userId, title);
|
|
188
|
+
return { data: Array.from(fb) };
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
// Message handler
|
|
193
|
+
onMessage(async (message) => {
|
|
194
|
+
const { id, method, params = {} } = message;
|
|
195
|
+
|
|
196
|
+
try {
|
|
197
|
+
if (!methods[method]) {
|
|
198
|
+
throw new Error(`Unknown method: ${method}`);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
const result = await methods[method](params);
|
|
202
|
+
postMessage({ id, success: true, result });
|
|
203
|
+
} catch (error) {
|
|
204
|
+
postMessage({ id, success: false, error: error.message, stack: error.stack });
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
// Signal ready
|
|
209
|
+
postMessage({ type: 'ready' });
|
package/wasm/index.d.ts
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FlatSQL WASM Module
|
|
3
|
+
* SQL queries over raw FlatBuffer storage
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export interface QueryResult {
|
|
7
|
+
columns: string[];
|
|
8
|
+
rows: any[][];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface TableStats {
|
|
12
|
+
tableName: string;
|
|
13
|
+
fileId: string;
|
|
14
|
+
recordCount: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface FlatSQLDatabase {
|
|
18
|
+
/**
|
|
19
|
+
* Register a file identifier to route FlatBuffers to a table
|
|
20
|
+
*/
|
|
21
|
+
registerFileId(fileId: string, tableName: string): void;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Enable demo field extractors for User and Post tables
|
|
25
|
+
*/
|
|
26
|
+
enableDemoExtractors(): void;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Ingest a stream of size-prefixed FlatBuffers
|
|
30
|
+
* Format: [4-byte size LE][FlatBuffer][4-byte size LE][FlatBuffer]...
|
|
31
|
+
* @param data Stream of size-prefixed FlatBuffers
|
|
32
|
+
* @param source Optional source name (requires registerSource() first)
|
|
33
|
+
*/
|
|
34
|
+
ingest(data: Uint8Array, source?: string | null): number;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Ingest a single FlatBuffer (without size prefix)
|
|
38
|
+
* @param data FlatBuffer data
|
|
39
|
+
* @param source Optional source name (requires registerSource() first)
|
|
40
|
+
*/
|
|
41
|
+
ingestOne(data: Uint8Array, source?: string | null): number;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Execute a SQL query
|
|
45
|
+
*/
|
|
46
|
+
query(sql: string): QueryResult;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Export all data as a stream of size-prefixed FlatBuffers
|
|
50
|
+
*/
|
|
51
|
+
exportData(): Uint8Array;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Load exported data and rebuild indexes
|
|
55
|
+
*/
|
|
56
|
+
loadAndRebuild(data: Uint8Array): void;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Get statistics for all tables
|
|
60
|
+
*/
|
|
61
|
+
getStats(): TableStats[];
|
|
62
|
+
|
|
63
|
+
// ==================== Multi-Source API ====================
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Register a named data source for source-aware ingestion.
|
|
67
|
+
* Creates source-specific tables: User@siteA, Post@siteA, etc.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* db.registerSource('siteA');
|
|
71
|
+
* db.registerSource('siteB');
|
|
72
|
+
* db.createUnifiedViews();
|
|
73
|
+
*
|
|
74
|
+
* // Now ingest to specific sources
|
|
75
|
+
* db.ingest(streamA, 'siteA');
|
|
76
|
+
* db.ingest(streamB, 'siteB');
|
|
77
|
+
*
|
|
78
|
+
* // Query specific source
|
|
79
|
+
* db.query('SELECT * FROM "User@siteA"');
|
|
80
|
+
*
|
|
81
|
+
* // Query all sources (unified view)
|
|
82
|
+
* db.query('SELECT * FROM User');
|
|
83
|
+
*/
|
|
84
|
+
registerSource(sourceName: string): void;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Create unified views for cross-source queries.
|
|
88
|
+
* Call this after registering all sources and file IDs.
|
|
89
|
+
* Creates views like "User" that combine User@siteA, User@siteB, etc.
|
|
90
|
+
*/
|
|
91
|
+
createUnifiedViews(): void;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* List registered source names
|
|
95
|
+
*/
|
|
96
|
+
listSources(): string[];
|
|
97
|
+
|
|
98
|
+
// ==================== Delete Support ====================
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Mark a record as deleted by table name and row ID
|
|
102
|
+
*/
|
|
103
|
+
markDeleted(tableName: string, rowId: number): void;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Get count of deleted records in a table
|
|
107
|
+
*/
|
|
108
|
+
getDeletedCount(tableName: string): number;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Clear tombstones (deleted record markers) for a table
|
|
112
|
+
*/
|
|
113
|
+
clearTombstones(tableName: string): void;
|
|
114
|
+
|
|
115
|
+
// ==================== Raw FlatBuffer Access ====================
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Get raw FlatBuffer pointer and size by table name and id.
|
|
119
|
+
* Returns { ptr, size, sequence } or null if not found.
|
|
120
|
+
* Use the ptr with Module.HEAPU8.subarray(ptr, ptr + size) to access raw bytes.
|
|
121
|
+
*/
|
|
122
|
+
getFlatBufferById(tableName: string, id: number): { ptr: number; size: number; sequence: number } | null;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Get raw FlatBuffer pointer and size by table name and email.
|
|
126
|
+
* Returns { ptr, size, sequence } or null if not found.
|
|
127
|
+
*/
|
|
128
|
+
getFlatBufferByEmail(tableName: string, email: string): { ptr: number; size: number; sequence: number } | null;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Get a copy of the raw FlatBuffer data as Uint8Array
|
|
132
|
+
*/
|
|
133
|
+
getFlatBufferDataById(tableName: string, id: number): Uint8Array | null;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Get the underlying storage buffer info
|
|
137
|
+
* Returns { ptr, size } for direct WASM memory access
|
|
138
|
+
*/
|
|
139
|
+
getStorageInfo(): { ptr: number; size: number };
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Destroy the database and free memory
|
|
143
|
+
*/
|
|
144
|
+
destroy(): void;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export interface FlatSQL {
|
|
148
|
+
/**
|
|
149
|
+
* Create a new database with the given schema
|
|
150
|
+
*/
|
|
151
|
+
createDatabase(schema: string, name: string): FlatSQLDatabase;
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Create a test User FlatBuffer (for demos)
|
|
155
|
+
*/
|
|
156
|
+
createTestUser(id: number, name: string, email: string, age: number): Uint8Array;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Create a test Post FlatBuffer (for demos)
|
|
160
|
+
*/
|
|
161
|
+
createTestPost(id: number, userId: number, title: string): Uint8Array;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Check if WASM was loaded with integrity verification
|
|
165
|
+
*/
|
|
166
|
+
wasIntegrityVerified(): boolean;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Options for initializing FlatSQL with integrity verification
|
|
171
|
+
*/
|
|
172
|
+
export interface InitOptions {
|
|
173
|
+
/**
|
|
174
|
+
* Expected SHA-384 hash of the WASM binary (base64 encoded)
|
|
175
|
+
* If provided, the WASM will be verified against this hash before loading
|
|
176
|
+
*/
|
|
177
|
+
integrity?: string;
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Custom path to WASM files directory
|
|
181
|
+
* Default: same directory as index.js
|
|
182
|
+
*/
|
|
183
|
+
wasmPath?: string;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Skip integrity verification (not recommended for production)
|
|
187
|
+
* Default: false
|
|
188
|
+
*/
|
|
189
|
+
skipIntegrityCheck?: boolean;
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Fail if integrity cannot be verified (no hash available)
|
|
193
|
+
* Default: false
|
|
194
|
+
*/
|
|
195
|
+
requireIntegrity?: boolean;
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Custom Emscripten module factory function
|
|
199
|
+
* Default: built-in FlatSQLModule
|
|
200
|
+
*/
|
|
201
|
+
moduleFactory?: () => Promise<any>;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Initialize FlatSQL WASM module with optional integrity verification
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
* // Basic usage (auto-loads integrity.json if available)
|
|
209
|
+
* const flatsql = await initFlatSQL();
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* // With explicit integrity hash
|
|
213
|
+
* const flatsql = await initFlatSQL({
|
|
214
|
+
* integrity: 'base64-hash-here',
|
|
215
|
+
* requireIntegrity: true
|
|
216
|
+
* });
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* // Skip integrity check (development only)
|
|
220
|
+
* const flatsql = await initFlatSQL({ skipIntegrityCheck: true });
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* // Legacy API (still supported)
|
|
224
|
+
* const flatsql = await initFlatSQL(customModuleFactory);
|
|
225
|
+
*/
|
|
226
|
+
export function initFlatSQL(options?: InitOptions | (() => Promise<any>)): Promise<FlatSQL>;
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Check if WASM was loaded with integrity verification
|
|
230
|
+
* Can be called before or after initFlatSQL
|
|
231
|
+
*/
|
|
232
|
+
export function wasIntegrityVerified(): boolean;
|
|
233
|
+
|
|
234
|
+
export default initFlatSQL;
|