dbxlite-ui 0.4.0 → 0.6.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.
Files changed (110) hide show
  1. package/assets/assets/{duckdb-browser-BX0LtQQW.js → duckdb-browser-DdKwiimi.js} +1 -1
  2. package/assets/assets/editor.worker-DabR9gyH.js +26 -0
  3. package/assets/assets/main-BwPcj8tu.css +1 -0
  4. package/assets/assets/{main-BAj1_oUZ.js → main-j1kmVJtC.js} +15386 -34761
  5. package/assets/assets/monaco-editor-MQFpAWBH.js +1231 -0
  6. package/assets/assets/react-vendor-D4WcO1av.js +8 -0
  7. package/assets/assets/{argon2-Ds2nOx5S.js → vendor-argon2-browser-HvpwDX6j.js} +89 -92
  8. package/assets/assets/vendor-fflate-NDoNn75I.js +1 -0
  9. package/assets/assets/vendor-nearley-PZp0MNg3.js +12 -0
  10. package/assets/assets/vendor-scheduler-CWG1rEj-.js +1 -0
  11. package/assets/assets/vendor-sql-formatter-C1eOaiey.js +25 -0
  12. package/assets/assets/vendor-zustand-ReRZUMzh.js +1 -0
  13. package/assets/assets/worker-DkQq0NHR.js +5 -0
  14. package/assets/duckdb/README.md +8 -5
  15. package/assets/duckdb/duckdb-browser-blocking.mjs +1 -1
  16. package/assets/duckdb/duckdb-browser-eh.worker.js +1 -1
  17. package/assets/duckdb/duckdb-browser.mjs +1 -1
  18. package/assets/duckdb/duckdb-eh.wasm +2 -2
  19. package/assets/index.html +9 -4
  20. package/package.json +1 -1
  21. package/assets/assets/abap-CRCWOmpq.js +0 -1
  22. package/assets/assets/apex-DnsZk_dE.js +0 -1
  23. package/assets/assets/argon2-gAk7W4yq.js +0 -38
  24. package/assets/assets/azcli-1IWB1ccx.js +0 -1
  25. package/assets/assets/bat-DPkNLes8.js +0 -1
  26. package/assets/assets/bicep-Corcdgou.js +0 -2
  27. package/assets/assets/cameligo-CGrWLZr3.js +0 -1
  28. package/assets/assets/clojure-D9WOWImG.js +0 -1
  29. package/assets/assets/coffee-B7EJu28W.js +0 -1
  30. package/assets/assets/cpp-SEyurbux.js +0 -1
  31. package/assets/assets/csharp-BoL64M5l.js +0 -1
  32. package/assets/assets/csp-C46ZqvIl.js +0 -1
  33. package/assets/assets/css-DQU6DXDx.js +0 -3
  34. package/assets/assets/cssMode-DjCAhvCq.js +0 -4
  35. package/assets/assets/cypher-D84EuPTj.js +0 -1
  36. package/assets/assets/dart-D8lhlL1r.js +0 -1
  37. package/assets/assets/dockerfile-DLk6rpji.js +0 -1
  38. package/assets/assets/ecl-BO6FnfXk.js +0 -1
  39. package/assets/assets/elixir-BRjLKONM.js +0 -1
  40. package/assets/assets/flow9-Cac8vKd7.js +0 -1
  41. package/assets/assets/freemarker2-CowYmQxk.js +0 -3
  42. package/assets/assets/fsharp-fd1GTHhf.js +0 -1
  43. package/assets/assets/go-O9LJTZXk.js +0 -1
  44. package/assets/assets/graphql-LQdxqEYJ.js +0 -1
  45. package/assets/assets/handlebars-CT3UT-Rw.js +0 -1
  46. package/assets/assets/hcl-DxDQ3s82.js +0 -1
  47. package/assets/assets/html-DiYJ0pIZ.js +0 -1
  48. package/assets/assets/htmlMode-eiLVFLp-.js +0 -4
  49. package/assets/assets/ini-BvajGCUy.js +0 -1
  50. package/assets/assets/java-SYsfObOQ.js +0 -1
  51. package/assets/assets/javascript-CJ2lg7Wg.js +0 -1
  52. package/assets/assets/jsonMode-CDh3j4hY.js +0 -10
  53. package/assets/assets/julia-DQXNmw_w.js +0 -1
  54. package/assets/assets/kotlin-qQ0MG-9I.js +0 -1
  55. package/assets/assets/less-GGFNNJHn.js +0 -2
  56. package/assets/assets/lexon-Canl7DCW.js +0 -1
  57. package/assets/assets/liquid-SJpu3XRo.js +0 -1
  58. package/assets/assets/lua-D28Ae8-K.js +0 -1
  59. package/assets/assets/m3-DPitgjJI.js +0 -1
  60. package/assets/assets/main-CiZpADZR.css +0 -1
  61. package/assets/assets/markdown-B811l8j2.js +0 -1
  62. package/assets/assets/mdx-DAZ43DF4.js +0 -1
  63. package/assets/assets/mips-CdjsipkG.js +0 -1
  64. package/assets/assets/monaco-editor-CbzSR0rd.js +0 -124621
  65. package/assets/assets/msdax-CYqgjx_P.js +0 -1
  66. package/assets/assets/mysql-BHd6q0vd.js +0 -1
  67. package/assets/assets/objective-c-B1aVtJYH.js +0 -1
  68. package/assets/assets/pascal-BhNW15KB.js +0 -1
  69. package/assets/assets/pascaligo-5jv8CcQD.js +0 -1
  70. package/assets/assets/perl-DlYyT36c.js +0 -1
  71. package/assets/assets/pgsql-Dy0bjov7.js +0 -1
  72. package/assets/assets/php-120yhfDK.js +0 -1
  73. package/assets/assets/pla-CjnFlu4u.js +0 -1
  74. package/assets/assets/postiats-CQpG440k.js +0 -1
  75. package/assets/assets/powerquery-DdJtto1Z.js +0 -1
  76. package/assets/assets/powershell-Bu_VLpJB.js +0 -1
  77. package/assets/assets/protobuf-IBS6jZEB.js +0 -2
  78. package/assets/assets/pug-kFxLfcjb.js +0 -1
  79. package/assets/assets/python-Dp4JNWW2.js +0 -1
  80. package/assets/assets/qsharp-q7JyzKFN.js +0 -1
  81. package/assets/assets/r-BIFz-_sK.js +0 -1
  82. package/assets/assets/razor-C5KN2PrG.js +0 -1
  83. package/assets/assets/react-vendor-B2Ij4Vfr.js +0 -8
  84. package/assets/assets/redis-CHOsPHWR.js +0 -1
  85. package/assets/assets/redshift-CBifECDb.js +0 -1
  86. package/assets/assets/restructuredtext-CghPJEOS.js +0 -1
  87. package/assets/assets/ruby-CYWGW-b1.js +0 -1
  88. package/assets/assets/rust-DMDD0SHb.js +0 -1
  89. package/assets/assets/sb-BYAiYHFx.js +0 -1
  90. package/assets/assets/scala-Bqvq8jcR.js +0 -1
  91. package/assets/assets/scheme-Dhb-2j9p.js +0 -1
  92. package/assets/assets/scss-CTwUZ5N7.js +0 -3
  93. package/assets/assets/shell-CsDZo4DB.js +0 -1
  94. package/assets/assets/solidity-CME5AdoB.js +0 -1
  95. package/assets/assets/sophia-RYC1BQQz.js +0 -1
  96. package/assets/assets/sparql-KEyrF7De.js +0 -1
  97. package/assets/assets/sql-BdTr02Mf.js +0 -1
  98. package/assets/assets/st-C7iG7M4S.js +0 -1
  99. package/assets/assets/swift-D7IUmUK8.js +0 -1
  100. package/assets/assets/systemverilog-DgMryOEJ.js +0 -1
  101. package/assets/assets/tcl-PloMZuKG.js +0 -1
  102. package/assets/assets/tsMode-C29B5Qai.js +0 -11
  103. package/assets/assets/twig-BfRIq3la.js +0 -1
  104. package/assets/assets/typescript-OZh8Ppiv.js +0 -1
  105. package/assets/assets/typespec-CzxlYoT_.js +0 -1
  106. package/assets/assets/vb-BwAE3J76.js +0 -1
  107. package/assets/assets/wgsl-Dksx_ONF.js +0 -298
  108. package/assets/assets/worker-CFHnLDOA.js +0 -5
  109. package/assets/assets/xml-BevTyp2m.js +0 -1
  110. package/assets/assets/yaml-DXNKOJL7.js +0 -1
@@ -0,0 +1 @@
1
+ import{R as I}from"./react-vendor-D4WcO1av.js";const w=n=>{let o;const t=new Set,e=(d,f)=>{const c=typeof d=="function"?d(o):d;if(!Object.is(c,o)){const g=o;o=f??(typeof c!="object"||c===null)?c:Object.assign({},o,c),t.forEach(S=>S(o,g))}},i=()=>o,a={setState:e,getState:i,getInitialState:()=>l,subscribe:d=>(t.add(d),()=>t.delete(d))},l=o=n(e,i,a);return a},R=(n=>n?w(n):w),F=n=>n;function k(n,o=F){const t=I.useSyncExternalStore(n.subscribe,I.useCallback(()=>o(n.getState()),[n,o]),I.useCallback(()=>o(n.getInitialState()),[n,o]));return I.useDebugValue(t),t}const x=n=>{const o=R(n),t=e=>k(o,e);return Object.assign(t,o),t},P=(n=>x),E=n=>(o,t,e)=>{const i=e.subscribe;return e.subscribe=((m,a,l)=>{let d=m;if(a){const f=l?.equalityFn||Object.is;let c=m(e.getState());d=g=>{const S=m(g);if(!f(c,S)){const h=c;a(c=S,h)}},l?.fireImmediately&&a(c,c)}return i(d)}),n(o,t,e)},q=E;function C(n,o){let t;try{t=n()}catch{return}return{getItem:i=>{var r;const m=l=>l===null?null:JSON.parse(l,void 0),a=(r=t.getItem(i))!=null?r:null;return a instanceof Promise?a.then(m):m(a)},setItem:(i,r)=>t.setItem(i,JSON.stringify(r,void 0)),removeItem:i=>t.removeItem(i)}}const _=n=>o=>{try{const t=n(o);return t instanceof Promise?t:{then(e){return _(e)(t)},catch(e){return this}}}catch(t){return{then(e){return this},catch(e){return _(e)(t)}}}},J=(n,o)=>(t,e,i)=>{let r={storage:C(()=>window.localStorage),partialize:s=>s,version:0,merge:(s,b)=>({...b,...s}),...o},m=!1,a=0;const l=new Set,d=new Set;let f=r.storage;if(!f)return n((...s)=>{console.warn(`[zustand persist middleware] Unable to update item '${r.name}', the given storage is currently unavailable.`),t(...s)},e,i);const c=()=>{const s=r.partialize({...e()});return f.setItem(r.name,{state:s,version:r.version})},g=i.setState;i.setState=(s,b)=>(g(s,b),c());const S=n((...s)=>(t(...s),c()),e,i);i.getInitialState=()=>S;let h;const j=()=>{var s,b;if(!f)return;const p=++a;m=!1,l.forEach(u=>{var v;return u((v=e())!=null?v:S)});const y=((b=r.onRehydrateStorage)==null?void 0:b.call(r,(s=e())!=null?s:S))||void 0;return _(f.getItem.bind(f))(r.name).then(u=>{if(u)if(typeof u.version=="number"&&u.version!==r.version){if(r.migrate){const v=r.migrate(u.state,u.version);return v instanceof Promise?v.then(O=>[!0,O]):[!0,v]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,u.state];return[!1,void 0]}).then(u=>{var v;if(p!==a)return;const[O,H]=u;if(h=r.merge(H,(v=e())!=null?v:S),t(h,!0),O)return c()}).then(()=>{p===a&&(y?.(e(),void 0),h=e(),m=!0,d.forEach(u=>u(h)))}).catch(u=>{p===a&&y?.(void 0,u)})};return i.persist={setOptions:s=>{r={...r,...s},s.storage&&(f=s.storage)},clearStorage:()=>{f?.removeItem(r.name)},getOptions:()=>r,rehydrate:()=>j(),hasHydrated:()=>m,onHydrate:s=>(l.add(s),()=>{l.delete(s)}),onFinishHydration:s=>(d.add(s),()=>{d.delete(s)})},r.skipHydration||j(),h||S},W=J;export{P as c,W as p,q as s};
@@ -0,0 +1,5 @@
1
+ function v(r){return Number.isNaN(r)||!Number.isFinite(r)?null:r}function z(r,u=!0){if(r.length===0)return 0n;let e=0n;for(let i=r.length-1;i>=0;i--)e=e<<32n|BigInt(r[i]>>>0);if(u){const i=r.length*32,o=1n<<BigInt(i-1);if(e>=o){const l=1n<<BigInt(i);e=e-l}}return e>BigInt(Number.MAX_SAFE_INTEGER)||e<BigInt(Number.MIN_SAFE_INTEGER)?e.toString():e}function W(r){return r>BigInt(Number.MAX_SAFE_INTEGER)||r<BigInt(Number.MIN_SAFE_INTEGER)?r.toString():Number(r)}function L(r){return r>BigInt(Number.MAX_SAFE_INTEGER)?r.toString():Number(r)}let M=null,d=null,S=null,q=[],k=null;const G=2,E=new Map,R=new Set;function P(){const r=globalThis;typeof r.gc=="function"&&r.gc()}setInterval(()=>{P()},15e3);function H(r,u,e,i,o){if(r==null)return r;if(typeof r=="object"&&r!==null&&!Array.isArray(r)&&e){let t=!1;for(const a of e.values())if(a.toLowerCase().includes("dictionary")){t=!0;break}if(t)try{const a=JSON.stringify(r);return JSON.parse(a)}catch{}}if(typeof r=="bigint")return r>Number.MAX_SAFE_INTEGER||r<Number.MIN_SAFE_INTEGER?r.toString():Number(r);if(r instanceof Date)return r.toISOString();if(typeof r!="object")return r;if(r.constructor?.name?.includes("Decimal")){const t=r.toString();try{const a=BigInt(t);if(a>BigInt(Number.MAX_SAFE_INTEGER)||a<BigInt(Number.MIN_SAFE_INTEGER))return t}catch{}return Number(t)}const p=Array.isArray(r),b=p?[]:{},m=[];if(p)for(let t=r.length-1;t>=0;t--)m.push([r[t],b,t,void 0]);else{const t=Object.keys(r);for(let a=t.length-1;a>=0;a--){const f=t[a];m.push([r[f],b,f,f])}}for(;m.length>0;){const[t,a,f,h]=m.pop();if(t==null){a[f]=t;continue}if(typeof t=="bigint"){t>Number.MAX_SAFE_INTEGER||t<Number.MIN_SAFE_INTEGER?a[f]=t.toString():a[f]=Number(t);continue}if(t instanceof Date){a[f]=t.toISOString();continue}if(typeof t!="object"){a[f]=t;continue}if(h&&e?.has(h)&&e.get(h).toLowerCase().includes("dictionary")){const s=String(t);if(s&&!s.startsWith("[object ")){a[f]=s;continue}}const A=t.constructor?.name;if(A?.includes("Decimal")){const n=t.toString();if(h&&u?.has(h)){const s=u.get(h);if(s>0){const y=Number(n),w=Math.pow(10,s);a[f]=y/w;continue}}try{const s=BigInt(n);s>BigInt(Number.MAX_SAFE_INTEGER)||s<BigInt(Number.MIN_SAFE_INTEGER)?a[f]=n:a[f]=Number(n)}catch{a[f]=Number(n)}continue}if(t instanceof Uint8Array){const n=Array.from(t).map(s=>s.toString(16).padStart(2,"0")).join("");a[f]=`0x${n}`;continue}if(t instanceof Uint32Array){const n=z(t);typeof n=="bigint"?a[f]=Number(n):a[f]=n;continue}if(t instanceof BigInt64Array){t.length===1?a[f]=W(t[0]):a[f]=Array.from(t).map(n=>W(n));continue}if(t instanceof BigUint64Array){t.length===1?a[f]=L(t[0]):a[f]=Array.from(t).map(n=>L(n));continue}if(t instanceof Float32Array){if(t.length===1){const n=v(t[0]);n===null&&(t[0],void 0),a[f]=n}else a[f]=Array.from(t).map(n=>v(n));continue}if(t instanceof Float64Array){if(t.length===1){const n=v(t[0]);n===null&&(t[0],void 0),a[f]=n}else a[f]=Array.from(t).map(n=>v(n));continue}if(h&&e?.get(h)?.toLowerCase().includes("interval")){let n=0,s=0,y=0;const w=i?.get(h);if(w&&o!==void 0){const g=o*4;if(g+3<w.length){n=w[g],s=w[g+1];const N=w[g+2]>>>0,_=w[g+3];y=N+_*4294967296}}else if(A==="Int32Array"){const g=t;g.length>=2&&(n=g[0]*12+g[1])}const c=[];if(n!==0){const g=Math.floor(Math.abs(n)/12),N=Math.abs(n)%12,_=n<0?"-":"";g!==0&&c.push(`${_}${g}y`),N!==0&&c.push(`${n<0&&g===0?"-":""}${N}mo`)}if(s!==0){const g=s<0?"-":"";c.push(`${g}${Math.abs(s)}d`)}if(y!==0){const g=Math.abs(y),N=y<0?"-":"",_=Math.floor(g/36e11),C=Math.floor(g%36e11/6e10),$=g%6e10,B=Math.floor($/1e9),I=$%1e9;if(_!==0&&c.push(`${N}${_}h`),C!==0&&c.push(`${C}m`),B!==0||I!==0)if(I===0)c.push(`${B}s`);else if(I%1e6===0){const O=I/1e6;c.push(`${B}.${O.toString().padStart(3,"0")}s`)}else if(I%1e3===0){const O=I/1e3;c.push(`${B}.${O.toString().padStart(6,"0")}s`)}else c.push(`${B}.${I.toString().padStart(9,"0")}s`)}a[f]=c.length>0?c.join(" "):"0";continue}if(Array.isArray(t)){const n=[];a[f]=n;for(let s=t.length-1;s>=0;s--)m.push([t[s],n,s,h]);continue}if(typeof t.toJSON=="function"){const n=t.toJSON();m.push([n,a,f,h]);continue}if(t instanceof Map){const n={};a[f]=n;const s=Array.from(t.entries());for(let y=s.length-1;y>=0;y--){const[w,c]=s[y];m.push([c,n,String(w),String(w)])}continue}const T={};a[f]=T;const D=Object.keys(t);for(let n=D.length-1;n>=0;n--){const s=D[n];m.push([t[s],T,s,s])}}return b}async function x(){try{S&&await S.close(),d&&await d.terminate()}catch{}d=null,S=null}function U(r){return{mvp:{mainModule:`${r}/duckdb-mvp.wasm`,mainWorker:`${r}/duckdb-browser-mvp.worker.js`},eh:{mainModule:`${r}/duckdb-eh.wasm`,mainWorker:`${r}/duckdb-browser-eh.worker.js`},coi:{mainModule:`${r}/duckdb-coi.wasm`,mainWorker:`${r}/duckdb-browser-coi.worker.js`,pthreadWorker:`${r}/duckdb-browser-coi.pthread.worker.js`}}}async function X(r){for(const u of r)try{const e=u.eh?.mainModule||u.mvp?.mainModule;if(e){const i=await fetch(e,{headers:{Range:"bytes=0-0"}}),o=i.headers.get("content-type")||"",l=i.ok&&!o.includes("text/html");if(await i.body?.cancel().catch(()=>{}),l)return u}}catch{}return null}self.addEventListener("message",async r=>{const u=r.data;try{if(u.type==="init"){const e=u.baseUrls||[];if(q=e,!M){const t=await import("./duckdb-browser-DdKwiimi.js");M=t,k=t.DuckDBDataProtocol}const i=new M.ConsoleLogger(M.LogLevel.WARNING),o=e.map(t=>U(t));let l=await X(o);l||(console.error("[DuckDB] No local wasm bundle found under any of:",e,"- falling back to the jsDelivr CDN, which a cross-origin-isolated page will refuse."),l=M.getJsDelivrBundles());const p=l.eh||await M.selectBundle(l),b=new Worker(p.mainWorker);d=new M.AsyncDuckDB(i,b),await d.instantiate(p.mainModule,p.pthreadWorker);let m=!1;await d.open({path:":memory:",accessMode:M.DuckDBAccessMode.READ_WRITE}),S=await d.connect();try{await S.query("SET memory_limit=-1"),await S.query("SET threads=1"),await S.query("SET preserve_insertion_order=false");const t=Intl.DateTimeFormat().resolvedOptions().timeZone;t&&await S.query(`SET TimeZone='${t}'`)}catch(t){console.warn("[DuckDB] Config failed (non-critical):",t)}self.postMessage({type:"inited",opfsPersistence:m})}else if(u.type==="run"){const{id:e,sql:i}=u;E.set(e,0);try{if(S&&typeof S.queryArrowIPC=="function"){const o=await S.queryArrowIPC(i);for await(const l of o){for(;(E.get(e)||0)>=G;)await new Promise(p=>setTimeout(p,10));try{self.postMessage({type:"arrow",id:e,buffer:l},[l])}catch{self.postMessage({type:"arrow",id:e,buffer:l})}E.set(e,(E.get(e)||0)+1)}}else{const o=await S.query(i),l=new Map;if(o.schema?.fields){for(const p of o.schema.fields)if(p.type?.toString()?.includes("Interval")){const b=o.getChild(p.name);b?.data?.[0]?.values instanceof Int32Array&&l.set(p.name,b.data[0].values)}}if(o.toArrow){const p=o.toArrow();self.postMessage({type:"arrow",id:e,buffer:p},[p])}else{let p,b;if(o.schema&&o.schema.fields){p=new Map,b=new Map;const s=o.schema.fields.map(c=>{let g="UNKNOWN";return c.type&&typeof c.type.toString=="function"&&(g=c.type.toString()),b.set(c.name,g),c.type&&c.type.constructor?.name?.includes("Decimal")&&c.type.scale!==void 0&&p.set(c.name,c.type.scale),{name:c.name,type:g,nullable:c.nullable}}),y=JSON.stringify(s),w=new TextEncoder().encode(y).buffer;self.postMessage({type:"json-schema",id:e,buffer:w},[w])}const m=o.toArray?o.toArray():o,t=5*1024*1024,a=500,f=5e5;let h=[],A=0,F=0,T=0,D=0,n=0;for(let s=0;s<m.length&&!R.has(e);s++)try{const y=H(m[s],p,b,l,s),c=JSON.stringify(y).length;if(F+=c,c>D&&(D=c),c>f&&T++,h.length>0&&(A+c>t||h.length>=a)){const g=JSON.stringify(h),N=new TextEncoder().encode(g).buffer;for(self.postMessage({type:"json",id:e,buffer:N},[N]),n++,E.set(e,(E.get(e)||0)+1);(E.get(e)||0)>=G&&!R.has(e);)await new Promise(_=>setTimeout(_,10));h=[],A=0}h.push(y),A+=c}catch(y){const w=m[s],c=w&&typeof w=="object"?Object.keys(w):[];console.error(`[DuckDB Worker] Row ${s} failed to serialize:`,{error:String(y),errorName:y.name,rowKeys:c.slice(0,10)}),h.push({__error:`Row ${s} failed: ${y.name}`}),A+=100}if(h.length>0&&!R.has(e)){const s=JSON.stringify(h),y=new TextEncoder().encode(s).buffer;self.postMessage({type:"json",id:e,buffer:y},[y]),n++,E.set(e,(E.get(e)||0)+1)}self.postMessage({type:"query-stats",id:e,stats:{totalRows:m.length,totalBytes:F,largeRowCount:T,maxRowSize:D,chunkCount:n,avgRowSize:m.length>0?Math.round(F/m.length):0}})}}}catch(o){const l=String(o);l.includes("database has been invalidated")||l.includes("FATAL Error")?(await x(),self.postMessage({type:"error",id:e,error:"Database encountered a fatal error and has been reset. Please reload the page to reinitialize."})):l.includes("Out of Memory")||l.includes("Allocation failure")?self.postMessage({type:"error",id:e,error:`Out of Memory: The query or file is too large to process in the browser. Try:
2
+ 1. Querying smaller subsets using LIMIT or WHERE clauses
3
+ 2. Using SELECT with specific columns instead of SELECT *
4
+ 3. Processing smaller files
5
+ 4. Using COUNT(*) with LIMIT for large tables`}):self.postMessage({type:"error",id:e,error:l})}finally{self.postMessage({type:"done",id:e}),E.delete(e),R.delete(e),P()}}else if(u.type==="ack"){const{id:e}=u,i=E.get(e)||0;E.set(e,Math.max(0,i-1))}else if(u.type==="cancel"){const{id:e}=u;R.add(e),self.postMessage({type:"cancelled",id:e})}else if(u.type==="register_file"){const{id:e,fileName:i,fileBuffer:o}=u;try{if(!d)throw new Error("Database not initialized");await d.registerFileBuffer(i,new Uint8Array(o)),self.postMessage({type:"file_registered",id:e})}catch(l){self.postMessage({type:"error",id:e,error:String(l)})}}else if(u.type==="copy_file_to_buffer"){const{id:e,fileName:i}=u;try{if(!d)throw new Error("Database not initialized");const o=await d.copyFileToBuffer(i);self.postMessage({type:"file_buffer",id:e,buffer:o},[o.buffer])}catch(o){self.postMessage({type:"error",id:e,error:String(o)})}}else if(u.type==="register_file_handle"){const{id:e,fileName:i,file:o}=u;try{if(!d)throw new Error("Database not initialized");if(!k)throw new Error("DuckDBDataProtocol not loaded");await d.registerFileHandle(i,o,k.BROWSER_FILEREADER,!0),self.postMessage({type:"file_registered",id:e})}catch(l){self.postMessage({type:"error",id:e,error:String(l)})}}else if(u.type==="drop_file"){const{id:e,fileName:i}=u;try{if(!d)throw new Error("Database not initialized");await d.dropFile(i),self.postMessage({type:"file_dropped",id:e})}catch(o){self.postMessage({type:"error",id:e,error:String(o)})}}else if(u.type==="opfs_register_output"){const{id:e,fileName:i}=u;try{if(!d)throw new Error("Database not initialized");if(!k)throw new Error("DuckDBDataProtocol not loaded");const l=await(await navigator.storage.getDirectory()).getFileHandle(i,{create:!0});await d.registerFileHandle(i,l,k.BROWSER_FSACCESS,!0),self.postMessage({type:"opfs_output_registered",id:e})}catch(o){self.postMessage({type:"error",id:e,error:String(o)})}}else if(u.type==="opfs_release_output"){const{id:e,fileName:i}=u;try{if(!d)throw new Error("Database not initialized");await d.dropFile(i),self.postMessage({type:"opfs_output_released",id:e})}catch(o){self.postMessage({type:"error",id:e,error:String(o)})}}else if(u.type==="opfs_probe"){const{id:e}=u,i=`__opfs_probe_${Date.now()}.parquet`,o=async()=>{try{await(await navigator.storage.getDirectory()).removeEntry(i)}catch{}};try{if(!d||!S||!k)throw new Error("Database not initialized");const l=await navigator.storage.getDirectory(),p=await l.getFileHandle(i,{create:!0});await d.registerFileHandle(i,p,k.BROWSER_FSACCESS,!0),await S.query(`COPY (SELECT 1 AS a) TO '${i}' (FORMAT PARQUET)`),await d.dropFile(i);const m=(await(await l.getFileHandle(i)).getFile()).size>0;await o(),self.postMessage({type:"opfs_probe_result",id:e,ok:m})}catch{await o(),self.postMessage({type:"opfs_probe_result",id:e,ok:!1})}}}catch(e){self.postMessage({type:"error",error:String(e)})}});
@@ -2,14 +2,15 @@
2
2
 
3
3
  This directory contains DuckDB WebAssembly bundles (~107 MB total).
4
4
 
5
- ## Auto-Downloaded (not in git)
5
+ ## Copied from node_modules (not in git)
6
6
 
7
- Files are automatically downloaded when you run:
7
+ Files are copied out of the installed `@duckdb/duckdb-wasm` package when you
8
+ run:
8
9
  ```bash
9
10
  pnpm install # Runs postinstall hook
10
11
  ```
11
12
 
12
- Or manually:
13
+ Or manually, after the install:
13
14
  ```bash
14
15
  bash scripts/download-duckdb-wasm.sh
15
16
  ```
@@ -20,5 +21,7 @@ bash scripts/download-duckdb-wasm.sh
20
21
  - `duckdb-browser*.mjs` - JavaScript loaders
21
22
 
22
23
  ## Why not in git?
23
- These files total ~107 MB and would bloat the repository.
24
- They're sourced from `@duckdb/duckdb-wasm` npm package instead.
24
+ These files total ~107 MB and would bloat the repository. They come from the
25
+ `@duckdb/duckdb-wasm` package the workspace already depends on, at the version
26
+ the lockfile pins, so the bundles served always match the JavaScript that
27
+ drives them.